跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言AI算法

强化学习与 DeepSeek-R1 训练原理详解

强化学习通过环境反馈优化策略,核心在于利用 Reward 信号指导模型行为。系统讲解了强化学习基础概念、Policy Gradient 及其变体、PPO 算法原理、Actor-Critic 架构及 GAE 优势估计方法。重点分析了 DeepSeek-R1 的训练机制,指出其摒弃了复杂的 PRM 和 MCTS,仅依靠规则奖励与 GRPO 算法实现高性能推理。文章详细对比了 R1-Zero 与 R1 的训练差异,涵盖冷启动、语言一致性奖励及拒绝采样微调等关键步骤,揭示了大模型推理能力提升的技术路径。

松间照月发布于 2025/2/6更新于 2026/10/479 浏览
强化学习与 DeepSeek-R1 训练原理详解

强化学习与 DeepSeek-R1 训练原理详解

DeepSeek-R1 是一个强大的模型,其性能与 OpenAI o1 相当。R1 的训练方法简单到让人难以置信,没有 PRM(过程奖励模型)也没有 MCTS(蒙特卡洛树搜索),仅使用最基本的 rule-based reward(基于规则的奖励)直接进行训练!不管这是大道至简还是简单粗暴,反正效果拔群。

本期我们将从最基本的强化学习开始介绍到 DeepSeek-R1 的训练方式,深入解析其背后的技术逻辑。

1. 什么是强化学习

一言以蔽之,强化学习就是让将当前 Environment(环境)的 state(状态)输入到 actor(模型)中,让 actor 预测 action(动作)并输入到 Environment 中,让 Environment 产生 Reward(回馈)。如果 Reward 好,我们就鼓励模型这样做,否则就阻止模型这样做。

以具体例子来说,比如 FC 游戏'Space Invaders':

强化学习与 DeepSeek-R1

Environment 就是游戏本身,state 就是当前的游戏画面,actor 就是我们的 model,action 就是能做的操作(左移、右移、开火),而 Reward 就是得分。

强化学习与 DeepSeek-R1

2. 强化学习怎么做

简单说就是让 model 玩游戏,玩完以后会有一个得分,将得分作为 loss 再去 optimization(优化)就好。

强化学习与 DeepSeek-R1

更具体一些说,我们希望 model 能拿高分,而游戏最终的得分取决于模型在看到某个画面时所作的动作,所以我们可以把 RL 玩游戏的问题转化为看到某个画面做某个动作的分类问题。

强化学习与 DeepSeek-R1

需要注意的是,这里与 Supervised Learning(监督学习)的区别在于,Supervised Learning 是给定一个 ground truth(真实标签)然后让模型看见某个输入就输出 ground truth。而 RL 其实并没有真正意义上的 ground truth,他只是通过 Reward 来批判某个 action 的好坏,并鼓励模型做好的动作,不做坏的动作!

3. Policy Gradient

Policy Gradient 是一个直观的方法,首先让 model 玩游戏,并获取 Trajectory(轨迹)。下图中的 s 代表游戏画面,a 代表 model 做出的 action,也就是看到 s1 做出动作 a1,画面变为 s2 做出 a2…

强化学习与 DeepSeek-R1

Policy Gradient 要做的是给每个 action 打个分,然后鼓励模型做高分动作。一种简单的做法是,当前动作的得分与之后的所有得分加起来作为该动作的评分。(注:之所以不能以单个动作产生的 reward 作为当前动作的打分是因为一个动作的好坏需要整体评估,以 FC 游戏 Space Invaders 为例,该游戏只有开火才能得分,学出来的 model 只会无脑开火!!!)

强化学习与 DeepSeek-R1

有了得分 A,训练网络就可以通过如下方式进行:

强化学习与 DeepSeek-R1

请注意这里的 L 与一般 Supervised Learning 中 Loss 的区别。一般 Supervised Learning 中的 Loss 是一个'标准答案',是模型预测与人类标注出来的 ground-truth 的差距,最小化 loss 的意思是,你就是得全部照着做!

而这里的 L 是一个'批判',是评价之前 model 玩游戏的 Trajectory 中每个动作的好坏,最小化 L 其实是一个'反思、改进'的过程。好的就要照做,坏的就要避免!

