论文链接:https://arxiv.org/abs/2512.00127
团队:IBM Research(Shailja Thakur 等)
提交日期:2025-11-28(v3 更新:2026-04-27)
📌 核心问题
大语言模型在代码推理任务上表现不佳,根本原因之一是训练数据中的思维链(Chain-of-Thought, CoT)缺乏可验证性。当前主流的合成 CoT 数据通常由教师模型生成“听起来合理”的解释,而非对程序实际执行行为的忠实描述。模型在这些数据上学到的是“语法正确但逻辑有缺陷”的推理模式。
更具体地说,现有方法存在三个关键缺口:(1)只验证最终输出(Outcome Verification),不检查中间推理步骤;(2)只做正向推理(输入→输出),忽略反向推理(输出→输入);(3)缺乏对生成的 CoT 与真实执行轨迹之间的系统性交叉验证。这导致模型“会说”但“不会想”——生成的推理链看似合理,实则与程序的真实行为脱节。
📊 关键数据
实验结果展示了验证质量对推理能力的决定性影响:
- LiveCodeBench-Exec:峰值提升 +26.6 分
- CruxEval:提升 +22.2 分
- HumanEval:提升 +19.5 分
核心发现:验证过的数据质量远比数据数量更重要。使用经过执行轨迹验证的 54,000 条 CoT 数据微调的小模型(8B 参数),在多项基准上超越了使用大规模未验证数据训练的更大模型。
🏗️ 技术架构/设计
- 三阶段数据合成流水线:Stage A(概念提取+代码合成)→ Stage B(基于共识的代码筛选)→ Stage C(执行轨迹验证的 CoT 生成)
- Dual Agreement 算法:独立生成 m 个解决方案 × n 个测试用例,通过沙箱执行构建通过/失败矩阵,选择一致性最高的代码-测试对,从源头过滤掉逻辑错误
- 执行轨迹验证机制:使用 pysnooper 捕获程序执行的完整轨迹(变量赋值、状态转换、控制流),然后用滑动窗口算法将每条 CoT 叙述与真实轨迹交叉验证
- 双向 CoT 生成:不仅做正向推理(给定输入预测输出),还做反向推理(给定输出推断输入),让模型真正理解程序的因果关系
- 完整流水线已开源:https://github.com/IBM/verified-code-cot/
🔑 关键洞察
验证质量 > 数据数量
LLM 生成的 CoT 经常“幻觉”
反向推理是被忽视的训练信号
执行轨迹验证可以规模化
🤔 引发思考
这项工作揭示了一个深层问题:我们用来训练 AI 推理能力的数据本身可能就是“有毒”的。当教师模型生成的 CoT 看似合理但与实际执行不符时,学生模型学到的是错误的推理模式。这不仅是代码推理的问题——任何需要精确推理的领域(数学证明、科学计算、逻辑推导)都面临类似的挑战。执行轨迹验证提供了一个范式:用确定性的程序执行作为“锚点”,校准自然语言推理的正确性。
另一个值得关注的启示是“验证 vs 规模”的权衡。在 Scaling Law 主导的当下,这项研究表明,在某些场景下,精心验证的小数据集可能比大规模未验证数据更有效。这对数据策略有重要影响:与其花更多算力生成更多数据,不如花更多精力验证已有数据的质量。
📖 相关阅读
- Code Execution as Grounded Supervision for LLM Reasoning(EMNLP 2025)— 同样利用代码执行确定性生成 CoT 监督数据
- CodeI/O — 大规模 CoT 数据生成但缺乏中间步骤验证
- SemCoder / rStar-Coder — 使用结果验证但跳过逐步推理验证
逍遥云初 | 2026.06.06