Appearance
DeepSeek-R1 论文精读:GRPO、纯强化学习与推理能力蒸馏
原论文:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
作者:DeepSeek-AI | 首次提交:2025-01-22 | 阅读版本:arXiv:2501.12948v2,2026-01-04
期刊:Nature 645, 633–638 (2025) | 官方实现与模型说明:deepseek-ai/DeepSeek-R1阅读说明:本文以截至 2026-10-26 的 arXiv v2 版本为准。论文数据是发表时的实验条件和历史模型比较,不代表当前各家模型的最新排名。正文中的工程落地建议和示例代码是个人分析,不是论文官方训练代码。
一句话理解这篇论文
让一个足够强的基础模型多次尝试可验证问题,只根据结果对错给予奖励,模型可以在强化学习中形成更长、更有效的推理策略,而不需要先教它模仿人工写出的推理步骤。
DeepSeek-R1 的贡献可以分成三个层次:
- R1-Zero:回答“纯强化学习能不能激发推理?” 直接从 DeepSeek-V3-Base 做 RL,不预先用人工推理轨迹做 SFT。
- R1:回答“怎样把推理能力变成可用产品?” 通过冷启动 SFT、推理 RL、混合 SFT、偏好对齐 RL,兼顾能力、可读性和指令遵循。
- Distill:回答“小模型怎样获得推理能力?” 将强模型生成的高质量数据用于监督微调 Qwen/Llama 系列小模型。
论文所说的“自我进化”,主要指训练期间模型策略与行为模式的演化,不是一个在线运行的 Agent 自行修改源码,也不是上线后模型参数自动更新。
1. 为什么不是“给模型一句请仔细思考”?
Chain-of-Thought(CoT)提示能让模型展示中间步骤,但提示本身不直接改变模型参数。传统的推理能力后训练又往往依赖大量人工标注的推理样例:模型学着人提供的轨迹生成回答。
这两种方法各自有效,却有一个共同的问题:模型学到的搜索策略,在多大程度上受示例限制?
DeepSeek 的思路是把问题改写为一个优化目标:
- 给模型足够多、足够难的题;
- 允许模型生成各种不同的解题过程;
- 用独立、可信的验证器判断结果;
- 把高奖励方案的生成概率提高,把低奖励方案的概率降低。
这里最关键的不是多写几个 <think> 标签,而是 训练信号来自可验证的结果。模型因此有空间尝试反思、回溯和替代解法。
但是,这并不意味着模型完全不需要人类知识。基础模型已经经过预训练;R1-Zero 也使用人工设计的任务集、输出格式和奖励规则。论文的准确表述是:无需先提供人工标注的推理轨迹作为 R1-Zero 的 SFT 起点。
2. DeepSeek-R1-Zero:验证“纯 RL 能产生推理能力”
2.1 先理解 GRPO
DeepSeek 使用 Group Relative Policy Optimization(GRPO),它最重要的工程特征之一是:用同一问题的一组候选答案构造相对优势,避免训练一个与策略模型体量相近的独立价值模型(Critic)。
把一个问题理解成一次“同题考试”:
text
问题 q
├─ 采样答案 o1 → 验证器得分 r1
├─ 采样答案 o2 → 验证器得分 r2
├─ 采样答案 o3 → 验证器得分 r3
└─ 采样答案 o4 → 验证器得分 r4
↓
对本组奖励做均值和标准差归一化
↓
相对好的答案 A > 0,相对差的答案 A < 0
↓
策略梯度更新 + 概率比裁剪 + KL 约束论文公式(3)的核心是:
text
A_i = (r_i - mean(r_1, ..., r_G)) / std(r_1, ..., r_G)例如,同一个问题的四份答案得分为 [1, 1, 0, 0],组内均值是 0.5,总体标准差是 0.5,归一化后就得到 [+1, +1, -1, -1]。这只是帮助直觉理解的例子;真实训练还要处理标准差为零、token 级概率、采样分布和数值稳定性。
与 PPO 相比,GRPO 省去了学习式 Critic 的训练与显存开销;优化目标仍通过类似 PPO 的概率比裁剪控制更新幅度,并用 KL 项约束策略与参考模型的差异。
一个容易误解的地方: GRPO 不是“直接用奖励训练模型”这么简单。模型更新依赖采样策略、组内优势、概率比、裁剪参数、参考策略和稳定的训练基础设施。
2.2 奖励函数:先奖励“可验证的正确”
R1-Zero 的规则奖励包含:
| 信号 | 做什么 | 示例 |
|---|---|---|
| Accuracy reward | 判断最终答案是否正确 | 数学答案匹配参考值、代码通过测试 |
| Format reward | 检查约定的输出结构 | 正确分隔推理部分与最终答案 |
两项在论文的规则奖励中以相同权重相加。这里的格式奖励不是在训练“正确的推理过程”,而是在让输出保持可解析的结构。
研究者刻意没有为推理领域使用神经网络过程奖励模型来逐步评价每一段思考,因为过程打分难以稳定扩展,而且奖励模型本身可能被策略模型钻空子(Reward Hacking)。
把这个思路放到编码场景会很直观:比起让另一个 LLM 主观评一句“代码看起来不错”,编译、单元测试、隐藏测试集更接近可靠奖励。
2.3 训练中究竟出现了什么?
v2 论文披露,R1-Zero 对每个问题采样 16 个输出,训练共 10,400 个策略更新步骤;最大生成长度在中后期从 32,768 提高到 65,536 token(论文第 2.1 节)。
实验中最引人注意的是两条曲线(论文 Figure 1,PDF 第 4 页):
- AIME 2024 Pass@1:从 15.6% 提升到 77.9%。
- 生成长度明显增长: 随着训练推进,模型倾向于尝试更长的解题过程。
论文也观察到模型开始产生“重新检查前提”“换一种方法试试”等反思性表达。作者称其中一次行为变化为 aha moment。
这不能解读为模型拥有自我意识;更保守、更技术性的解释是:在给定数据、模型容量和奖励规则下,优化结果鼓励了某些有利于任务得分的文本生成模式。
长推理与准确率一起增长也不意味着“越长越正确”。过度思考、重复以及错误路径上的长篇推导,都是后续必须解决的问题。
3. DeepSeek-R1:为什么纯 RL 之后还要做 SFT?
R1-Zero 证明了能力可以出现,但作为实际产品仍有明显瑕疵:中英混杂、格式不清、可读性欠佳,非推理任务能力也不够均衡。
所以最终的 DeepSeek-R1 不是纯 RL 模型。它采用两次 SFT + 两次 RL 的多阶段流程(论文 Figure 2,PDF 第 6 页):
text
DeepSeek-V3-Base
│
▼
[1] 冷启动 SFT:数千条可读的长推理样本
│ R1-Dev1
▼
[2] 推理 RL:规则奖励 + 语言一致性奖励
│ R1-Dev2
▼
[3] 拒绝采样 + 混合 SFT
│ 约 60 万推理样本 + 约 20 万非推理样本
│ R1-Dev3
▼
[4] 第二轮 RL:推理规则奖励 + 有用性/安全性奖励
│
▼
DeepSeek-R1阶段 1:冷启动。 选择少量表达清晰、结构较好、语言一致的长推理样本作为初始行为引导。它改善“答案怎么展示”,代价是初期可能对一些高难推理题产生能力回退。
阶段 2:推理强化学习。 再用规则奖励提升数学、编码等可验证领域的表现,并添加语言一致性奖励以降低中英混杂。v2 的消融也显示,这类可读性约束可能带来轻微性能损失,属于实际权衡。
阶段 3:拒绝采样与大规模 SFT。 从强化学习检查点采样多条轨迹,保留通过验证的高质量数据;再合并通用问答、写作、翻译和软件工程等非推理数据。论文附录 B.3.3 报告的总量为 804,745 条监督样本(约 60 万推理、20 万通用)。
阶段 4:第二轮 RL。 推理领域继续使用规则奖励,通用领域使用有用性和安全性奖励模型。v2 报告第二阶段共有 1,700 次更新,偏好类奖励主要在最后 400 次更新中加入,以限制奖励投机风险。
这套流程体现出两种目标并不完全相同:
RL 擅长从可验证任务中探索更有效的策略;SFT 擅长稳定表达方式、覆盖非验证型任务以及把模型引向人更容易使用的行为。
4. 看实验:能力进步与代价要一起读
以下数据来自 v2 论文 Table 3。这里特意选不同任务,比较 R1-Zero 与最终 R1,而不是只挑提升最大的基准。
| 基准与指标 | R1-Zero | 最终 R1 | 如何理解 |
|---|---|---|---|
| AIME 2024 · Pass@1 | 77.9 | 79.8 | 数学推理小幅提升 |
| MATH-500 · Pass@1 | 95.9 | 97.3 | 数学继续提升 |
| LiveCodeBench · Pass@1-CoT | 50.0 | 65.9 | 代码推理明显增强 |
| IF-Eval · Prompt Strict | 46.6 | 83.3 | 指令遵循大幅改善 |
| ArenaHard · GPT-4 judge | 53.6 | 92.3 | 通用响应偏好改善 |
| SWE-bench Verified · Resolved | 43.2 | 49.2 | 软件工程仍有明显上升空间 |
| GPQA Diamond · Pass@1 | 75.8 | 71.5 | 并非所有推理指标都提高 |
| CNMO 2024 · Pass@1 | 88.1 | 78.8 | 多阶段对齐存在性能权衡 |
其中多个数字来源于对应模型在当时测评设置下的结果。尤其是 ArenaHard 这类模型评审基准,不应与可验证的数学准确率视作同一种证据。
分阶段指标还透露了什么?
论文 Table 3 的路径可以看出训练目标的变化:
| 检查点 | AIME 2024 | IF-Eval | ArenaHard |
|---|---|---|---|
| R1-Zero | 77.9 | 46.6 | 53.6 |
| R1-Dev1(冷启动后) | 59.0 | 71.7 | 77.0 |
| R1-Dev2(推理 RL 后) | 74.0 | 72.0 | 73.2 |
| R1-Dev3(混合 SFT 后) | 78.1 | 78.1 | 75.6 |
| R1(最终 RL 后) | 79.8 | 83.3 | 92.3 |
冷启动不是单调提高所有指标的万能药。 Dev1 在 IF-Eval 与 ArenaHard 上跃升,同时 AIME 有明显下降。后续 RL 把推理能力拉回来,混合 SFT 和偏好 RL 则分别处理一般任务覆盖和最终交互体验。
因此,在实际做模型后训练时,建议保留分领域回归集,不要只看某个综合分数。
5. 推理蒸馏:不必每个小模型都从零做大规模 RL
论文另一项实际价值,是说明更强模型学到的推理数据可以迁移到小模型。
其路线并不是把 671B MoE 模型按比例“压缩”成 7B,而是:
- 用强教师模型生成大规模候选答案;
- 验证、筛选并整理较高质量的回答样本;
- 用这些样本对 Qwen / Llama 基础模型执行监督微调(SFT);
- 在相同任务上独立评测学生模型的结果。
最终公开了 1.5B、7B、8B、14B、32B、70B 六个蒸馏检查点。注意:论文这组蒸馏实验只进行了 SFT,没有再给这些蒸馏模型额外加一轮 RL。
v2 的 Appendix F,Table 15(AIME 2024 Pass@1):
| 模型 | 参数规模 | AIME 2024 Pass@1 |
|---|---|---|
| DeepSeek-R1-Distill-Qwen-1.5B | 1.5B | 28.9% |
| DeepSeek-R1-Distill-Qwen-7B | 7B | 55.5% |
| DeepSeek-R1-Distill-Llama-8B | 8B | 50.4% |
| DeepSeek-R1-Distill-Qwen-14B | 14B | 69.7% |
| DeepSeek-R1-Distill-Qwen-32B | 32B | 72.6% |
| DeepSeek-R1-Distill-Llama-70B | 70B | 70.0% |
最有说服力的是论文 Table 16:同为约 32B 规模,从基础模型直接做大规模 RL 的 Qwen2.5-32B-Zero 在 AIME 2024 上为 47.0%,而 DeepSeek-R1-Distill-Qwen-32B 为 72.6%。
这不是证明“蒸馏在所有情况下都优于 RL”。更合理的解释是:在论文给定的学生模型、训练预算与数据条件下,学习强教师产生的高质量解题行为,比让较小模型独立从头探索更有效。
对个人开发者而言,这个结论的实际意义可能比全参数训练 671B 模型更大。
6. 训练成本:不要误读“29.4 万美元”
v2 在 Appendix B.4.4 的 Table 7 给出了一个成本口径:以 每 H800 GPU 小时 2 美元估算,R1-Zero 的相关训练、SFT 数据生成、R1 的相关训练合计约 147K H800 GPU-hours,29.4 万美元。
但这个数字的适用范围非常有限:它是论文列举的特定后训练工作及数据生成的估算 GPU 租用费。它不等于从零预训练 DeepSeek-V3 基座所需的成本,更不包括完整研发探索、数据准备、基础设施、试错与推理部署的总投入。
另外,基础 R1 / R1-Zero 是 DeepSeek-V3-Base 衍生的 671B 总参数、约 37B 激活参数的 MoE 模型(见官方仓库 Model Summary)。37B 是每 token 参与计算的激活参数规模,不能误解为模型的全部权重只有 37B。
7. 真正困难的地方:可靠奖励、模型容量与回归
论文附录 G 分享的失败经验,值得比排行榜多看几遍。
(1)可靠验证器是瓶颈。 数学答案和可执行代码容易给出相对客观的反馈,长篇写作、开放式规划却很难给出无争议的正确答案。模型一旦优化到“骗过奖励器”,奖励提高也可能伴随任务实际表现变差。附录 B.5 给出了这种 Reward Hacking 现象。
(2)基础模型容量有门槛。 论文提到,早期从 7B dense 和 16B MoE 试验,AIME 上没有稳定得到期望收益;更大且更强的基座才出现明显改善。小模型不应简单照抄大规模纯 RL 流程。
(3)过程奖励模型(PRM)与 MCTS 未必更划算。 PRM 很难稳定定义、标注和训练“每一步是否正确”;MCTS 在开放文本的巨大搜索空间中难以维持可靠价值估计。论文讨论了这些路线的实际失败,但并未证明 PRM/MCTS 在其他设置下必然无效。
(4)推理越长不一定越好。 长 CoT 增加了计算开销,可能产生重复和错误路径;最终系统仍需要根据任务难度控制预算,不能只根据回答长度评价质量。
(5)安全与指令遵循需要另外评估。 v2 增加了更完整的安全分析,不能用数学竞赛分数替代有害内容、越狱鲁棒性或真实业务中的安全评估。
8. 把论文的思想应用到 Agent 工程
如果你做的是 Agent 平台、软件工厂或 Skills 工作流,最有用的结论其实不是“现在自己训练一个 R1”,而是:
先把任务变成可以独立验证的任务,再考虑采样、筛选、微调或强化学习。
例如,在一个自动生成软件项目的流水线里,可以把产物按下列顺序评估:
text
用户需求 / PRD
↓
Agent 生成实现方案
↓
代码实现 / 文件生成
↓
独立验证器(不由同一个 Agent 自说自话)
├─ 静态检查、类型检查、编译
├─ 单元/集成测试
├─ API Contract 校验
├─ 输出文件存在且可解析
└─ 业务接受条件检查
↓
结果:pass / fail / unknown + 证据
↓
失败 → 受限修复 → 再次验证
成功 → 保留产物、测试报告与版本其中 unknown 不可缺少:并非所有问题都有可靠的自动评分。当业务目标是“设计得好不好”“报告观点是否值得信任”时,不应该把另一个模型的偏好打分当成绝对正确性。
一个最小可复用的 Verifier 协议
下面只是平台接口示意,不是 GRPO 训练代码:
ts
type Verdict = "pass" | "fail" | "unknown";
interface VerificationResult {
verdict: Verdict;
checks: Array<{
name: string;
passed: boolean | null;
evidence: string;
}>;
artifactId: string;
verifierVersion: string;
}
// 由独立测试运行器执行,不允许被测 Agent 自行覆盖
async function verifyDeliverable(
artifactId: string
): Promise<VerificationResult> {
const checks = await independentTestRunner(artifactId);
return {
verdict: checks.some((c) => c.passed === false)
? "fail"
: checks.every((c) => c.passed === true)
? "pass"
: "unknown",
checks,
artifactId,
verifierVersion: "v1"
};
}
// independentTestRunner 是由平台实现的验证执行器,
// 这里只定义其返回结果的契约。如果以后需要真正的 RL,还必须另行实现训练数据采样、奖励数值化、策略梯度更新、概率比裁剪、KL 约束、分布式推理和训练稳定性管理。拥有一个验证器并不等于已经实现 GRPO。
与 Harness² 的关系:内外两条不同的改进路线
之前我们读过的 Harness²:让 AI Agent 进化自己的执行系统,正好可以与这篇论文放在一起对照:
| 维度 | DeepSeek-R1 | Harness² |
|---|---|---|
| 主要优化对象 | 模型参数与生成策略 | Prompt、Skills、Scripts、Plugins 等 Harness |
| 典型反馈 | 答案正确性、规则奖励、偏好奖励 | 执行轨迹、候选比较与任务证据 |
| 是否需要训练权重 | 是(RL/SFT/蒸馏) | 通常不需要 |
| 主要价值 | 提升底座模型的推理能力 | 提高 Agent 在任务环境中的执行可靠性 |
| 共通的工程难题 | 奖励是否可靠 | 改进证据是否可靠 |
两者共同提醒我们:能力增长的前提不是“让模型多试几次”,而是获得足够可信的反馈。
对于个人或小团队,我更建议先做可执行验证器、Skills 与 Harness 优化,之后再考虑蒸馏或者专项 RL。前者通常具有更低的实施门槛,更容易定位失败和回滚改动。
9. 总结:我从这篇论文里读到了什么?
我认为 DeepSeek-R1 最重要的贡献,并不是某一个历史榜单上的 79.8% 或 97.3%,而是给出了一条比较完整的能力形成链条:
强基础模型 → 可验证任务 → 强化学习产生推理策略 → SFT/RL 多阶段提高可用性 → 将推理数据蒸馏给小模型。
也要同时看到三个边界:
- R1-Zero 纯 RL 的成功,不代表最终 R1 不需要 SFT 或人工数据。
- 可验证领域里的强化学习进步,不代表所有开放式任务都容易获得可靠奖励。
- 公开模型权重和推理示例,不等于全部训练流水线、原始数据与研究成本都能一键完整复现。
如果未来要把这些思想真正应用于自己的 Agent 产品,我会从可靠验证、分领域回归测试、数据/经验留痕开始。训练和推理的算法能力非常重要,但没有可信反馈的系统,很难分辨一次“改进”究竟是真的进步,还是仅仅更擅长讨好评估器。
参考阅读
- DeepSeek-AI. DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning(本文阅读 arXiv v2,2026-01-04);重点参考第 2–4 节、Appendix A–B、F–G。
- DeepSeek-AI. DeepSeek-R1 官方 GitHub 仓库(模型架构、下载地址、公开测评和使用建议)。
- Nature 论文页面。
- Harness² 论文精读:让 AI Agent 进化自己的执行系统(从模型外部运行系统角度理解另一类自我改进)。