作者: Ansong Ni, Miltiadis Allamanis, Arman Cohan, Yinlin Deng, Kensen Shi, Charles Sutton, Pengcheng Yin
提交日期: 2024年4月23日
摘要:
人类开发者的一个基本技能是理解和推理程序执行的能力。例如,程序员可以用自然语言在脑海中模拟代码执行以调试和修复代码(即“橡皮鸭调试法”)。然而,代码大语言模型(LLMs)通常是在程序的表面文本形式上训练的,因此可能缺乏对程序在运行时如何执行的语义理解。为了解决这个问题,我们提出了 NExT,一种教导 LLMs 检查程序执行轨迹(已执行行的变量状态)并通过思维链(CoT)推理来理解其运行时行为的方法。具体而言,NExT 使用自训练来引导一个合成的、包含执行感知推理的训练集,这些推理能导向正确的任务解决方案(例如,修复后的程序),而无需繁琐的人工标注。基于 MBPP 和 HumanEval 的程序修复任务实验表明,NExT 将 PaLM 2 模型的修复率分别绝对提升了 26.1% 和 14.3%,并且推理质量得到显著提升,这得到了自动化指标和人工评估者的验证。我们的模型还能泛化到测试时没有程序轨迹的场景。
主题分类:
- 主要主题:机器学习 (cs.LG)
- 其他主题:计算与语言 (cs.CL);编程语言 (cs.PL);软件工程 (cs.SE)
其他信息:
- 论文长度:35页
- arXiv ID:2404.14662
- DOI:https://doi.org/10.48550/arXiv.2404.14662