其实 Policy Gradient 折腾的就是这个打分 A,我们可以简略看下其他版本:

引入衰减

强化学习与 DeepSeek-R1

引入 baseline(这里的 BaseLine 可以看作一个'平均的分数',也就是模型要做的比平均好才值得鼓励!所谓的 critic 就是用来算这个 baseline,但也并不是 baseline 都要通过 critic 来算,R1 的 GRPO 就没有那个 critic):

强化学习与 DeepSeek-R1

总结一下 Policy Gradient 的一般步骤如下,需要特别注意的是,收集资料时的 action 不是 model 预测什么就做什么,而是从 model 预测的结果中 sample(采样)一个,原因在于必须要尝试各种动作才能知道每个动作的好坏,model 说啥就是啥会错过 model 没说但是效果不错的 action!

强化学习与 DeepSeek-R1

这里需要特别注意的是,我们每次收集数据都是基于参数为θ的 model 进行!当我们参数更新后就必须重新收集资料!!

4. Policy Gradient 的推导

首先使用参数θ的 model 玩游戏获取 Trajectory τ的概率为:

强化学习与 DeepSeek-R1

现在计算得分的期望,我们的目标就是最大化下面的期望:

强化学习与 DeepSeek-R1

期望意味着采样,这里需要注意的是,第一,这里其实收集了 N 次玩游戏的资料(N 个τ),上标表示的是第几个τ,下表表示的某个τ中的某一个步骤。第二,我们求导求的是 model 参数θ的导,R(τ) 与θ无关!P_θ(τ) 中与θ相关的也只有一项。第三,蓝色框中的公式其实就是带一下链式法则:

强化学习与 DeepSeek-R1

现在这个问题就和分类问题差不了(想想 cross entropy 长啥样子):

强化学习与 DeepSeek-R1

请注意,这里的所有推导是基于参数为θ的 model 进行,一旦θ变了,P_θ(τ) 的概率也就变了,所以更新参数后必须重新收集资料,不然就存在'版本不匹配'的问题。

5. PPO

一般而言 LLM 训练的第三个阶段是 RLHF,其中的算法就是 PPO。

PPO 要解决的问题是每次更新网络都需要重新收集一次资料,它允许用一个θ收集资料后训练多次,其核心也很直觉就是收集资料的 model 和被训练的 model 不能差太远,所以会在 Loss 中加一个 KL divergence(KL 散度)。

强化学习与 DeepSeek-R1

首先我们引入 Importance Sampling(重要性采样)的概念,Importance Sampling 允许我们从一个分布采样然后计算另一个分布的期望,具体做法也不难,就是乘一个分布再把他除掉:

强化学习与 DeepSeek-R1

这个做法虽然期望一样,但是方差却不一样:

强化学习与 DeepSeek-R1

一个显而易见的例子如下图,我们用绿色的分布去算蓝色分布再红线上的期望,显然蓝线期望是负的!但是如果从绿线采样,大概率采出来的数据都是正的,期望也是正的,只有采的足够多,好不容易采到个负数,才能把期望拉回负的(因为 p 很小所以 p/q 很大所以可以把正的期望拉回去)。

虽然可以拉回去!但是这意味着采样需要足够多!如果做不了那么多采样咋办?那就只能让 p、q 不要差太远!

强化学习与 DeepSeek-R1

在 RL 中,每次更新参数都重新收集数据的方式叫 On-policy,不需要每次都重新收集数据叫 Off-policy,从 On-policy 到 Off-policy 的过程为:

强化学习与 DeepSeek-R1

强化学习与 DeepSeek-R1

所以 PPO 最终的优化目标为:

强化学习与 DeepSeek-R1

PPO 算法为:

强化学习与 DeepSeek-R1

当然 PPO 还有一个更简单的版本:

强化学习与 DeepSeek-R1

其中的 clip 意思为 clip(f(x), min, max),如果 f(x) 大于 max 就返回 max,如果 f(x) 小于 min 就返回 min,如果 f(x) 在 min 和 max 之间就返回 f(x)。

clip 版的 PPO 会给新旧 P_θ一个界限,当新旧 P_θ的界限超过一定程度后,梯度就会变为 0。以 A>0 来看,A>0 时整个项为正数,于是 clip 就是左边的红线,优化 P_θ希望 P_θ(a|s) 越大越好,但是大到超过界限,前面的 min 就会返回 clip 项,求导梯度为 0。

