跳转至

What Really Improves Mathematical Reasoning: Structured Reasoning Signals Beyond Pure Code

会议: ICML2026
arXiv: 2605.19762
代码: 匿名仓库,缓存未提供公开 URL
领域: LLM 预训练 / 数学推理
关键词: 数据配比, 数学推理, 代码预训练, MoE, 认知脚手架

一句话总结

这篇论文通过 10T-token 语料和 MoE 从头预训练的控制实验指出,真正提升复杂数学推理的不是纯可执行代码本身,而是跨域结构化推理信号,尤其是数学语料中显式暴露中间步骤的“认知脚手架”。

研究背景与动机

领域现状:现代通用 LLM 的预训练语料通常包含相当比例的代码数据,很多经验结论认为代码的严格语法、控制流和算法结构不仅提升编程能力,也会外溢到数学、逻辑和科学推理。另一个相关方向是数据混合与数据选择,即在固定 token 预算下如何分配 Web、Code、Math、Wikipedia、Books 等不同域的数据。

现有痛点:过去许多研究把“代码”当作一个粗粒度整体,常常把可执行代码、notebook、Markdown、HTML/CSS、题解文本、带代码片段的数学推导都算进同一类。这样得到的“代码提升推理”结论可能混合了两种不同信号:一种是纯编程语法和可执行程序,另一种是自然语言、数学符号和过程结构交织的跨域推理轨迹。

核心矛盾:在固定训练预算下,加入某个域的数据并不是白送收益,而是会挤占其他域。纯代码可能增强编程,却减少模型接触知识密集或数学复杂推导的机会;数学数据也可能增强竞赛编程,却削弱某些综合推理任务。问题因此从“代码有没有用”变成“哪类结构信号在什么任务上有用,以及代价是什么”。

本文目标:作者希望用更细粒度的数据定义重新检验代码、数学与推理之间的关系:先把 Code 和 Code-NL 分开,再在 10T-token 语料上做固定预算消融,最后从数学域中筛出具有显式步骤结构的 cognitive scaffolds,观察它们是否能提升复杂数学推理而不显著损害编程能力。

切入角度:论文把“结构”从“代码文件”中抽离出来。纯 Code 被严格定义为可执行函数、脚本和程序片段,排除注释和说明;Code-NL 则保留混合代码和自然语言的结构化材料。随后作者用 FastText 结构分类器在数学语料中寻找带有子目标、分步推导、符号操作、验证过程的样本,作为更直接的推理脚手架。

核心 idea:与其笼统提高代码比例,不如在固定数学预算内提高结构化数学推理样本密度,用可见的中间推理轨迹训练模型解决高难数学问题。

方法详解

这篇论文的方法不是新模型架构,而是一套大规模数据因果归因实验。作者先构建严格分域的 10T-token 预训练语料,再训练不同规模的 MoE 和 dense 模型,比较 full data、w/o code、w/o math、w/o cognitive scaffold 等数据配置。实验的关键是固定总训练 token:当移除某个域时,剩余域按比例补足预算,因此性能差异反映的是数据替换效应,而不是训练量变化。

整体框架

整体流程分为四步。第一步是数据分域与清洗,把语料划分为 Web、Code、Code-NL、Math、Wikipedia、Books、Multilingual 七类,并用超过 300 个指标做质量准入。第二步是从头预训练 MoE 模型,核心模型是 20 层自回归 MoE,hidden size 2048,16 heads,每个 MoE 层有 16 个专家并采用 top-2 routing。第三步是固定预算消融,分别去掉纯 Code 或 Math,再看五类能力维度变化。第四步是在 Math 域内部用 cognitive scaffolds 替换一部分普通数学样本,测试结构化推理密度的作用,并用专家路由分布解释数据配比如何改变模型内部激活。

