强化学习精通教程
强化学习精通教程
目标:在入门概念之上,建立可推导、可实现、可调参、可扩展的 RL 能力;覆盖现代深度 RL 与 LLM 后训练(RLHF/RLAIF)中的关键机制。
前置:已理解状态/动作/奖励/策略、价值与优势、REINFORCE、Actor-Critic 基本循环(见《强化学习入门教程》)。
写法:少公式、重直觉与工程含义;需要符号时只用最简写法。
1. 精通意味着什么
能稳定做到以下事项,即可视为「精通」而非「听说过」:
- 能讲清策略梯度在干什么,以及基线、重要性采样各自修正了什么问题。
- 清楚偏置-方差权衡,并能实现/选用回合回报、一步自举、GAE。
- 理解信任域 / 裁剪(TRPO/PPO)为何能稳住大策略网络。
- 能诊断发散、熵崩塌、奖励黑客、过时数据等问题。
- 能把算法映射到工程(并行采样、优势估计、KL 约束、分布式训练),并理解 PPO/GRPO 在 LLM 中的变体。
2. 目标与策略优化
2.1 优化目标
强化学习要最大化的,不是某一步奖励,而是整条轨迹的长期回报(通常对远期奖励打折)。
关键难点:一改策略,不但「同一局面下的动作偏好」变了,智能体常去的局面分布也会变。目标因此高度非平稳——这是 RL 难训的根源之一。
2.2 策略梯度在干什么
对随机策略,更新方向可以概括成一句话:
多做「看起来更好」的动作,少做「看起来更差」的动作;幅度由「该动作相对平均水平好多少」决定。
更具体地:对每个访问过的状态-动作,用梯度方向 ≈ ∇ log(选中该动作的概率) × 优势
去推参数。优势 > 0 就提高该动作概率,< 0 就降低。
基线:从回报里减去一个「只跟状态有关、不跟动作有关」的分数(常见就是状态价值)。
- 不改变期望更新方向
- 但能明显减小方差
- 若基线偷偷依赖了动作且未校正,会引入偏置
2.3 为何能用「对数概率 × 分数」更新
环境往往不可微(走一步环境内部怎么变,你反传不过去)。
技巧是:不把奖励对动作直接求导,而是对「选中该动作的概率」求导,再乘上这步得到的分数。
这就是 REINFORCE,以及多数 LLM-RL(按 token 当动作)的数学根源。
若环境可微(某些仿真),也可以走另一条路:确定性策略梯度或世界模型里反向传播。
3. 回报估计:从整条回合到 GAE
3.1 三种常见估法
| 方法 | 怎么估「这步有多好」 | 特点 |
|---|---|---|
| Monte Carlo | 把这步之后真实拿到的奖励一路加总(可打折) | 偏置小,方差大,要等回合结束 |
| TD(0) | 即时奖励 + 下一状态价值 − 当前价值 | 方差小,偏置依赖价值网络准不准 |
| n-step / λ | 在「多信真实奖励」和「多信价值网络」之间插值 | 系统化折中 |
一步 TD 误差可以记成:δ = 即时奖励 + γ·下一状态价值 − 当前价值。
3.2 GAE(PPO 等常用)
GAE 把多步 TD 误差按指数衰减加权求和,用两个旋钮折中偏置与方差:
| 参数 | 作用 |
|---|---|
γ | 看得有多远;也影响有效地平线 |
λ | 越接近 1 越像整回合结算(低偏高方);越接近 0 越像一步 TD(高偏低方) |
实践:LLM-RL 里λ、γ常与奖励稀疏度、KL 惩罚一起调;先固定一套可复现基线再扫。
4. 信任域与 PPO 族
4.1 为什么需要约束更新
策略迈太大步 → 新策略采样分布剧变 → 价值网络立刻过时 → 训练崩溃。
TRPO 用「新旧策略别差太远」(KL 信任域)硬约束;PPO 用更易实现的裁剪近似同一思想。
4.2 重要性比率与裁剪直觉
用旧策略采的数据更新新策略时,需要看:
比率 = 新策略选该动作的概率 / 旧策略选该动作的概率
朴素目标:比率 × 优势。
PPO-Clip:再和「把比率夹在1±ε之后再乘优势」取更保守的那个。
直觉:
- 优势 > 0:鼓励增大概率,但比率不宜超过
1+ε - 优势 < 0:鼓励减小概率,但比率不宜低于
1−ε
常见附加项:
- 价值损失:让价值网络跟上回报目标
- 熵奖励:鼓励探索,防止过早塌缩
- KL 惩罚 / 早期停止:比率裁剪之外的另一道刹车
4.3 Dual-Clip 与 LLM 实务
负优势且比率很大时,标准 clip 仍可能不够保守;Dual-Clip 对负优势再加更紧的下界。
在 RLHF 中还常约束「别离参考策略(常为 SFT)太远」,做法可以是:
- 从奖励里扣一笔「相对参考策略的 KL」
- 或在损失里直接加这项
精通者需分清:
| 约束 | 相对谁 | 目的 |
|---|---|---|
| PPO clip | 上一轮采样策略θ_old | 本轮更新别跨太猛 |
| KL(ref) | SFT / 参考策略 | 别为讨好奖励模型而遗忘、跑飞 |
5. Off-policy、重放与分布校正
5.1 重要性采样
用行为策略采的数据,估计目标策略下的期望,需要按「目标概率 / 行为概率」加权。
整条轨迹一起加权时方差容易爆炸 → 逐步加权、截断权重、V-trace(IMPALA)等。
5.2 DQN 谱系关键件
| 技术 | 作用 |
|---|---|
| Experience Replay | 打破相关性,提高样本利用率 |
| Target Network | 稳住 TD 目标,减轻追逐移动靶 |
| Double DQN | 减轻「总拿最大 Q」带来的高估 |
| Dueling / PER / N-step | 结构改进与优先采样 |
5.3 连续控制:DDPG → TD3 → SAC
- DDPG:确定性策略 + Q;能用,但脆
- TD3:双 Q 取保守、延迟更新、目标动作加噪平滑
- SAC:最大熵 RL——目标里既要高回报,也要策略保持一定随机性;探索与稳健性通常更好
在 LLM 里,「熵」常体现为显式熵奖励或采样温度调度,而不是整套 SAC。
6. 信用分配与稀疏奖励
| 策略 | 思想 |
|---|---|
| 奖励塑造 | 加过程分引导探索;需满足势成形条件才不改最优策略 |
| 课程学习 | 由易到难 |
| Hindsight ER (HER) | 把失败轨迹当作「达到了实际终点」的成功来学 |
| 分层 RL / Options | 高层选子目标,低层执行 |
| 内在动机 | ICM、RND、NGU 等给探索奖励 |
| 过程奖励模型(PRM) | LLM 推理中对中间步骤打分 |
LLM 场景:只有最终对错的结果奖励很稀疏;PRM、步骤级 KL、组采样对比(GRPO)都是在改善「哪一步该负责」。
7. 策略表示与动作空间
7.1 离散 / 连续 / 自回归
| 动作空间 | 典型表示 |
|---|---|
| 离散小集合 | Softmax |
| 连续 | 高斯、Beta、或确定性输出加噪声 |
| 语言 | 自回归:每步一个 token;整段回答 = 一串 token 动作 |
对自回归策略:整段回答的对数概率 = 各 token 对数概率之和(给定前文)。
PPO 的比率可在 token 级或序列级聚合;mask、EOS、是否按长度归一化,都会显著改变行为。
7.2 条件策略与上下文
目标条件 RL、偏好条件、工具调用等,本质是把上下文并进状态。
多轮 Agent 还要纳入工具结果与记忆——更接近部分可观测,且环境往往只部分可微。
8. 多智能体、博弈与分布偏移
8.1 MARL 概要
- 合作:共享奖励;常见 CTDE(集中训练、分散执行)
- 竞争:纳什、自对弈、PSRO
- 挑战:对手也在学导致非平稳、信用分配、通信
8.2 与「环境非平稳」统一视角
哪怕单智能体,函数近似误差 + 自举 + 策略自身在变也会造成非平稳。
对策:目标网络、信任域、保守更新、双 Q 取 min 等。
9. 理论工具箱(精读优先级)
| 主题 | 你该掌握到什么程度 |
|---|---|
| 贝尔曼备份与折扣收缩 | 为何价值迭代往往能收敛(直觉即可) |
| 策略改进 | 表格设定下,贪心改进不会变差 |
| 兼容函数近似 | Actor-Critic「批评家形状要对」的古典提醒 |
| 绩效差分 | 两策略回报差,主要由优势与状态分布差解释;TRPO 入口 |
| 覆盖 / concentrability | Off-policy 样本够不够的核心假设 |
| 悲观 / 保守策略迭代 | 线下 RL(CQL、IQL)为何要故意保守 |
不必背证明,但调参失败时要能回到假设:覆盖不足、外推错误、更新过大。
10. LLM 强化学习(RLHF / RLAIF)精要
10.1 标准 RLHF 流水线
SFT 策略 → 采样回答 → 人类/AI 偏好数据 → 训练奖励模型(常:同 prompt 下赢的回答分更高) → 以 SFT 为参考策略,带 KL 约束做 RL(PPO 等)偏好模型的直觉:奖励模型给「更好回答」打更高分,两个回答分差越大,模型越确信谁赢。
10.2 目标与「对齐税」
典型目标可以读成:
在参考策略附近,尽量提高奖励模型分数;离参考太远要付 KL 税。
β(KL 系数)是对齐强度主旋钮之一:太大则不敢动,太小则易奖励黑客、风格崩坏。
10.3 PPO 在 LLM 中的工程要点
- Actor / Critic / Ref / Reward多模型同台,显存与并行布局是一等公民问题
- 奖励常为序列末一个标量,再广播到 token;mask 必须正确
- 旧对数概率必须与采样时策略一致,否则比率语义损坏
- 长度偏差:未规范化时模型倾向「刷长度」
10.4 GRPO / RLOO 等「无 Critic」变体
思想:同一 prompt 采一组回复,用组内相对奖励当基线,减弱对价值网络的依赖。
- 好处:少一个大 Critic、实现更简单、常更省资源
- 代价:每 prompt 多样本更贵;组统计质量依赖采样数
n
10.5 DPO:把 RL 收成分类式目标
在「最优策略与偏好奖励模型同构」等假设下,DPO 直接用偏好对更新策略,绕开显式「先训 RM 再 PPO」循环。
精通者应理解:DPO 不是「没有 RL」,而是在特定假设下把 RLHF 目标改写成可监督学习损失;线上分布外表现、在线 DPO 变体,仍与探索和覆盖有关。
11. 训练稳定性:诊断手册
| 症状 | 可能原因 | 处理方向 |
|---|---|---|
| 回报突然崩溃 | 更新过大、KL 爆、价值过拟合 | 降 lr、收紧 clip、加 KL、减 epoch |
| 熵→0 | 过早利用 | 提熵系数、调温度、查奖励尺度 |
| 熵很高不学 | 奖励过弱/噪声大 | 检查奖励、增 batch、减熵系数 |
| 价值损失爆 | 回报尺度漂移 | 回报归一化、PopArt、改 γ |
| 只变长/只变短 | 长度与奖励耦合 | 长度惩罚/归一化、EOS 奖励 |
| 奖励升、人工评降 | 奖励黑客 | 换 RM、加多样性/安全约束、对抗挖掘 |
| off-policy 失效 | 过期数据、重要性权重方差大 | 提高同步频率、截断权重、改回 on-policy |
最少监控集:回报、相对旧策略的 KL、相对参考策略的 KL、熵、被 clip 的比例、优势均值/方差、梯度范数、响应长度。
12. 实现级清单(写出工业级循环)
一次可靠的 on-policy 更新应包含:
- 并行环境或批量 prompt 采样
- 存旧对数概率、价值、奖励、mask
- 算 GAE 或组相对优势,并按实现约定做标准化
- 多 epoch、小 batch 更新,带比率裁剪
- 可选价值裁剪、梯度裁剪、学习率日程
- KL 超预算则提前停 epoch
- LLM 场景:把新权重同步到推理引擎
测试阶梯:可解玩具任务过拟合 → CartPole 一类经典环境 → 再上真实/LLM 任务。跳过玩具直接上大模型,调试成本会指数上升。
13. 算法谱系速查
价值型: DQN → Double/Dueling/Rainbow → 分布 RL(C51 等) 策略型: REINFORCE → 自然梯度 → TRPO → PPO AC 连续: DDPG → TD3 → SAC 离线 RL: 行为克隆 → CQL / IQL / Decision Transformer 偏好/LLM: RLHF(PPO) → DPO/IPO/KTO → GRPO/RLOO/Online DPO 规划型: MCTS、MuZero、世界模型(Dreamer 等)建议主线:
策略梯度与信任域 → 最大熵与 off-policy 连续控制 → 离线/偏好优化 →(可选)世界模型与探索。
14. 推荐精读路径(8–12 周)
| 阶段 | 材料 | 产出 |
|---|---|---|
| 1 | Sutton & Barto 相关章节 | 能用自己的话讲清价值迭代与策略梯度 |
| 2 | Spinning Up + 手写 REINFORCE/PPO | 可运行的小环境 PPO |
| 3 | TRPO / PPO / GAE 论文 | 能复述「为何要限制更新」与 GAE 取舍 |
| 4 | SAC、TD3 | 连续控制对比实验 |
| 5 | RLHF、InstructGPT、DPO | 画出 RM+PPO 与 DPO 对照图 |
| 6 | 一个生产级实现(如 verl / TRL) | 对照比率、mask、KL、优势细节 |
| 7 | 自选:离线 RL 或世界模型 | 专题笔记 |
15. 练习题(建议真实动笔)
- 用自己的话说明:为什么「只依赖状态、不依赖动作」的基线通常不改变策略更新的期望方向,却能降方差。
- 说明:局部改进策略时,为何既要提高高优势动作的概率,又要限制策略走太远(状态分布别漂太狠)。
- 实现 GAE,对比
λ取 0、0.95、1 时的学习曲线差异。 - 在 PPO 中记录 clip 比例与 KL,找出「epoch 过多」导致崩溃的临界点。
- 构造一个会奖励黑客的玩具环境,并设计缓解方案。
- 写出 LLM 上 token 级 PPO 更新的伪代码(含 mask、旧对数概率、比率裁剪)。
- 在同一偏好数据上对比 DPO 与 RM+PPO:长度、多样性、相对参考策略的 KL。
16. 小结
精通强化学习的主轴不是「会更多字母缩写」,而是:
正确估计优势 → 在信任域内改进策略 → 管理分布偏移与探索 → 让奖励真正表达目标。
映射到现代 LLM 系统,同一主轴变成:采样、token 对数概率、组内/GAE 优势、裁剪与 KL、奖励模型或规则、以及分布式 Actor-Rollout 工程。
入门概念请回看《强化学习入门教程》;若关注 verl / RLlib 等系统架构,可对照同目录的架构指导文档。
参考(精通)
- Sutton & Barto,Reinforcement Learning: An Introduction
- Schulman et al., GAE / TRPO / PPO
- Haarnoja et al., Soft Actor-Critic
- OpenAI Spinning Up
- Ouyang et al., InstructGPT;Christiano et al., RLHF
- Rafailov et al., DPO
- 分布式 LLM-RL 工程:https://github.com/verl-project/verl ,https://verl.readthedocs.io/
