ReGAL: Refaktorierung von Programmen zur Entdeckung generalisierbarer Abstraktionen
ReGAL: Refactoring Programs to Discover Generalizable Abstractions
January 29, 2024
Autoren: Elias Stengel-Eskin, Archiki Prasad, Mohit Bansal
cs.AI
Zusammenfassung
Während große Sprachmodelle (LLMs) zunehmend für die Programmsynthese eingesetzt werden, fehlt ihnen die globale Sicht, die notwendig ist, um nützliche Abstraktionen zu entwickeln; sie generieren Programme in der Regel einzeln und wiederholen oft dieselbe Funktionalität. Die Erzeugung von redundantem Code von Grund auf ist sowohl ineffizient als auch fehleranfällig. Um dies zu beheben, schlagen wir Refactoring for Generalizable Abstraction Learning (ReGAL) vor, eine gradientenfreie Methode zum Erlernen einer Bibliothek wiederverwendbarer Funktionen durch Code-Refaktorisierung, d.h. die Umstrukturierung von Code ohne Änderung des Ausführungsoutputs. ReGAL lernt aus einer kleinen Menge bestehender Programme und verifiziert und verfeinert seine Abstraktionen iterativ durch Ausführung. Wir stellen fest, dass die von ReGAL entdeckten gemeinsamen Funktionsbibliotheken die Vorhersage von Programmen über verschiedene Domänen hinweg erleichtern. Auf drei Datensätzen (LOGO-Grafikgenerierung, Datumslogik und TextCraft, ein Minecraft-basiertes Textspiel) verbessern sowohl Open-Source- als auch proprietäre LLMs ihre Genauigkeit bei der Vorhersage von Programmen mit ReGAL-Funktionen. Für CodeLlama-13B führt ReGAL zu absoluten Genauigkeitssteigerungen von 11,5 % bei Grafiken, 26,1 % beim Verständnis von Datumsangaben und 8,1 % bei TextCraft und übertrifft GPT-3.5 in zwei von drei Domänen. Unsere Analyse zeigt, dass die Abstraktionen von ReGAL häufig verwendete Unterprogramme sowie Umgebungsdynamiken kapseln.
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.