关键设计

  1. 严格区分 Code 与 Code-NL:

    • 功能:把纯可执行程序和混合格式推理材料拆开,避免把后者的推理收益错误归因给代码。
    • 核心思路:Code 主要来自 GitHub 等代码仓库,要求 executable code density 超过阈值,并通过语法、长度、去重和低质量过滤;Code-NL 主要来自网页、notebook、问答、Markdown、HTML/CSS 等混合来源,允许自然语言解释、公式和代码片段交织。代码消融时移除的是纯 Code,Code-NL 保持存在。
    • 设计动机:如果把 Code-NL 也算作代码,那么“代码提升推理”可能其实来自结构化讲解和数学推导,而不是可执行程序本身。这个拆分让实验能估计纯代码的边际贡献。
  2. 固定预算的数据消融实验:

    • 功能:测量不同数据域在同一训练预算下的竞争与协同关系。
    • 核心思路:从 full corpus 出发分别训练 w/o code 和 w/o math 模型;移除某域后,不减少总 token,而是由其他域按比例上采样补齐。评估被归为 general knowledge、programming ability、mathematical ability、comprehensive reasoning、professional knowledge 五个维度。
    • 设计动机:真实预训练最常见的约束是 token 预算固定。这个设置能暴露负耦合:加入一个域可能提升本域能力,却压低其他域能力。
  3. 认知脚手架筛选与 MoE 路由分析:

    • 功能:在数学域中寻找更高密度的结构化推理样本,并检查这种数据是否以更稳定的内部路由方式提升复杂数学能力。
    • 核心思路:用 20 万代码样本作为正例、20 万非代码样本作为负例训练轻量 FastText 分类器,让它识别外显结构模式;再把分类器应用到 Math 语料,选出 \(f_\theta(x)\geq\tau\) 的 cognitive scaffolds。验证集上分类器 accuracy 为 0.9696,positive precision 为 0.9998,recall 为 0.9665。选出的样本并不是靠手写规则筛选,但事后统计显示它们符号密度更高、推导步数更多、缩进比例更高、文本更长。
    • 设计动机:作者想证明有效信号是“显式中间推理结构”,而不是代码语义。MoE 路由分析进一步显示,脚手架不会像删掉 Code/Math 那样大幅重排专家,而是更像一个跨域稳定信号。

损失函数 / 训练策略

模型仍使用标准自回归语言建模目标。MoE 使用 dropless routing、load-balancing loss、router z-loss,并在早期加入 stochastic routing warmup:将 learned routing logits 与随机 logits 按 \(\alpha=\min(t_c/t_w,1)\) 插值,缓解早期专家拥塞。训练使用 AdamW,学习率 \(5\times10^{-5}\),2000 steps warmup,bfloat16 和 FP8 mixed precision,训练 24000 iterations,每 1200 iterations 保存 checkpoint。cognitive scaffolds 不作为新域单独调度,而是在固定 Math budget 内替换普通数学样本。

实验关键数据

主实验

实验问题 指标 / 数据集 关键结果 对照 结论
纯代码是否提升数学推理 数学能力平均 full data 比 w/o code 低 14.38% Code-NL 保持不变 纯可执行代码不是通用数学推理增强器
代码对复杂数学任务影响 Minerva-Math / OlympiadBench / MATH -71.53% / -47.16% / -22.64% w/o code 更好 代码在高难数学上与数学知识/推导预算竞争明显
数学数据对编程影响 CodeForces / LiveCodeBench +37.11% / +11.26% w/o math 更差 数学数据能帮助竞赛编程类算法任务
数学数据的负耦合 CruxEval / MBPP -17.30% / -6.12% w/o math 更好 数学数据也会干扰部分混合代码推理任务
cognitive scaffolds 数学能力平均 +17.56% 固定 Math token budget 结构化数学样本能显著提升复杂数学推理

消融实验

配置 关键指标 说明
full data (32e) Math overall 36.20 / Programming overall 26.94 32-expert MoE 的完整语料基线
w/o code (32e) Math overall 38.52 / Programming overall 14.25 去掉纯 Code 后数学平均更高,但编程能力大幅下降
w/o math (32e) Math overall 17.71 / Programming overall 24.25 去掉 Math 后数学能力崩塌,编程平均略低于 full
cognitive scaffold replacement College Math +30.05%, MATH +23.17%, OlympiadBench +47.78%, MathBench +14.51% 固定数学预算内提高结构化样本密度,复杂任务收益最大
scaffold side effect GSM8K -6.29%, CMath -2.00%, code benchmarks 约 -1% 对简单自然语言数学题有轻微竞争,对代码能力影响很小

