11 天前

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

Ansong Ni, Srini Iyer, Dragomir Radev, Ves Stoyanov, Wen-tau Yih, Sida I. Wang, Xi Victoria Lin
LEVER:通过执行实现语言到代码生成的验证学习
摘要

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

LEVER:通过执行实现语言到代码生成的验证学习 | 最新论文 | HyperAI超神经