6. Actor-Critic

所谓的 Critic 其实也是一个模型,他的作用是评价一个 Actor 能拿到多少分,请注意 Critic 是 Actor 相关的!以玩游戏为例,Critic 评价的是某个 Actor 玩下去能得多少分,比如这个模型是个垃圾模型,那么 Critic 给的评价应该是 0 分。

强化学习与 DeepSeek-R1

训练 Critic 常见的方法有 2 种,第一种是 Monte-Carlo (MC) based approach,操作其实很简单,就是把游戏玩完计算得分,再用这个得分训练网络。

强化学习与 DeepSeek-R1

第二种是 Temporal-difference (TD) approach,TD 不需要把游戏玩到底,取而代之通过 V(s_t) 与 V(s_t+1) 的关系来估计两个训练 V。

强化学习与 DeepSeek-R1

Critic 预测的其实是看到当前状态 s,Actor 得分的期望。

有了 Critic 我们就可以给出 Policy Gradient 的另外两个版本,首先是用 G 减去 V,也就是把 V 作为 baseline,这也的好处在于,G-V 可以衡量一个动作究竟是好于平均还是差于平均。

强化学习与 DeepSeek-R1

Version 3.5 的问题在于,G 是一个 sample 出来的结果(收集资料时玩出来的结果),但是 V(s) 算的是一个平均值,G-V 用 sample 减平均似乎有些违和。所以我们引出 Version 4。采取 action a_t 获得 s_t+1,现在总的分数为 r_t + V(s_t+1) 减去不采取 a_t 的总分 V(s),这个差的结果就可以衡量 a_t 的好坏。

强化学习与 DeepSeek-R1

现在整个流程为先训练 V 再训练π:

强化学习与 DeepSeek-R1

7. Generalized Advantage Estimation

Policy Gradient 本质是告诉模型哪个 action 好哪个 action 坏,version 3.5 和 version 4 本质上都在对比一个 Action 是否比平均更好还是更差,对比下 3.5 和 4。

3.5 直接用 G-V,虽然 G 是个真的玩出来的结果,但是 G 存在很大的不确定性(高方差)。4 直接用了 V(s_t) 和 V(s_t+1),这也做虽然不会有不确定性,但是和真实的结果却可能有很大差距(高偏差),折中的办法就是 GAE。

首先引入 TD-k,这玩意的意思很明确,按照真实的情况走 k 步后再用 V 去估计,加起来就是最后得分,很明显这玩意就是 3.5 和 4 的折中:

强化学习与 DeepSeek-R1

现在使用 TD-k 去做 advantage estimate(优势估计),顾名思义一个 action 产生的优势的估计。

强化学习与 DeepSeek-R1

现在对上面的 advantage estimate 做一个指数加权平均:

强化学习与 DeepSeek-R1

在λ=0 时其实 GAE 就是 Version 4,λ=1 时就是 version 3.5:

强化学习与 DeepSeek-R1

现在我们可以用 GAE 定义 Policy Gradient 的优化目标:

强化学习与 DeepSeek-R1

最后给出怎么训练 Critic model:

强化学习与 DeepSeek-R1

8. RLHF 的 PPO

RLHF 的目的是让模型输出符合人类喜好的答案,具体做法如下,首先训练一个 reward model 给模型的输出打分,然后用 reward model 的打分去做 RL,鼓励模型输出高分答案!

《Training language models to follow instructions》给出的 objective 其实有一定误导性,事实上在写这篇文章之前我都没注意到其中的细节。

我们先说 reward model 的训练,首先把 LLM 的 unembedding layer 去掉,对同一个问题生成 K 个答案,然后让人类答案排序,Reward model 的 loss 如下:

强化学习与 DeepSeek-R1

假设 w 的排序高于 l 的排序则 r(w) - r(l) 大于 0,sigmoid(r(w) - r(l)) 就接近 1,log( sigmoid(r(w) - r(l)) ) 就接近 0,所以整个 loss 做的事就是让排序高的回答得高分!

接下来就是 PPO:

强化学习与 DeepSeek-R1

