NExT: Teaching Large Language Models to Reason about Code Execution

📄 arXiv: 2404.14662v1 📥 PDF

作者: Ansong Ni, Miltiadis Allamanis, Arman Cohan, Yinlin Deng, Kensen Shi, Charles Sutton, Pengcheng Yin

分类: cs.LG, cs.CL, cs.PL, cs.SE

发布日期: 2024-04-23

备注: 35 pages


💡 一句话要点

提出NExT以解决大型语言模型对代码执行理解不足的问题

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 大型语言模型 程序执行理解 自我训练 链式推理 程序修复 执行轨迹 人工智能

📋 核心要点

  1. 现有的大型语言模型在程序执行理解方面存在不足,主要依赖表面文本,缺乏对运行时语义的深刻理解。
  2. NExT方法通过自我训练生成执行感知的推理集,使模型能够更好地推理程序的运行时行为,提升理解能力。
  3. 实验表明,NExT在MBPP和HumanEval基准上分别提高了PaLM 2模型的修复率26.1%和14.3%,且推理质量显著提升。

📝 摘要(中文)

人类开发者的基本技能之一是理解和推理程序执行。现有的大型语言模型(LLMs)通常仅基于程序的表面文本形式进行训练,缺乏对程序运行时语义的理解。为了解决这一问题,本文提出了NExT方法,旨在教会LLMs检查程序的执行轨迹,并通过链式推理(CoT)来推理其运行时行为。NExT利用自我训练生成合成的执行感知推理集,从而无需繁琐的人工标注即可获得正确的任务解决方案。实验结果表明,NExT显著提高了PaLM 2模型在程序修复任务中的修复率,且推理质量得到了显著改善。

🔬 方法详解

问题定义:本文旨在解决大型语言模型在理解程序执行时的语义不足问题。现有方法主要依赖文本表面信息,无法有效推理程序的运行时行为。

核心思路:NExT通过自我训练生成合成的执行感知推理集,帮助模型在没有人工标注的情况下,学习如何推理程序的执行轨迹和状态变化。

技术框架:NExT的整体架构包括数据生成、模型训练和推理三个主要模块。首先,通过自我训练生成执行轨迹的推理集,然后利用这些数据训练模型,最后在推理阶段应用模型进行程序修复。

关键创新:NExT的主要创新在于其自我训练机制,能够在没有人工标注的情况下生成高质量的执行感知推理集,这与传统方法依赖大量人工标注的方式形成鲜明对比。

关键设计:在模型训练中,NExT采用了特定的损失函数来优化推理质量,并设计了适应性网络结构,以便更好地捕捉程序执行的动态变化。

🖼️ 关键图片

img_0

📊 实验亮点

在MBPP和HumanEval基准测试中,NExT显著提高了PaLM 2模型的修复率,分别达到了26.1%和14.3%的绝对提升。同时,推理质量得到了自动化指标和人工评估的双重验证,显示出NExT的有效性。

🎯 应用场景

NExT方法具有广泛的应用潜力,尤其在自动化程序修复、代码审查和智能编程助手等领域。通过提升大型语言模型对代码执行的理解能力,可以显著提高软件开发的效率和质量,未来可能对软件工程领域产生深远影响。

📄 摘要(原文)

A fundamental skill among human developers is the ability to understand and reason about program execution. As an example, a programmer can mentally simulate code execution in natural language to debug and repair code (aka. rubber duck debugging). However, large language models (LLMs) of code are typically trained on the surface textual form of programs, thus may lack a semantic understanding of how programs execute at run-time. To address this issue, we propose NExT, a method to teach LLMs to inspect the execution traces of programs (variable states of executed lines) and reason about their run-time behavior through chain-of-thought (CoT) rationales. Specifically, NExT uses self-training to bootstrap a synthetic training set of execution-aware rationales that lead to correct task solutions (e.g., fixed programs) without laborious manual annotation. Experiments on program repair tasks based on MBPP and HumanEval demonstrate that NExT improves the fix rate of a PaLM 2 model, by 26.1% and 14.3% absolute, respectively, with significantly improved rationale quality as verified by automated metrics and human raters. Our model can also generalize to scenarios where program traces are absent at test-time.