跳到主要内容

第 29 章的路是「先给状态标价,再照价选动作」——动作一多一连续,查表就崩。 这一章换问法:不估值,直接调「选每个动作的概率」。 推导会给出一个漂亮的结果:梯度里环境模型消失了,只剩「这条轨迹赚了多少」 乘「把这次的选择概率再调高一点」;代价是方差,后面六节都在治它。

强化学习(二):策略梯度与演员-评论员

1. 这一章讲什么

两件事: 策略梯度——直接对参数化策略求梯度、用梯度上升改策略; 以及沿着「稳住这条梯度」的路线走出的四步:基准线、演员-评论员、 信赖域/PPO(把「别走太远」写成裁剪)、广义优势估计。末尾一节交代样本与奖励从哪来——那是 第 32 章对齐技术的接口。

它在全书链条里的位置: 值函数方法(第 29 章)在离散小动作空间够用; 语言模型生成回答时,「动作」就是从词表(几万个候选词的清单)里逐个挑词,策略本身就是一个可微的概率分布。

这正是第 32 章 RLHF(人类反馈强化学习)把语言模型当策略来训练的原因。

需要第 29 章(值函数、时序差分);梯度记号见第 02 章。

2. 顶层全景

目标 𝒥(θ)=期望回报,直接对策略参数求导(梯度上升):

∇𝒥 = E[ Σₜ ∇log πθ(aₜ|sₜ) · (折扣后续回报) ] ← 环境模型消失了

├ REINFORCE 整条轨迹跑完再算,无偏但方差大
├ + 基准线 b(s) 与动作无关 → 期望不变,方差下降
├ 演员-评论员 b 换成学习到的 Vφ;走一步更新一次
├ 信赖域/PPO 一步别迈太大;PPO 用裁剪写成可一阶优化的目标
└ GAE 优势估计在「一步(稳但偏)」与「整条(准但晃)」间连续调

一句话链条: 直接学策略 → 梯度公式里只剩「回报 × 对数概率的导数」→ 跑完整条轨迹才更新,太晃 → 减一个基准,把「赚/亏」改成「比平均好/差」→ 评论员实时给基准,单步可更新 → 新旧策略差太远时旧数据失效, 信赖域把「别走太远」写进约束 → PPO 把约束换成裁剪,一批数据能反复用 → 优势估计用 GAE 调偏差-方差的平衡点。

3. 能不能直接学策略

值函数方法「先估计价值,再按价值改进策略」;策略方法的赌注是: 最终要的就是策略,那就直接在策略空间里优化参数,不再显式枚举 所有动作的价值。书指出参数化策略的两个直接好处:天然表示随机性策略, 也便于处理连续状态和连续动作1

策略梯度是对目标函数 𝒥(θ)=期望回报求导、做梯度上升。推导用的是 对数导数技巧(第 02 章的链式法则即可跟上):∇p = p·∇log p, 把「对概率求导」改写成「概率自己乘上对数概率的导数」, 期望形式浮出水面2

梯度里为什么没有环境模型: 轨迹概率 p(τ) 里本来有三项因子—— 初始状态、策略、转移概率。对 θ 求导时,前两项与 θ 无关消掉, 转移概率那一项也消掉了,只剩下策略自己的对数导数3。一句话: 改的是策略,环境爱怎么随机怎么随机,梯度照算。最终的策略梯度公式:

∇𝒥(θ) = E[ Σₜ ∇log πθ(aₜ|sₜ) · γᵗ·Gₜ ]

权重用的是从该时刻开始的后续折扣回报 γᵗGₜ——书特别说明, 与当前动作无关的更早奖励不该记在这一步头上(可以严格证明其期望为零)4。 公式读法:一条轨迹赚得多,就把这条轨迹上每个「选择」的概率都调高一点; 赚得少甚至亏了,就调低

4. 主走查:手算一次策略梯度

场景(全部为演示设定):一个状态 s、两个动作 A、B。 策略是两打分的 softmax:θ_A=0.405、θ_B=0,于是 π(A|s)=e^0.405/(e^0.405+1)≈0.6,π(B|s)≈0.4。每条轨迹只走一步,γ=1。

softmax 策略的对数导数有现成公式:

∇θA log π(A|s) = 1 − π(A) = 0.4
∇θA log π(B|s) = − π(A) = −0.6

采样到两条轨迹(演示):第一条选了 A,回报 +1;第二条选了 B,回报 −1。

