作者: Xinyun Chen, Maxwell Lin, Nathanael Schärli, Denny Zhou
提交日期: 2023年4月11日 (v1), 2023年10月5日修订 (v2)
摘要:
大语言模型(LLMs)在代码生成方面取得了令人印象深刻的性能。然而,对于复杂的编程任务,一次性生成正确的解决方案变得具有挑战性,因此一些先前的工作设计了程序修复方法来提高代码生成性能。在这项工作中,我们提出了 Self-Debugging(自我调试),它通过少量示例演示来教会大语言模型调试其预测的程序。具体而言,我们证明了 Self-Debugging 可以教会大语言模型进行“橡皮鸭调试”;即,无需任何关于代码正确性或错误消息的人工反馈,模型能够通过检查执行结果并用自然语言解释生成的代码来识别其错误。
Self-Debugging 在多个代码生成基准测试中达到了最先进的性能,包括用于文本到 SQL 生成的 Spider 数据集、用于 C++ 到 Python 翻译的 TransCoder 以及用于文本到 Python 生成的 MBPP 数据集。
* 在 Spider 基准测试中(没有单元测试来验证预测的正确性),结合代码解释的 Self-Debugging 将基线性能持续提升了 2-3%,并将最难级别问题的预测准确率提高了 9%。
* 在 TransCoder 和 MBPP 基准测试中(有可用的单元测试),Self-Debugging 将基线准确率提高了高达 12%。
* 同时,通过利用反馈信息并重用失败的预测,Self-Debugging 显著提高了样本效率,其性能可以匹配甚至超过那些生成超过 10 倍候选程序的基线模型。
主题分类: Computation and Language (cs.CL); Artificial Intelligence (cs.AI)
arXiv链接: https://arxiv.org/abs/2304.05128