深度教堂

  • 榜单数据10-16 17:00
  • 论文数据10-16 13:30
  • 周报10-17 11:22

高级策略梯度

未发布阅读约 38 分钟人工撰写已核查审核人 ai-fact-check

CS285CS285 L9–L10

本讲迁移自原课程讲义,经 AI 事实核查未发现存疑项,未逐页人工审核;如有出入,以原始论文和 CS285 课程资料为准。

第 06 讲核心模块策略梯度与价值方法对应 CS285 L9–L10

学习目标

  • 说清朴素 PG 为何对步长病态敏感、on-policy 下"走坏一步"为何致命。
  • 推导性能差引理并理解代理目标的适用范围(信赖域的动机)。
  • 理解为何用 KL 散度而非欧氏距离度量策略变化;推导自然梯度与 Fisher 矩阵。
  • 推导 TRPO 的单调改进下界并说清其假设与松弛。
  • 写出 PPO clipped 目标、逐项解释 clip 的作用与它不是真信赖域的局限。

朴素策略梯度对步长极其敏感:太小学得慢,太大一步就把策略推坏、且因为数据是on-policy 的,坏策略采到的坏数据会让它再也爬不回来。本模块回答”一步最多能走多远”这一核心问题:我们先用性能差引理把策略提升写成可优化的代理目标,指出它只在新旧策略接近时可信;再从”参数空间 vs 分布空间”的几何引出自然梯度与 Fisher 信息;进而推导 TRPO 的单调改进下界,最后看 PPO 如何用一行 clip 把这套二阶信赖域近似成一阶、可大规模训练。

配套 Extended HW6 · 非 CS285 官方

PPO / SAC 稳定性报告把本模块的 clip、KL 与 GAE 接到真实 CPU 三种子实验;代码目录与 README含 tests、配置和 artifacts。结果与负例以报告为 canonical,本页不重复数字。

学习目标

  • 说清朴素 PG 为何对步长病态敏感、on-policy 下”走坏一步”为何致命。
  • 推导性能差引理并理解代理目标的适用范围(信赖域的动机)。
  • 理解为何用 KL 散度而非欧氏距离度量策略变化;推导自然梯度与 Fisher 矩阵。
  • 推导 TRPO 的单调改进下界并说清其假设与松弛。
  • 写出 PPO clipped 目标、逐项解释 clip 的作用与它不是真信赖域的局限。

编者按 · 批判性视角

本模块以 TRPO→PPO 为主线,但站在前沿要加两句批判。其一,TRPO 的实践算法需要二阶近似、Fisher 向量积与线搜索,实现和计算都较复杂;而 PPO 的”信赖域”只是松散的启发式近似(第 7 节会看到它”不是真信赖域”),其性能也显著受实现细节影响。其二,部分近期 LLM 训练工作采用了 GRPO / GSPO 等 critic-free 方法,另一些偏好优化方法则绕过在线 RL;这些工作说明 PPO 并非唯一选择,但不足以推出整个行业的默认格局。GSPO 的公开方法采用序列级重要性比与序列级裁剪 [1]。

1. 朴素 PG 的病态:步长敏感

朴素策略梯度沿 ∇θJ\nabla_\theta J 走一步 θ←θ+α∇θJ\theta\leftarrow\theta+\alpha\nabla_\theta J。问题有二:

  • 参数-行为的非线性错配:参数上一个”小”步,可能让动作分布剧烈变化(例如高斯策略方差很小时,均值挪一点点,行为就完全变了)。反之在别的区域,同样的参数步几乎不改变行为。单一学习率 α\alpha 无法同时适配。
  • on-policy 的不可逆性:策略梯度用当前策略采的数据估计梯度。若一步把策略推到很差的区域,接下来采到的全是坏数据,梯度估计也随之失真——不像监督学习有固定数据集兜底,这里可能永久性能崩塌。

举例

把训练策略想成在浓雾里下山:小步慢走,每步都能踩稳、看清脚下再挪,虽慢却安全;一步猛迈,可能正好一脚踏空跌下悬崖。而 on-policy 的致命之处在于——摔下去后你只能在谷底就地重新采数据,眼里全是谷底的烂路,很难再爬回原来的山脊。信赖域 / KL 约束做的正是给每一步限定一个”最大跨度”:允许往前走,但不许一步迈到雾里看不见的地方。

图 1:参数空间中的均匀步长,经非线性策略映射后,在分布空间中变化极不均匀——这是需要"分布空间步长约束"的根本原因。

图 1:参数空间中的均匀步长,经非线性策略映射后,在分布空间中变化极不均匀——这是需要”分布空间步长约束”的根本原因。

2. 性能差引理(Performance Difference Lemma)

我们想优化新策略 π′\pi' 相对旧策略 π\pi 的性能提升。核心恒等式:

J(π′)−J(π)=Eτ∼π′[∑tγtAπ(st,at)].(6.1)J(\pi') - J(\pi) = \mathbb{E}_{\tau\sim\pi'}\Big[\sum_t \gamma^t A^{\pi}(s_t,a_t)\Big]. \tag{6.1}

即新策略的优势,要在旧策略的优势函数下、按新策略的轨迹分布来累加。这个式子精确、无近似,但右端期望在 π′\pi' 的分布下取——而我们只有 π\pi 的数据,这正是困难所在。

推导:性能差引理

关键假设

同一 MDP、同一初始分布 ρ0\rho_0;折扣 γ\gamma;Aπ=Qπ−VπA^\pi=Q^\pi-V^\pi。

第 1 步:把优势展开并沿 π′\pi' 的轨迹求和,利用条件期望恒等式 E[rt+γVπ(st+1)−Vπ(st)∣st,at]=Aπ(st,at)\mathbb E[r_t+\gamma V^\pi(s_{t+1})-V^\pi(s_t)\mid s_t,a_t]=A^\pi(s_t,a_t):

Eτ∼π′[∑tγtAπ(st,at)]=Eτ∼π′[∑tγt(rt+γVπ(st+1)−Vπ(st))].(6.2)\mathbb{E}_{\tau\sim\pi'}\Big[\sum_t\gamma^t A^\pi(s_t,a_t)\Big] = \mathbb{E}_{\tau\sim\pi'}\Big[\sum_t \gamma^t\big(r_t+\gamma V^\pi(s_{t+1})-V^\pi(s_t)\big)\Big]. \tag{6.2}

