211service.com
Ett nytt neuralt nätverk kan hjälpa datorer att koda sig själva
Ms Tech
Datorprogrammering har aldrig varit lätt. De första kodarna skrev ut program för hand, klottrade symboler på millimeterpapper innan de omvandlade dem till stora högar av hålkort som kunde bearbetas av datorn. En markering malplacerad och det hela kanske måste göras om.
Nuförtiden använder kodare en rad kraftfulla verktyg som automatiserar mycket av jobbet, från att fånga upp fel när du skriver till att testa koden innan den distribueras. Men på andra sätt har lite förändrats. Ett dumt misstag kan fortfarande krascha en hel mjukvara. Och eftersom systemen blir mer och mer komplexa, blir det svårare och svårare att spåra dessa buggar. Det kan ibland ta grupper av kodare dagar att fixa en enda bugg, säger Justin Gottschlich, chef för forskningsgruppen för maskinprogrammering på Intel.
Det är därför vissa människor tycker att vi bara borde få maskiner att programmera sig själva. Automatiserad kodgenerering har varit ett hett forskningsämne i ett antal år. Microsoft bygger grundläggande kodgenerering i sina mycket använda mjukvaruutvecklingsverktyg, Facebook har gjort ett system som heter Lukt som autoslutför små program, och DeepMind har utvecklat ett neuralt nätverk som kan komma på effektivare versioner av enkla algoritmer än de som skapats av människor. Även OpenAI:s GPT-3-språkmodell kan ta fram enkla kodbitar , såsom webbsideslayouter, från uppmaningar på naturligt språk.
Gottschlich och hans kollegor kallar detta maskinprogrammering . Tillsammans med ett team från Intel, MIT och Georgia Institute of Technology i Atlanta har han utvecklat ett system som heter Maskinhärledd kodlikhet , eller MISIM, som kan extrahera innebörden av en bit kod – vad koden säger åt datorn att göra – på ungefär samma sätt som NLP-system (natural-language processing) kan läsa ett stycke skrivet på engelska.
MISIM kan sedan föreslå andra sätt att skriva koden, erbjuda korrigeringar och sätt att göra den snabbare eller mer effektiv. Verktygets förmåga att förstå vad ett program försöker göra gör att det kan identifiera andra program som gör liknande saker. I teorin skulle detta tillvägagångssätt kunna användas av maskiner som skrev sin egen programvara, som bygger på ett lapptäcke av redan existerande program med minimal mänsklig tillsyn eller input.
MISIM fungerar genom att jämföra kodavsnitt med miljontals andra program som den redan har sett, hämtade från ett stort antal onlineförråd. Först översätter den koden till en form som fångar vad den gör men ignorerar hur den är skriven, eftersom två program skrivna på väldigt olika sätt ibland gör samma sak. MISIM använder sedan ett neuralt nätverk för att hitta annan kod som har liknande betydelse. I en förtryck , Gottschlich och hans kollegor rapporterar att MISIM är 40 gånger mer exakt än tidigare system som försöker göra detta, inklusive Aroma.
MISIM är ett spännande steg framåt, säger Veselin Raychev, CTO på det schweiziska företaget DeepCode, vars buggfångande verktyg – bland de mest avancerade på marknaden – använder neurala nätverk som tränats i miljontals program för att föreslå förbättringar av kodare när de skriver .
Men maskininlärning är fortfarande inte bra på att förutsäga om något är en bugg eller inte, säger Raychev. Det beror på att det är svårt att lära ett neuralt nätverk vad som är eller inte är ett fel om det inte har märkts som sådant av en människa.
Det görs mycket intressant forskning med djupa neurala nätverk och buggfixning, säger han, men praktiskt taget är de inte där än, med mycket stor marginal. Typiskt ger AI-buggfångande verktyg massor av falska positiva resultat, säger han.
MISIM kommer runt detta genom att använda maskininlärning för att upptäcka likheter mellan program snarare än att identifiera fel direkt. Genom att jämföra ett nytt program med ett befintligt program som är känt för att vara korrekt, kan det uppmärksamma kodaren på viktiga skillnader som kan vara fel.
Intel planerar att använda verktyget som ett kodrekommendationssystem för utvecklare internt, och föreslår alternativa sätt att skriva kod som är snabbare eller effektivare. Men eftersom MISIM inte är knuten till syntaxen för ett specifikt program, finns det mycket mer det skulle kunna göra. Till exempel kan den användas för att översätta kod skriven på ett gammalt språk som COBOL till ett mer modernt språk som Python. Detta är viktigt eftersom många institutioner, inklusive USAs regering , fortfarande lita på programvara skriven på språk som få kodare vet hur man underhåller eller uppdaterar.
I slutändan tror Gottschlich att denna idé skulle kunna tillämpas på naturligt språk. I kombination med NLP kan förmågan att arbeta med kodens betydelse separat från dess textrepresentation en dag låta människor skriva mjukvara helt enkelt genom att beskriva vad de vill göra i ord, säger han.
Att bygga små appar för din telefon, eller sådana saker som hjälper din vardag – jag tror att det inte är så långt borta, säger Gottschlich. Jag skulle vilja se 8 miljarder människor skapa mjukvara på det sätt som är mest naturligt för dem.