13 天前

教会大语言模型自我调试

Xinyun Chen, Maxwell Lin, Nathanael Schärli, Denny Zhou
教会大语言模型自我调试
摘要

大型语言模型(LLMs)在代码生成任务上已取得令人瞩目的性能表现。然而,面对复杂的编程任务,模型一次性生成正确解决方案仍面临挑战。为此,已有部分研究工作设计了程序修复(program repair)方法以提升代码生成效果。在本研究中,我们提出了一种名为 Self-Debugging 的新方法,该方法通过少量示例(few-shot demonstrations)训练大语言模型自主调试其生成的程序。具体而言,我们证明了 Self-Debugging 能够使大语言模型实现“橡胶鸭调试”(rubber duck debugging)——即在无需任何人工反馈(如代码正确性判断或错误信息)的情况下,模型能够通过分析程序执行结果,并以自然语言解释生成的代码,从而自主识别自身错误。Self-Debugging 在多个代码生成基准测试中达到了当前最优性能,涵盖文本到 SQL 生成的 Spider 数据集、C++ 到 Python 翻译任务的 TransCoder 以及文本到 Python 生成的 MBPP 数据集。在 Spider 基准测试中,由于缺乏单元测试来验证预测结果的正确性,Self-Debugging 结合代码解释的方法始终比基线模型提升 2%–3%,并在最难级别的问题上将预测准确率提升了 9%。而在 TransCoder 和 MBPP 这两个提供单元测试的基准上,Self-Debugging 将基线准确率最高提升了 12%。此外,通过利用反馈信息并复用失败的预测结果,Self-Debugging 显著提升了样本效率,能够在生成少于基线模型十分之一候选程序的情况下,达到甚至超越其性能表现。

教会大语言模型自我调试 | 最新论文 | HyperAI超神经