Generating Verifiable Chain of Thoughts from Exection-Traces
作者: Shailja Thakur, Vaibhav Saxena, Rohan Kulkarni, Shivdeep Singh, Parameswaran Selvam, Hima Patel, Hiroshi Kanayama
分类: cs.SE, cs.AI, cs.PL
发布日期: 2025-11-28 (更新: 2025-12-26)
💡 一句话要点
提出基于执行轨迹的可验证思维链生成方法,提升代码推理能力。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码推理 思维链 执行轨迹 可验证性 语言模型
📋 核心要点
- 现有CoT方法生成的推理步骤缺乏可验证性,导致模型学习到错误的推理模式。
- 该论文提出一种基于程序执行轨迹生成CoT的方法,确保推理步骤与代码实际执行一致。
- 实验表明,该方法在代码推理任务上取得了显著提升,尤其是在输入输出预测方面。
📝 摘要(中文)
教会语言模型进行代码执行推理仍然是一个根本性的挑战。虽然思维链(CoT)提示表现出潜力,但当前的合成训练数据存在一个关键弱点:推理步骤通常是由教师模型生成的看似合理的解释,而不是代码实际执行的可验证记录。这导致了一个令人不安的失败模式,即模型学习模仿表面上令人信服但逻辑上有缺陷的推理模式。我们通过将CoT生成直接建立在程序执行轨迹上来解决这个问题。我们的流程工具化代码以捕获其动态行为,然后将这些执行轨迹叙述为自然语言和基于事实的基本原理,这些原理在设计上是可验证的。这种基于执行的方法确保每个推理步骤都反映了程序计算的内容,从源头上消除了逻辑幻觉。我们在HumanEval的代码推理任务、代码生成和解释任务上评估了我们的方法。在我们的双向轨迹数据上训练的模型在推理任务上取得了显著的改进,在输出预测方面获得了高达30分的提升,在输入预测方面获得了超过基础模型28分的提升,同时具有竞争力的解释和代码生成性能。
🔬 方法详解
问题定义:现有基于Chain-of-Thought (CoT) 的代码推理方法,其训练数据通常由大型语言模型生成,这些模型生成的推理步骤虽然看似合理,但并非基于代码的实际执行过程,存在逻辑错误和“幻觉”问题。这导致模型学习到错误的推理模式,影响代码推理的准确性。
核心思路:该论文的核心思路是将CoT的生成过程与代码的实际执行轨迹相结合。通过监控代码的执行过程,记录每一步的变量变化、函数调用等信息,然后将这些执行轨迹转化为自然语言描述,作为CoT的推理步骤。这样可以确保每个推理步骤都是基于代码的真实行为,从而避免逻辑错误和幻觉。
技术框架:该方法包含以下几个主要步骤:1. 代码工具化:对代码进行修改,插入监控代码,以便记录代码的执行轨迹。2. 执行轨迹收集:运行工具化后的代码,收集代码的执行轨迹,包括变量值、函数调用、控制流等信息。3. 自然语言叙述:将收集到的执行轨迹转化为自然语言描述,生成CoT的推理步骤。4. 模型训练:使用生成的CoT数据训练语言模型,使其学习基于执行轨迹进行代码推理。
关键创新:该方法最重要的创新点在于将CoT的生成过程与代码的实际执行轨迹相结合,从而确保推理步骤的正确性和可验证性。与现有方法相比,该方法避免了使用大型语言模型生成推理步骤,从而避免了逻辑错误和幻觉问题。
关键设计:论文中没有详细描述关键参数设置、损失函数、网络结构等技术细节。但是,代码工具化的具体方法、执行轨迹转化为自然语言描述的策略、以及如何将执行轨迹信息融入到语言模型的训练过程中,是影响最终效果的关键设计因素。这些细节在论文中没有详细展开,可能在补充材料或后续工作中进行说明。
📊 实验亮点
实验结果表明,在HumanEval数据集上,使用该方法训练的模型在代码推理任务上取得了显著提升,输出预测准确率提升高达30个百分点,输入预测准确率提升高达28个百分点。同时,在代码生成和解释任务上,该方法也取得了具有竞争力的性能。
🎯 应用场景
该研究成果可应用于代码自动补全、代码调试、代码解释等领域。通过提供基于代码执行轨迹的推理过程,可以帮助开发者更好地理解代码的行为,提高开发效率和代码质量。此外,该方法还可以用于教育领域,帮助学生学习代码推理和调试技能。
📄 摘要(原文)
Teaching language models to reason about code execution remains a fundamental challenge. While Chain-of-Thought (CoT) prompting has shown promise, current synthetic training data suffers from a critical weakness: the reasoning steps are often plausible-sounding explanations generated by teacher models, not verifiable accounts of what the code actually does. This creates a troubling failure mode where models learn to mimic superficially convincing but logically flawed reasoning patterns. We address this by grounding CoT generation directly in program execution traces. Our pipeline instruments code to capture its dynamic behavior, then narrates these execution traces into natural language and factually-grounded rationales that are verifiable by design. This execution-grounded approach ensures every reasoning step reflects what the program computes, eliminating logical hallucinations at the source. We evaluate our method on code reasoning tasks, code generation and explanation tasks from HumanEval. Models trained on our bi-directional trace-grounded data achieve substantial improvements on reasoning tasks, with gains of up to 30 points on output prediction and 28 points on input prediction over base models, alongside competitive explanation and code generation performance. https://github.ibm.com/IBM-Research-AI/Verified-Code-CoT