DeepSeek R1 论文解读:从 Reward 设计到 AlphaGo 的启示
等待许久,DeepSeek R1 的论文终于发布。第一时间拜读后,整篇论文的实验设计和理论架构给我一种简洁而优雅的感觉,这与 DeepSeek-V3 那篇论文的风格截然不同。在阅读过程中,我不禁想起了曾经研究过的 AlphaGo 系列算法。以下是我对这篇论文的一些浅显看法和技术分析。
Reward 设计:规则驱动的奖励模型
读完这篇论文,R1 的 Reward 模型设计给我留下了深刻印象:它采用了基于规则的奖励模型(Rule-based Reward Model)。
为何放弃 PRM?
R1 在文中明确解释了未使用过程奖励模型(Process Reward Model, PRM)的原因:
- 细粒度界定困难:在一般推理任务中,明确界定每一个细粒度的推理步骤非常困难。推理过程往往是跳跃性的,难以像数学证明那样严格分步验证。
- 中间步骤判断难:判断当前推理中间步骤是否正确极具挑战性。使用模型进行自动标注效果差强人意,而手动标注则不利于数据规模的扩大。
- 奖励劫持风险:引入基于模型的 PRM 不可避免地会带来奖励劫持(Reward Hacking)问题。动态重训奖励模型的资源开销巨大,且容易引发模型利用漏洞刷高分的行为。
我非常认同这一观点。从事大语言模型(LLM)之初,我首先负责的是预训练工作,因此一个方法能否 Scaling Up 成为了评估其最终能否上线的重要维度。事实证明,可规模化的方法通常更稳健。虽然目前有许多通过 Monte Carlo (MC) 构造数据训练 PRM 的方法试图解决规模化问题,但近期 Qwen 数学推理的论文也指出,MC 方法容易产生幻觉,不如 LLM as Judge,更不如人类标注。R1 索性不用 PRM,甚至为了避免 Reward Hacking,直接抛弃了基于模型的输出奖励模型(ORM),这体现了极大的技术魄力。尽管许多研究表明稠密 Reward 优于稀疏 Reward,但在可控性和安全性面前,稀疏的规则 Reward 往往更可靠。
模型训练策略:多阶段演进
对于模型主体的训练,R1 采用了一个清晰的多阶段策略:
第一阶段:R1 Zero
首先利用 Base 模型 + 特定 Prompt + Rule-based Reward,跳过监督微调(SFT)直接上 GRPO(Group Relative Policy Optimization)强化学习。目标是让 Reward 提升,即提升做题准确率。在这个过程中,模型的输出长度不断变长,开始学会自我反思,但这个阶段的推理过程往往难以理解,被称为 R1 Zero。
第二阶段:拒绝采样与 SFT
第二步利用 R1 Zero 生成的数据进行拒绝采样(Rejection Sampling, RS),筛选出推理过程正常、逻辑清晰的样本。再混合一些非推理数据,对 Base 模型进行 SFT,最后再次上强化学习,得到最终的 R1 版本。
技术细节分析
- Base 模型直接 RL:直接在 Base 模型上进行强化学习并不意外。现在的趋势是将 SFT 数据加入 Pretrain 阶段。例如 Qwen 系列的 Pretrain 模型,调整 Prompt 后基本的指令遵循能力已经具备。模型越贴近 Pretrain 分布,幻觉越少,这一点支持了这种做法。
- 自然涌现的反思:看到模型自然产生反思也不意外。在我进行的 RLHF 实验中,只要模型输出能够变长,经常能看到自然的反思出现。不过早期的反思大多最终导向错误结果。我猜测是因为如果模型有输出变长的趋势,在输出完答案后,自然会利用剩余的'额度'去检查答案对不对。但这背后的根本问题是:为什么强化学习能在采样过程中采出这种 Response?以及为什么模型学会了这种类型而没有学别的?探索稳定训练的症结所在,正是当前研究的重点。
- GRPO 中的 KL Loss:关于 GRPO 使用的 KL Loss,它与 PPO 不同,不是加在 Reward 里乘在概率上,而是单独减去这个 KL Loss。并且这个 KL Loss 使用了近似估计,而不是直接用蒙特卡洛估计。
KL Loss 的方差问题
在做 RLHF、蒸馏、自约束等需要 KL Loss 的方法时,我发现当使用乘性 KL 时(将 KL 蕴含在 Reward 分数里,乘在动作的对数概率上),可以采用蒙特卡洛估计的 KL,允许 KL 估计值为负:
Loss = -E[log_prob * (Reward - KL)]
但是当最终 Loss 使用加性 KL 时:


