- 简介预训练的代码语言模型已经在代码生成方面取得了很好的表现,提高了人类开发者的编程效率。然而,现有的代码LM评估通常忽略了它们的自我完善能力,只关注一次预测的准确性。当代码LM无法实现正确的程序时,开发者实际上很难调试和修复错误的预测,因为它不是由开发者自己编写的。不幸的是,我们的研究发现,代码LM也不能有效地自我完善其错误的生成结果。本文提出了CYCLE框架,根据可用的反馈(如测试套件报告的执行结果)学习自我完善错误的生成结果。我们在三个流行的代码生成基准测试HumanEval、MBPP和APPS上评估了CYCLE。结果表明,CYCLE成功地维持了一次代码生成的质量,并在很大程度上提高了代码LM的自我完善能力。我们实现了四个不同参数数量的CYCLE变体,分别为350M、1B、2B和3B,实验结果表明,CYCLE在各种基准测试和不同模型大小中都能显著提高代码生成性能,最高可达63.5%。我们还注意到,CYCLE在自我完善方面的表现优于参数多3倍的代码LM。
- 图表
- 解决问题本论文旨在解决预训练代码语言模型在生成代码时出现错误时无法有效自我修正的问题,提出CYCLE框架用于自我修正,并在三个流行的代码生成基准测试上进行了评估。
- 关键思路CYCLE框架通过利用测试套件等反馈信息进行自我修正,成功提高了代码语言模型的自我修正能力,并在保持或提高单次代码生成质量的同时,显著提高了模型的性能。
- 其它亮点论文实现了四个不同参数数量的CYCLE变体,并在350M,1B,2B和3B的模型上进行了实验,结果表明CYCLE能够稳定提高代码生成性能,最高可达63.5%。CYCLE在自我修正方面的表现也优于参数多3倍的代码语言模型。论文使用了三个流行的代码生成基准测试,并提供了开源代码。
- 最近的相关研究包括使用强化学习来提高代码生成的自我修正能力,如《Self-Adaptive Code Generation with Adversarial Learning》和《Improving Neural Program Synthesis with Inferred Execution Traces》。
沙发等你来抢
去评论
评论
沙发等你来抢