关键发现

  • 论文反驳的是“纯代码天然提升推理”的粗粒度说法,而不是否认结构化数据有用。真正有效的信号来自显式步骤、符号操作、层级分解和验证过程。
  • Code-NL 是解释分歧的关键控制变量。过去把 Markdown、HTML、题解、notebook 等算作代码时,观察到的推理收益可能来自这些混合结构化文本。
  • cognitive scaffolds 对复杂数学任务收益显著,但对 GSM8K、CMath 这类可以用较直接自然语言解决的题目反而略有伤害,说明“结构越多越好”并不成立。
  • MoE 路由结果显示,去掉 Code 或 Math 会让对应域专家分布明显偏移,而去掉 scaffolds 造成的偏移更小、更分散,支持它们作为跨域稳定推理信号的解释。

亮点与洞察

  • 这篇论文把预训练数据讨论从“哪个域比例更大”推进到“同一域内部哪种结构特征有效”。这比简单争论 code ratio 更有操作价值,因为它能指导数据选择而不只是数据配比。
  • 固定预算设计很重要。很多数据消融如果只是减少 token,会混淆数据质量与训练量;本文保持总 token 不变,更贴近真实大模型训练中的资源分配问题。
  • FastText 结构分类器的设计很朴素但有效。作者没有训练复杂 reward model,而是用代码样本学习可迁移的外显结构,再投到 Math 域筛选推理轨迹,体现了低成本数据工程思路。
  • 专家路由分析让结论不只停留在下游分数。虽然路由模式不是严格因果解释,但它提供了机制层证据:不同数据配置确实改变了 MoE 内部的专家使用方式。

局限与展望

  • cognitive scaffold 的定义仍是操作性定义,不是普适理论。FastText 学到的“结构”可能包含格式、长度、缩进等表面特征,尽管作者做了污染审计和事后统计。
  • 论文没有系统扫描 scaffold replacement ratio,因此不能推出“脚手架比例越高越好”。当前结论只是在某个固定替换设置下成立。
  • 训练成本很高,复现实验门槛大。10T-token 语料和从头训练 MoE 让结论可信度提升,但也限制了外部验证。
  • 评估主要在预训练能力维度上,尚未充分覆盖 instruction tuning、RLHF 后以及 tool-use agent 场景中这些数据效应是否保留。

相关工作与启发

  • vs To Code or Not to Code / code-ratio studies: 既有工作常把代码和结构化文本混在一起讨论,本文通过保留 Code-NL、只消融 pure Code,指出推理收益可能来自混合结构化样本。
  • vs DoReMi / REGMIX: 数据混合方法关注域级比例优化,本文进一步说明域内实例结构同样关键;未来可以把 cognitive scaffold 作为一个可学习的子域加入混合优化。
  • vs 数据选择方法: 本文的 scaffold 筛选可以看成面向推理的离线数据选择。与通用质量打分不同,它强调中间步骤可见性和符号过程结构。
  • 启发: 对 LLM 预训练来说,提升数学推理不一定要增加整个 Math 域比例,可以在固定预算内提高“可追踪推理轨迹”的密度;对代码数据也应区分可执行程序、题解、notebook 和带注释推导。

评分

  • 新颖性: ⭐⭐⭐⭐ 主题本身已有不少代码数据研究,但把 Code/Code-NL 拆开并定位 cognitive scaffolds 的贡献很有启发。
  • 实验充分度: ⭐⭐⭐⭐⭐ 10T 语料、MoE/dense 多规模、固定预算消融和路由分析组合很扎实。
  • 写作质量: ⭐⭐⭐⭐ 主线清楚,数字充分,但附录表格解析较重,读者需要小心区分相对变化和原始分数。
  • 价值: ⭐⭐⭐⭐⭐ 对预训练数据工程非常实用,直接指出“结构化推理样本密度”比笼统增加代码更可控。