ChatPaper.aiChatPaper

ReGAL: Refactorización de Programas para Descubrir Abstracciones Generalizables

ReGAL: Refactoring Programs to Discover Generalizable Abstractions

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

Resumen

Si bien los modelos de lenguaje de gran escala (LLMs) se utilizan cada vez más para la síntesis de programas, carecen de la visión global necesaria para desarrollar abstracciones útiles; generalmente predicen programas uno por uno, repitiendo con frecuencia la misma funcionalidad. Generar código redundante desde cero es tanto ineficiente como propenso a errores. Para abordar esto, proponemos Refactoring for Generalizable Abstraction Learning (ReGAL), un método sin gradientes para aprender una biblioteca de funciones reutilizables mediante la refactorización de código, es decir, reestructurar el código sin cambiar su salida de ejecución. ReGAL aprende a partir de un pequeño conjunto de programas existentes, verificando y refinando iterativamente sus abstracciones mediante la ejecución. Descubrimos que las bibliotecas de funciones compartidas descubiertas por ReGAL hacen que los programas sean más fáciles de predecir en diversos dominios. En tres conjuntos de datos (generación de gráficos LOGO, razonamiento de fechas y TextCraft, un juego de texto basado en Minecraft), tanto los LLMs de código abierto como los propietarios mejoran en precisión al predecir programas con funciones de ReGAL. Para CodeLlama-13B, ReGAL resulta en aumentos absolutos de precisión del 11.5% en gráficos, 26.1% en comprensión de fechas y 8.1% en TextCraft, superando a GPT-3.5 en dos de los tres dominios. Nuestro análisis revela que las abstracciones de ReGAL encapsulan subrutinas de uso frecuente, así como dinámicas del entorno.
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