De senaste åren har man sett förslaget om ett antal neurala arkitekturer för problemet med programinduktion. Med tanke på en uppsättning input-output exempel, dessa arkitekturer kan lära sig kartläggningar som generaliserar till nya testingångar. Samtidigt uppnå imponerande resultat, dessa metoder har ett antal viktiga begränsningar: a) de är beräkning dyrt och svårt att träna, b) en modell måste tränas för varje uppgift (program) separat, och c) det är svårt att tolka eller verifiera riktigheten i den inlärda kartläggningen (som det definieras av ett neuralt nätverk). I detta dokument föreslår vi en ny teknik, Neuro-Symbolic Program Synthesis, för att övervinna de ovan nämnda problemen. När vårt tillvägagångssätt har tränats kan vi automatiskt konstruera datorprogram på ett domänspecifikt språk som överensstämmer med en uppsättning input-output-exempel som ges vid testtillfället. Vår metod är baserad på två nya neurala moduler. Den första modulen, som kallas cross korrelation I/O nätverk, med en uppsättning input-output exempel, producerar en kontinuerlig representation av uppsättningen av I/O exempel. Den andra modulen, RecursiveReverse-Recursive Neural Network (R3NN), med tanke på den kontinuerliga representationen av exemplen, syntetiserar ett program genom att gradvis expandera partiella program. Vi visar effektiviteten i vår strategi genom att tillämpa den på den rika och komplexa domänen av reguljära uttryck baserade strängomvandlingar. Experiment visar att R3NN modellen inte bara kan konstruera program från nya input-output exempel, men den kan också konstruera nya program för uppgifter som den aldrig hade observerat tidigare under utbildningen.
Till exempel Parisotto et al. införa NSPS (Neuro-Symbolic Program Synthesis) systemet REF, som syntetiserar strängmanipuleringsprogram från I/O exempel med hjälp av en Recursive-Reverse-Recursive Neural Network som syntetiserar program genom att gradvis expandera partiella program.
Neuro-Symbolic Program Synthesis
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}