- 简介本文介绍了人类开发者的一项基本技能,即理解和推理程序执行。例如,程序员可以在自己的头脑中用自然语言模拟代码执行来调试和修复代码(也称为“橡皮鸭调试”)。然而,大型语言模型(LLM)通常是在程序的表面文本形式上进行训练的,因此可能缺乏程序在运行时的语义理解。为了解决这个问题,本文提出了一种名为NExT的方法,可以教会LLM检查程序的执行轨迹(执行行的变量状态)并通过思维链(CoT)推理其运行时行为。具体而言,NExT使用自我训练来引导生成合成的训练集,其中包含了执行感知的合理性,这些合理性可以在不需要繁琐手动注释的情况下导致正确的任务解决方案(例如修复程序)。基于MBPP和HumanEval的程序修复任务的实验表明,NExT将PaLM 2模型的修复率分别提高了26.1%和14.3%,同时合理性质量也得到了自动度量和人类评估者的验证。我们的模型还可以推广到测试时缺乏程序跟踪的情况。
- 图表
- 解决问题论文旨在解决语言模型在理解程序执行时缺乏语义理解的问题,提出了一种通过执行轨迹和思考链(CoT)来教授语言模型检查程序执行轨迹并推理其运行时行为的方法。
- 关键思路NExT使用自我训练来生成合成训练集,这些训练集包含了执行感知的合理性,以便在不需要繁琐手动注释的情况下,能够导致正确任务解决方案的执行合理性。通过实验,证明了该方法可以显著提高PaLM 2模型的修复率,并且可以推广到测试时缺少程序轨迹的情况。
- 其它亮点该论文的亮点包括:使用了自我训练生成合成训练集,提高了语言模型的修复率;使用了MBPP和HumanEval数据集进行实验;使用了自动度量和人类评估器来验证合理性质量;该模型可以推广到测试时缺少程序轨迹的情况。
- 与该论文相关的研究包括:1)使用程序执行轨迹来改进程序生成的方法;2)使用程序执行轨迹来检测和修复程序中的错误;3)使用自我监督学习来提高语言模型的性能。
沙发等你来抢
去评论
评论
沙发等你来抢