Forskere har udviklet en fleksibel måde at kombinere dyb læring og symbolsk ræsonnement for at lære computere at skrive korte computerprogrammer. Her, Armando Solar-Lezama (venstre), professor ved CSAIL, taler med kandidatstuderende Maxwell Nye. Kredit:Kim Martineau
At lære at kode involverer at erkende, hvordan man strukturerer et program, og hvordan man udfylder hver eneste detalje korrekt. Ikke underligt, det kan være så frustrerende.
En ny programskrivning AI, SketchAdapt, tilbyder en vej ud. Trænet på titusindvis af programeksempler, SketchAdapt lærer at komponere korte, programmer på højt niveau, mens man lader et andet sæt algoritmer finde de rigtige underprogrammer til at udfylde detaljerne. I modsætning til lignende metoder til automatiseret programskrivning, SketchAdapt ved, hvornår man skal skifte fra statistisk mønstertilpasning til en mindre effektiv, men mere alsidig, symbolsk ræsonnement til at udfylde hullerne.
"Neurale net er ret gode til at få strukturen rigtig, men ikke detaljerne, " siger Armando Solar-Lezama, en professor ved MIT's Computer Science and Artificial Intelligence Laboratory (CSAIL). "Ved at dele arbejdet op - lade neurale net håndtere strukturen på højt niveau, og ved at bruge en søgestrategi til at udfylde de tomme felter – vi kan skrive effektive programmer, der giver det rigtige svar."
SketchAdapt er et samarbejde mellem Solar-Lezama og Josh Tenenbaum, en professor ved CSAIL og MIT's Center for Brains, Sind og maskiner. Værket præsenteres på den internationale konference om maskinlæring 10.-15. juni.
Program syntese, eller lære computere at kode, har længe været et mål for AI -forskere. En computer, der kan programmere sig selv, er mere tilbøjelig til at lære sprog hurtigere, tale flydende, og endda modellere menneskelig erkendelse. Alt dette trak Solar-Lezama til marken som kandidatstuderende, hvor han lagde grunden til SketchAdapt.
Solar-Lezamas tidlige arbejde, Skitse, er baseret på ideen om, at et programs detaljer på lavt niveau kunne findes mekanisk, hvis der er en struktur på højt niveau. Blandt andre applikationer, Skitser inspirerede spinoffs til automatisk at bedømme programmeringshjemmearbejde og konvertere håndtegnede diagrammer til kode. Senere, efterhånden som neurale netværk voksede i popularitet, studerende fra Tenenbaums computerkognitive videnskabslaboratorium foreslog et samarbejde, hvoraf SketchAdapt er dannet.
I stedet for at stole på eksperter til at definere programstrukturen, SketchAdapt finder ud af det ved hjælp af dyb læring. Forskerne tilføjede også et twist:Når de neurale netværk er usikre på, hvilken kode de skal placere hvor, SketchAdapt er programmeret til at lade stedet være tomt, så søgealgoritmerne kan udfylde.
"Systemet bestemmer selv, hvad det ved og ikke ved, " siger undersøgelsens hovedforfatter, Maxwell Nye, en kandidatstuderende i MIT's afdeling for hjerne og kognitiv videnskab. "Når det sætter sig fast, og har ingen velkendte mønstre at trække på, det efterlader pladsholdere i koden. Den bruger derefter en gæt-og-tjek-strategi til at fylde hullerne. "
Forskerne sammenlignede SketchAdapts ydeevne med programmer modelleret efter Microsofts proprietære RobustFill og DeepCoder software, efterfølgere til Excels FlashFill-funktion, som analyserer tilstødende celler for at give forslag, mens du skriver - lærer at omdanne en kolonne med navne til en kolonne med tilsvarende e-mail-adresser, for eksempel. RobustFill bruger dyb læring til at skrive programmer på højt niveau ud fra eksempler, mens DeepCoder har specialiseret sig i at finde og udfylde detaljer på lavt niveau.
Forskerne fandt ud af, at SketchAdapt udkonkurrerede deres genimplementerede versioner af RobustFill og DeepCoder på deres respektive specialiserede opgaver. SketchAdapt udkonkurrerede det RobustFill-lignende program ved strengtransformationer; for eksempel, at skrive et program til at forkorte CPR-numre som tre cifre, og fornavne ved deres første bogstav. SketchAdapt gjorde det også bedre end det DeepCoder-lignende program til at skrive programmer til at transformere en liste med tal. Kun trænet i eksempler på tre-linjers listebehandlingsprogrammer, SketchAdapt var bedre i stand til at overføre sin viden til et nyt scenarie og skrive korrekte fire-linjers programmer.
I endnu en opgave, SketchAdapt klarede sig bedre end begge programmer ved at konvertere matematikopgaver fra engelsk til kode, og beregner svaret.
Nøglen til dens succes er evnen til at skifte fra neural mønster-matchning til en regelbaseret symbolsk søgning, siger Rishabh Singh, en tidligere kandidatstuderende fra Solar-Lezama, nu forsker hos Google Brain. "SketchAdapt lærer, hvor meget mønstergenkendelse der skal til for at skrive velkendte dele af programmet, og hvor meget symbolsk ræsonnement er nødvendig for at udfylde detaljer, der kan involvere nye eller komplicerede begreber."
SketchAdapt er begrænset til at skrive meget korte programmer. Alt mere kræver for meget beregning. Ikke desto mindre, det er mere beregnet til at supplere programmører frem for at erstatte dem, siger forskerne. "Vores fokus er på at give programmeringsværktøjer til folk, der ønsker dem, " siger Nye. "De kan fortælle computeren, hvad de vil gøre, og computeren kan skrive programmet."
Programmering, trods alt, har altid udviklet sig. Da Fortran blev introduceret i 1950'erne, det var beregnet til at erstatte menneskelige programmører. "Dets fulde navn var Fortran Automatic Coding System, og dets mål var at skrive programmer såvel som mennesker, men uden fejl, " siger Solar-Lezama. "Det, den virkelig gjorde, var at automatisere meget af det, programmører gjorde før Fortran. Det ændrede karakteren af programmering."
Denne historie er genudgivet med tilladelse fra MIT News (web.mit.edu/newsoffice/), et populært websted, der dækker nyheder om MIT-forskning, innovation og undervisning.