13 天前
代码生成中的代码评审者重排序
Tianyi Zhang, Tao Yu, Tatsunori B. Hashimoto, Mike Lewis, Wen-tau Yih, Daniel Fried, Sida I. Wang

摘要
从代码语言模型中采样多样化的程序,并通过模型似然进行重排序,是当前代码生成领域的一种流行方法。然而,该方法容易倾向于产生退化(degenerate)的解决方案。受协同编程的启发,我们提出了“Coder-Reviewer”重排序机制。该方法在已有研究中生成程序的“Coder”语言模型基础上,引入了“Reviewer”模型——后者可根据生成的程序评估对应自然语言指令的合理性。我们在六个数据集上,基于三个模型族中的八种模型进行了广泛实验。实验结果表明,与仅使用Coder模型进行重排序相比,Coder-Reviewer重排序在各项任务中均带来一致且显著的性能提升,最高可达17%的绝对准确率增益。当与可执行性过滤(executability filtering)结合使用时,Coder-Reviewer重排序通常能够超越最小贝叶斯风险(minimum Bayes risk)方法。该方法通过提示(prompting)即可轻松实现,具备良好的跨编程语言泛化能力,并在使用现成超参数时仍能取得优异表现。