Sifting through the Chaff: On Utilizing Execution Feedback for Ranking the Generated Code Candidates

2024年08月26日
  • 简介
    大型语言模型(LLMs),如GPT-4、StarCoder和CodeLlama,通过根据给定的自然语言描述自动生成代码,正在改变开发人员处理编程的方式。尽管有所进展,但生成语法和语义正确的代码仍然具有挑战性,特别是对于复杂的编程任务。通常,个人使用LLMs生成多个候选解决方案,以增加产生正确代码的可能性。然而,从这些候选项中选择正确的代码-这个过程被称为代码排名-仍然是一个主要的挑战。目前关于代码排名的研究可以分为基于执行和非基于执行的方法。基于执行的方法虽然有效,但存在显著的限制,如缺乏高质量的单元测试和安全风险。仅依赖分类标签来训练代码排名器的非执行方法(例如CodeRanker)难以捕捉微妙的错误并提供详细的错误洞察。鉴于两种方法的优势和局限性,我们提出了一种新的方法。我们的工作的关键洞察是,有效的代码排名器应该真正理解错误代码的根本原因,仅依赖分类标签是不够的。受此启发,本文提出了RankEF,一种利用执行反馈的代码排名创新方法。RankEF采用多任务学习将代码分类与执行反馈生成相结合。这种方法使模型能够理解错误代码的原因,在排名阶段区分正确和不正确的解决方案,而无需执行代码。对三个代码生成基准的实验表明,RankEF显着优于最先进的CodeRanker。
  • 图表
  • 解决问题
    解决问题:如何有效地对自然语言描述生成的代码进行排名,以便从多个候选解决方案中选择正确的代码?
  • 关键思路
    关键思路:使用执行反馈来改进代码排名。通过多任务学习将代码分类与执行反馈生成相结合,使模型能够理解错误代码背后的原因,从而在不执行代码的情况下区分正确和错误的解决方案。
  • 其它亮点
    其他亮点:该论文提出了一种新的方法RankEF,它在三个代码生成基准测试中显著优于现有的CodeRanker。实验结果表明,RankEF能够更好地捕捉代码中的细微错误,并提供更详细的错误信息。此外,论文还讨论了现有方法的局限性,并提出了一些值得进一步研究的问题。
  • 相关研究
    相关研究:最近的相关研究包括CodeRanker和其他执行和非执行方法。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论