主题
字号
PART III · 强化学习速成
CHAPTER 17 ≈ 45 MIN READ

教练与护栏——Actor-Critic、重要性采样与信任域

上一章结尾留了两桩病:采样来的数据只能用一次就扔;步子迈大了会跌进无法自愈的深渊。这一章把治这两桩病的三块拼图逐一备齐——Actor-Critic(让价值函数正式上岗)、重要性采样(让旧数据焕发余热)、信任域(给步子装护栏)。备齐之后,下一章的 PPO 就只是水到渠成的组装。

4.1 合体:演员与教练

第二章结尾说过,策略路线"不走价值路线,但雇用价值函数当评估员"。现在正式办入职手续。

回顾链条:策略梯度需要 advantage 当权重;advantage 的单步估计是 TD 误差 $\delta = r + \gamma V(s') - V(s)$;而算 $\delta$ 需要一个 $V$。既然没有真值,那就再训一个网络去学它。于是架构里出现了两个角色,这套设计叫 Actor-Critic(演员-评论家):

两者共生互训:actor 走出轨迹,critic 用 TD 学习(第二章的方法)不断修正自己的估值;critic 的估值反过来给 actor 提供低噪声的学习信号。常用的类比是驾校:学员(actor)握方向盘,教练(critic)坐副驾不碰方向盘、只在每个动作后给出"比预期好/差"的即时点评——点评本身不开车,却让学员不必等到"考试挂科"(终局奖励)才知道哪一步错了。这个思想的资历比深度学习还老:1983 年 Barto、Sutton 与 Anderson 的论文就用一对"自适应单元"在倒立摆上实现了它——那篇论文里评估单元的名字就叫 adaptive critic element,"评论家"之名沿用至今。

工程上还剩一个可调的旋钮。critic 的 $\delta$ 是 advantage 的低方差估计,但有偏($V_\phi$ 是近似值,教练自己也会看走眼);蒙特卡洛回报无偏但高方差——又是那架跷跷板。实践中的标准答案叫 GAE(广义优势估计):把多步的 $\delta$ 按权重 $\lambda$ 叠加,$\lambda = 0$ 退化为单步 TD(信教练),$\lambda = 1$ 退化为蒙特卡洛(信实测),中间连续可调,典型取 0.95——一个"九分信实测、留一分平滑"的折中。你在后训练代码库里会反复见到 gae_lambda 这个参数,它就是这架跷跷板的游标。

4.2 让旧数据发余热:重要性采样

第一桩病:on-policy 的一次性数据。病根在数学上很清楚——策略梯度公式里的期望必须"在当前策略的分布下"取;参数一更新,手里那批轨迹就成了旧策略的作品,用它们直接估计新策略的梯度,分布对不上,估计就是错的。

但"分布对不上"不等于"没救",统计学早有标准药方:重要性采样(importance sampling)——用一个分布的样本去估计另一个分布下的期望,办法是给每个样本乘上一个校正比率:两个分布下该样本概率之比。落到我们的场景,对每一步动作定义:

$$ r_t(\theta) = \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\text{old}}}(a_t \mid s_t)} $$

分母是采数据时的旧策略给这个动作的概率,分子是现在的新策略给它的概率。比率大于 1,说明新策略比旧策略更爱这个动作——它在旧数据里被"低估了出场率",权重上调补偿;小于 1 则反之。乘上这个比率,旧数据就能合法地为新策略的梯度估计服务。

实际收益立竿见影:采一批数据,做多轮梯度更新(每轮用最新参数重算比率),榨干每条昂贵的轨迹再扔。对语言模型这尤其要命地重要——"采样一批轨迹" = 用当前模型完整生成几万条回答,是实打实的推理算力;能复用三到十轮,成本直接除以三到十。

但药方自带毒性警告:校正比率只在两个分布还比较接近时可靠。新旧策略差得越远,比率的取值越极端(一个旧策略几乎不选、新策略很爱的动作,比率可以大到几十几百),估计的方差爆炸,"校正"变成"放大噪声"。所以重要性采样给了我们复用数据的权利,同时施加了一条纪律:新策略不能离旧策略太远。记住这条纪律,它马上会和第二桩病汇合。

4.3 悬崖边的雾:策略崩塌

第二桩病要认真讲透,因为它是 PPO 存在的全部理由。

监督学习里,学习率大了会震荡、会发散,但有一个隐性的安全网:数据集不会因为你更新坏了而变质——下一步梯度仍来自同一批好数据,走错了还能被拉回来。RL 把这张网抽掉了:数据是当前策略自己采的。设想一次过大的更新把策略推进了坏区域——它开始满嘴胡话/往悬崖走——接下来发生什么?它采到的所有新数据都是坏策略的产物:低回报、无信息量,从这些垃圾轨迹里算出的梯度指不出回家的路。策略坏 → 数据坏 → 梯度坏 → 策略更坏。这个自我强化的死亡螺旋有个名字:策略崩塌(performance collapse),而且常常没有回头路——不是"这一步亏了",是"从此再也采不到能教你变好的数据"。

社区流传一个贴切的比喻(Spinning Up 等教程常用):策略优化像在浓雾中沿着悬崖边的山脊登山。看不清全貌(只有本地的梯度估计),山脊右侧是深渊(坏策略区域),而且摔下去没有安全绳。在这样的地形上,正确的行走方式不是"朝最陡的方向迈最大步",而是:每一步都小,且确认落脚点离上一步不远

把这句话说得数学一点,还有一层微妙:"参数变化小"不等于"策略变化小"。神经网络里,有的参数动一点点、输出分布纹丝不动;有的参数动同样一点点、分布天翻地覆。在参数空间限制步长(比如调小学习率)是隔靴搔痒——真正该限制的是策略分布本身的变化量。分布之间的"距离"用什么量?你在深度学习里见过的老朋友:KL 散度。

4.4 信任域:把纪律写进优化问题

于是 2015 年的 TRPO(Trust Region Policy Optimization,信任域策略优化)把上面所有线索拧成了一个干净的优化问题:

$$ \max_\theta\ \ \mathbb{E}\Big[\, r_t(\theta)\, \hat A_t \,\Big] \qquad \text{s.t.}\quad \mathbb{E}\big[\, D_{\mathrm{KL}}\big(\pi_{\theta_{\text{old}}} \,\|\, \pi_\theta\big)\,\big] \le \delta $$

读起来每个零件都认识:目标是"用重要性采样校正过的 advantage 加权收益"(4.2 的成果——可复用旧数据);约束是"新旧策略的 KL 散度不得超过一个小阈值 $\delta$"(4.3 的纪律——在分布空间画一个信任域,本次更新只许在圈内寻优)。圈内,重要性采样可靠、崩塌风险可控;出圈,一切保证作废。"信任域"这个名字非常准确:我只信任旧策略邻域内的估计,就只在我信任的范围里走

TRPO 在理论上近乎完美(甚至能证明单调改进的保证),实践中却笨重:带 KL 约束的优化需要二阶信息——算 Fisher 矩阵、跑共轭梯度——实现复杂、算力昂贵,还和 dropout、参数共享这些深度学习的日常家当合不来。它像一辆装了顶级安全系统的概念车:方向完全正确,但没法量产。

整个领域于是憋着同一个问题:**能不能用一阶方法(就普通的梯度下降),廉价地逼近信任域的效果?**2017 年,Schulman(TRPO 的同一作者)给出了那个后来改变一切的答案——用一个 min 和一个 clip,两行代码。下一章,PPO:先拆解这个精巧的目标函数,然后带着全卷的装备,正式跨进大语言模型的世界。


本章要点