Natural Language to Code Translation with Execution
Freda Shi1,2, Daniel Fried1,3 Marjan Ghazvininejad1 Luke Zettlemoyer1,4 Sida I. Wang1 1Meta AI 2Toyota Technological Institute at Chicago 3Carnegie Mellon University 4University of Washington Work done while interning at Meta AI.
Abstract
Generative models of code, pretrained on large corpora of programs, have shown great success in translating natural language to code (Chen et al., 2021; Austin et al., 2021; Li et al., 2022, inter alia). While these models do not explicitly incorporate program semantics (i.e., execution results) during training, they are able to generate correct solutions for many problems. However, choosing a single correct program from a generated set for each problem remains challenging.
中文速览
让大语言模型生成代码容易,但从一堆候选代码里挑出那个真正正确的却很难——这正是本文要解决的核心问题。研究者提出了一种叫做"基于执行结果的最小贝叶斯风险解码"(MBR-exec)的程序选择方法:先让预训练代码模型(Codex)采样出一批候选程序,再把每个程序实际跑在少量测试输入上,以执行结果是否一致来衡量两段代码语义是否等价,最终选出与其他候选程序"意见最一致"的那一个。在 Python(MBPP)、SQL(Spider)、Bash(NL2Bash)三个数据集上的实验表明,MBR-exec 显著优于所有不涉及程序执行的基线方法,即便在训练阶段从未执行过任何代码、推理时也没有标准答案的情况下依然如此。这一结果说明,在不改动模型本身的前提下,仅靠推理阶段的执行反馈就能大幅提升自然语言转代码的实际可用性,为代码生成模型的落地提供了一条简单有效的路径。
原文 arXiv:2204.11454;中英对照 + 大白话阅读 https://aha.fim.ai/paper/2204.11454v2