仔细看一下这个 PPO 会发现有点不对劲,既然是 PPO 那最起码的 p/q 呢?其实我们可以从《Secrets of RLHF in Large Language Models Part I: PPO》看一下 PPO 的实现,事实上 RLHF 需要跑 4 个模型,policy(被训练的模型)、Value model、reference model(SFT 后的模型)和 reward model,前两个参数固定:

强化学习与 DeepSeek-R1

整个步骤其实很清晰,就是标准的 actor-critic:

强化学习与 DeepSeek-R1

其中:

强化学习与 DeepSeek-R1

另一个问题是,Reward model 是对整个答案给一个评分,怎么计算每一个 action(这里就是生成一个 token)的 reward。

答案是引入 KL 项,Reward model 给的 Reward 是针对整个答案的,也就是只有最后一个 token 有 reward 其他地方都是 0。其他 token 通过 KL 项计算 reward,也就是说不要和 SFT model 差太远!!!!直观说毕竟 SFT 是好不容易训练出来的,如果差太远,除非是最后的结果能拿高分,否则答案肯定离谱。

强化学习与 DeepSeek-R1

顺便还可以看看论文《DeepSeekMath: Pushing the Limits of Mathematical》的说法:

强化学习与 DeepSeek-R1

强化学习与 DeepSeek-R1

8.5 插曲

回顾一下 Policy Gradient 其优化目标为:

强化学习与 DeepSeek-R1

从 version 3.5 到 Generalized Advantage Estimation,不管中间怎么折腾,其本质只在做一件事'评估做一个特定的动作比平均好多少',也就是所谓的 advantage function(优势函数):

强化学习与 DeepSeek-R1

顺带一提其实 A 还可以写为下面的式子,其中的 Q 是做了特定动作后的最终得分期望,摆弄这个 Q 的强化学习就是 Q-learning:

强化学习与 DeepSeek-R1

9. Group Relative Policy Optimization

回到 GRPO!Policy Gradient 要的是比平均好多少,GRPO 的思路很直接,干掉 Critic model,你不是要平均么?我就直接生成多个{o1,o2,…,oG}给你算一个平均!至于每个 token 的好坏全部设为一样的 A,反正结果好那就是好的!

强化学习与 DeepSeek-R1

于是优化目标变为最大化下式:

强化学习与 DeepSeek-R1

对于直接跳到这部分的朋友,我们也可以直观看一下,那个 clip 就是做截断用的,就看第一项,首先我们要管的 model 只有π_θ,π_θold 完全可以当常数处理。A 是当前答案的打分做一个标准化,如果 A 是正的就代表 action 不错,为了让目标函数最大 π_θ(o|q) 自然越大越好(鼓励模型这么做),反之 A 是负的π_θ(o|q) 就必须减少才能使目标函数变大(阻止模型这样做)。

另外 GRPO 的 reward 是直接怼上去,而不是 PPO 中加载 token reward 的形式。再放一遍 GRPO 的图片:

强化学习与 DeepSeek-R1

10. DeepSeek R1-Zero

终于说到正题了,R1-Zero 基于一个没有进行过任何 SFT 的 base model 进行 RL,其做法也很简单,首先用 prompt 规定其输出格式:

强化学习与 DeepSeek-R1

然后给的评分的规则,就 2 条,1 答案对,2 格式对!

强化学习与 DeepSeek-R1

然后 GRPO 开搞,请注意上面的 GRPO 来自于 DeepSeek Math 的论文,这里是 R1 的论文,请注意他们细微的区别!

强化学习与 DeepSeek-R1

结束了,没有 PRM 没有 MCTS,就是靠答案是否正确一竿子捅到底!效果很好!另外还有一个有意思的现象就是所谓的 Aha Moment。

强化学习与 DeepSeek-R1

关于为啥用简单的 rule-based + GRPO 能成功困惑了很久,最终得出一个至少能短期说服自己的结论。

首先错误的推导能做出正确答案的概率还是稍低一些的,关键是错误的推理并不是总能得出正确的答案,只有真正推理正确答案正确才是总是对的。虽然错误的推导可以一次两次算出正确的东西,但是多算几次就会出问题,而真正正确的推导出现错误的概率就要低得多。虽然某次一个错误的推导给了正确的答案模型获得奖励,但是再用类似的推导去解决同一个或其他问题答案出错就会被罚,训练多了那么自然是正确的东西占主导,或许 Aha Moment 也就是那么来的,用了之前被鼓励的错误方式,意识到了所以 Aha 一下。我管以上这一段叫做瞎猜!

