• Home
  • Chimica
  • Astronomia
  • Energia
  • Natura
  • Biologia
  • Fisica
  • Elettronica
  • Verso un'intelligenza artificiale che impara a scrivere codice

    I ricercatori hanno sviluppato un modo flessibile di combinare l'apprendimento profondo e il ragionamento simbolico per insegnare ai computer a scrivere brevi programmi per computer. Qui, Armando Solar-Lezama (a sinistra), un professore al CSAIL, parla con lo studente laureato Maxwell Nye. Credito:Kim Martineau

    Imparare a programmare implica riconoscere come strutturare un programma, e come compilare correttamente ogni minimo dettaglio. Non c'è da stupirsi che possa essere così frustrante.

    Una nuova IA per la scrittura di programmi, SchizzoAdatta, offre una via d'uscita. Formazione su decine di migliaia di esempi di programmi, SketchAdapt impara a comporre brevi, programmi di alto livello, lasciando che una seconda serie di algoritmi trovi i sottoprogrammi giusti per riempire i dettagli. A differenza di approcci simili per la scrittura di programmi automatizzati, SketchAdapt sa quando passare dalla corrispondenza di modelli statistici a una meno efficiente, ma più versatile, modalità di ragionamento simbolico per colmare le lacune.

    "Le reti neurali sono piuttosto brave a ottenere la struttura giusta, ma non i dettagli, " dice Armando Solar-Lezama, professore al Computer Science and Artificial Intelligence Laboratory (CSAIL) del MIT. "Dividendo il lavoro, lasciando che le reti neurali gestiscano la struttura di alto livello, e utilizzando una strategia di ricerca per riempire gli spazi vuoti, possiamo scrivere programmi efficienti che diano la risposta giusta."

    SketchAdapt è una collaborazione tra Solar-Lezama e Josh Tenenbaum, un professore al CSAIL e al Center for Brains del MIT, Menti e macchine. Il lavoro sarà presentato alla International Conference on Machine Learning dal 10-15 giugno.

    Sintesi del programma, o insegnare ai computer a programmare, è stato a lungo un obiettivo dei ricercatori di intelligenza artificiale. È più probabile che un computer in grado di programmarsi da solo impari la lingua più velocemente, conversare fluentemente, e persino modellare la cognizione umana. Tutto ciò ha attirato Solar-Lezama sul campo come studente laureato, dove ha gettato le basi per SketchAdapt.

    I primi lavori di Solar-Lezama, Schizzo, si basa sull'idea che i dettagli di basso livello di un programma potrebbero essere trovati meccanicamente se viene fornita una struttura di alto livello. Tra le altre applicazioni, Spin-off ispirati allo schizzo per valutare automaticamente i compiti di programmazione e convertire i diagrammi disegnati a mano in codice. Dopo, man mano che le reti neurali crescevano in popolarità, gli studenti del laboratorio di scienze cognitive computazionali di Tenenbaum hanno suggerito una collaborazione, da cui si è formato SketchAdapt.

    Piuttosto che affidarsi ad esperti per definire la struttura del programma, SketchAdapt lo capisce utilizzando il deep learning. I ricercatori hanno anche aggiunto una svolta:quando le reti neurali non sono sicure di quale codice posizionare dove, SketchAdapt è programmato per lasciare il punto vuoto per gli algoritmi di ricerca da riempire.

    "Il sistema decide da solo cosa sa e cosa non sa, " dice l'autore principale dello studio, Maxwell Nye, uno studente laureato presso il Dipartimento di cervello e scienze cognitive del MIT. "Quando si blocca, e non ha schemi familiari su cui attingere, lascia dei segnaposto nel codice. Quindi utilizza una strategia indovina e verifica per riempire i buchi".

    I ricercatori hanno confrontato le prestazioni di SketchAdapt con programmi modellati sul software proprietario RobustFill e DeepCoder di Microsoft, successori della funzione FlashFill di Excel, che analizza le celle adiacenti per offrire suggerimenti durante la digitazione, imparando a trasformare una colonna di nomi in una colonna di indirizzi email corrispondenti, Per esempio. RobustFill utilizza il deep learning per scrivere programmi di alto livello da esempi, mentre DeepCoder è specializzato nella ricerca e nella compilazione di dettagli di basso livello.

    I ricercatori hanno scoperto che SketchAdapt ha superato le loro versioni reimplementate di RobustFill e DeepCoder nelle rispettive attività specializzate. SketchAdapt ha superato il programma simile a RobustFill nelle trasformazioni di stringhe; Per esempio, scrivere un programma per abbreviare i numeri di previdenza sociale in tre cifre, e i nomi con la loro prima lettera. SketchAdapt ha anche fatto meglio del programma simile a DeepCoder nella scrittura di programmi per trasformare un elenco di numeri. Formazione solo su esempi di programmi di elaborazione di elenchi a tre righe, SketchAdapt è stato in grado di trasferire meglio le sue conoscenze in un nuovo scenario e scrivere programmi corretti di quattro righe.

    In un altro compito, SketchAdapt ha superato entrambi i programmi nella conversione di problemi di matematica dall'inglese al codice, e calcolando la risposta.

    La chiave del suo successo è la capacità di passare dal pattern-matching neurale a una ricerca simbolica basata su regole, dice Rishabh Singh, un ex studente laureato di Solar-Lezama, ora ricercatore presso Google Brain. "SketchAdapt apprende quanto riconoscimento di pattern è necessario per scrivere parti familiari del programma, e quanto ragionamento simbolico è necessario per riempire dettagli che possono implicare concetti nuovi o complicati."

    SketchAdapt si limita a scrivere programmi molto brevi. Qualsiasi cosa in più richiede troppi calcoli. Ciò nonostante, è destinato più a completare i programmatori piuttosto che a sostituirli, dicono i ricercatori. "Il nostro obiettivo è fornire strumenti di programmazione alle persone che li desiderano, " dice Nye. "Possono dire al computer cosa vogliono fare, e il computer può scrivere il programma."

    Programmazione, Dopotutto, si è sempre evoluto. Quando Fortran fu introdotto negli anni '50, doveva sostituire i programmatori umani. "Il suo nome completo era Fortran Automatic Coding System, e il suo obiettivo era quello di scrivere programmi così come umani, ma senza errori, " dice Solar-Lezama. "Quello che ha fatto veramente è stato automatizzare gran parte di ciò che i programmatori hanno fatto prima di Fortran. Ha cambiato la natura della programmazione".

    Questa storia è stata ripubblicata per gentile concessione di MIT News (web.mit.edu/newsoffice/), un popolare sito che copre notizie sulla ricerca del MIT, innovazione e didattica.




    © Scienza https://it.scienceaq.com