[论文解读] Coarse-Tuning Models of Code with Reinforcement Learning Feedback
本文提出 Rlcf,一种基于强化学习的粗调方法,通过结合编译器反馈以确保语法/语义正确性,以及使用判别器大模型评估生成代码与参考解的相似度,从而提升大语言模型的代码生成能力。该方法显著提高了编译成功率和测试通过率,使较小模型在 Java 代码生成任务中达到 2x–8x 更大模型的性能水平。
Large Language Models (LLMs) pre-trained on code have recently emerged as the dominant approach to program synthesis. However, these models are trained using next-token prediction, which ignores the syntax and semantics of code. We propose RLCF, that further trains a pre-trained LLM via reinforcement learning, using feedback from a grounding function that scores the quality of the code. The grounding function uses (i) compiler-derived feedback on whether the code it generates passes a set of correctness checks; and (ii) feedback from a different LLM that compares the generated code to a reference code. RLCF is model- and language-agnostic. We empirically evaluate it on the MBJP and MathQA tasks for Java. Our experiments show that RLCF raises the odds that an LLM-generated program compiles, is executable, and produces the right output on tests, often allowing LLMs to match the performance of 2x-8x larger LLMs.
研究动机与目标
- 为解决现有代码大模型在下一项 token 预测中忽略语义和语法正确性及功能等价性的问题。
- 开发一种基于强化学习的粗调方法,提升代码生成能力,且无需依赖大量测试用例。
- 通过双重反馈信号(编译器反馈与参考解相似度)平衡生成语法正确、可执行代码与语义正确、接近参考解的代码之间的目标。
- 评估该方法是否能使较小的大语言模型在代码生成任务中达到远大于其参数规模的模型的性能水平。
提出的方法
- Rlcf 使用强化学习对预训练代码大模型进行微调,将代码生成视为马尔可夫决策过程(MDP)。
- 奖励函数结合两种反馈信号:(1) 基于编译器的静态分析,用于检测语法、类型和语义错误,失败时给予负奖励。
- 第二个大模型判别器评估生成代码是否与参考解无法区分,若能欺骗判别器则给予正奖励。
- 判别器通过对抗方式训练,以区分生成代码与参考代码,从而促使策略网络生成更自然、更正确的程序。
- 该方法与模型和编程语言无关,适用于 CodeGen、CodeT5 和 GPT-2 等模型。
- 训练采用策略梯度方法,损失函数平衡了代码正确性与与参考解的相似度。
实验结果
研究问题
- RQ1结合双重反馈(编译器与判别器)的强化学习是否能显著提升大模型生成代码的功能正确性和编译成功率?
- RQ2Rlcf 是否能使较小的大模型在代码生成任务中达到远大于其参数规模的模型的性能水平?
- RQ3在代码质量与正确性方面,Rlcf 与监督微调、仅编译器反馈以及先前的强化学习基线相比表现如何?
- RQ4判别器的对抗训练是否必要?固定判别器是否能达到相同效果?
- RQ5Rlcf 的性能提升主要源于语言特定微调,还是强化学习反馈机制本身?
主要发现
- Rlcf 显著提高了生成代码通过编译、可执行并成功通过测试用例的概率,在 MBJP 和 MathQA 基准测试中表现优异。
- 在 MathQA 数据集上,Rlcf 将 CodeGen(350M)的 Pass@100 从 29.40 提升至 29.93,将 CodeT5(770M)的 Pass@100 从 32.05 提升至 32.16,显示出稳定提升。
- Rlcf 使较小模型(如 350M 参数的 CodeGen)在代码生成任务中达到 2x–8x 更大模型的性能水平。
- 消融实验证明,即使仅使用编译器反馈,Rlcf 仍优于使用交叉熵损失、双极 RAMP 损失和 CodeRL 的监督基线方法。
- 对抗训练判别器相比固定判别器提供了微小但一致的优势,尽管差异并非在所有情况下均具有统计显著性。
- 该方法在不同模型架构(包括 CodeGen、CodeT5 和 GPT-2)上均表现稳健,证实了其与模型无关的特性。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。