第 5 讲导览 · 深度强化学习
这一讲要解决的真实问题
前四讲的模型都在同一个范式里工作:有标签,最大化似然或最小化误差。分类有正确类别、检测有框的坐标、生成有「这张图属于数据分布」的对数似然。这一讲把范式整体换掉:没有标签,只有一个标量奖励。下棋时没有哪一步被标注为「对」,只有最后输赢;机器人迈步时没有老师告诉你「这一脚该迈多大」;推荐系统也只看到用户点没点。我们能拿到的,是一串既稀疏又延迟的奖励——大部分时刻为 0,赢了才见到 +1。
这件事在数学上难在三个地方,而它们互相纠缠。第一是信用分配(credit assignment):这一局赢了,是开局那步妙手还是对手失误?奖励必须跨越很长时间才能摊到具体动作上。第二是数据不独立同分布:训练数据由智能体自己的动作产生,策略一变,未来遇到的分布随之漂移——第 1 讲里「样本 i.i.d.」这条几乎被所有理论结论依赖的假设,在这里彻底失效。第三是探索与利用的张力:信息只能靠采样获得,而采样会消耗机会,永远利用会困在次优解里,永远探索则永远在浪费时间。
要给「试错」找到可以推导的语言,我们需要把环境形式化:马尔可夫决策过程(Markov Decision Process, MDP)。它的价值在于把「未来只依赖当前状态与动作」写成一个可验证的条件,从而让「值」满足一个自洽的递归方程——贝尔曼方程。整讲的两条主干都从这一个方程分岔:值方法(Q-learning → DQN)先把方程右边的未知量学出来,再由 隐式地得到策略;策略方法(策略梯度 → Actor–Critic → PPO)则跳过值函数这一层中间商,直接对策略求梯度,把「回报」当成加权系数去调整动作概率。
第三条线是本讲真正的现代意义所在:当奖励写不出来时怎么办。对「什么样的回答更好」这种任务,没人能写出精确的数值奖励函数,但人可以比较两个回答哪个更好。把偏好变成奖励、再用 RL 优化策略,就是 RLHF(Reinforcement Learning from Human Feedback);而 DPO(Direct Preference Optimization)进一步证明:那一步「先训奖励模型、再跑 RL」可以被数学上等价地折叠成一个分类式损失,直接作用在偏好对上。今天几乎所有大模型的对齐配方——RLHF、DPO/IPO/KTO/ORPO/SimPO、推理模型里的 GRPO 与可验证奖励——都是这一讲内容的不同化身。读完本讲,你会明白为什么 RL 是「没有标签时怎么学」的答案,也会明白为什么它比监督学习难得多、贵得多、也更容易被自己的目标函数欺骗。
与母本的对应:母本 MIT 6.S191 历年排课中都包含强化学习主题(不同年份分别以「深度强化学习」「从人类反馈中学习」等标题出现)。本教程承接其讲次骨架——交互循环 → 值方法 → 策略方法 → 对齐应用——并按本书规范补齐推导、复杂度与失败模式;具体讲次编号与标题以官网当期排课为准(需核实)。
七节一览
| 节 | 核心问题 | 关键结论 | 典型陷阱 |
|---|---|---|---|
| 5.1 为什么需要强化学习 | 没有标签时,「学习」还剩下什么? | RL = 交互循环 + 标量奖励 + 最大化折扣回报;独有的两个难题是延迟信用分配与探索—利用张力;有标签就用监督,只有奖励才用 RL | 把「有奖励」当成「有标签」;拿 RL 硬套其实可以监督求解的问题 |
| 5.2 马尔可夫决策过程与值函数 | 怎样把试错写成可推导的数学? | MDP 五元组 + 马尔可夫性使 成为未来的充分统计量; 满足贝尔曼期望方程;最优方程把期望换成 ,是唯一的非线性不动点 | 以为 无害(无限时域下回报发散、值函数无定义);把 与 混用(只有 能直接拿来选动作) |
| 5.3 值方法:Q-learning 与 DQN | 不知道 时怎么估价值? | TD 学习用「走一步的实际结果」修正估计;Q-learning 是 off-policy 自举,表格下满足充分访问 + Robbins–Monro 条件即收敛;DQN 用经验回放打破相关、用目标网络钉住移动靶 | 每步都同步目标网络(等于永远追移动靶);忘记 done 掩码,把终止状态的自举算进去 |
| 5.4 策略梯度与 REINFORCE | 能不能不学 ,直接优化策略? | 策略梯度定理:;用 替代 得无偏但高方差的 REINFORCE;减去只依赖状态的基线不改变期望却能大幅降方差 | 把策略梯度当成监督学习的「加权最大似然」却忘了样本来自当前策略(on-policy);用旧策略数据不做重要性修正 |
| 5.5 Actor–Critic 与 PPO | 怎样既降方差又不引入大偏差? | Actor 学策略、Critic 学值;优势 是「比平均好多少」;GAE 用 把单步 TD 与蒙特卡洛连成一条连续的旋钮;PPO 的裁剪目标在 越界后梯度归零,用一阶实现替代了 TRPO 的二阶 KL 约束 | 以为裁剪对所有越界情形都生效(只在 且 、或 且 时归零);把 PPO 当成纯 on-policy 而重复使用同一批数据太多轮 |
| 5.6 离线 RL、RLHF 与偏好优化 | 不能交互、甚至写不出奖励时怎么办? | 离线 RL 的核心矛盾是分布偏移导致的外推过高估计(CQL / IQL 用保守估计或避免查询数据外动作);RLHF 三步 = SFT → Bradley–Terry 奖励模型 → RL + KL 约束;DPO 用「KL 正则目标的闭式最优解」把奖励反解出来,于是偏好对齐退化成一个分类损失;GRPO 用组内相对优势替掉 Critic | 只看代理奖励上涨就宣布对齐成功(reward hacking / Goodhart);把 DPO 当「更小的 RLHF」而忽略它对偏好数据偏差毫无缓冲 |
| 5.7 训练循环示例与调试 | 把上面所有零件装起来,怎么判断它真的在学? | 一个最小环境 + 两个训练循环(DQN / PPO)逐行讲解;四类高频失败模式(奖励设计、探索不足、目标更新过快、方差爆炸)各有可测量的诊断信号;评估必须多种子、多回合、看回报分布而不是单条曲线 | 报告单一种子的最优曲线;评估时仍在用 -greedy 采样而不说明;把「回报没涨」直接归因于算法而跳过奖励与尺度检查 |
本讲地图
[5.1 为什么需要强化学习]
交互循环 · 奖励 · 探索利用 · 适用边界
│
▼
[5.2 MDP 与值函数] ←── 全讲的数学基座
五元组 · 回报 γ · V/Q · 贝尔曼期望 + 最优 · 策略迭代 / 值迭代
│
┌────────┴────────┐
▼ ▼
[5.3 值方法] [5.4 策略梯度]
TD · Q-learning J(θ) · 对数似然技巧 · REINFORCE
经验回放 · 目标网络 基线 · 因果性 · 回报-to-go
Double / Dueling │
PER / 多步 / Rainbow ▼
│ [5.5 Actor–Critic 与 PPO]
│ 优势 A=Q−V · A2C · GAE · TRPO · 裁剪目标 · 熵正则
│ │
└────────┬────────┘
▼
[5.6 离线 RL、RLHF 与偏好优化]
分布偏移 · CQL/IQL · RLHF 三步 · Bradley–Terry
DPO 推导 · IPO/KTO/ORPO/SimPO · GRPO · reward hacking
│
▼
[5.7 训练循环示例与调试]
最小环境 · DQN/PPO 循环 · 失败模式 · 多种子评估协议
依赖关系:5.1 → 5.2(形式化)→ 5.3 与 5.4 平行(值方法 vs 策略方法)
5.4 → 5.5(基线 → 优势 → Critic → 裁剪)
5.3 + 5.5 → 5.6(离线的困难来自外推;RLHF 的 RL 阶段默认用 PPO)
5.1–5.6 → 5.7(把零件装成循环,并给出验收与调试协议)
本讲新增的概念(相对旧版讲义)
| 组 | 概念 | 首次出现 |
|---|---|---|
| 范式 | 监督 / 无监督 / RL 三分法、奖励与标签的区别、适用与不适用判据、与 LLM 对齐的关系 | 5.1 |
| 基座 | 马尔可夫性的充分统计量解释、折扣的三个理由、 与 的关系证明、贝尔曼期望方程完整推导、最优策略存在性与 -压缩、策略迭代 / 值迭代对比与复杂度 | 5.2 |
| 值方法 | TD 误差、自举、off-policy / on-policy 对照、Robbins–Monro 收敛条件、 步回报、过高估计的量级估算、Dueling 分解、优先回放的重要性权重、Rainbow 组件表 | 5.3 |
| 策略方法 | 策略参数化(softmax / 高斯)、对数似然技巧、按轨迹展开的完整推导、因果性与回报-to-go、基线的无偏性证明、方差表达与降方差机理、与最大似然的关系 | 5.4 |
| 合流 | 优势函数与 GAE 推导、 两端极限、TRPO 信任域、PPO 裁剪目标的分情形推导、替代 KL 的机理、熵正则、稳定性诊断指标表 | 5.5 |
| 对齐 | 离线 RL 分布偏移与外推误差、CQL 保守项、IQL 的 expectile 回归、Bradley–Terry 偏好模型推导、RLHF 三步、DPO 三步推导、IPO / KTO / ORPO / SimPO 的区别、GRPO 组内相对优势、过程 / 结果奖励、reward hacking 实例、偏好标注工程 | 5.6 |
| 工程 | 自包含最小环境、DQN 与 PPO 训练循环逐行注释、四类失败模式的诊断表、多种子/多回合/回报分布的评估协议与置信区间 | 5.7 |
10 分钟复习版 · 必记结论
一句话:强化学习把「有标签的监督」换成「与环境交互、从奖励信号里试错」;它的两条主干是学价值再取贪心动作(Q-learning / DQN)与直接对策略求梯度(策略梯度 / Actor–Critic / PPO),稳定化的关键分别是经验回放 + 目标网络与基线降方差 + 裁剪限幅。
| 内容 | 要点 |
|---|---|
| 交互循环 | 观察 → 动作 → 奖励 与新状态 ;没有标签,只有奖励 |
| MDP | 五元组 ;马尔可夫性:未来只依赖当前 |
| 策略 | :状态到动作分布的映射,就是要学的东西 |
| 回报 | ; 控制视野,有效期约 |
| 值函数 | , |
| 两者关系 | |
| 贝尔曼(期望) | |
| 贝尔曼(最优) | 把 换成 ,即得 、 |
| Q-learning | ;off-policy、自举 |
| DQN | 用 逼近;经验回放打散样本相关、目标网络冻结目标;-greedy 探索 |
| Double DQN | 选动作与评估动作分开,缓解 带来的过高估计 |
| 策略梯度 | :好动作抬概率、坏动作压概率 |
| REINFORCE | 用 代替 ,无偏但高方差 |
| 基线 / 优势 | 减去 不改变期望;优势 是最常用形式 |
| Actor–Critic | Actor 学 ,Critic 学 ,用 Critic 估计优势 → 低方差 |
| PPO | 裁剪目标 , 常取 0.1–0.2;限制单批更新幅度,稳定通用 |
| 离线 RL | 只有固定数据集、不能交互;难点是分布偏移导致的过高估计 |
| RLHF / DPO | 偏好数据 → 奖励模型 → RL + KL 约束;DPO 用闭式最优解把奖励反解掉,直接做偏好分类 |
最该记住的四个判断:① 有标签用监督,只有奖励用 RL;② 动作离散、能查表估价值 → 值方法(DQN),动作连续或需要随机策略 → 策略方法(PPO);③ 训练不稳先查两件事——目标稳不稳(目标网络)、样本相关不相关(回放);④ 奖励是你写的、不是你要的,上线前盯实际行为,防奖励黑客。
与实验和项目的关系
- Lab 3 · 微调一个大语言模型:SFT 之后的偏好优化环节就是 5.6 的工程化身。Lab 里建议用 200–500 对偏好数据做一次 DPO,并与 SFT 结果对照——这正是 5.6 讲的「DPO 省掉了奖励模型与在线采样」的一次亲手验证;同时要观察过度优化的迹象(风格骤变、长度膨胀)。
- Lab 1 · 音乐生成:字符级 RNN 逐 token 生成与 RL 的循环形成对照——都是「采样 → 得到信号 → 更新参数」,但生成模型用似然当信号(第 4 讲),RL 用奖励当信号(本讲)。把两者的损失函数并排贴出来,你会看清「信号从哪来」是它们唯一的分水岭。
- Lab 2 · 人脸检测:检测的评测协议(多阈值、多子集、报分布)与 5.7 的评估协议同源——单点数字不足以支撑结论。
- 期末项目:本讲方向的可选题目包括——给自己的一个小控制/调度问题写成 MDP 并用 DQN 或 PPO 求解;复现同一个任务的 PPO 与 DPO 并对比成本与稳定性;构造一个奖励被 hack 的最小实验并给出修补方案。选题前先读 5.1 的适用性判据与 5.7 的评估协议。
第一遍(约 4–5 小时,建立地图):按 5.1 → 5.2 → 5.3 → 5.4 → 5.5 顺序读,跳过所有 proof 折叠框与 5.6 的推导部分。目标是能在白纸上画出两条主干的依赖图,并说出每个算法「治的是哪个病」。5.6、5.7 第一遍只读动机段与表格。
必读、不许跳的框:
- 每个
def之后的intuition(RL 的手感几乎全在这里); - 5.2 的贝尔曼期望方程推导与最优方程的存在性说明(全讲唯一的地基);
- 5.3 的「回放治什么病、目标网络治什么病」对照表;
- 5.4 的策略梯度定理推导(本讲最该会推的一段);
- 5.5 的分情形裁剪表( / 与 区间);
- 5.6 的 RLHF 三步流程图与 DPO 损失;
- 5.7 的失败模式诊断表与多种子评估协议。
二刷(约 5–6 小时,补齐中间步骤):逐行读 proof——5.2 的两个贝尔曼推导与压缩性、5.3 的过高估计量级、5.4 的基线无偏性与方差表达、5.5 的 GAE 推导与裁剪梯度、5.6 的 Bradley–Terry 与 DPO 三步推导。读完后合上书,从零把策略梯度定理与 DPO 损失各推一遍。更紧凑的版本集中在附录 C.9–C.13,可用于对照与复算。
动手:依次跑 5.1 的 -greedy 老虎机、5.2 的值迭代、5.7 的 DQN 循环与 PPO 循环、5.6 的 DPO 损失。四份代码结构高度相似(采样 → 算目标 → 反向传播),把四者的「目标量」并排贴出来,本讲的主线一目了然。
自检路径:每节的「即时自测」→ 本讲习题集(A/B/C/D 四组)→ 闭卷回忆卡(当天 / 隔天 / 第 3 天 / 第 7 天)→ 综合自测卷(闭卷计时,100 分制)。
时间预算参考:只求搞清两条主干与适用边界,读 5.1、5.2 与 5.7 的表格(约 1 小时);要能自己写出 DQN 与 PPO 的循环并解释每一个失败模式,走完上面全部两遍并做完四份代码(约 12–15 小时)。
本讲把学习信号换成了奖励,但底层驱动力仍是第 1 讲的反向传播:无论是 TD 误差的平方、策略梯度的加权对数似然,还是偏好分类的交叉熵,最后都落到「求导 → 更新参数」。下一讲把零件组装成系统:Transformer 做骨干、生成模型做采样、本讲的 RL 做对齐,拼出今天最受关注的大语言模型与多模态模型——并继续追问「这些能力有多少是规模带来的、有多少是被叙事放大的」。