Wetenschap
Onderzoekers hebben een flexibele manier ontwikkeld om deep learning en symbolisch redeneren te combineren om computers te leren korte computerprogramma's te schrijven. Hier, Armando Solar-Lezama (links), een professor aan CSAIL, spreekt met afgestudeerde student Maxwell Nye. Krediet:Kim Martineau
Leren coderen houdt in dat je herkent hoe je een programma moet structureren, en hoe u elk laatste detail correct invult. Geen wonder dat het zo frustrerend kan zijn.
Een nieuwe programma-schrijvende AI, SchetsAdapt, biedt een uitweg. Getraind op tienduizenden programmavoorbeelden, SketchAdapt leert korte, programma's op hoog niveau, terwijl een tweede set algoritmen de juiste subprogramma's vindt om de details in te vullen. In tegenstelling tot vergelijkbare benaderingen voor geautomatiseerd schrijven van programma's, SketchAdapt weet wanneer hij moet overschakelen van statistische patroonafstemming naar een minder efficiënte, maar veelzijdiger, symbolische redeneermodus om de hiaten op te vullen.
"Neurale netten zijn redelijk goed in het krijgen van de juiste structuur, maar niet de details " zegt Armando Solar-Lezama, een professor aan het Computer Science and Artificial Intelligence Laboratory (CSAIL) van het MIT. "Door de arbeid te verdelen - de neurale netwerken de structuur op hoog niveau te laten afhandelen, en door een zoekstrategie te gebruiken om de lege plekken in te vullen, kunnen we efficiënte programma's schrijven die het juiste antwoord geven."
SketchAdapt is een samenwerking tussen Solar-Lezama en Josh Tenenbaum, een professor aan CSAIL en MIT's Centre for Brains, Geesten en machines. Het werk zal worden gepresenteerd op de International Conference on Machine Learning 10-15 juni.
Programma synthese, of computers leren coderen, is al lang een doel van AI-onderzoekers. Een computer die zichzelf kan programmeren, zal sneller een taal leren, vloeiend praten, en zelfs model menselijke cognitie. Dit alles trok Solar-Lezama naar het veld als een afgestudeerde student, waar hij de basis legde voor SketchAdapt.
Het vroege werk van Solar-Lezama, Schetsen, is gebaseerd op het idee dat de details van een programma op laag niveau mechanisch kunnen worden gevonden als er een structuur op hoog niveau wordt geboden. Onder andere toepassingen, Schets-geïnspireerde spin-offs om programmeerhuiswerk automatisch te beoordelen en handgetekende diagrammen om te zetten in code. Later, naarmate neurale netwerken steeds populairder werden, studenten van Tenenbaum's computational cognitief wetenschappelijk laboratorium stelden een samenwerking voor, waaruit SketchAdapt is ontstaan.
In plaats van te vertrouwen op experts om de programmastructuur te definiëren, SketchAdapt zoekt het uit met behulp van deep learning. De onderzoekers voegden ook een wending toe:wanneer de neurale netwerken niet zeker weten welke code waar moet worden geplaatst, SketchAdapt is geprogrammeerd om de plek leeg te laten voor zoekalgoritmen om te vullen.
"Het systeem bepaalt zelf wat het wel en niet weet, " zegt de hoofdauteur van de studie, Maxwell Nye, een afgestudeerde student in het MIT's Department of Brain and Cognitive Sciences. "Als het vastloopt, en heeft geen bekende patronen om op te tekenen, het laat tijdelijke aanduidingen achter in de code. Vervolgens gebruikt het een gok-en-check-strategie om de gaten te vullen."
De onderzoekers vergeleken de prestaties van SketchAdapt met programma's die zijn gemodelleerd naar de eigen RobustFill- en DeepCoder-software van Microsoft, opvolgers van Excel's FlashFill-functie, die aangrenzende cellen analyseert om suggesties te doen terwijl u typt - leert een kolom met namen om te zetten in een kolom met bijbehorende e-mailadressen, bijvoorbeeld. RobustFill gebruikt deep learning om programma's op hoog niveau te schrijven op basis van voorbeelden, terwijl DeepCoder gespecialiseerd is in het vinden en invullen van details op laag niveau.
De onderzoekers ontdekten dat SketchAdapt beter presteerde dan hun opnieuw geïmplementeerde versies van RobustFill en DeepCoder bij hun respectievelijke gespecialiseerde taken. SketchAdapt presteerde beter dan het RobustFill-achtige programma bij stringtransformaties; bijvoorbeeld, een programma schrijven om burgerservicenummers af te korten als drie cijfers, en voornamen door hun eerste letter. SketchAdapt deed het ook beter dan het DeepCoder-achtige programma bij het schrijven van programma's om een lijst met getallen te transformeren. Alleen getraind op voorbeelden van programma's voor het verwerken van lijsten met drie regels, SketchAdapt was beter in staat om zijn kennis over te dragen naar een nieuw scenario en correcte vierregelige programma's te schrijven.
Bij weer een andere taak SketchAdapt presteerde beter dan beide programma's bij het omzetten van wiskundige problemen van Engels naar code, en het antwoord berekenen.
De sleutel tot het succes is de mogelijkheid om over te schakelen van neurale patroon-matching naar een op regels gebaseerde symbolische zoektocht, zegt Rishabh Singh, een voormalig afgestudeerde student van Solar-Lezama's, nu onderzoeker bij Google Brain. "SketchAdapt leert hoeveel patroonherkenning nodig is om bekende delen van het programma te schrijven, en hoeveel symbolisch redeneren er nodig is om details in te vullen die nieuwe of gecompliceerde concepten kunnen omvatten."
SketchAdapt beperkt zich tot het schrijven van zeer korte programma's. Iets meer vereist te veel rekenwerk. Niettemin, het is meer bedoeld om programmeurs aan te vullen in plaats van ze te vervangen, zeggen de onderzoekers. "Onze focus ligt op het geven van programmeertools aan mensen die ze willen, " zegt Nye. "Ze kunnen de computer vertellen wat ze willen doen, en de computer kan het programma schrijven."
Programmeren, ten slotte, is altijd geëvolueerd. Toen Fortran in de jaren vijftig werd geïntroduceerd, het was bedoeld om menselijke programmeurs te vervangen. "De volledige naam was Fortran Automatic Coding System, en het doel was om zowel programma's als mensen te schrijven, maar zonder de fouten, " zegt Solar-Lezama. "Wat het echt deed, was veel automatiseren van wat programmeurs vóór Fortran deden. Het veranderde de aard van het programmeren."
Dit verhaal is opnieuw gepubliceerd met dank aan MIT News (web.mit.edu/newsoffice/), een populaire site met nieuws over MIT-onderzoek, innovatie en onderwijs.
Wetenschap © https://nl.scienceaq.com