训练代码生成模型自我调试输出
代码生成——将自然语言描述自动转换为计算机代码——是大语言模型(LLMs)最具前景的应用之一。但随着编程任务复杂度提升,LLMs的出错概率也随之增加。在2024年神经信息处理系统大会(NeurIPS)上发表的论文中,研究者提出了一种新方法,通过同时训练LLMs的调试能力来提升代码生成质量。
方法创新
与传统基于少量样本学习的调试方式不同,该研究采用监督微调(SFT)和强化学习(RL)双轨机制。为解决调试训练数据稀缺问题,研究团队利用LLMs生成高质量合成数据:
- 从现有代码生成数据集中提取自然语言提示
- 生成多组存在缺陷的代码实现(保留未通过单元测试的样本)
- 要求LLMs结合错误信息诊断缺陷原因
- 基于诊断结果生成修正后的代码(仅保留通过测试的版本)
关键技术
- 链式思维推理:要求模型先解释修复思路再生成代码
- 混合奖励函数:结合单元测试结果(离散)与CodeBLEU评分(连续)
- 两阶段训练:SFT确保基础能力,RL优化调试策略
实验结果
在StarCoder-15B、CodeLlama-7B等模型上的测试显示:
- 调试环节使代码通过率(pass@k)最高提升39%
- SFT+RL组合效果优于纯SFT方案
- 基于单元测试的训练效果优于仅使用规范示例
该方案为代码生成模型提供了可扩展的自我优化路径,显著降低了人工调试成本。完整技术细节可参考 NeurIPS 2024 会议论文《Training LLMs to better self-debug and explain code》。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
公众号二维码


浙公网安备 33010602011771号