3 个月前

LEVER:通过执行实现语言到代码生成的验证学习

LEVER:通过执行实现语言到代码生成的验证学习

摘要

大型代码预训练语言模型(code LLMs)的出现推动了自然语言到代码生成任务的重大进展。当前最先进的方法通常结合大语言模型的解码过程,辅以基于测试用例或执行结果启发式规则的样本剪枝与重排序策略。然而,在许多真实场景下的自然语言到代码应用中,获取有效的测试用例极为困难;同时,现有的启发式方法难以充分捕捉执行结果中的语义特征(如数据类型、取值范围等),而这些特征往往直接反映了程序的正确性。为此,本文提出 LEVER——一种通过学习利用程序执行结果来验证生成代码的简单有效方法,以提升自然语言到代码生成的性能。具体而言,我们训练验证器(verifiers),使其能够根据自然语言输入、生成的程序及其执行结果,判断该程序是否正确。随后,通过将验证得分与原始 LLM 的生成概率相结合,并对具有相同执行结果的程序进行归一化处理,实现对候选程序的重排序。在涵盖表格问答(table QA)、数学问答(math QA)以及基础 Python 编程三个领域的四个数据集上,LEVER 均显著优于基础代码 LLM(以 code-davinci-002 为例,性能提升达 4.6% 至 10.9%),并在所有数据集上取得了新的最先进(SOTA)结果。

代码仓库

niansong1996/lever
官方
pytorch
GitHub 中提及

基准测试

基准方法指标
arithmetic-reasoning-on-gsm8kcode-davinci-002 175B (LEVER, 8-shot)
Accuracy: 84.5
Parameters (Billion): 175
code-generation-on-mbppcode-davinci-002 175B + LEVER
Accuracy: 68.9
semantic-parsing-on-spidercode-davinci-002 175B (LEVER)
Accuracy: 81.9
semantic-parsing-on-wikitablequestionsLEVER
Accuracy (Dev): 64.6
Accuracy (Test): 65.8
text-to-sql-on-spidercode-davinci-002 175B (LEVER)
Execution Accuracy (Dev): 81.9

用 AI 构建 AI

从想法到上线——通过免费 AI 协同编程、开箱即用的环境和市场最优价格的 GPU 加速您的 AI 开发

AI 协同编程
即用型 GPU
最优价格
立即开始

Hyper Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供
LEVER:通过执行实现语言到代码生成的验证学习 | 论文 | HyperAI超神经