StepCoder: Improve Code Generation with Reinforcement Learning from Compiler Feedback

2024年02月02日
  • 简介
    大型语言模型(LLMs)的进步显著推动了代码生成领域的发展。以前的工作将强化学习(RL)与编译器反馈相结合,探索LLMs的输出空间以提高代码生成质量。然而,LLMs对复杂人类需求的响应生成的冗长代码使得RL探索成为一项挑战。此外,由于单元测试可能无法覆盖复杂的代码,因此使用这些未执行的代码片段来优化LLMs是无效的。为了解决这些挑战,我们介绍了StepCoder,这是一个用于代码生成的新型RL框架,由两个主要组件组成:CCCS通过将长序列的代码生成任务分解为代码完成子任务课程来解决探索难题,而FGO仅通过屏蔽未执行的代码段来提供细粒度优化来优化模型。此外,我们还构建了APPS+数据集用于RL训练,该数据集经过手动验证以确保单元测试的正确性。实验结果显示,我们的方法改善了探索输出空间的能力,并在相应的基准测试中优于最先进的方法。我们的数据集APPS+和StepCoder可以在线获取。
  • 图表
  • 解决问题
    本论文旨在解决代码生成中的两个挑战:LLMs生成的代码过长导致RL探索困难,以及使用未执行代码片段进行优化无效。同时,论文还验证了使用手动验证过的数据集进行RL训练的有效性。
  • 关键思路
    论文提出了StepCoder框架,包括CCCS和FGO两个主要组件。CCCS通过将长序列代码生成任务分解为一系列代码完成子任务来解决探索挑战。FGO通过掩盖未执行代码段来提供细粒度优化。此外,论文还构建了经过手动验证的数据集APPS+进行RL训练。
  • 其它亮点
    论文的亮点包括提出了解决代码生成中两个挑战的StepCoder框架,构建了经过手动验证的数据集APPS+进行RL训练,并在实验中取得了优秀的表现。论文开源了数据集和代码,值得进一步研究。
  • 相关研究
    与本论文相关的研究包括之前将RL与编译器反馈相结合以增强代码生成质量的工作,以及其他使用RL进行代码生成的研究,如CodeBERT和GPT-2等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论