ChatPaper.aiChatPaper

ReGAL: Рефакторинг программ для выявления обобщаемых абстракций

ReGAL: Refactoring Programs to Discover Generalizable Abstractions

January 29, 2024
Авторы: Elias Stengel-Eskin, Archiki Prasad, Mohit Bansal
cs.AI

Аннотация

Хотя крупные языковые модели (LLM) всё чаще используются для синтеза программ, им не хватает глобального представления, необходимого для создания полезных абстракций; они обычно предсказывают программы по одной, часто повторяя одну и ту же функциональность. Генерация избыточного кода с нуля является как неэффективной, так и подверженной ошибкам. Чтобы решить эту проблему, мы предлагаем метод Refactoring for Generalizable Abstraction Learning (ReGAL), градиент-фри подход для изучения библиотеки повторно используемых функций через рефакторизацию кода, то есть реструктуризацию кода без изменения его результата выполнения. ReGAL обучается на небольшом наборе существующих программ, итеративно проверяя и уточняя свои абстракции через выполнение. Мы обнаруживаем, что общие библиотеки функций, обнаруженные ReGAL, делают программы более предсказуемыми в различных областях. На трёх наборах данных (генерация графики LOGO, рассуждения о датах и TextCraft, текстовая игра на основе Minecraft) как открытые, так и проприетарные LLM показывают улучшение точности при предсказании программ с функциями ReGAL. Для CodeLlama-13B ReGAL приводит к абсолютному увеличению точности на 11,5% в графике, 26,1% в понимании дат и 8,1% в TextCraft, превосходя GPT-3.5 в двух из трёх областей. Наш анализ показывает, что абстракции ReGAL инкапсулируют часто используемые подпрограммы, а также динамику окружения.
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