第 2 步:∑tγtrt\sum_t\gamma^t r_t 的期望就是 J(π′)J(\pi')。含 VπV^\pi 的两项构成望远镜求和(telescoping):∑t[γt+1Vπ(st+1)−γtVπ(st)]\sum_t[\gamma^{t+1}V^\pi(s_{t+1})-\gamma^t V^\pi(s_t)] 相邻抵消,只剩 −Vπ(s0)-V^\pi(s_0)。

第 3 步:Es0∼ρ0[Vπ(s0)]=J(π)\mathbb{E}_{s_0\sim\rho_0}[V^\pi(s_0)]=J(\pi)。合并得 右端=J(π′)−J(π)\text{右端}=J(\pi')-J(\pi)。■\blacksquare

3. 代理目标与信任的边界

PDL(式(6.1))右端在 π′\pi' 的状态分布 dπ′d^{\pi'} 下取期望,我们没有它。若 dπ(s)=(1−γ)∑tγtPr⁡π(st=s)d^\pi(s)=(1-\gamma)\sum_t\gamma^t\Pr_\pi(s_t=s) 是归一化折扣占用度,用旧占用度替换新占用度可定义性能差代理:

ΔLπ(π′):=11−γ Es∼dπ, a∼π[π′(a∣s)π(a∣s) Aπ(s,a)]≈J(π′)−J(π),J~π(π′):=J(π)+ΔLπ(π′).(6.3)\Delta L_\pi(\pi') := \frac{1}{1-\gamma}\,\mathbb{E}_{s\sim d^\pi,\,a\sim\pi}\Big[\frac{\pi'(a\mid s)}{\pi(a\mid s)}\,A^\pi(s,a)\Big] \approx J(\pi')-J(\pi),\qquad \widetilde J_\pi(\pi'):=J(\pi)+\Delta L_\pi(\pi'). \tag{6.3}

为什么这样 · 能不能不这样

为什么绕个弯去优化代理目标 Lπ(π′)L_\pi(\pi'),而不直接最大化真实性能 J(π′)J(\pi')? 因为由 PDL(式(6.1)),J(π′)−J(π)J(\pi')-J(\pi) 的期望要在新策略自己的状态分布 dπ′d^{\pi'} 下取——可 dπ′d^{\pi'} 恰恰取决于那个我们尚未定下来的 π′\pi',这是个”鸡生蛋”:想评估 π′\pi' 得先拿 π′\pi' 去环境里跑出它的访问分布,但我们手里只有旧策略 π\pi 采的数据。代理目标的全部技巧,就是把这个不可得的 dπ′d^{\pi'} 替换成手上已有的 dπd^\pi(动作再用重要性采样从 π\pi 折算到 π′\pi'),于是目标变成一个只用旧数据就能算的量。换成硬要直接优化 JJ 会怎样? 要么每改动一次 π′\pi' 就重新上环境采一批 on-policy 数据(极其昂贵,且丢掉了复用旧数据的样本效率),要么去显式估计 dπ′d^{\pi'}(它随 π′\pi' 变化、无解析式,高维下难估)。所以代理目标是”用可得的旧分布近似不可得的新分布”的务实之选——代价是这个近似只在新旧策略足够接近时才可信(正是下一条要说的),也正是必须约束步长(信赖域)的根源。

局限 / 陷阱

这个近似只在 dπ′≈dπd^{\pi'}\approx d^\pi 时成立,即新旧策略足够接近。若放任 π′\pi' 大幅偏离 π\pi 去最大化 LπL_\pi,被忽略的状态分布漂移会让代理目标与真实性能脱钩——你以为在爬坡,其实已经掉下悬崖。这就是为什么必须约束 π′\pi' 与 π\pi 的接近程度:信赖域的全部动机。

4. 参数空间 vs 分布空间

“接近”该怎么量?用参数欧氏距离 ∥θ′−θ∥\|\theta'-\theta\| 往往不合适——如第 1 节所示,参数距离与行为距离严重错配。策略分布之间的 KL 散度 KL(π∥π′)\mathrm{KL}(\pi\|\pi') 直接刻画行为改变量;在光滑可逆的重参数化等正则条件下,由此导出的自然梯度具有坐标不变性。

把约束"KLˉ≤δ\bar{\mathrm{KL}}\le\delta"作用到”最大化 LπL_\pi“上,就是约束在分布空间的一个小球内做最陡上升——这自然导出自然梯度与 TRPO。这里首次出现的 δ\delta 是人为预设的一个小常数(典型值如 0.010.01),含义是”每步允许的平均 KL 上限”,即信赖域这个小球的半径:δ\delta 越小步子越保守、越稳但越慢,越大越激进、越容易把策略推坏。

为什么这样 · 能不能不这样

为什么用 KL 散度 KL(π∥π′)\mathrm{KL}(\pi\|\pi') 来量”走了多远”,而不用参数欧氏距离 ∥θ′−θ∥\|\theta'-\theta\|? 因为我们真正想限制的是行为(动作分布)改变了多少,而 KL 直接度量两个分布的差异、且与参数如何编码策略无关——对网络做一次重参数化会改变 ∥θ′−θ∥\|\theta'-\theta\|,却不改变 KL。换成欧氏距离约束会怎样? 那就退回朴素、带固定学习率的梯度步。由于参数-行为映射高度非线性(第 1 节),同一个欧氏步长在敏感区能让策略天翻地覆、在迟钝区几乎纹丝不动,单一学习率无从同时适配,极易一步把策略推坏(高斯策略方差很小时尤甚)。代价是:欧氏步长不能在局部二阶近似下控制预期 KL 的量级,也就无法按分布空间的局部度规调整步长——而这恰是自然梯度用 F−1F^{-1} 想矫正的东西。

图 2:参数空间中的各向同性球,映射到分布空间是被 Fisher 信息矩阵 F 拉伸的椭球。自然梯度用 F^{-1} 把步长"矫正"回分布空间的等距离球。

图 2:参数空间中的各向同性球,映射到分布空间是被 Fisher 信息矩阵 FF 拉伸的椭球。自然梯度用 F−1F^{-1} 把步长”矫正”回分布空间的等距离球。

5. 自然梯度与 Fisher 信息

自然梯度回答:在”KL 约束的小球”内,哪个方向让目标上升最快?当 FF 可逆时答案是 F−1gF^{-1}g;若 FF 奇异或病态,实践中使用伪逆或阻尼后的近似,其中 g=∇θJg=\nabla_\theta J,FF 是 Fisher 信息矩阵。先给 FF 一个直觉性的交代(严格定义见下方 foldout 的式 (6.4)):是什么——它是得分向量 ∇θlog⁡πθ\nabla_\theta\log\pi_\theta 的外积期望 E[∇θlog⁡πθ ∇θlog⁡πθ⊤]\mathbb{E}[\nabla_\theta\log\pi_\theta\,\nabla_\theta\log\pi_\theta^\top],是一个 d×dd\times d(dd=参数维度)的对称半正定矩阵;为何引入——它正是 KL 散度在当前策略处的局部曲率(度规),衡量”参数动一点、行为分布随之改变多少”,因此能把”参数距离”翻译成”行为距离”;怎么算——它可从一批样本的 ∇θlog⁡πθ\nabla_\theta\log\pi_\theta 估计,但高维下不显式构造,而是只算它乘向量的效果(FvFv,见第 5.1 节)。

举例

普通梯度按参数空间的欧氏距离走,就像只看地图上的直线距离规划路线——地图上一厘米,实地可能是一马平川,也可能是悬崖峭壁。自然梯度改用 Fisher 矩阵度量,等于按崎岖地形上真实的步行距离来走:同样的局部二阶 KL 预算下,在陡峭(策略敏感)方向自动收紧、在平缓(策略迟钝)方向自动放开,从而控制预期 KL 的局部近似量级;真实 KL 仍需另行检查。

推导:自然梯度 =F−1∇θJ=F^{-1}\nabla_\theta J

关键假设

目标 JJ 对 Δθ\Delta\theta 做一阶泰勒展开 J(θ+Δθ)≈J(θ)+g⊤ΔθJ(\theta+\Delta\theta)\approx J(\theta)+g^\top\Delta\theta(g=∇θJg=\nabla_\theta J);KL 约束做二阶泰勒展开(小步长下 KL 的一阶项为 0,二阶项由 Fisher 给出,下条详证)。

第 1 步(用:KL 的二阶泰勒 + Fisher 的定义):对 Δθ\Delta\theta 小量,KL(πθ∥πθ+Δθ)≈12Δθ⊤F Δθ\mathrm{KL}(\pi_\theta\|\pi_{\theta+\Delta\theta})\approx \tfrac12\Delta\theta^\top F\,\Delta\theta,其中 Fisher 信息矩阵(即 FF)为得分向量的外积期望:

F=Eπθ ⁣[∇θlog⁡πθ(a∣s) ∇θlog⁡πθ(a∣s)⊤].(6.4)F=\mathbb{E}_{\pi_\theta}\!\big[\nabla_\theta\log\pi_\theta(a\mid s)\,\nabla_\theta\log\pi_\theta(a\mid s)^\top\big]. \tag{6.4}

(为何一阶项为 0:得分的期望 Eπθ[∇θlog⁡πθ]=0\mathbb{E}_{\pi_\theta}[\nabla_\theta\log\pi_\theta]=0,故 KL 在 Δθ=0\Delta\theta=0 处梯度为零、增长从二阶起——下一条 foldout 给出完整证明。因此 Fisher 正是 KL 的局部度规。)

第 2 步(用:拉格朗日乘子 + 一阶最优条件):目标是在 KL 小球内最大化线性化的提升,max⁡Δθg⊤Δθ\max_{\Delta\theta} g^\top\Delta\theta s.t. 12Δθ⊤FΔθ≤δ\tfrac12\Delta\theta^\top F\Delta\theta\le\delta。写拉格朗日 L=g⊤Δθ−λ(12Δθ⊤FΔθ−δ)\mathcal L=g^\top\Delta\theta-\lambda\big(\tfrac12\Delta\theta^\top F\Delta\theta-\delta\big),对 Δθ\Delta\theta 求导置零(FF 对称)得 g−λFΔθ=0g-\lambda F\Delta\theta=0,即 Δθ=1λF−1g\Delta\theta=\tfrac1\lambda F^{-1}g。

第 3 步(用:约束取等号定 λ\lambda):目标线性、必然把步子顶到边界,故约束取等 12Δθ⊤FΔθ=δ\tfrac12\Delta\theta^\top F\Delta\theta=\delta。代入 Δθ=1λF−1g\Delta\theta=\tfrac1\lambda F^{-1}g:12λ2g⊤F−1g=δ\tfrac{1}{2\lambda^2}g^\top F^{-1}g=\delta,解出 λ=g⊤F−1g2δ\lambda=\sqrt{\tfrac{g^\top F^{-1}g}{2\delta}}。于是

Δθ⋆=1λF−1g=2δg⊤F−1g  F−1g,λ=g⊤F−1g2δ.(6.5)\Delta\theta^\star = \tfrac1\lambda F^{-1}g=\sqrt{\tfrac{2\delta}{g^\top F^{-1}g}}\;F^{-1}g,\qquad \lambda=\sqrt{\tfrac{g^\top F^{-1}g}{2\delta}}. \tag{6.5}

第 4 步(结论):在 FF 正定且局部二阶近似成立时,方向即自然梯度 g~=F−1g∝Δθ⋆\tilde g=F^{-1}g\propto\Delta\theta^\star,步长按 2δ/(g⊤F−1g)\sqrt{2\delta/(g^\top F^{-1}g)} 缩放。该缩放使二阶近似的 KL 取到 δ\delta;真实 KL 仍需线搜索检查。自然梯度在光滑可逆重参数化等正则条件下具有坐标不变性。■\blacksquare

推导补充:为什么 KL 的二阶泰勒 =12Δθ⊤FΔθ=\tfrac12\Delta\theta^\top F\Delta\theta(且一阶项为 0)

要证

记 f(Δ)=KL(πθ ∥ πθ+Δ)f(\Delta)=\mathrm{KL}\big(\pi_\theta\,\|\,\pi_{\theta+\Delta}\big)。则 f(0)=0f(0)=0、∇f(0)=0\nabla f(0)=0、∇2f(0)=F\nabla^2 f(0)=F,于是 f(Δ)≈12Δ⊤FΔf(\Delta)\approx\tfrac12\Delta^\top F\Delta。用到两条关于 score 的恒等式。

准备(两条恒等式)。 对 ∫πθ(x) dx=1\int\pi_\theta(x)\,dx=1 求一阶、二阶导(xx 泛指 (s,a)(s,a),期望在 πθ\pi_\theta 下):

Eπθ[∇θlog⁡πθ]=0,Eπθ[∇θ2log⁡πθ]=− Eπθ[∇θlog⁡πθ ∇θlog⁡πθ⊤]=−F.(6.6)\mathbb{E}_{\pi_\theta}\big[\nabla_\theta\log\pi_\theta\big]=0,\qquad \mathbb{E}_{\pi_\theta}\big[\nabla^2_\theta\log\pi_\theta\big]=-\,\mathbb{E}_{\pi_\theta}\big[\nabla_\theta\log\pi_\theta\,\nabla_\theta\log\pi_\theta^\top\big]=-F. \tag{6.6}

(第二式即”log⁡\log 的 Hessian 期望 =−=- 外积期望 =−F=-F“,是 Fisher 的两种等价定义之间的桥。)

第 0 阶。 f(0)=KL(πθ∥πθ)=0f(0)=\mathrm{KL}(\pi_\theta\|\pi_\theta)=0。

第 1 阶。 f(Δ)=Eπθ[log⁡πθ−log⁡πθ+Δ]f(\Delta)=\mathbb{E}_{\pi_\theta}\big[\log\pi_\theta-\log\pi_{\theta+\Delta}\big],故 ∇Δf(Δ)=−Eπθ[∇Δlog⁡πθ+Δ]\nabla_\Delta f(\Delta)=-\mathbb{E}_{\pi_\theta}\big[\nabla_\Delta\log\pi_{\theta+\Delta}\big]。在 Δ=0\Delta=0 处 ∇f(0)=−Eπθ[∇log⁡πθ]=0\nabla f(0)=-\mathbb{E}_{\pi_\theta}[\nabla\log\pi_\theta]=0(第一恒等式)——一阶项恰好消失,这正是”KL 在同一点处是局部最小、增长从二阶起”的原因。

第 2 阶。 ∇Δ2f(Δ)=−Eπθ[∇Δ2log⁡πθ+Δ]\nabla^2_\Delta f(\Delta)=-\mathbb{E}_{\pi_\theta}\big[\nabla^2_\Delta\log\pi_{\theta+\Delta}\big],在 Δ=0\Delta=0 处 ∇2f(0)=−Eπθ[∇2log⁡πθ]=F\nabla^2 f(0)=-\mathbb{E}_{\pi_\theta}[\nabla^2\log\pi_\theta]=F(第二恒等式)。代入二阶泰勒:

f(Δ)=f(0)⏟0+∇f(0)⊤Δ⏟0+12Δ⊤∇2f(0)Δ+o(∥Δ∥2)=12Δ⊤FΔ+o(∥Δ∥2). ■(6.7)f(\Delta)=\underbrace{f(0)}_{0}+\underbrace{\nabla f(0)^\top\Delta}_{0}+\tfrac12\Delta^\top\nabla^2 f(0)\Delta+o(\|\Delta\|^2)=\tfrac12\Delta^\top F\Delta+o(\|\Delta\|^2).\ \blacksquare \tag{6.7}

注(方向对称性)。 反向 KL KL(πθ+Δ∥πθ)\mathrm{KL}(\pi_{\theta+\Delta}\|\pi_\theta) 的二阶展开同样是 12Δ⊤FΔ\tfrac12\Delta^\top F\Delta——在二阶精度上两个方向重合,所以”用哪个方向的 KL”在信赖域局部意义下并不影响 Fisher 度规。这也解释了为何 Fisher 被称作 KL 的局部度规(黎曼度量)。

本质 Insight

普通梯度下降隐含”参数各方向等价、用欧氏度量”的假设,但策略优化真正关心的是行为分布的改变。自然梯度用 KL 的局部度规(Fisher)取代欧氏度规,本质是在正确的流形上做最陡下降——这也是为什么它对参数化不敏感、比朴素 PG 稳健得多。代价是要处理 F−1F^{-1},高维下昂贵(TRPO 用共轭梯度回避显式求逆)。

6. TRPO:信赖域与单调改进界

TRPO(Trust Region Policy Optimization)把上述思想工程化:在每步内最大化代理目标 Lπ(π′)L_\pi(\pi'),同时硬约束平均 KL ≤δ\le\delta:

max⁡θ′ Es∼dπ,a∼π[πθ′(a∣s)πθ(a∣s)Aπ]s.t.Es∼dπ[KL(πθ(⋅∣s) ∥ πθ′(⋅∣s))]≤δ.(6.8)\max_{\theta'}\ \mathbb{E}_{s\sim d^\pi,a\sim\pi}\Big[\tfrac{\pi_{\theta'}(a\mid s)}{\pi_\theta(a\mid s)}A^\pi\Big]\quad \text{s.t.}\quad \mathbb{E}_{s\sim d^\pi}\big[\mathrm{KL}(\pi_\theta(\cdot\mid s)\,\|\,\pi_{\theta'}(\cdot\mid s))\big]\le\delta. \tag{6.8}

TRPO 的理论支柱是一条单调改进下界:真实性能不小于“绝对代理 J~π\widetilde J_\pi 减去分布漂移惩罚”。

推导骨架:单调改进下界

关键假设

优势有界 max⁡s,a∣Aπ(s,a)∣≤ϵ\max_{s,a}|A^\pi(s,a)|\le\epsilon;用总变差/KL 的 Pinsker 不等式界定分布漂移。

第 1 步:由 PDL(式(6.1)),若 dπ′d^{\pi'} 是归一化折扣占用度,则 J(π′)−J(π)=11−γEs∼dπ′,a∼π′[Aπ]J(\pi')-J(\pi)=\frac1{1-\gamma}\mathbb{E}_{s\sim d^{\pi'},a\sim\pi'}[A^\pi]。用 dπd^\pi 替换 dπ′d^{\pi'} 得到 ΔLπ\Delta L_\pi(式(6.3)),其误差可由两分布的总变差距离控制。

第 2 步:DTVD_{TV} 又可由策略间最大 KL 经 Pinsker 不等式 DTV≤12KLD_{TV}\le\sqrt{\tfrac12\mathrm{KL}} 传播到状态分布,得到(逐步的完整不等式链、含 α2\alpha^2 的来历见下一条补充推导)

J(π′)≥J~π(π′)−C⋅max⁡sKL(π(⋅∣s) ∥ π′(⋅∣s)),C=4ϵγ(1−γ)2.(6.9)J(\pi') \ge \widetilde J_\pi(\pi') - C\cdot \max_s \mathrm{KL}\big(\pi(\cdot|s)\,\|\,\pi'(\cdot|s)\big),\qquad C=\frac{4\epsilon\gamma}{(1-\gamma)^2}. \tag{6.9}

第 3 步(单调性):因为 J~π(π)=J(π)\widetilde J_\pi(\pi)=J(\pi) 且惩罚为 0,只要候选 π′\pi' 让下界严格大于 J(π)J(\pi),就保证改进。不能说“右端在 π′=π\pi'=\pi 时等于 0”——等于 0 的是性能差形式,绝对性能下界等于 J(π)J(\pi)。

推导补充:完整骨架 PDL → 代理目标 → Pinsker → KL 惩罚(附”常数为何保守”)

目标

把上面三步串成一条可追踪的不等式链,看清每一步”漏掉了什么、用什么补回来”,并算清常数 C=4ϵγ(1−γ)2C=\frac{4\epsilon\gamma}{(1-\gamma)^2} 的来历(ϵ=max⁡s,a∣Aπ(s,a)∣\epsilon=\max_{s,a}|A^\pi(s,a)|)。记 α:=max⁡sDTV(π′(⋅∣s) ∥ π(⋅∣s))\alpha:=\max_s D_{TV}\big(\pi'(\cdot|s)\,\|\,\pi(\cdot|s)\big) 为”逐状态策略差”的上确界,它是全链条唯一的小量。

① 起点(用:PDL 式(6.1),精确、无近似)。 J(π′)−J(π)=11−γ Es∼dπ′, a∼π′[Aπ(s,a)]J(\pi')-J(\pi)=\dfrac{1}{1-\gamma}\,\mathbb{E}_{s\sim d^{\pi'},\,a\sim\pi'}\big[A^\pi(s,a)\big](dπ′d^{\pi'} 是归一化折扣状态分布,故前置因子 11−γ\tfrac1{1-\gamma},即第一个时域因子)。右端用的是新策略的状态分布 dπ′d^{\pi'}——我们手上只有 dπd^\pi,这是唯一的困难源。

② 换分布得代理目标。 把 dπ′d^{\pi'} 换成 dπd^\pi,得到性能差代理 ΔLπ(π′)=11−γEs∼dπ,a∼π′[Aπ]\Delta L_\pi(\pi')=\dfrac{1}{1-\gamma}\mathbb{E}_{s\sim d^\pi,a\sim\pi'}[A^\pi];绝对代理为 J~π=J(π)+ΔLπ\widetilde J_\pi=J(\pi)+\Delta L_\pi。后者与 J(π′)J(\pi') 在 π′=π\pi'=\pi 处同值、同一阶变化,因此误差可由二阶小量控制。

③ 把两个 α\alpha 拆开看(用:状态分布 TV 引理 + AA 有界)。 一处 α\alpha 来自状态分布漂移:两策略诱导的状态分布总变差被逐状态策略差乘有效时域放大——DTV(dπ′∥dπ)≤γ1−γ αD_{TV}(d^{\pi'}\|d^\pi)\le \dfrac{\gamma}{1-\gamma}\,\alpha(第二个时域因子 γ1−γ\tfrac{\gamma}{1-\gamma}:每步差 α\alpha,沿 11−γ\tfrac1{1-\gamma} 步轨迹累积)。另一处 α\alpha 来自:漂移只影响”两策略动作分布不同”的那部分质量,其优势差被 2ϵ2\epsilon(ϵ=max⁡s,a∣Aπ∣\epsilon=\max_{s,a}|A^\pi|)界住、且仅在 α\alpha 比例上累积。两者相乘、再乘 ① 的 11−γ\tfrac1{1-\gamma},得

∣ (J(π′)−J(π))−ΔLπ(π′) ∣ ≤ 4ϵγ(1−γ)2 α2.(6.10)\big|\,(J(\pi')-J(\pi))-\Delta L_\pi(\pi')\,\big|\ \le\ \frac{4\epsilon\gamma}{(1-\gamma)^2}\,\alpha^2. \tag{6.10}

④ Pinsker:α2\alpha^2(TV)→ KL。 用 Pinsker 不等式 DTV(p∥q)≤12DKL(p∥q)D_{TV}(p\|q)\le\sqrt{\tfrac12 D_{KL}(p\|q)},平方得 α2≤12max⁡sDKL≤max⁡sDKL\alpha^2\le\tfrac12\max_s D_{KL}\le \max_s D_{KL}(末步刻意丢掉 12\tfrac12,让常数保持 44、便于陈述——这本身就是一处放松)。代入式(6.10)即把 TV 换成可微、可估计的 KL。

⑤ 合并得单调改进下界。 把 ①②③④ 串起来,并使用绝对代理 J~π(π′)=J(π)+ΔLπ(π′)\widetilde J_\pi(\pi')=J(\pi)+\Delta L_\pi(\pi'):

J(π′) ≥ J~π(π′)−4ϵγ(1−γ)2⏟C max⁡sDKL(π(⋅∣s) ∥ π′(⋅∣s)).(6.11)J(\pi')\ \ge\ \widetilde J_\pi(\pi')-\underbrace{\frac{4\epsilon\gamma}{(1-\gamma)^2}}_{C}\,\max_s D_{KL}\big(\pi(\cdot|s)\,\|\,\pi'(\cdot|s)\big). \tag{6.11}

为什么这个 CC “过于保守”? 四重最坏情况叠加:(i) ϵ=max⁡s,a∣Aπ∣\epsilon=\max_{s,a}|A^\pi| 取的是全空间最坏的优势,而典型状态的 ∣A∣|A| 远小于此;(ii) 两个时域因子(① 的 11−γ\tfrac1{1-\gamma} + ③ 的 γ1−γ\tfrac{\gamma}{1-\gamma})在 γ→1\gamma\to1 时爆炸——取 γ=0.99\gamma=0.99 就有 (1−γ)2=10−4(1-\gamma)^2=10^{-4},C∼4ϵγ×104C\sim 4\epsilon\gamma\times10^{4},天文数字;(iii) Pinsker 里丢掉的 12\tfrac12 又白送一倍;(iv) max⁡s\max_s 用最坏单状态代替平均。四者相乘:要让惩罚后的下界 >0>0,允许的 KL 步长被压到极小(量级远小于 δ=0.01\delta=0.01),收敛慢如龟爬。所以 TRPO 干脆丢掉这个惩罚形式,改成一个人为设定、大得多的硬信赖域 δ\delta(如 0.010.01),再靠线搜索经验性地保证”代理目标真涨、KL 真没越界”——用”理论保证”换”实用步长”。这也解释了 PPO 为何更进一步:连硬约束都省了,直接用 clip 做启发式。

求解:对代理目标一阶、KL 约束二阶近似后,最优方向即自然梯度 F−1gF^{-1}g(式(6.5));TRPO 用共轭梯度近似求 F−1gF^{-1}g 而不显式构造 FF,再做线搜索回退到满足 KL 约束的最大步长。

局限 / 陷阱

TRPO 实现复杂(共轭梯度 + Fisher 向量积 + 线搜索),二阶近似和线搜索也使其较难直接采用 PPO 式的多 epoch 小批量更新。TRPO 原论文已在大型非线性网络与图像输入任务上实验,因此不能据此说它普遍不兼容 CNN/RNN 或参数共享 [2]。理论界(式(6.11))中的常数 CC 极度保守。这些痛点催生了 PPO。

批判性追问

“TRPO 有单调改进保证”——这句话要打两个折扣。其一,界本身几乎不可用:式(6.11) 里的常数 C=4ϵγ(1−γ)2C=\tfrac{4\epsilon\gamma}{(1-\gamma)^2} 叠了全空间最坏优势、两重有效时域因子、Pinsker 白送的一倍与 max⁡s\max_s 的最坏单状态,γ=0.99\gamma=0.99 时已是 ∼104\sim 10^4 量级;按它反解出的允许步长小到无法训练——实践中从没有人真按这个界取步长,TRPO 一律改用人为设定、大得多的硬 δ\delta 加线搜索。其二,单调性本身是有前提的:它只在”代理目标 Lπ≈JL_\pi\approx J 这一近似成立、优势 AπA^\pi 估得准、逐状态 max⁡sKL\max_s\mathrm{KL} 被真正压住”这些假设下才成立;一旦换成实践里的硬 δ\delta + 线搜索,我们实际保证的只是”代理目标上升且平均 KL 不越界”这一经验性条件,已经不再携带式(6.11) 那条下界的理论保证。所以更诚实的说法是:单调改进界是一个漂亮但松弛的存在性论证,它解释了”为什么约束 KL 是对的”,却不是实践中真正被执行的东西。

7. PPO:用 clip 近似信赖域

PPO(Proximal Policy Optimization)放弃硬约束与二阶求解,用一个一阶、可直接 SGD的裁剪目标近似”别走太远”。记概率比 rt(θ)=πθ(at∣st)πθold(at∣st)r_t(\theta)=\dfrac{\pi_\theta(a_t\mid s_t)}{\pi_{\theta_{\text{old}}}(a_t\mid s_t)},则

LCLIP(θ)=Et[min⁡(rt(θ)A^t, clip⁡(rt(θ),1−ϵ,1+ϵ) A^t)].(6.12)L^{\text{CLIP}}(\theta)=\mathbb{E}_t\Big[\min\big(r_t(\theta)\hat A_t,\ \operatorname{clip}(r_t(\theta),1-\epsilon,1+\epsilon)\,\hat A_t\big)\Big]. \tag{6.12}

式中两个记号先说清:A^t\hat A_t 是优势估计(“该动作比平均好多少”,实践中常用 模块 04 的 GAE 算出,正负号决定这一项是被鼓励还是被压低);ϵ\epsilon 是裁剪阈值——一个很小的正常数(典型 0.1 ⁣∼ ⁣0.30.1\!\sim\!0.3),它决定裁剪比较项进入平坦分支的阈值,但不会把实际概率比限制在 [1−ϵ,1+ϵ][1-\epsilon,1+\epsilon] 内;越小通常越保守。注意:这个 ϵ\epsilon 与第 6 节单调改进界里表示”优势上界”的 ϵ\epsilon(max⁡s,a∣Aπ∣≤ϵ\max_{s,a}|A^\pi|\le\epsilon)只是恰好同字母、含义无关,勿混。

为什么这样 · 能不能不这样

为什么 PPO 用一行 clip 制造”越走越无激励”的软刹车,而不直接照搬 TRPO 的硬 KL 约束? 因为 clip 目标是一阶的、可直接丢给 SGD/Adam,便于采用多 epoch 与 minibatch 更新。换成硬 KL 约束会怎样? 那就回到 TRPO:要用 Fisher 向量积、共轭梯度和线搜索近似求解,实现更复杂、每步开销也更大,并且难以直接采用 PPO 式的多 epoch 小批量更新。代价是:clip 只是逐样本、单侧的软刹车,并不真正约束整体 Es[KL]\mathbb{E}_s[\mathrm{KL}],因此不是真信赖域(详见下文局限)——本质是用”理论严谨”换”简单可扩展”。

举例

设某个好动作(优势 A^t>0\hat A_t>0),新策略给出的概率比为 rt=1.3r_t=1.3,取 ϵ=0.2\epsilon=0.2。由于 1.3>1+ϵ=1.21.3>1+\epsilon=1.2,目标中的裁剪比较项按 1.2 A^t1.2\,\hat A_t 计,min⁡\min 选择该平坦分支、对应样本不再提供继续增大比率的梯度;这并不把实际 rtr_t 投影回 1.21.2。若 rt=1.15r_t=1.15,则该项尚未进入平坦分支。

图 3:clip 目标是分段线性。当更新已足够大(比率越过 1\pm\epsilon 且方向"贪心"),梯度被裁为 0,从而移除继续把策略往同方向推的激励。

图 3:clip 目标是分段线性。当更新已足够大(比率越过 1±ϵ1\pm\epsilon 且方向”贪心”),梯度被裁为 0,从而移除继续把策略往同方向推的激励。

逐项解读 clip 为什么防过大更新

  • At>0A_t>0(好动作,想增大其概率):一旦 rt>1+ϵr_t>1+\epsilon,clip⁡\operatorname{clip} 把项封顶,min⁡\min 取到封顶值,梯度归零——不再激励把这个已经涨够的动作继续拉高。
  • At<0A_t<0(坏动作,想减小其概率):一旦 rt<1−ϵr_t<1-\epsilon,同理封底、梯度归零——不再激励把它继续压低。
  • min⁡\min 的作用:它是悲观下界。在”更新使目标变得比未裁剪更好”的方向上,min⁡\min 保留裁剪值以刹车;而在”更新使目标变差”(比率朝错误方向)的情况下 min⁡\min 取未裁剪值,允许把错误的大更新纠正回来。这非对称性保证 clip 只挡”过度自信的前进”,不挡”纠错的后退”。

局限 / 陷阱:PPO 不是真的信赖域(与真 KL 约束差在哪)

差距一:裁剪的是目标中的逐样本比较项,而非实际概率比或整体 KL。 TRPO 的约束是式(6.8) 那种状态平均的 KL Es∼dπ[KL]≤δ\mathbb{E}_{s\sim d^\pi}[\mathrm{KL}]\le\delta——一个全局、聚合的量;式(6.12) 的 ϵ\epsilon 只决定哪些样本项进入平坦分支,实际 rtr_t 仍可越过 [1−ϵ,1+ϵ][1-\epsilon,1+\epsilon],因此不能由该阈值推出整体 Es[KL]\mathbb{E}_s[\mathrm{KL}] 的硬上界。

差距二:一阶启发式,非二阶信赖域求解。 TRPO 显式用 Fisher(KL 的二阶度规,式(6.4))解带约束优化并线搜索回退;PPO 则只是把 clip 目标丢给普通 SGD,靠”越界即梯度归零”这一一阶软刹车近似”别走太远”,全程不碰 FF、不做投影/回退。

后果:多个 epoch 反复更新同一批数据时(见第 8 节),累积 KL 会悄悄越界、某些样本被推得很远。因此 PPO”能用但脆弱”——实践中往往还要监控 KL(用式(6.13) 的 k3k3)并早停、或加自适应 KL 惩罚。它是对信赖域的启发式一阶近似,不是 TRPO 的严格替代。

批判性追问

再往深追一刀”PPO 是信赖域方法”这个流行说法:式(6.12) 的 min⁡\min 是单侧的。只有在”过度前进”分支(A>0A>0 且 r>1+ϵr>1+\epsilon,或 A<0A<0 且 r<1−ϵr<1-\epsilon)中,目标才进入平坦区;在”纠错”分支(A>0A>0 且 r<1−ϵr<1-\epsilon,或 A<0A<0 且 r>1+ϵr>1+\epsilon)中,min⁡\min 取未裁剪项。即使进入平坦区,优化也只是移除该样本继续朝同方向更新的激励,并未投影实际 rr,因此不能给 −log⁡r-\log r 或完整策略 KL 提供硬上界。多 epoch 复用同批数据时,πθ\pi_\theta 与 πold\pi_{\text{old}} 的 KL 仍可能越过预期范围,需要用 k3k3(式(6.13))监控并按经任务验证的阈值早停。一句话:PPO 的”信赖域”是单侧、逐样本的软刹车,而非被强制执行的 Es[KL]≤δ\mathbb{E}_s[\mathrm{KL}]\le\delta(式(6.8))。

8. PPO 的实现细节与陷阱

有一条著名的经验结论:PPO 的大部分性能来自”code-level optimizations”,而非核心目标本身。也就是说,若只实现裁剪目标而忽略下列工程细节,往往复现不出论文性能。

细节做法为什么重要
优势估计用 GAE(λ≈0.95\lambda\approx0.95)在偏差-方差谱上折中,稳定信号
优势归一化每批把 A^\hat A 标准化到零均值单位方差稳定数值尺度,但减去批均值可能改变估计梯度方向
Value 函数裁剪对 VV 的更新也做 clip防 critic 剧烈跳变(有争议,视任务)
熵奖励目标加 +β H(π)+\beta\,\mathcal{H}(\pi)维持探索、防过早收敛/熵坍缩
多 epoch + minibatch同一批数据复用 KK 个 epoch提升样本效率(但增大 KL 越界风险)
学习率退火 / 梯度裁剪线性衰减 lr、全局范数裁剪训练后期稳定,防梯度爆炸
奖励/观测归一化running normalization跨任务尺度稳健
TRPOPPO
约束形式硬 KL 约束(信赖域)比率 clip(软、启发式)
求解二阶:共轭梯度 + 线搜索一阶:普通 SGD/Adam
实现复杂度高(Fisher 向量积等)低(几行代码)
与常规一阶训练流程兼容二阶近似与线搜索增加复杂度好(参数共享、多 epoch)
理论保证单调改进下界无严格保证

code-level optimizations 完整清单(逐条给”为什么”)

上表是速查;这里把每一条展开讲透”为什么”,因为经验反复表明:复现 PPO 性能的关键往往不在核心 clip,而在这一堆看似琐碎的工程细节。

先补一块:KL 估计器 k1 / k2 / k3

PPO 不硬约束 KL,但必须监控它以决定是否早停。记概率比 r=πθ(a∣s)πold(a∣s)r=\dfrac{\pi_\theta(a\mid s)}{\pi_{\text{old}}(a\mid s)}、对数比 log⁡r\log r,估计 KL(πold∥πθ)\mathrm{KL}(\pi_{\text{old}}\|\pi_\theta) 的三种常见单样本估计(Schulman):

KL^k1=−log⁡r,KL^k2=12(log⁡r)2,KL^k3=(r−1)−log⁡r.(6.13)\widehat{\mathrm{KL}}_{k1}=-\log r,\qquad \widehat{\mathrm{KL}}_{k2}=\tfrac12(\log r)^2,\qquad \widehat{\mathrm{KL}}_{k3}=(r-1)-\log r. \tag{6.13}
  • k1=−log⁡rk1=-\log r:无偏(Eold[−log⁡r]=KL\mathbb{E}_{\text{old}}[-\log r]=\mathrm{KL}),但方差大、单样本可为负——直接用来判早停会抖。
  • k2=12(log⁡r)2k2=\tfrac12(\log r)^2:恒 ≥0\ge 0、方差小,略有偏但二阶近似下 E[k2]≈KL\mathbb{E}[k2]\approx\mathrm{KL}。
  • k3=(r−1)−log⁡rk3=(r-1)-\log r:三好学生——恒 ≥0\ge 0(因 r−1≥log⁡rr-1\ge\log r)、无偏(Eold[r−1]=0\mathbb{E}_{\text{old}}[r-1]=0,故 E[k3]=KL\mathbb{E}[k3]=\mathrm{KL})、方差小。推荐用它做监控与早停。
  1. GAE 优势估计(λ≈0.95,γ≈0.99\lambda\approx0.95,\gamma\approx0.99):在偏差-方差谱上取甜点(见 模块 04),给策略梯度一个稳、准的信号。为什么:纯一步 TD 偏差大、纯 MC 方差大,都会让 clip 目标学不稳。
  2. 优势归一化:每个 minibatch 把 A^\hat A 标准化到零均值单位方差。为什么:除以标准差会缩放梯度,但减去批均值会改变各样本权重、可能改变合成梯度方向,并引入批依赖;实践中它常用于稳定数值尺度、降低学习率敏感。
  3. value function clipping:对 VV 的更新也 clip 到 Vold±ϵvV_{\text{old}}\pm\epsilon_v,损失取裁剪与未裁剪的较大者。为什么:防 critic 单步剧烈跳变污染优势与共享躯干;有争议、视任务,有实现发现它可有可无甚至有害,需实测。
  4. reward / observation 归一化:用 running mean/std 对观测标准化、对(折扣)奖励做 running scaling。为什么:让网络输入与 value 目标的尺度跨任务稳健,避免大奖励把 value loss 撑爆。
  5. entropy bonus(+βH+\beta\mathcal H):为什么:维持探索、抵御熵坍缩(见下);β\beta 常随训练退火。
  6. 学习率退火:线性衰减 lr 到 0。为什么:后期策略接近最优,大步长只会把它推出信赖域、制造 KL 突刺。
  7. 梯度裁剪(全局范数,如 0.5):为什么:个别 minibatch 的大梯度(常来自异常优势或比率)会一步打崩策略;裁剪限幅是廉价保险。
  8. 多 epoch + minibatch + KL 越界监控:同一批数据复用 KK 个 epoch、切成 minibatch。为什么:大幅提升样本效率,但重复更新可能使 πθ\pi_\theta 与 πold\pi_{\text{old}} 的 KL 越界,其幅度取决于优化器、批量、任务和实现,并不一般地随 KK 线性增长。对策:每个 minibatch 后算 KL^k3\widehat{\mathrm{KL}}_{k3},超过预先设定并经任务验证的阈值时跳出剩余 epoch。

深化 · clip 阈值 ϵ\epsilon 与实际 KL

在小扰动且比率接近 1 时,log⁡r\log r 与 r−1r-1 同阶,因此较小的 ϵ\epsilon 往往对应更保守的更新;但 PPO 裁剪的是目标函数,并不会把实际概率比投影回 [1−ϵ,1+ϵ][1-\epsilon,1+\epsilon]。即使采样比率受限,也不能一般推出完整策略 KL 的上界。因此不能从 ϵ\epsilon 推导通用的 KL 上界或反解出 TRPO 的 δ\delta;多 epoch 后的实际 KL 也不具备通用的线性增长律,仍须直接监控 [3]。

PPO 失败模式与调参对策

PPO”能用但脆弱”,翻车通常表现为三种可辨认的模式。识别它们、对症下药,比盲目调 lr 有效得多:

失败模式症状 / 监控信号常见成因对策
KL 突刺某 epoch 的 KL^\widehat{\mathrm{KL}} 骤然飙高,随后回报断崖lr 太大、epoch 太多、优势未归一化、ϵ\epsilon 太大、minibatch 太小噪声大超过经任务验证的阈值时早停、降 lr、减 KK、优势归一化、必要时上自适应 KL 惩罚
熵坍缩策略熵快速趋近 0、探索停滞、卡在次优无/过小 entropy bonus、clip 对称地压低概率 token、优势归一化异常加大/调度 β\beta、用 Clip-Higher(DAPO,解耦上裁剪阈值)、设熵下限告警
value 崩value loss 发散或压过 policy loss、优势变成噪声无 value clip、return 未归一化、value 损失系数过大、共享躯干时 value 梯度压过 policy、未裁剪梯度value clipping、分离 value 网络或调低系数、return/reward 归一化、grad clip

调参心法

看 KL / 熵 / value loss / clip 比例 / 回报五条曲线一起看,而不是只盯回报。回报是滞后指标——等它崩了往往已经晚了;KL 突刺、熵掉太快、value loss 抬头都是更早的先兆。这些指标的健康范围依赖任务、优化器、批量与实现,应通过基线和验证实验确定,不宜采用通用的 clip 比例区间。

图 4:PPO 训练健康仪表盘。KL 突刺、熵坍缩、value 发散都是早于回报崩塌的先兆信号——同时监控这几条曲线,才能在翻车前介入。

图 4:PPO 训练健康仪表盘。KL 突刺、熵坍缩、value 发散都是早于回报崩塌的先兆信号——同时监控这几条曲线,才能在翻车前介入。

前沿实验室视角

PPO 出自 OpenAI(Schulman 等,2017):设计初衷是用一个一阶、易实现的裁剪目标,替代 TRPO 沉重的二阶信赖域求解。公开的 RLHF 系统中有采用 PPO 的案例,但不能据此概括全部后训练系统。系统性复现研究表明,优势归一化、value 裁剪、奖励/观测归一化、学习率退火和梯度裁剪等实现选择会显著影响 PPO 表现 [3]。

前沿实践

部分公开的 RLHF 系统采用 PPO,把语言模型当策略,并用 per-token KL 惩罚约束其不偏离参考模型太远(详见模块 13)。另一些近期工作采用不需要额外 value critic 的组内相对优化;例如 DAPO 提出 Clip-Higher,解耦上下裁剪阈值以缓解其观察到的熵坍缩 [4]。这些是具体公开案例,不代表整个行业的默认选择。

本质 Insight:一个贯穿全课的母题

退一步看,TRPO/PPO 的 KL 约束只是一个更大母题的一个实例——“在改进的同时贴近一个参考分布”几乎贯穿整门课:这里的 TRPO/PPO 用 KL 约束贴近旧策略;模块 07 的 SAC 用最大熵贴近均匀先验、控制即推断把它写成 KL-to-prior;RLHF 用 per-token KL 贴近参考模型;DPO 用隐式 KL;模块 09 的离线 RL 用策略约束贴近行为策略。它们都可统一为带正则的优化

max⁡π Ea∼π[r(a)]−β KL(π ∥ πref),(6.14)\max_\pi\ \mathbb{E}_{a\sim\pi}\big[r(a)\big]-\beta\,\mathrm{KL}\big(\pi\,\|\,\pi_{\text{ref}}\big), \tag{6.14}

其闭式最优解恒为 π⋆(a)∝πref(a) er(a)/β\pi^\star(a)\propto\pi_{\text{ref}}(a)\,e^{r(a)/\beta}——区别只在 πref\pi_{\text{ref}} 取”旧策略 / 均匀分布 / 参考模型 / 行为策略”罢了(统一推导见 模块 15)。

讨论课 · Section 5:Advanced Policy Gradients

本节取自 CS285 Discussion Section 5(Advanced Policy Gradients),补上主文点到为止的两块”机械细节”:其一是 TRPO 到底怎么在不显式构造 Fisher 矩阵的情况下算自然梯度(共轭梯度 + Fisher-向量积 + 线搜索);其二是 PPO 核对清单里主文没展开的点(KL 估计与早停、GAE 的递归实现、多 epoch 的 KL 越界监控)。目标是让你能照着实现而不只是理解。

5.1 为什么不显式构造 Fisher 矩阵

自然梯度方向是 g~=F−1g\tilde g=F^{-1}g(式(6.5))。但 F∈Rd×dF\in\mathbb{R}^{d\times d} 中 dd 是网络参数量(可达 106 ⁣∼ ⁣10910^6\!\sim\!10^9)——显式构造 FF(O(d2)O(d^2) 存储)或求逆(O(d3)O(d^3))在深度网络上完全不可行。TRPO 的关键工程 trick 是:我们从不需要 FF 本身,只需要 FF 作用在向量上的效果 FvFv。而 FvFv 可以只用自动微分算出,代价约等于一次额外的反向传播——于是用共轭梯度(CG) 迭代求解线性方程组 Fx=gFx=g,每次迭代只调用一次 FvFv,kk 步(常 k ⁣≈ ⁣10k\!\approx\!10)即得 x≈F−1gx\approx F^{-1}g,全程 O(kd)O(kd)。

推导:Fisher-向量积(FVP)如何用一次反向传播得到 Fv

关键事实

Fisher 矩阵等于平均 KL 在 θ=θold\theta=\theta_{\text{old}} 处的 Hessian:F=∇θ2 KL‾(πθold∥πθ)∣θ=θoldF=\nabla^2_\theta\,\overline{\mathrm{KL}}(\pi_{\theta_{\text{old}}}\|\pi_\theta)\big|_{\theta=\theta_{\text{old}}}(这正是式(6.6)–(6.7) 证得的”KL 的一阶项在此点为 0、二阶项即 FF”)。因此 FvFv 就是”KL 的 Hessian 乘向量” HvHv。

思路。 直接算 Hessian HH 要 O(d2)O(d^2);但 Hessian-向量积有恒等式 Hv=∇θ((∇θKL‾)⊤v)Hv=\nabla_\theta\big((\nabla_\theta \overline{\mathrm{KL}})^\top v\big)——即”先求一阶梯度 gkl=∇KL‾g_{\text{kl}}=\nabla\overline{\mathrm{KL}}(保留计算图),再对标量 gkl ⁣⋅ ⁣vg_{\text{kl}}\!\cdot\!v 反向传播一次”。第二次反向的结果正是 Hv=FvHv=Fv,全程无需成矩阵。

# Fisher-向量积 FVP:不显式构造 F,只用自动微分
def Fv(v):
    kl   = mean_KL(π_θ_old, π_θ)          # 在 θ=θ_old 处:KL 及其一阶导为 0
    g_kl = grad(kl, θ, create_graph=True) # 一阶梯度,保留计算图
    gv   = sum(g_kl * v)                   # 标量 g_kl·v(v 当常量)
    return grad(gv, θ)                     # 再反向一次 → H·v = F·v
    # 实践中常加阻尼:return grad(gv, θ) + damping * v   # (F + λI)v,防病态

5.2 共轭梯度 + 线搜索回退

有了 FvFv,用 CG 解 Fx=gFx=g 得到自然梯度方向,再按信赖域把步长缩放到 KL≈δ\approx\delta,最后线搜索回退确保约束满足且代理目标真的上升(否则不更新):

# 共轭梯度:解 F x = g,得到自然梯度方向 x ≈ F⁻¹ g
def conjugate_gradient(Fv, g, iters=10, tol=1e-10):
    x = zeros_like(g); r = g.clone(); p = g.clone(); rr = dot(r, r)
    for _ in range(iters):
        Fp = Fv(p)                          # 每次迭代仅一次 FVP
        α  = rr / (dot(p, Fp) + 1e-8)
        x  = x + α * p
        r  = r − α * Fp
        rr_new = dot(r, r)
        if rr_new < tol: break
        p  = r + (rr_new / rr) * p
        rr = rr_new
    return x

# 步长缩放 + 线搜索回退
x    = conjugate_gradient(Fv, g)
xFx  = dot(x, Fv(x))
step = sqrt(2*δ / (xFx + 1e-8)) * x         # 满足 KL≈δ 的最大自然梯度步

θ_old = θ
for j in range(max_backtracks):             # 指数回退:α = β^j (如 β=0.5)
    θ = θ_old + (β**j) * step
    if surrogate(θ) > surrogate(θ_old) and mean_KL(θ_old, θ) <= δ:
        break                               # 接受:既改进又不越界
else:
    θ = θ_old                               # 全部失败 → 不更新(安全回退)

图 5:普通梯度(红)在分布空间里"走偏";CG 用一系列 Fv 迭代(灰)逼近自然梯度方向 F^{-1}g(绿),步长缩放到椭球边界后再线搜索回退,确保 KL\le\delta 且代理目标上升。

图 5:普通梯度(红)在分布空间里”走偏”;CG 用一系列 FvFv 迭代(灰)逼近自然梯度方向 F−1gF^{-1}g(绿),步长缩放到椭球边界后再线搜索回退,确保 KL≤δ\le\delta 且代理目标上升。

5.3 PPO 核对清单:主文未展开的点

第 8 节给了 PPO 工程细节总表,这里补三处最容易出错、也最能决定成败的实现点。

(a) KL 估计与早停

PPO 不硬约束 KL,但要监控它。逐样本的近似 KL 有两种常见估计(r=πθ/πoldr=\pi_\theta/\pi_{\text{old}},与第 8 节式(6.13) 的 k1/k3k1/k3 一致):

KL^naive=E[−log⁡r],KL^k3=E[(r−1)−log⁡r] (≥0, 低方差).(6.15)\widehat{\mathrm{KL}}_{\text{naive}}=\mathbb{E}[-\log r],\qquad \widehat{\mathrm{KL}}_{k3}=\mathbb{E}\big[(r-1)-\log r\big]\ (\ge 0,\ \text{低方差}). \tag{6.15}

推荐用 k3k3 估计——它非负且通常方差更小。当某个 epoch 的 KL^\widehat{\mathrm{KL}} 超过预先设定并经验证的阈值时,可提前停止本轮更新;阈值应按任务和实现校准。

(b) GAE 的递归实现

主文给了闭式 A^t=∑k(γλ)kδt+k\hat A_t=\sum_k(\gamma\lambda)^k\delta_{t+k},实现时用 O(T)O(T) 反向递推(注意终止步用 mask 切断 bootstrap):

# GAE 反向递推(O(T));V 有 T+1 个(含 bootstrap 的 V[T])
adv = 0
for t in reversed(range(T)):
    nonterminal = 1 − done[t]
    δ     = r[t] + γ * V[t+1] * nonterminal − V[t]   # TD 残差
    adv   = δ + γ * λ * nonterminal * adv            # 递推累积
    A[t]  = adv
returns = A + V[:T]                                  # value 目标 = 优势 + baseline
A = (A − A.mean()) / (A.std() + 1e-8)                # 批内优势归一化

(c) mini-batch / 多 epoch 的 KL 越界监控

PPO 会把同一批数据切成 mini-batch、复用 KK 个 epoch。重复更新可能使累积 KL 越界——这正是主文所说”PPO 不是真信赖域”的落地隐患。实现上:每个 mini-batch 更新后计算 KL^k3\widehat{\mathrm{KL}}_{k3};一旦本轮均值越过经任务验证的阈值,就跳出剩余 epoch。此外 clip 比率 ϵ\epsilon、优势归一化、KK 与 mini-batch 大小共同决定”有效步长”,调参时应一起看 KL 曲线而非单看回报。

方法溯源:动机 · 启发 · 局限

本讲这条线可以浓缩成一个反复被追问的问题:“一步最多能走多远?” 朴素策略梯度对步长病态敏感、走坏一步还不可逆;解法是换一把”尺子”——不用参数空间的欧氏距离,而用分布空间的 KL 来量策略变化。沿着这把尺子,自然梯度、TRPO、PPO 依次登场,每一个都在修补前一个的实现或理论痛点。

方法 / 代表作(年代)动机(要解决什么)启发 / 脉络关键局限(→ 引出谁)
朴素策略梯度(对照起点)直接沿 ∇θJ\nabla_\theta J 上升,简单直接似然比 / score-function 估计步长病态敏感:参数小步 ≠ 行为小步;on-policy 走坏一步不可逆 → 需在分布空间约束步长
自然梯度 / NPG(Amari 1998 信息几何;Kakade 2002 引入 RL)用 KL(而非欧氏)度量策略变化,在正确流形上做最陡上升Amari 信息几何;Fisher 矩阵是 KL 的局部度规要处理 F−1F^{-1},高维下 O(d2)O(d^2) 存储、O(d3)O(d^3) 求逆不可行 → 引出用 CG 回避求逆的 TRPO
TRPO(Schulman et al., 2015)把自然梯度工程化,给出单调改进的信赖域方法性能差引理(PDL)+ Pinsker 不等式 + 硬 KL 约束;共轭梯度 + Fisher-向量积回避显式求逆实现复杂(CG+FVP+线搜索)、理论常数 CC 过保守,且难以直接采用 PPO 式多 epoch 小批量更新 → 引出 PPO
PPO(Schulman et al., 2017)用一阶 clip 把二阶信赖域近似成可直接 SGD、可大规模训练把 TRPO 的硬约束替换为概率比裁剪的启发式;非对称 min⁡\min 只挡”过度前进”不是真信赖域:只裁单样本比率、不直接约束整体 KL,多 epoch 累积 KL 可能越界;性能严重依赖实现细节 → 引出 GRPO/DAPO/DPO(模块 13)

演进故事线:换一把量”远近”的尺子

问题的根在第 1 节就埋下:朴素 PG 在参数空间迈等距的步,映射到行为分布上却极不均匀——某些区域参数挪一点行为就跳很远,某些区域怎么走都不动,单一学习率无从适配;更糟的是 on-policy 让”走坏一步”采到坏数据、再也爬不回来。关键洞察是换度量:用 KL 散度而非欧氏距离衡量”策略变了多少”,它与参数化无关、直接刻画行为改变量。对 KL 做二阶泰勒,度规恰好是 Fisher 信息矩阵,于是”在 KL 小球内最陡上升”的答案就是自然梯度 F−1gF^{-1}g。

自然梯度理论优美但要碰 F−1F^{-1},高维网络上不可承受。TRPO 把它工程化:借性能差引理把提升写成代理目标、用 Pinsker 不等式把 KL 转成单调改进下界,再用共轭梯度只算”FF 乘向量”(一次额外反向传播)回避显式求逆,配线搜索检查 KL≤δ\le\delta。可它仍然沉重、理论常数 CC 也很保守,并且难以直接采用 PPO 式多 epoch 小批量更新。PPO 是进一步的工程化简化:丢掉二阶与硬约束,用概率比 clip 制造”越走越无激励”的软刹车,靠非对称 min⁡\min 只挡过度前进、放行纠错后退。

遗留局限如何催生下一步

PPO 的简化是有代价的:它不是真信赖域——只在单样本比率上设阈值,不直接约束整体 KL,多 epoch 复用同批数据时累积 KL 会悄悄越界,性能又高度依赖 GAE、优势归一化、KL 早停等一堆工程细节。这些裂缝正是后续工作的入口:对 LLM,GRPO/GSPO 用组内相对奖励省掉 value critic 的显存与调参负担,DAPO 用 Clip-Higher 解耦上下裁剪阈值以抑制熵坍缩,而 DPO 家族干脆绕过在线 RL、把对齐重写成监督式分类。更深一层,TRPO/PPO 的 KL 约束只是”在改进的同时贴近一个参考分布”这一母题(式(6.14))的实例,其闭式最优解 π⋆∝πref er/β\pi^\star\propto\pi_{\text{ref}}\,e^{r/\beta} 贯穿最大熵 RL、RLHF、离线 RL(统一视角见 模块 15)。

9. 小结与要点

  • 朴素 PG 对步长病态敏感、on-policy 下”走坏一步”可能不可逆——核心问题是”一步能走多远”。
  • PDL 把提升写成代理目标 Lπ(π′)L_\pi(\pi'),但它只在新旧策略接近时可信 → 必须约束(信赖域动机)。
  • “接近”要用KL(分布空间) 而非参数欧氏;据此导出自然梯度 F−1gF^{-1}g,本质是在正确流形上最陡上升。
  • TRPO = 最大化代理目标 + 硬 KL 约束,有单调改进下界,但实现复杂、界保守。
  • PPO 用 clip 把信赖域近似为一阶启发式,简单可扩展,但不是真信赖域、依赖大量工程细节。

承上启下

我们把”策略优化”这条主线推到了现代前沿(PPO)。接下来 模块 07 换一个全新的视角:把控制问题重写为概率推断问题(control as inference),从变分推断自然导出最大熵 RL、Soft Q-Learning 与 SAC 的理论根基——这将统一”探索、鲁棒、多模态”等看似分散的现象。

参考来源

  1. [1]Group Sequence Policy Optimization(在新窗口打开)arXiv · 2025-07-24 · Abstract and method · 访问于 2026-10-17↩
  2. [2]Trust Region Policy Optimization(在新窗口打开)arXiv · 2015-02-19 · Abstract; Sections 5 and 7 · 访问于 2026-10-17↩
  3. [3]Implementation Matters in Deep Policy Gradients(在新窗口打开)arXiv · 2020-05-26 · Sections 3–4 · 访问于 2026-10-17↩
  4. [4]An Open-Source LLM Reinforcement Learning System at Scale(在新窗口打开)arXiv · 2025-03-18 · Section 3.1 · 访问于 2026-10-17↩
  5. [5]CS 285: Deep Reinforcement Learning(UC Berkeley)(在新窗口打开)UC Berkeley · L9–L10 · 访问于 2026-10-17