REINFORCE 单样本梯度:
轨迹 1(A, +1): 0.4 × (+1) = +0.4
轨迹 2(B, −1): (−0.6) × (−1) = +0.6
平均 +0.5 → θ_A 往上调,π(A) 增大

两条轨迹都推高 θ_A,方向一致,不难理解:A 赢了要加码;B 收到负回报, 等于把概率从 B 那边推走——softmax 里概率此消彼长,推 B 下就是推 A 上。

加上基准线 b(s)=0.2(值函数的一个估计,数值为演示)再算一遍:

轨迹 1: 0.4 × (+1 − 0.2) = +0.32
轨迹 2: (−0.6) × (−1 − 0.2) = +0.72
平均 +0.52 —— 方向不变

为什么期望可以不变: 减去的项是 b·∇log π(a|s),对动作取期望时 b(与动作无关)提出来,剩下 Σₐ π(a)∇log π(a) —— softmax 归一化的求导 恰好恒等于 0。所以减掉任何「只看状态、不看动作」的数,梯度期望分毫不动5

那图什么? 图方差。书引用的是控制变量的通用结论: 替换后的估计量方差 = (1−corr²)×原方差,估计量与基准的相关性越高, 方差缩得越多;而「与 G 最相关」的自然选择就是值函数本身6。 基准的语义也顺理成章:(G−b) 不再是「赚了多少」,而是 「比这个状态的平均水平好多少」——这正是下一节的优势

5. 只有跑完才知道好不好:REINFORCE

把第 3、4 节拼起来就是 REINFORCE:按当前策略采一条轨迹, 跑完后对每个时刻算 Gₜ,沿 ∇log π·G 更新,循环7。 书给它的问题是明码的:「不同路径之间的方差很大,导致训练不稳定, 这是在高维空间中使用蒙特卡罗方法的通病」——同一策略,这条轨迹大赚、 下一条大亏,更新方向来回摆8

6. 让评论员来当基准:演员-评论员

第 4 节说基准取值函数最好,但值函数未知——那就学一个。这正是 演员-评论员的结构分工:演员是策略 πθ(负责行动),评论员是值函数 Vφ(负责打分);评论员学得越准,基准越好,演员的梯度越稳9

它相对 REINFORCE 的实质进步在更新时机:书借第 29 章的时序差分说, 不必等回合结束——评论员用一步时序差分误差

δ = r + γVφ(s′) − Vφ(s)

修正自己的估计,演员则依据同一个 δ 调整策略10一个误差信号喂两个网络 是这套方法的心跳:δ>0 说明这一步比评论员预期的好,演员加大它的概率, 评论员同步上调 Vφ。书还划了一条线:带基准线的 REINFORCE 虽然也同时学 策略和值函数,但它的值函数只当基准用、不做单步时序差分估计, 不算典型的演员-评论员11

7. 一步别迈太大:信赖域

策略梯度还有一层病:更新步长。书列了三条——步长难控制(太大一步 走出好区域,太小训练慢);样本利用率低(「采样一次,更新一次, 数据即废弃」);更新缺少显式约束(旧策略下估出来的优势,对新策略 未必还可靠)12

信赖域的想法:只在一个小邻域内相信当前的局部近似,要求新策略 别偏离旧策略太远13。数学上分三步走:

  1. 优势函数 A(s,a)=Q(s,a)−V(s):这个动作比「按当前策略平均行动」 好多少14;
  2. 代理目标:新策略的回报 = 旧策略的回报 + 新轨迹上「累积优势」的期望; 把其中与新策略耦合的状态访问频率用旧策略的近似——于是得到一个 容易优化的局部目标(「在旧策略附近,用局部目标近似真实目标」)15;
  3. KL 散度约束:新旧策略在每 个状态下的分布,KL 距离不超过阈值 δ。 这就是 TRPO。书同时坦白:约束优化要共轭梯度等近似二阶方法, 工程实现相对复杂;边注补了一句要紧的话——信赖域约束不是让学习 变保守,而是保证局部近似仍然可信16

旧数据上评估新策略要用重要性采样比 r(θ)=πθ(a|s)/πθ_old(a|s)17

8. 把约束换成裁剪:PPO

PPO 保留「别走太远」的思想,但不再解约束优化,把思想直接写进 一个一阶可优化的目标。两种写法:KL 惩罚版(目标里减一项 β·KL); 更常用的是裁剪目标:

ℒclip = E[ min( rₜAₜ , clip(rₜ, 1−ε, 1+ε)·Aₜ ) ]

书把两种情形讲得很具体:A>0(动作比平均好)想加大它的概率, 但 rₜ 已超过 1+ε 时不再继续鼓励;A<0 想压低,但 rₜ 已低于 1−ε 时 不再继续惩罚。这是一个「软边界」:超过边界后,目标不再奖励更大的改变18

工程上 PPO 的甜头是:一份旧策略采的数据可以在多个 epoch 上反复使用, 不必每更新一步就重新采样;实现更简单,经验效果与 TRPO 常常相近19。 第 32 章的 RLHF 训练里,这一节的目标函数会原样回归。

9. 优势怎么估才稳:GAE

TRPO 和 PPO 都要优势 Aₜ。**广义优势估计(GAE)**把两个极端摆出来: 只用一步时序差分误差 δₜ=r+γV(s′)−V(s),方差小但偏差可能大; 用整条回报,偏差小但方差大。GAE 用一个衰减系数 λ 把多步的 δ 指数加权求和:Â = Σ(γλ)ˡ δ_{t+l}20

λ 就是平衡旋钮:λ=0 退化为一步估计(稳、偏),λ=1 接近整条回报 (准、晃)。书最后补了搭配关系:实践中 GAE 负责提供平滑的优势估计, PPO 裁剪负责限制更新幅度,「两者结合后通常能得到较稳定的训练过程」21

10. 样本从哪来、奖励谁定

书在章末把视野拉开:算法选对只是一半,样本与奖励的来源决定风险结构22:

设置一句话主要风险
在线无模型边交互边学真实交互贵,探索可能不安全
基于模型学环境模型,在模型里「想象式」推演模型误差长时程累积,策略可能钻模型空子
离线只用固定数据集,不能再探索分布外动作的价值估计过度乐观
偏好反馈/RLHF人类偏好训练奖励模型(给回答打分的替身),再优化策略奖励被过度优化(Goodhart)

23

这一节的收尾直接指向全书主线:语言模型天然是一个参数化策略 (状态=输入与生成历史,动作=下一个词元,轨迹=整段回答), 策略梯度、优势估计、KL 约束、PPO 裁剪都可以直接迁移; 而「奖励需要学习、评估带有主观性」的场景,就是第 32 章的对齐24

11. 作者的判断与证据

书里给了推导的: 策略梯度与转移项消去23;更早奖励期望为零4; 基准线期望不变与方差公式56;策略改进恒等式与代理目标15; PPO 裁剪的两种情形18;GAE 的 λ 插值20

书里给了坦白的: REINFORCE 方差大是「蒙特卡罗的通病」8; TRPO 工程实现复杂16;优势估计在偏差与方差之间没有免费午餐20; 对抗训练式的两个网络(演员-评论员 vs 生成对抗)的异同被列为习题对照。

书里给了分类账的: 在线/离线、有模型/无模型、奖励建模四类设置 的样本来源与风险表23

12. 边界与局限

本章的推导默认可以廉价地与环境交互:策略梯度是 on-policy 方法, PPO 的「多 epoch 复用」也只覆盖几步内的旧数据;真正只有历史数据的 离线场景,书只在第 10 节点名,没有展开算法。

奖励仍然假定是给定的:除了末节预告 RLHF,本章没有回答「奖励函数 本身怎么来、错了怎么办」——那是第 32 章的主戏。

样本效率与超参数(ε、λ、β)只有定性指引:裁剪区间、GAE 的 λ 取多少,书给了方向(ε 大保留更多随机性、λ 大偏差小方差大),没有给 默认值之外的调参准则。

13. 可带走的

  1. 策略梯度直接优化「选动作的概率」;随机策略与连续动作天然支持;
  2. 对数导数技巧让环境模型从梯度里消失——只剩回报×对数概率导数;
  3. 权重用「从该时刻起的后续折扣回报」,更早的奖励不属于这一步;
  4. REINFORCE 无偏但方差大;减一个与动作无关的基准,期望不变、方差下降;
  5. (G−基准) 的语义是优势:比这个状态的平均水平好多少;
  6. 演员-评论员:一个时序差分误差 δ 同时喂演员和评论员,单步可更新;
  7. 信赖域:新旧策略 KL 距离受限,保证旧数据上的局部近似仍可信(TRPO);
  8. PPO 把约束换成裁剪:超界不再奖励;旧数据可多轮复用;
  9. GAE 的 λ 在「一步(稳、偏)」与「整条(准、晃)」之间连续调;
  10. 选算法之外还要问:样本从哪来、奖励谁定——第 32 章对齐的两问由此而来。

