Les chercheurs ont développé un moyen flexible de combiner l'apprentissage en profondeur et le raisonnement symbolique pour apprendre aux ordinateurs à écrire de courts programmes informatiques. Ici, Armando Solar-Lezama (à gauche), professeur au CSAIL, parle avec l'étudiant diplômé Maxwell Nye. Crédit :Kim Martineau
Apprendre à coder, c'est reconnaître comment structurer un programme, et comment remplir correctement chaque détail. Pas étonnant que cela puisse être si frustrant.
Une nouvelle IA d'écriture de programme, SketchAdapt, offre une issue. Formé sur des dizaines de milliers d'exemples de programmes, SketchAdapt apprend à composer court, programmes de haut niveau, tout en laissant un deuxième ensemble d'algorithmes trouver les bons sous-programmes pour remplir les détails. Contrairement aux approches similaires pour l'écriture automatisée de programmes, SketchAdapt sait quand passer d'une correspondance de modèle statistique à une méthode moins efficace, mais plus polyvalent, mode de raisonnement symbolique pour combler les lacunes.
"Les réseaux neuronaux sont assez bons pour obtenir la bonne structure, mais pas les détails, " dit Armando Solar-Lezama, professeur au Laboratoire d'informatique et d'intelligence artificielle (CSAIL) du MIT. "En divisant le travail, en laissant les réseaux neuronaux gérer la structure de haut niveau, et en utilisant une stratégie de recherche pour remplir les blancs, nous pouvons écrire des programmes efficaces qui donnent la bonne réponse."
SketchAdapt est une collaboration entre Solar-Lezama et Josh Tenenbaum, professeur au CSAIL et au Center for Brains du MIT, Esprits et machines. Le travail sera présenté à la Conférence internationale sur l'apprentissage automatique du 10 au 15 juin.
Synthèse du programme, ou apprendre aux ordinateurs à coder, est depuis longtemps un objectif des chercheurs en IA. Un ordinateur qui peut se programmer est plus susceptible d'apprendre la langue plus rapidement, converser couramment, et même modéliser la cognition humaine. Tout cela a attiré Solar-Lezama sur le terrain en tant qu'étudiant diplômé, où il a jeté les bases de SketchAdapt.
Les premiers travaux de Solar-Lezama, Esquisser, est basé sur l'idée que les détails de bas niveau d'un programme pourraient être trouvés mécaniquement si une structure de haut niveau est fournie. Entre autres applications, Des retombées inspirées des esquisses pour noter automatiquement les devoirs de programmation et convertir des diagrammes dessinés à la main en code. Plus tard, à mesure que les réseaux de neurones gagnaient en popularité, les étudiants du laboratoire de sciences cognitives computationnelles de Tenenbaum ont suggéré une collaboration, à partir de laquelle SketchAdapt s'est formé.
Plutôt que de compter sur des experts pour définir la structure du programme, SketchAdapt le découvre à l'aide de l'apprentissage en profondeur. Les chercheurs ont également ajouté une touche :lorsque les réseaux de neurones ne savent pas quel code placer où, SketchAdapt est programmé pour laisser l'espace vide pour les algorithmes de recherche à remplir.
"Le système décide lui-même de ce qu'il sait et ne sait pas, " dit l'auteur principal de l'étude, Maxwell Nye, un étudiant diplômé du département des sciences du cerveau et des sciences cognitives du MIT. "Quand ça coince, et n'a pas de modèles familiers sur lesquels s'appuyer, il laisse des espaces réservés dans le code. Il utilise ensuite une stratégie de devinette et de vérification pour combler les trous. »
Les chercheurs ont comparé les performances de SketchAdapt à des programmes modélisés d'après les logiciels propriétaires RobustFill et DeepCoder de Microsoft, successeurs de la fonctionnalité FlashFill d'Excel, qui analyse les cellules adjacentes pour proposer des suggestions au fur et à mesure que vous tapez - apprendre à transformer une colonne de noms en une colonne d'adresses e-mail correspondantes, par exemple. RobustFill utilise le deep learning pour écrire des programmes de haut niveau à partir d'exemples, tandis que DeepCoder se spécialise dans la recherche et le remplissage de détails de bas niveau.
Les chercheurs ont découvert que SketchAdapt surpassait leurs versions réimplémentées de RobustFill et DeepCoder dans leurs tâches spécialisées respectives. SketchAdapt a surpassé le programme de type RobustFill lors des transformations de chaînes ; par exemple, écrire un programme pour abréger les numéros de sécurité sociale en trois chiffres, et les prénoms par leur première lettre. SketchAdapt a également fait mieux que le programme de type DeepCoder pour écrire des programmes pour transformer une liste de nombres. Formé uniquement sur des exemples de programmes de traitement de liste à trois lignes, SketchAdapt était mieux à même de transférer ses connaissances vers un nouveau scénario et d'écrire des programmes corrects en quatre lignes.
Dans une autre tâche, SketchAdapt a surpassé les deux programmes pour convertir les problèmes mathématiques de l'anglais en code, et calculer la réponse.
La clé de son succès est la possibilité de passer d'une correspondance de modèles neuronaux à une recherche symbolique basée sur des règles, dit Rishabh Singh, un ancien étudiant diplômé de Solar-Lezama, maintenant chercheur chez Google Brain. "SketchAdapt apprend combien de reconnaissance de formes est nécessaire pour écrire des parties familières du programme, et combien de raisonnement symbolique est nécessaire pour remplir les détails qui peuvent impliquer des concepts nouveaux ou compliqués."
SketchAdapt se limite à l'écriture de programmes très courts. Rien de plus nécessite trop de calculs. Néanmoins, il est plus destiné à compléter les programmeurs qu'à les remplacer, disent les chercheurs. "Notre objectif est de donner des outils de programmation aux personnes qui le souhaitent, " dit Nye. " Ils peuvent dire à l'ordinateur ce qu'ils veulent faire, et l'ordinateur peut écrire le programme."
La programmation, après tout, a toujours évolué. Lorsque Fortran a été introduit dans les années 1950, il était destiné à remplacer les programmeurs humains. "Son nom complet était Fortran Automatic Coding System, et son but était d'écrire des programmes aussi bien que des humains, mais sans les erreurs, " dit Solar-Lezama. " Ce qu'il a vraiment fait, c'est d'automatiser une grande partie de ce que les programmeurs faisaient avant Fortran. Cela a changé la nature de la programmation."
Cette histoire est republiée avec l'aimable autorisation de MIT News (web.mit.edu/newsoffice/), un site populaire qui couvre l'actualité de la recherche du MIT, innovation et enseignement.