Addestramento Iterativo Automatico per la Generazione di Codice tramite Riordinamento Rinforzato
Iterative Self-Training for Code Generation via Reinforced Re-Ranking
April 13, 2025
Autori: Nikita Sorokin, Ivan Sedykh, Valentin Malykh
cs.AI
Abstract
Generare codice di alta qualità che risolva compiti di programmazione complessi è una sfida, specialmente con i modelli basati su decoder attuali che producono output altamente stocastici. Nella generazione di codice, anche errori minori possono facilmente compromettere l'intera soluzione. Sfruttare più soluzioni campionate può migliorare significativamente la qualità complessiva dell'output.
Un modo efficace per migliorare la generazione di codice è abbinare un modello di generazione di codice a un modello di reranking, che seleziona la migliore soluzione tra i campioni generati. Proponiamo un nuovo approccio iterativo di auto-addestramento per addestrare modelli di reranking utilizzando l'ottimizzazione delle politiche prossimali (PPO), mirato a migliorare sia l'accuratezza del reranking che il processo complessivo di generazione del codice. A differenza degli approcci tradizionali PPO, in cui l'obiettivo è ottimizzare un modello generativo con un modello di ricompensa, il nostro approccio si concentra sullo sviluppo di un modello robusto di ricompensa/reranking. Questo modello migliora la qualità del codice generato attraverso il reranking e affronta problemi ed errori che il modello di ricompensa potrebbe trascurare durante l'allineamento PPO con il reranker. Il nostro metodo perfeziona iterativamente il dataset di addestramento rivalutando gli output, identificando esempi negativi ad alto punteggio e incorporandoli nel ciclo di addestramento, migliorando così le prestazioni del modello.
La nostra valutazione sul dataset MultiPL-E dimostra che il nostro modello da 13,4 miliardi di parametri supera un modello da 33 miliardi in termini di qualità della generazione di codice, pur essendo tre volte più veloce. Inoltre, raggiunge prestazioni paragonabili a GPT-4 e lo supera in un linguaggio di programmazione.
English
Generating high-quality code that solves complex programming tasks is
challenging, especially with current decoder-based models that produce highly
stochastic outputs. In code generation, even minor errors can easily break the
entire solution. Leveraging multiple sampled solutions can significantly
improve the overall output quality.
One effective way to enhance code generation is by pairing a code generation
model with a reranker model, which selects the best solution from the generated
samples. We propose a novel iterative self-training approach for self-training
reranker models using Proximal Policy Optimization (PPO), aimed at improving
both reranking accuracy and the overall code generation process. Unlike
traditional PPO approaches, where the focus is on optimizing a generative model
with a reward model, our approach emphasizes the development of a robust
reward/reranking model. This model improves the quality of generated code
through reranking and addresses problems and errors that the reward model might
overlook during PPO alignment with the reranker. Our method iteratively refines
the training dataset by re-evaluating outputs, identifying high-scoring
negative examples, and incorporating them into the training loop, that boosting
model performance.
Our evaluation on the MultiPL-E dataset demonstrates that our 13.4B parameter
model outperforms a 33B model in code generation quality while being three
times faster. Moreover, it achieves performance comparable to GPT-4 and
surpasses it in one programming language.Summary
AI-Generated Summary