Problemet med att automatiskt generera ett datorprogram från vissa specifikationer har studerats sedan de första dagarna av AI. Nyligen, två konkurrerande metoder för automatisk programinlärning har fått betydande uppmärksamhet: (1) neural programsyntes, där ett neuralt nätverk är betingat på input/output (I/O) exempel och lär sig att generera ett program, och (2) neural programinduktion, där ett neuralt nätverk genererar nya utgångar direkt med hjälp av en latent programrepresentation. Här jämför vi för första gången direkt båda strategierna för en storskalig, verklig inlärningsuppgift. Vi kontrasterar dessutom mot regelbaserad programsyntes, som använder handgjorda semantik för att styra programgenerationen. Våra neurala modeller använder en modifierad uppmärksamhet RNN för att tillåta kodning av variabla uppsättningar av I/O par. Vår bästa syntesmodell uppnår 92% noggrannhet på en real-world testuppsättning, jämfört med 34% noggrannhet av den tidigare bästa neurala syntesmetoden. Syntetmodellen överträffar också en jämförbar induktionsmodell på denna uppgift, men vi visar framför allt att styrkan i varje tillvägagångssätt är starkt beroende av utvärderingsmåttet och slutanvändarens tillämpning. Slutligen visar vi att vi kan träna våra neurala modeller för att förbli mycket robusta mot den typ av buller som förväntas i verkliga data (t.ex. typsnitt), medan ett högutvecklat regelbaserat system misslyckas helt och hållet.
Robustfill REF använder en modifierad RNN för att koda variable-size uppsättningar av I/O för synthesize strängbaserade program.
RobustFill: Neural Program Learning under Noisy I/O
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}