ChatPaper.aiChatPaper

ReGAL: Refatoração de Programas para Descobrir Abstrações Generalizáveis

ReGAL: Refactoring Programs to Discover Generalizable Abstractions

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

Resumo

Embora os grandes modelos de linguagem (LLMs) estejam sendo cada vez mais utilizados para síntese de programas, eles carecem da visão global necessária para desenvolver abstrações úteis; geralmente preveem programas um de cada vez, frequentemente repetindo a mesma funcionalidade. Gerar código redundante do zero é tanto ineficiente quanto propenso a erros. Para abordar isso, propomos o Refactoring for Generalizable Abstraction Learning (ReGAL), um método sem gradiente para aprender uma biblioteca de funções reutilizáveis por meio de refatoração de código, ou seja, reestruturar o código sem alterar sua saída de execução. O ReGAL aprende a partir de um pequeno conjunto de programas existentes, verificando e refinando iterativamente suas abstrações por meio de execução. Descobrimos que as bibliotecas de funções compartilhadas descobertas pelo ReGAL tornam os programas mais fáceis de prever em diversos domínios. Em três conjuntos de dados (geração de gráficos LOGO, raciocínio sobre datas e TextCraft, um jogo de texto baseado em Minecraft), tanto LLMs de código aberto quanto proprietários melhoram em precisão ao prever programas com funções do ReGAL. Para o CodeLlama-13B, o ReGAL resulta em aumentos absolutos de precisão de 11,5% em gráficos, 26,1% em entendimento de datas e 8,1% no TextCraft, superando o GPT-3.5 em dois dos três domínios. Nossa análise revela que as abstrações do ReGAL encapsulam sub-rotinas frequentemente usadas, bem como dinâmicas do 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