CYCLE:学习自我完善代码生成

本文探讨了代码语言模型在生成代码时的自我改进能力不足,并介绍了Cycle框架,该框架通过结合自然语言描述、错误代码和执行反馈进行训练,显著提高了代码LM的性能和自我优化能力,尤其在处理错误生成时效果显著。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


预训练的代码语言模型在代码生成方面取得了可喜的性能,并提高了人类开发人员的编程效率。然而,现有的代码 LM 评估通常忽略了它们的 自我求精能力,这些评估仅关注一次性预测的准确性。对于代码 LM 无法实现正确程序的情况,开发人员实际上发现很难调试和修复错误的预测,因为它不是由开发人员自己编写的。不幸的是,我们的研究表明,代码语言模型也无法有效地自我改进其错误的生成。在本文中,我们提出了 Cycle 框架,学习根据可用的反馈(例如测试套件报告的执行结果)来自我改进错误的生成。我们在三个流行的代码生成基准测试(HumanEval、MBPP 和 APPS)上评估 Cycle。结果表明,Cycle 成功地保持了(有时还提高了)一次性代码生成的质量,同时显着提高了代码 LM 的自我优化能力。我们在 350M、1B、2B 和 3B 上实现了具有不同数量参数的 Cycle 的四种变体,实验表明,Cycle 在基准测试和不同的模型大小上始终如一地提高了代码生成性能高达 63.5%。我们还注意到,Cycle 的性能优于参数多 3 倍的代码自优化LM。

Intriduction

在本文中,我们提出了 Cycle 框架,试图提高代码 LM 在探索模式下的性能。创建 Cycle 的基本原则是认识到,期望代码 LM 在探索模式中表现出色可能要求过高,而在探索模式中,人类的意图往往不明确或没有明确指定。然而,这些模型应该具备根据从其他来源收到的反馈(例如测试套件报告的执行结果)迭代改进代码生成的能力。从本质上讲,Cycle 的目标是使代码语言模型能够根据可用的反馈来调整和增强其输出,从而缩小人类开发人员的探索性编程需求与代码语言模型的能力之间的差距。
探索模式中代码 LM 的局限性。在这项工作中,我们重点关注代码生成的场景,给定问题的自然语言 (NL) 描述(通常包装在文档字符串中),代码 LM 将相应地实现程序。为了方便我们以后的讨论,我们首先具体化我们场景中的加速模式和探索模式。
• 加速模式:给定问题的NL 描述,代码LM 直接相应地预测代码。
• 探索模式:如果加速模式的预测未能通过测试用例并且返回执行反馈,则代码LM 会尝试改进错误代码,而无需进一步的人工指令。

如图1所示ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值