TL;DR
主要贡献
开源
分享并探讨了复刻OpenAI o1这类闭源推理模型的可行性,且在效果上与o1接近(在使用更小算力的前提下);
- R1性能与o1接近;利用R1蒸馏的Qwen、Llama等小模型超过o1-mini
Preliminaries
为什么R1的效果突出:
站在巨人的肩膀上:现代LLM模型在写作的质量跟能力上已经有了质的飞跃,能够生成高质量的数据,让蒸馏这个行为变得可操作;
推理任务本身的特殊性:能够基于现有工具或模型实现自动验证或标注;
一条正确的路和从善如流的精神:从MoE,MLA到V3。本文中的大规模RL和回头草SFT。
Insights
RL中奖励模型不使用PRM/ORM,而是直接对结果进行奖励,让模型通过大规模RL自主强化推理能力
对于小模型(32B以下),蒸馏比大规模RL更有效,可能是因为小模型的参数限制了它从大规模RL里提取范式的能力
- 虽然蒸馏策略既经济又有效,但想要突破智能的边界仍然需要更强大的基础模型,和更大规模的强化学习。
从V3到R1
DeepSeek的试错三步走模式:
第一步,通过V3,得到R1-Zero
第二步,通过V3 + R1-Zero的数据,得到X(DeepSeek没有给中间模型起名字)
第三步,通过V3 + V3的数据 + X的数据,得到R1

从V3到R1-Zero:面向推理的RL(RORL)
R1-Zero的意义在于,DeepSeek尝试探索不使用任何监督数据(SFT)来增强模型推理能力的方法,证明使用纯RL来提升模型性能是可以实现的。
比较有趣的是,在上帝视角下,DeepSeek探索R1的三步走过程中,R1-Zero仅仅是作为一个R1训练过程中产生数据的模型(X)的数据的模型出现,是引子的二阶导。DeepSeek带着“使用纯RL替代SFT”的思想开始探索,一步步又把自己带回强依赖SFT的模型上,并靠着模型效果出圈,恰恰证明了高质量数据在LLM的Post-training过程中是必不可少的。
强化学习
GRPO
[导读]DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
奖励模型
基于规则的奖励系统,包含两种奖励:
准确率奖励:准确率奖励模型评估响应是否正确。例如,在具有确定性结果的数学问题中,模型需要以指定的格式(box)提供最终答案,从而能够通过基于规则的验证来可靠地确认正确性。同样,对于 LeetCode 问题,可以使用编译器根据预定义的测试用例生成反馈。
格式奖励:要求模型将其思考过程放在 \
\</think> 标签之间。

Note:训练过程没有使用基于NN的过程奖励模型,因为DeepSeek发现在大规模的RL训练过程中,NN奖励模型容易被“Reward hacking”;而重新训练这个reward model会增加额外的资源,让整个训练过程复杂化。
效果与Aha-moment
先看R1-zero在训练过程中的效果与整体推理数据集上的效果:


在训练过程中,r1-zero对于训练数据的平均回答长度在不停提升,说明模型在主动尝试通过更多的思考时间来解决更复杂的推理问题 (DeepSeek-R1-Zero naturally acquires the ability to solve increasingly complex reasoning tasks by leveraging extended test-time computation),。

在这个过程中,模型出现了“Aha Moment”,即模型学会了使用更多的思考时间来重新审视自己最初提出的方法。

