ChatPaper.aiChatPaper

StepCoder: Migliorare la Generazione di Codice con Apprendimento per Rinforzo basato sul Feedback del Compilatore

StepCoder: Improve Code Generation with Reinforcement Learning from Compiler Feedback

February 2, 2024
Autori: Shihan Dou, Yan Liu, Haoxiang Jia, Limao Xiong, Enyu Zhou, Junjie Shan, Caishuang Huang, Wei Shen, Xiaoran Fan, Zhiheng Xi, Yuhao Zhou, Tao Ji, Rui Zheng, Qi Zhang, Xuanjing Huang, Tao Gui
cs.AI

Abstract

Il progresso dei modelli linguistici di grandi dimensioni (LLM) ha dato un notevole impulso al campo della generazione di codice. Ricerche precedenti hanno integrato l'apprendimento per rinforzo (RL) con il feedback del compilatore per esplorare lo spazio di output degli LLM, al fine di migliorare la qualità della generazione di codice. Tuttavia, il codice di lunga durata generato dagli LLM in risposta a requisiti umani complessi rende l'esplorazione RL una sfida. Inoltre, poiché i test unitari potrebbero non coprire il codice complesso, ottimizzare gli LLM utilizzando questi frammenti di codice non eseguiti risulta inefficace. Per affrontare queste sfide, introduciamo StepCoder, un nuovo framework RL per la generazione di codice, composto da due componenti principali: CCCS affronta la sfida dell'esplorazione suddividendo il compito di generazione di sequenze di codice lunghe in un Curriculum di Sottocompiti di Completamento del Codice, mentre FGO ottimizza il modello solo mascherando i segmenti di codice non eseguiti per fornire un'Ottimizzazione Fine-Grained. Inoltre, abbiamo ulteriormente costruito il dataset APPS+ per l'addestramento RL, che è stato verificato manualmente per garantire la correttezza dei test unitari. I risultati sperimentali dimostrano che il nostro metodo migliora la capacità di esplorare lo spazio di output e supera gli approcci all'avanguardia nei benchmark corrispondenti.
English
The advancement of large language models (LLMs) has significantly propelled the field of code generation. Previous work integrated reinforcement learning (RL) with compiler feedback for exploring the output space of LLMs to enhance code generation quality. However, the lengthy code generated by LLMs in response to complex human requirements makes RL exploration a challenge. Also, since the unit tests may not cover the complicated code, optimizing LLMs by using these unexecuted code snippets is ineffective. To tackle these challenges, we introduce StepCoder, a novel RL framework for code generation, consisting of two main components: CCCS addresses the exploration challenge by breaking the long sequences code generation task into a Curriculum of Code Completion Subtasks, while FGO only optimizes the model by masking the unexecuted code segments to provide Fine-Grained Optimization. In addition, we furthermore construct the APPS+ dataset for RL training, which is manually verified to ensure the correctness of unit tests. Experimental results show that our method improves the ability to explore the output space and outperforms state-of-the-art approaches in corresponding benchmarks.
PDF433December 15, 2024