ChatPaper.aiChatPaper

ReGAL: Ristrutturazione di Programmi per Scoprire Astrazioni Generalizzabili

ReGAL: Refactoring Programs to Discover Generalizable Abstractions

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

Abstract

Sebbene i modelli linguistici di grandi dimensioni (LLM) siano sempre più utilizzati per la sintesi di programmi, mancano della visione globale necessaria per sviluppare astrazioni utili; generalmente prevedono i programmi uno alla volta, spesso ripetendo la stessa funzionalità. Generare codice ridondante da zero è sia inefficiente che soggetto a errori. Per affrontare questo problema, proponiamo Refactoring for Generalizable Abstraction Learning (ReGAL), un metodo senza gradienti per apprendere una libreria di funzioni riutilizzabili tramite la rifattorizzazione del codice, ovvero la ristrutturazione del codice senza modificarne l'output di esecuzione. ReGAL apprende da un piccolo insieme di programmi esistenti, verificando e affinando iterativamente le sue astrazioni tramite l'esecuzione. Scopriamo che le librerie di funzioni condivise individuate da ReGAL rendono i programmi più facili da prevedere in diversi domini. Su tre dataset (generazione di grafiche LOGO, ragionamento su date e TextCraft, un gioco testuale basato su Minecraft), sia gli LLM open-source che quelli proprietari migliorano in accuratezza quando prevedono programmi con funzioni ReGAL. Per CodeLlama-13B, ReGAL comporta aumenti assoluti di accuratezza dell'11,5% sulle grafiche, del 26,1% sulla comprensione delle date e dell'8,1% su TextCraft, superando GPT-3.5 in due dei tre domini. La nostra analisi rivela che le astrazioni di ReGAL incapsulano sottoprogrammi utilizzati frequentemente nonché le dinamiche dell'ambiente.
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