DeepSeekMath:从数学数据到 GRPO 的完整学习链路
DeepSeekMath 经常被简化成 GRPO 的出处,但其成绩来自一条完整链路:筛选数学预训练数据、在代码模型上继续训练、监督微调,再做强化学习。真正值得理解的是 GRPO 如何用同题多次回答替代 critic,以及论文为什么认为 RL 更多是在重排已有正确答案的概率,而不是已经证明创造了全新能力。
六个关键结论
- 问题:数学能力既受预训练覆盖限制,也受正确轨迹的采样概率限制;后训练算法不能脱离基座讨论。
- 机制:GRPO 通过同一问题的一组奖励构造相对优势,移除单独训练的价值网络,保留概率比 clipping 与参考模型约束。
- 证据:7B Instruct 到 RL,MATH 无工具 Top1 从 46.8% 到 51.7%,GSM8K 从 82.9% 到 88.2%。
- 实践:省去 critic 不等于省去 rollout;组大小和组内奖励差异决定信号质量与采样成本。
- 代价:终点奖励难以定位中间错误;整组同对或同错时,相对优势缺少有效差异。
- 开放问题:准确率增加究竟是正确轨迹更常出现,还是覆盖了原本不会解决的新问题?
先有数学分布,后有策略优化
理解这篇论文,要先把“会不会”与“经常能不能做到”拆开。数学模型可能完全缺少某类知识,也可能知道若干正确解法,却在采样时经常选错。继续预训练和 SFT 主要改变可利用的信息与行为起点;RL 再借助反馈改变各种尝试出现的频率。它们有交叉作用,但只看最终模型分数,无法知道贡献来自哪个阶段。
这也是论文同时讲数据与 GRPO 的原因。算法所能强化的东西,要通过实际 rollout 被访问到。如果正确轨迹概率极低,再漂亮的优势估计也可能只看到失败;如果基座已经能产生相当多正确候选,奖励重排就可能产生明显收益。因此 GRPO 的方法贡献必须放回 DeepSeekMath 的数据和基座背景,而不能把最后一个训练阶段当成完整原因。
作者从 Common Crawl 筛选数学网页,以种子语料训练分类器、识别高质量站点、补充人工规则并迭代;最终数学语料约 120B token。DeepSeek-Coder-Base-v1.5 7B 是起点,继续训练总量约 500B token,除了数学还有代码与自然语言数据。因此 120B 数学 token 不是完整训练量,也不是 RL 的数据规模。
数据管线进行基准去污染,但其效果仍依赖检测策略;代码预训练有助数学推理、arXiv 语料在作者的设置中收益有限,都是条件化实验发现,不是“代码永远优于论文”的普遍规律。后续 SFT 与 RL 是在这一基座上继续改善分布。
从 critic 到组相对优势
同题 \(x\) 从旧策略采样 \(G\) 个回答 \(y_i\),获得奖励 \(r_i\),终点监督下每个 token 共用 \(\hat A_i=(r_i-\bar r)/(\operatorname{std}(r)+\varepsilon)\)。这里的微小 \(\varepsilon\) 是实际处理零方差所需的数值保护;原文展示的概念公式不含这一项。
令 token 概率比 \(\rho_{i,t}=\pi_\theta(y_{i,t}\mid x,y_{i,<t})/\pi_{\mathrm{old}}(y_{i,t}\mid x,y_{i,<t})\)。再定义 \(u_{i,t}=\pi_{\mathrm{ref}}(y_{i,t}\mid x,y_{i,<t})/\pi_\theta(y_{i,t}\mid x,y_{i,<t})\),以及原文使用的逐 token 估计项 \(k_{i,t}=u_{i,t}-\log u_{i,t}-1\)。GRPO 最大化:
\[ \begin{aligned} J(\theta)&=\mathbb E_{\substack{x\sim\mathcal D\\y_{1:G}\sim\pi_{\mathrm{old}}(\cdot\mid x)}} \left[\frac1G\sum_{i=1}^G\frac1{|y_i|}\sum_{t=1}^{|y_i|}\left\{ \min\big(\rho_{i,t}\hat A_i,\operatorname{clip}(\rho_{i,t},1-\epsilon,1+\epsilon)\hat A_i\big) -\beta k_{i,t}\right\}\right]. \end{aligned} \]相对优势回答“这条比同题其他样本好多少”,clipping 限制对旧数据的激进更新,KL 项约束相对初始参考模型的漂移。两种限制功能不同,不能称为完全替代。论文还讨论过程监督:在步骤边界给更细奖励,优势不再只是全序列相同的终点分数。
\(k_{i,t}\ge0\) 来自 \(u-\log u-1\ge0\),但一个已采样 token 的估计项不等于该前缀上的完整词表 KL。固定前缀、两策略在词表上满足相应支持条件时,只有按当前 \(\pi_\theta\) 采样下一 token,才有 \(\mathbb E_{v\sim\pi_\theta}[u(v)-\log u(v)-1]=D_{\mathrm{KL}}(\pi_\theta\|\pi_{\mathrm{ref}})\)。复用旧策略数据时,不能未经修正就沿用这个无偏结论。这里也不把序列 KL 重复塞进每个 token 的求和中;各项的单位都是该 token 的局部信号。
从目标到更新:理解两个参照系
读完目标函数,仍需回答两个问题:为什么相对奖励有助更新,以及为什么同一个公式同时需要旧策略和参考策略。先把这两个设计讲清,再回到论文的性能比较。
为什么减去 baseline:从梯度看组比较
对完整回答的奖励目标 \(J(\theta)=\mathbb E_{y\sim\pi_\theta}[r(y)]\),在奖励不直接依赖参数、允许交换微分与求和的条件下,log-derivative trick 给出 \(\nabla J=\mathbb E[r(y)\nabla\log\pi_\theta(y)]\)。同题的高低奖励都直接作为系数,估计方差可能很大。若 \(b(x)\) 不依赖被采样动作,则:
\[ \mathbb E_{y\sim\pi_\theta}[b(x)\nabla\log\pi_\theta(y\mid x)] =b(x)\nabla\sum_y\pi_\theta(y\mid x)=0. \]因此减去这样的 baseline 不改变理想梯度期望,却可以减少方差。PPO 通常学一个价值模型来估计它;GRPO 用同题的一组回答形成相对参照。这里要注意有限组均值包含当前回答,标准差也来自该组;它不是独立 baseline 的严格同义替换,组标准化还改变不同题目梯度的相对尺度。
一个四回答的教学例子是奖励 \((1,0,0,0)\)。组均值为 0.25,若采用总体标准差,则约为 0.433;成功回答的优势约为 1.73,失败回答约为 −0.58。成功路线被增加、失败路线被降低。若四条都错,组内没有告诉算法“哪种失败更接近成功”;数值保护可以避免除零,却不能制造缺失的相对信息。
为什么同时出现 old policy 和 reference policy?
旧策略 \(\pi_{\mathrm{old}}\) 是生成当前训练数据的检查点,用于概率比;参考策略 \(\pi_{\mathrm{ref}}\) 是较固定的行为锚点,用于控制累计偏移。前者回答“这份数据现在有多陈旧”,后者回答“模型离起点走了多远”。即使每步相对旧策略只移动一点,很多步之后也能离初始模型很远;即使总体 KL 较小,一份反复复用的旧 rollout 也可能失真。两种约束并不重复。
概率比 clipping 也不是对所有概率变化施加硬边界。它限制的是 surrogate objective 中某些样本继续推动更新的收益,不保证更新后的比值绝不越界,更不保证所有未采到的动作都受控。理解这一点,才能避免把“用了 PPO 风格 clipping”写成已经具备任意任务上的安全保证。
回到结果:信号改善体现在哪里?
以下完整保留原主表中用于判断 RL 增益的两个同基座方法,在四个基准与两种推理设置下的结果(%)。外部闭源和不同规模模型不构成等预算算法消融,故不将其排行榜名次作为本篇的因果证据。
| 设置 | 7B 方法 | GSM8K | MATH | MGSM-zh | CMATH |
|---|---|---|---|---|---|
| 无工具 CoT / Top1 | Instruct | 82.9 | 46.8 | 73.2 | 84.6 |
| 无工具 CoT / Top1 | RL | 88.2 | 51.7 | 79.6 | 88.8 |
| 工具集成 / Top1 | Instruct | 83.7 | 57.4 | 72.0 | 84.3 |
| 工具集成 / Top1 | RL | 86.7 | 58.8 | 78.4 | 87.6 |
51.7 是单次无工具结果;工具条件下的 58.8 与 64 样本 self-consistency 的 60.9 属于不同推理预算,不能并列成同一成绩的反复提升。原 RL 配置每题采样 64 个回答、最长 1,024 token、KL 系数 0.04、学习率 \(10^{-6}\)。它明显不同于后来各种 GRPO 配方,不能直接套用后来论文的结果来解释原始实验。
数据来源与梯度系数的统一视角
原文在较小模型上比较 SFT、离线 RFT、DPO、Online RFT、PPO 和 GRPO。其中 RFT 此处是拒绝采样微调:过滤正确回答后监督学习。SFT 的样本来自人工数据,离线 RFT/DPO 来自固定策略,Online RFT/GRPO 则刷新样本。于是区别不仅是 loss:训练看到哪些状态同样改变。
Online RFT 在后期优于固定数据的 RFT,支持持续刷新样本的价值;GRPO 的正负相对系数与过程监督又带来额外差别。但这些图中方法同时改变数据来源或奖励信号,不能把全部收益单独归于去掉 critic。
Maj@K 增加为何不等于覆盖增加
Pass@K 问 K 次采样中是否至少出现一个正确答案;Maj@K 问多数投票后的答案是否正确。作者温度 0.7 的诊断发现 RL 改善 Maj@K,而 Pass@K 没有同样改善,因而提出概率重排的解释。它提示正确解本已存在但频率不足,却不能证明模型在所有题目、无限采样或所有解题结构上都没有新能力。
二元组奖励还带来信号枯竭:若同组全错,去均值后的奖励全零;全对也一样。提高组大小能增加遇到混合结果的机会,但采样成本同步增长;更密集的监督如 OPSD,或学习正确采样分布如 E2S,正是在处理这个瓶颈。
延伸:从成功频率到能力覆盖
下面是一个独立分析例子。假设每次采样独立、单次正确概率为 \(p\),则 \(\mathrm{Pass@}K=1-(1-p)^K\)。当 \(K\) 很大时,即使两个模型的单次正确率不同,Pass@K 都可能接近 1。因此“大预算下 Pass@K 没变”既可能反映可解题集合没扩展,也可能是指标饱和;它不能单独证明模型没有学到任何新知识。
另一方面,多数投票不只依赖正确答案出现概率,还依赖错误答案如何分散。若许多不同错误答案各占小概率,正确答案未超过一半也可能成为最常见答案。于是 Maj@K 的提升可能来自正确质量增加,也可能来自错误质量分布改变。比较能力时,应同时报告每题的正确率、错误答案集中度和随 K 变化的覆盖曲线。
后续方法可以放在这个瓶颈图里理解:UFT 用专家前缀使成功更容易被访问;OPSD 在尚未成功的尝试上提供更细的教师信号;FlowRL 显式规定应该匹配的奖励倾斜分布;E2S 则先为 SFT 构造有效的学生友好轨迹。这不是“GRPO 被后人替代”的线性故事,而是不同工作对采样、监督和目标三个位置的干预。
对实践最有帮助的判断不是立即换 loss,而是先统计:多少题从未采到正确解,多少题组内奖励总是相同,多少题已有正确解却单次表现不稳。三类问题分别指向知识与探索、信号稀疏、概率重排,所需补救并不相同。
如何用实验区分覆盖与重排
固定同一基座与题目,绘制多种 K 下的 Pass@K、Maj@K 和单次准确率;并用可验证的推理步骤聚类统计正确轨迹类型。进一步固定奖励、rollout 总 token 和更新预算,分别改变在线刷新与优势算法。若新方法主要提高频率但没有增加跨题覆盖,应避免写成能力边界已经扩大。
结论
GRPO 是一种去 critic 的组相对策略优化,而 DeepSeekMath 是包括数据、预训练和后训练的系统结果。读懂它,需要同时看信息从哪里来、样本从哪里来,以及目标如何把这些信息变成梯度。
参考资料
DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models:数据管线、GRPO 目标、Table sft_rl_math、统一梯度框架与 Maj@K/Pass@K 诊断。
Contact
There may be some errors present. If you find any, please feel free to contact me at wangqiyao25@mails.ucas.ac.cn. I would appreciate it!