1 research outputs found

    Learned interpreters : structural and learned systematicity in neural networks for program execution

    Full text link
    Les architectures de réseaux de neurones profonds à usage général ont fait des progrès surprenants dans l'apprentissage automatique pour le code, permettant l’amélioration de la complétion de code, la programmation du langage naturel, la détection et la réparation des bogues, et même la résolution de problèmes de programmation compétitifs à un niveau de performance humain. Néanmoins, ces méthodes ont du mal à comprendre le processus d'exécution du code, même lorsqu'il s'agit de code qu'ils écrivent eux-mêmes. À cette fin, nous explorons une architecture du réseau neuronal inspiré d’interpréteur de code, via une nouvelle famille d'architecture appelée Instruction Pointer Attention Graph Neural Networks (IPA-GNN). Nous appliquons cette famille d'approches à plusieurs tâches nécessitant un raisonnement sur le comportement d'exécution du programme : apprendre à exécuter des programmes complets et partiels, prédire la couverture du code pour la vérification du matériel, et prédire les erreurs d'exécution dans des programmes de compétition. Grâce à cette série de travaux, nous apportons plusieurs contributions et rencontrons de multiples résultats surprenants et prometteurs. Nous introduisons une bibliothèque Python pour construire des représentations de graphes des programmes utiles dans la recherche sur l'apprentissage automatique, qui sert de fondement à la recherche dans cette thèse et dans la communauté de recherche plus large. Nous introduisons également de riches ensembles de données à grande échelle de programmes annotés avec le comportement du programme (les sorties et les erreurs soulevées lors de son exécution) pour faciliter la recherche dans ce domaine. Nous constatons que les méthodes IPA-GNN présentent une forte généralisation améliorée par rapport aux méthodes à usage général, fonctionnant bien lorsqu'ils sont entraînés pour exécuter uniquement des programmes courts mais testés sur des programmes plus longs. En fait, nous constatons que les méthodes IPA-GNN surpassent les méthodes génériques sur chacune des tâches de modélisation du comportement que nous considérons dans les domaines matériel et logiciel. Nous constatons même que les méthodes inspirées par l'interpréteur de code qui modélisent explicitement la gestion des exceptions ont une propriété interprétative souhaitable, permettant la prédiction des emplacements d'erreur même lorsqu'elles n'ont été entraînées qu'à prédire la présence d'erreur et le type d'erreur. Au total, les architectures inspirées des interpréteurs de code comme l'IPA-GNN représentent un chemin prometteur à suivre pour imprégner des réseaux de neurones avec de nouvelles capacités pour apprendre à raisonner sur les exécutions de programme.General purpose deep neural network architectures have made startling advances in machine learning for code, advancing code completion, enabling natural language programming, detecting and repairing bugs, and even solving competitive programming problems at a human level of performance. Nevertheless, these methods struggle to understand the execution behavior of code, even when it is code they write themselves. To this end, we explore interpreter-inspired neural network architectures, introducing a novel architecture family called instruction pointer attention graph neural networks (IPA-GNN). We apply this family of approaches to several tasks that require reasoning about the execution behavior of programs: learning to execute full and partial programs, code coverage prediction for hardware verification, and predicting runtime errors in competition programs. Through this series of works we make several contributions and encounter multiple surprising and promising results. We introduce a Python library for constructing graph representations of programs for use in machine learning research, which serves as a bedrock for the research in this thesis and in the broader research community. We also introduce rich large scale datasets of programs annotated with program behavior like outputs and errors raised to facilitate research in this domain. We find that IPA-GNN methods exhibit improved strong generalization over general purpose methods, performing well when trained to execute only on short programs and tested on significantly longer programs. In fact, we find that IPA-GNN methods outperform generic methods on each of the behavior modeling tasks we consider across both hardware and software domains. We even find that interpreter-inspired methods that model exception handling explicitly have a desirable interpretability property, enabling the prediction of error locations even when only trained on error presence and kind. In total, interpreter-inspired architectures like the IPA-GNN represent a promising path forward for imbuing neural networks with novel capabilities for learning to reason about program executions
    corecore