ChatPaper.aiChatPaper

ReGAL : Refactorisation de programmes pour découvrir des abstractions généralisables

ReGAL: Refactoring Programs to Discover Generalizable Abstractions

January 29, 2024
Auteurs: Elias Stengel-Eskin, Archiki Prasad, Mohit Bansal
cs.AI

Résumé

Bien que les grands modèles de langage (LLM) soient de plus en plus utilisés pour la synthèse de programmes, ils manquent de la vision globale nécessaire pour développer des abstractions utiles ; ils prédisent généralement les programmes un par un, répétant souvent les mêmes fonctionnalités. Générer du code redondant à partir de zéro est à la fois inefficace et sujet aux erreurs. Pour remédier à cela, nous proposons Refactoring for Generalizable Abstraction Learning (ReGAL), une méthode sans gradient pour apprendre une bibliothèque de fonctions réutilisables via la refactorisation de code, c'est-à-dire la restructuration du code sans modifier son résultat d'exécution. ReGAL apprend à partir d'un petit ensemble de programmes existants, en vérifiant et en affinant itérativement ses abstractions via l'exécution. Nous constatons que les bibliothèques de fonctions partagées découvertes par ReGAL rendent les programmes plus faciles à prédire dans divers domaines. Sur trois ensembles de données (génération de graphiques LOGO, raisonnement sur les dates, et TextCraft, un jeu textuel basé sur Minecraft), les LLM open-source et propriétaires améliorent leur précision lors de la prédiction de programmes avec les fonctions ReGAL. Pour CodeLlama-13B, ReGAL entraîne des augmentations absolues de précision de 11,5 % sur les graphiques, 26,1 % sur la compréhension des dates, et 8,1 % sur TextCraft, surpassant GPT-3.5 dans deux des trois domaines. Notre analyse révèle que les abstractions de ReGAL encapsulent des sous-routines fréquemment utilisées ainsi que les dynamiques de l'environnement.
English
While large language models (LLMs) are increasingly being used for program synthesis, they lack the global view needed to develop useful abstractions; they generally predict programs one at a time, often repeating the same functionality. Generating redundant code from scratch is both inefficient and error-prone. To address this, we propose Refactoring for Generalizable Abstraction Learning (ReGAL), a gradient-free method for learning a library of reusable functions via code refactorization, i.e. restructuring code without changing its execution output. ReGAL learns from a small set of existing programs, iteratively verifying and refining its abstractions via execution. We find that the shared function libraries discovered by ReGAL make programs easier to predict across diverse domains. On three datasets (LOGO graphics generation, Date reasoning, and TextCraft, a Minecraft-based text game), both open-source and proprietary LLMs improve in accuracy when predicting programs with ReGAL functions. For CodeLlama-13B, ReGAL results in absolute accuracy increases of 11.5% on graphics, 26.1% on date understanding, and 8.1% on TextCraft, outperforming GPT-3.5 in two of three domains. Our analysis reveals ReGAL's abstractions encapsulate frequently-used subroutines as well as environment dynamics.
PDF102December 15, 2024