报告中提到 R1 的失败尝试,包括 PRM 和 MCTS。PRM 不行的原因有:1 很难明确定义步骤的粒度,2 怎么标注步骤的正确性,人工标注哪怕你舍得花钱扩展性也有限,3 容易遭到 reward hacking。

MCTS 不行的原因有:1 搜索空间实在太大不得不为每个 node 引入限制,但这可能使模型陷入局部最优解,2 Value model 不行。

个人认为 MCTS 并不一定不可行,RStar-Math 就是一个例子。另外我个人最大的疑惑在于,对于需要严格证明的问题,rule-based reward 的 RL 能否获得那么好的泛化性与准确性?我目前的看法是不乐观!那么 AI 的推理到底能做到哪一步,怎么做?Coq、Lean 等能否有所帮助?

11. DeepSeek R1

R1-Zero 存在语言混乱可读性差等问题,所以 DeepSeek 又搞了 R1。R1 的训练过程如下:

  1. 冷启动:使用少量的长 CoT 微调模型作为 RL 的起点。
  2. RL 训练:使用和 R1-Zero 一样的方式进行 RL,但是引入额外的语言一致性奖励(注,语言一致性奖励会造成一些性能下降)。
  3. Rejection Sampling and Supervised Fine-Tuning: 这里包含 2 部分数据:非推理数据包括写作、问答、self-cognition(自我认知)、翻译等。 通过对 RL checkpoint 进行拒绝采样并过滤获取推理数据(也会并入其他数据 800k 条),请注意这个阶段生成的数据是用来对 DeepSeek-V3-Base 进行微调。
  4. 通用的 RL: 这个阶段会对使用上个阶段生成的数据微调后的 DeepSeek-V3-Base 进行 RL,对于推理任务采用 R1-Zero 中的方法。当然还会有人类喜好对齐、无害性等其他工作。

顺便一提使用第三阶段收集的 800k 条数据微调小模型,可以增加其推理能力。最后放一张大佬总结的 R1 图片:

强化学习与 DeepSeek-R1

目录

  1. 强化学习与 DeepSeek-R1 训练原理详解
  2. 1. 什么是强化学习
  3. 2. 强化学习怎么做
  4. 3. Policy Gradient
  5. 4. Policy Gradient 的推导
  6. 5. PPO
  7. 6. Actor-Critic
  8. 7. Generalized Advantage Estimation
  9. 8. RLHF 的 PPO
  10. 8.5 插曲
  11. 9. Group Relative Policy Optimization
  12. 10. DeepSeek R1-Zero
  13. 11. DeepSeek R1

更多推荐文章

查看全部
  • Llama-3.2-3B 部署优化:Ollama 配置上下文窗口与 Token 限制
  • HarmonyOS 6.0 Camera Kit 微距状态监听能力详解
  • ChatGPT 对产品经理工作的影响与应对策略
  • 字节跳动李航等综述:可信赖大型语言模型的七大评估维度
  • 大规模数据处理算法性能瓶颈优化方案
  • Ubuntu SSH 服务安装与配置详解
  • Java 异常处理:从原理到实战最佳实践
  • 2025 年世界主流模型编程能力排行
  • 动态规划入门:线性 DP 经典例题解析
  • Stable Diffusion v4.10 与 ComfyUI 整合包配置及问题解决方案
  • 用 MC.JS WEBMC1.8 快速验证游戏创意:48 小时开发挑战
  • Android 3D 模型查看器完整指南:快速打开 STL、OBJ、PLY 文件
  • 2026 年 3 月大模型全景解析:国产登顶、百万上下文与 Agent 工业化
  • Java 顺序表实现杨辉三角思路与代码
  • 10 分钟从零搭建 RustFS 集群
  • Python 自然科学领域机器学习与深度学习技术
  • Python 金融数据获取:问财 API 全解析与实战
  • 解决 Spring Boot 打包部署后 NoClassDefFoundError 问题
  • YOLO26 无人机巡检案例:高空拍摄目标识别实战
  • 阿里开源纯前端浏览器自动化框架 PageAgent 解析与实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online