14. 原文地图

主题原书章原文位置
策略方法动机第12章 深度强化学习text/13-ch12.txt:704(搜「先估计价值」) · text/13-ch12.txt:710(搜「参数化策略」)
策略梯度推导第12章 深度强化学习text/13-ch12.txt:717(搜「目标函数 𝒥(𝜃) 关于策略参数」) · text/13-ch12.txt:737(搜「优化的方向」)
转移项消去第12章 深度强化学习text/13-ch12.txt:755(搜「和状态转移概率无关」)
后续回报加权第12章 深度强化学习text/13-ch12.txt:800(搜「策略梯度可写为」) · text/13-ch12.txt:807(搜「更合理的权重」)
REINFORCE第12章 深度强化学习text/13-ch12.txt:810(搜「REINFORCE 算法」) · text/13-ch12.txt:841(搜「方差很大」)
控制变量与方差公式第12章 深度强化学习text/13-ch12.txt:842(搜「减少方差」) · text/13-ch12.txt:871(搜「相关性越高」)
基准线期望不变第12章 深度强化学习text/13-ch12.txt:877(搜「基准函数」) · text/13-ch12.txt:906(搜「越相关越好」)
演员-评论员第12章 深度强化学习text/13-ch12.txt:953(搜「演员-评论员(Actor-Critic」) · text/13-ch12.txt:980(搜「时序差分误差」) · text/13-ch12.txt:1013(搜「基本框架」)
信赖域动机第12章 深度强化学习text/13-ch12.txt:1030(搜「三个常见问题」) · text/13-ch12.txt:1034(搜「样本利用率较低」) · text/13-ch12.txt:1025(搜「足够小的邻域」)
优势函数第12章 深度强化学习text/13-ch12.txt:1043(搜「优势函数(advantage function」)
代理目标第12章 深度强化学习text/13-ch12.txt:1050(搜「从策略改进到代理目标」) · text/13-ch12.txt:1106(搜「代理目标(Surrogate Objective」)
TRPO 与 KL第12章 深度强化学习text/13-ch12.txt:1121(搜「TRPO 的优化问题」) · text/13-ch12.txt:1132(搜「共轭梯度」)
PPO 两种形式第12章 深度强化学习text/13-ch12.txt:1139(搜「更简单的近端更新」) · text/13-ch12.txt:1153(搜「裁剪目标」) · text/13-ch12.txt:1166(搜「软边界」) · text/13-ch12.txt:1168(搜「实现更简单」)
GAE第12章 深度强化学习text/13-ch12.txt:1174(搜「广义优势估计(Generalized」) · text/13-ch12.txt:1201(搜「一步时序差分估计」) · text/13-ch12.txt:1204(搜「配合使用」)
样本与奖励来源第12章 深度强化学习text/13-ch12.txt:1209(搜「环境模型、离线数据与奖励建模」) · text/13-ch12.txt:1226(搜「在线强化学习(Online」) · text/13-ch12.txt:1236(搜「奖励函数本身也不是天然给定的」) · text/13-ch12.txt:1299(搜「样本从哪里来」)
语言模型接口第12章 深度强化学习text/13-ch12.txt:1271(搜「在大语言模型中的应用」) · text/13-ch12.txt:1273(搜「参数化策略」)

Footnotes

  1. 出处:「第12章 深度强化学习」第 703 至 714 段(text/13-ch12.txt:704,搜「先估计价值」; text/13-ch12.txt:710,搜「参数化策略」)。

  2. 出处:「第12章 深度强化学习」第 717 至 737 段(text/13-ch12.txt:717,搜「目标函数 𝒥(𝜃) 关于策略参数」; text/13-ch12.txt:737,搜「优化的方向」),式(12.41)-(12.45)。 2

  3. 出处:「第12章 深度强化学习」第 739 至 763 段(text/13-ch12.txt:755,搜「和状态转移概率无关」), 式(12.46)-(12.49)。 2

  4. 出处:「第12章 深度强化学习」第 765 至 808 段(text/13-ch12.txt:775,搜「不依赖于当前动作」; text/13-ch12.txt:807,搜「更合理的权重」),式(12.50)-(12.56)。 2

  5. 出处:「第12章 深度强化学习」第 872 至 905 段(text/13-ch12.txt:883,搜「无关」; text/13-ch12.txt:903,搜「𝜕 𝒥̂ 」),式(12.63)-(12.67)。 2

  6. 出处:「第12章 深度强化学习」第 840 至 871 段(text/13-ch12.txt:842,搜「减少方差」; text/13-ch12.txt:869,搜「corr」;text/13-ch12.txt:906,搜「越相关越好」),式(12.58)-(12.62)。 2

  7. 出处:「第12章 深度强化学习」第 810 至 837 段(text/13-ch12.txt:810,搜「REINFORCE 算法」), 算法 12.6[Williams, 1992]。

  8. 出处:「第12章 深度强化学习」第 841 至 842 段(text/13-ch12.txt:841,搜「方差很大」)。 2

  9. 出处:「第12章 深度强化学习」第 946 至 959 段(text/13-ch12.txt:953,搜「演员-评论员(Actor-Critic」)。

  10. 出处:「第12章 深度强化学习」第 979 至 987 段(text/13-ch12.txt:980,搜「时序差分误差」; text/13-ch12.txt:982,搜「(12.74)」)。

  11. 出处:「第12章 深度强化学习」第 1013 至 1017 段(text/13-ch12.txt:1013,搜「基本框架」)。

  12. 出处:「第12章 深度强化学习」第 1029 至 1040 段(text/13-ch12.txt:1030,搜「三个常见问题」; text/13-ch12.txt:1034,搜「样本利用率较低」)。

  13. 出处:「第12章 深度强化学习」第 1021 至 1026 段(text/13-ch12.txt:1025,搜「足够小的邻域」)。

  14. 出处:「第12章 深度强化学习」第 1043 至 1048 段(text/13-ch12.txt:1043,搜「优势函数(advantage function」), 式(12.75)。

  15. 出处:「第12章 深度强化学习」第 1050 至 1107 段(text/13-ch12.txt:1057,搜「新策略比旧策略好多少」; text/13-ch12.txt:1106,搜「代理目标(Surrogate Objective」),式(12.76)-(12.87)。 2

  16. 出处:「第12章 深度强化学习」第 1108 至 1137 段(text/13-ch12.txt:1109,搜「KL 散度(Kullback-Leibler」; text/13-ch12.txt:1132,搜「共轭梯度」;text/13-ch12.txt:1136,搜「并不是让学习变保守」), 式(12.88)-(12.91)。 2

  17. 出处:「第12章 深度强化学习」第 1114 至 1118 段(text/13-ch12.txt:1115,搜「重要性采样(Importance Sampling」), 式(12.89)。

  18. 出处:「第12章 深度强化学习」第 1139 至 1167 段(text/13-ch12.txt:1153,搜「裁剪目标」; text/13-ch12.txt:1161,搜「不再继续鼓励」;text/13-ch12.txt:1166,搜「软边界」),式(12.92)-(12.93)。 2

  19. 出处:「第12章 深度强化学习」第 1168 至 1170 段(text/13-ch12.txt:1168,搜「实现更简单」)。

  20. 出处:「第12章 深度强化学习」第 1172 至 1203 段(text/13-ch12.txt:1174,搜「广义优势估计(Generalized」; text/13-ch12.txt:1194,搜「衰减系数」;text/13-ch12.txt:1201,搜「一步时序差分估计」),式(12.94)-(12.98)。 2 3

  21. 出处:「第12章 深度强化学习」第 1204 至 1206 段(text/13-ch12.txt:1204,搜「配合使用」)。

  22. 出处:「第12章 深度强化学习」第 1209 至 1243 段(text/13-ch12.txt:1209,搜「环境模型、离线数据与奖励建模」; text/13-ch12.txt:1241,搜「奖励模型也是近似模型」),表 12.1。

  23. 出处:「第12章 深度强化学习」第 1246 至 1264 段(text/13-ch12.txt:1246,搜「几类样本与模型来源的比较」), 表 12.1;世界模型见第 1217 至 1225 段(text/13-ch12.txt:1406,搜「想象式」)。 2

  24. 出处:「第12章 深度强化学习」第 1271 至 1282 段(text/13-ch12.txt:1273,搜「参数化策略」; text/13-ch12.txt:1279,搜「奖励需要学习」)。