短板
r1-zero的推理能力达到了SoTA水平,但是在通用方面存在短板,没有达到开源的水平。
可阅读性较差;
语言混淆。
从V3到X:冷启动SFT + RORL + SFT
原文里没有这一部分,单独拎出来是因为这样梳理会让整个探索过程更清晰 - X的作用只是为最后训练出R1提供数据。
DeepSeek-R1-Zero在推理方面的效果几乎达到了o1的水平,但在其他方面存在短板。因为r1-zero是纯RL驱动的,所以自然带来了两个问题:
在深度方面:如果使用一小部分高质量数据作为冷启动,能不能进一步提升推理方面的性能,或者加速模型的收敛?
在广度方面:能不能训练出一个更加用户友好的模型,除了在推理任务上有清晰的CoT,同时在其他更通用的领域也有很好的能力?
冷启动:更稳定的起点
冷启动阶段使用少量的高质量CoT数据对基础模型进行微调,目的是为后续的RL过程提供一个相对稳定的起点。
两种收集冷启动数据的方式(论文里没有详细提到用于冷启动SFT的数据中这两者的占比):
使用一些长思维链的回答作为示例,直接提示模型生成包含反思和验证步骤的详细答案;
收集r1-zero的输出,通过人工在可读性和结果方面进行细化。
- 因为r1-zero的局限性之一是生成的内容不适合阅读:存在语言混淆,或是缺少markdown格式来把结果对用户高亮。所以在人工精细化r1-zero输出的过程中,定义了输出格式为:|SP token|\<推理过程>|SP token|\<总结>。
最终获得用于冷启动的几千条数据,对V3模型进行SFT。
面向推理的强化学习(RORL):强化推理能力与可读性
在冷启动SFT后的模型基础上,在代码和数学领域进行强化学习,来进一步提升模型的推理能力。这一阶段的强化学习和r1-zero基本是一致的,唯一的区别是为了缓解r1-zero存在的语言混乱的问题,在奖励模型中增加了一个语言一致性奖励,计算的方法是目标语言token在CoT中的比例。
通过将推理任务的准确性和语言一致性奖励直接相加,作为综合的奖励函数,对冷启动后的语言模型进行做RL,直到推理任务上达到收敛。消融实验发现这样的奖励模式会导致模型的表现略有下降,但是更加符合人类的阅读偏好,提升了内容可读性。
拒绝采样
通过对第二步模型的ckpt进行拒绝采样,生产推理数据。
生产推理数据600k:目标是蒸馏强化学习模型的专用/通用推理能力。过滤了混合语言、长段落和代码块的思维链。
对于数学、代码等领域,使用基于规则的奖励模型评估采样的结果,保留质量最好的样本;
对于无法用规则奖励进行验证的推理问题,使用DeepSeek-V3作为奖励模型,把标签和模型输出结果一起输入到V3,由V3生成一个得分,并基于这个得分进行拒绝采样。
通过直接使用V3的SFT数据,或是引导V3生成带思维链的数据,生产通用数据。
生产非推理数据200k:目标是让模型适配更加通用的推理任务
- 复用部分DeepSeek-V3的SFT数据。对于这些非推理的任务,输入prompt要求V3在输出答案之前输出可能的CoT。对于特别简单的任务(如“Hello”)不加入CoT数据。
从V3到R1:SFT + 全场景RL
使用收集的600k推理数据+200k通用数据对DeepSeek-V3进行2个epoch的SFT。
如果是小规模的蒸馏模型(如Qwen/Llama),到这一步就结束了。而R1在这个基础上又做了一次全场景的强化学习。
全场景RL
使用组合的奖励信号和多样化的提示词来训练模型,使模型在保持推理能力的同时,能对齐人类偏好。
对于推理数据,使用X的方法进行强化学习(与r1-zero不同的是,这部分数据已经经过奖励模型筛选,保证了推理能力的同时也对齐了人类的偏好)
对于通用数据,使用两个维度的模型进行偏好对齐。
帮助性奖励模型只接受最终的摘要作为输入,防止对推理过程产生干扰
无害性奖励模型的输入会涉及整个输出(CoT+答案)
效果评估与讨论
Baseline
DeepSeek-V3
Claude-Sonnet-3.5-1022
GPT-4o-0513
OpenAI-o1-mini
OpenAI-o1-1217(因为在大陆调用API很困难,直接使用了官方报告中的效果)
对于蒸馏模型,增加了对QwQ-32B-Preview的比较。
评估数据集
数学推理:AIME 2024, MATH-500
代码:LiveCodeBench, Codeforces
知识问答:MMLU, GPQA Diamond, SimpleQA
开放式生成场景:AlpacaEval2.0, ArenaHard
格式:IF-Eval
对于蒸馏模型,比较了AIME 2024, MATH-500, LiveCodeBench, Codeforces, GPQA Diamond上的效果。
效果
对于面向教育的知识评测集(MMLU/MMLU-Pro/GPQA),R1效果明显优于V3,说明大规模强化学习能够显著提升STEM相关问题的准确性。

蒸馏模型的结果:

其他讨论
对于小模型(32B以下),蒸馏比大规模RL更有效,可能是因为小模型的参数限制了它从大规模RL里提取范式的能力。
- 虽然蒸馏策略既经济又有效,但想要突破智能的边界仍然需要更强大的基础模型,和更大规模的强化学习。

一些无效的尝试
基于过程的奖励模型(PRM)效果不佳,推测是因为存在三方面的局限性:
在推理中定义出细粒度的步骤是非常有挑战性的;
判断当前中间步骤是否正确是另一项具有挑战性的任务,使用模型标注不一定有令人满意的结果,而人工标注又无法规模化;
一旦引入基于模型的PRM,不可避免的会导致reward hacking,而重新训练奖励模型又需要花费额外的训练资源,使整个训练流程变得更复杂。
蒙特卡洛树搜索:搜索空间太大,token生成意味着指数级增加的搜索空间;价值模型直接影响了生成质量。