在深度强化学习的发展史上,TRPO (Trust Region Policy Optimization) 占据着承前启后的核心地位。它是连接早期 REINFORCE(朴素策略梯度)与现代 PPO(近端策略优化)的桥梁。

很多人认为 TRPO 仅仅是一个“带约束的优化算法”,这严重低估了它的理论深度。TRPO 的本质,是一次从**欧氏空间(Euclidean Space)黎曼流形(Riemannian Manifold)**的思维跨越。它解决了一个根本性的问题:在参数空间 Θ\ThetaΘ 上移动多远,才等同于在策略空间 Π\PiΠ 上移动了安全的距离?

本文将从单调提升理论出发,通过拉格朗日对偶性、泰勒级数展开、自然梯度法以及共轭梯度下降,完整推导 TRPO 的每一个数学细节。


第一章:理论基石——性能差异与单调性保证

一切优化的前提是“不退步”。在强化学习中,策略更新往往牵一发而动全身,我们需要一个数学保证:新策略 J(πnew)≥J(πold)J(\pi_{new}) \ge J(\pi_{old})J(πnew)J(πold)

1.1 性能差异引理 (The Performance Difference Lemma)

Kakade & Langford (2002) 提出了一个恒等式,量化了两个策略表现的差距。
J(π)J(\pi)J(π) 为策略 π\piπ 的期望累积折扣回报,对于任意两个策略 π\piππ~\tilde{\pi}π~,有:

J(π~)=J(π)+Eτ∼π~[∑t=0∞γtAπ(st,at)] J(\tilde{\pi}) = J(\pi) + \mathbb{E}_{\tau \sim \tilde{\pi}} \left[ \sum_{t=0}^{\infty} \gamma^t A_\pi(s_t, a_t) \right] J(π~)=J(π)+Eτπ~[t=0γtAπ(st,at)]

  • Aπ(s,a)=Qπ(s,a)−Vπ(s)A_\pi(s, a) = Q_\pi(s, a) - V_\pi(s)Aπ(s,a)=Qπ(s,a)Vπ(s) 是旧策略的优势函数。
  • 核心洞察:如果新策略 π~\tilde{\pi}π~ 在每一个状态 sss 都能选择出 Aπ(s,a)>0A_\pi(s, a) > 0Aπ(s,a)>0 的动作,那么 J(π~)J(\tilde{\pi})J(π~) 必然大于 J(π)J(\pi)J(π)

1.2 替代目标函数 (Surrogate Objective)

上述公式中,期望是基于新策略 π~\tilde{\pi}π~ 的轨迹 τ\tauτ 计算的,这在更新前是未知的。我们利用重要性采样,将状态分布近似为旧策略的分布 ρπ\rho_\piρπ

Lπ(π~)=J(π)+∑sρπ(s)∑aπ~(a∣s)Aπ(s,a) L_\pi(\tilde{\pi}) = J(\pi) + \sum_{s} \rho_\pi(s) \sum_{a} \tilde{\pi}(a|s) A_\pi(s, a) Lπ(π~)=J(π)+sρπ(s)aπ~(as)Aπ(s,a)

在 TRPO 中,我们通常优化 Lπ(π~)L_\pi(\tilde{\pi})Lπ(π~) 的等价形式(忽略常数项 J(π)J(\pi)J(π)):

max⁡θEs∼ρθold,a∼πθold[πθ(a∣s)πθold(a∣s)Aθold(s,a)] \max_{\theta} \mathbb{E}_{s \sim \rho_{\theta_{old}}, a \sim \pi_{\theta_{old}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} A_{\theta_{old}}(s,a) \right] θmaxEsρθold,aπθold[πθold(as)πθ(as)Aθold(s,a)]

1.3 误差边界与下界最大化 (MM Algorithm)

由于状态分布的近似 ρπ~≈ρπ\rho_{\tilde{\pi}} \approx \rho_\piρπ~ρπ 引入了误差,Schulman 证明了如下不等式:

J(π~)≥Lπ(π~)−C⋅DKLmax⁡(π,π~) J(\tilde{\pi}) \ge L_\pi(\tilde{\pi}) - C \cdot D_{KL}^{\max}(\pi, \tilde{\pi}) J(π~)Lπ(π~)CDKLmax(π,π~)

其中 C=4ϵγ(1−γ)2C = \frac{4\epsilon \gamma}{(1-\gamma)^2}C=(1γ)24ϵγ 是常数,DKLmax⁡D_{KL}^{\max}DKLmax 是状态空间上的最大 KL 散度。
这构成了一个 Minorization-Maximization (MM) 算法的基础:

  • Mi(π)=Lπi(π)−C⋅DKLmax⁡(πi,π)M_i(\pi) = L_{\pi_i}(\pi) - C \cdot D_{KL}^{\max}(\pi_i, \pi)Mi(π)=Lπi(π)CDKLmax(πi,π)J(π)J(\pi)J(π)下界函数
  • 最大化这个下界,就能保证真实目标 J(π)J(\pi)J(π) 的单调提升。

第二章:从理论到实践——信赖域约束的构建

理论上的惩罚系数 CCC 通常过大,导致步长极小,几乎无法训练。TRPO 将上述无约束的惩罚问题(Lagrangian form)转化为带约束的优化问题(Constrained form)。

2.1 优化问题的形式化

我们需要在满足 KL 散度约束的前提下,最大化替代目标:

max⁡θL(θ)=E[πθ(a∣s)πθold(a∣s)Aθold(s,a)]subject toDˉKL(πθold,πθ)≤δ \begin{aligned} \max_{\theta} \quad & L(\theta) = \mathbb{E} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} A_{\theta_{old}}(s,a) \right] \\ \text{subject to} \quad & \bar{D}_{KL}(\pi_{\theta_{old}}, \pi_\theta) \le \delta \end{aligned} θmaxsubject toL(θ)=E[πθold(as)πθ(as)Aθold(s,a)]DˉKL(πθold,πθ)δ

这里,DˉKL\bar{D}_{KL}DˉKL 是所有状态下的平均 KL 散度,δ\deltaδ 是信赖域半径(Trust Region Radius)。

2.2 为什么是 KL 散度?

这是一个极其关键的数学选择。
如果我们使用欧氏距离 ∥θ−θold∥2≤δ\|\theta - \theta_{old}\|^2 \le \deltaθθold2δ,会发生什么?

  • 参数空间与概率分布空间是不等价的。有些参数变化很小,却导致概率分布剧变;有些参数变化很大,概率分布却几乎不变。
  • KL 散度衡量的是分布之间的统计距离。它定义了一个黎曼流形,使得我们的步长具有协变性(Covariant)——无论我们将参数如何缩放或重参数化,只要分布不变,KL 散度就不变,更新轨迹也就不变。

第三章:数值求解——泰勒展开与自然梯度

上述约束优化问题是非线性的,难以直接求解。我们使用泰勒级数对其进行局部近似。

3.1 一阶与二阶泰勒近似

设更新量 Δθ=θ−θold\Delta \theta = \theta - \theta_{old}Δθ=θθold

  1. 目标函数(一阶展开)
    L(θ)≈L(θold)+∇θL(θold)TΔθ L(\theta) \approx L(\theta_{old}) + \nabla_\theta L(\theta_{old})^T \Delta \theta L(θ)L(θold)+θL(θold)TΔθ
    其中 ∇θL(θold)\nabla_\theta L(\theta_{old})θL(θold) 即为常用的策略梯度,记为 ggg

  2. 约束条件(二阶展开)
    由于 DKL(θ,θ)=0D_{KL}(\theta, \theta) = 0DKL(θ,θ)=0,且 KL 散度在两分布相等处取得极小值,因此一阶导数为 0。我们展开到二阶:
    DˉKL(θold,θ)≈12ΔθTFΔθ \bar{D}_{KL}(\theta_{old}, \theta) \approx \frac{1}{2} \Delta \theta^T \mathbf{F} \Delta \theta DˉKL(θold,θ)21ΔθTFΔθ
    其中 F\mathbf{F}F费雪信息矩阵(Fisher Information Matrix, FIM),也就是 KL 散度的 Hessian 矩阵:
    F=Es,a[∇θlog⁡πθ(a∣s)∇θlog⁡πθ(a∣s)T] \mathbf{F} = \mathbb{E}_{s, a} \left[ \nabla_\theta \log \pi_\theta(a|s) \nabla_\theta \log \pi_\theta(a|s)^T \right] F=Es,a[θlogπθ(as)θlogπθ(as)T]

3.2 近似问题的解析解

现在问题变成了标准的二次规划(Quadratic Programming):

max⁡ΔθgTΔθs.t.12ΔθTFΔθ≤δ \begin{aligned} \max_{\Delta \theta} \quad & g^T \Delta \theta \\ \text{s.t.} \quad & \frac{1}{2} \Delta \theta^T \mathbf{F} \Delta \theta \le \delta \end{aligned} Δθmaxs.t.gTΔθ21ΔθTFΔθδ

利用拉格朗日乘子法,构造拉格朗日函数:
L(Δθ,λ)=gTΔθ−λ(12ΔθTFΔθ−δ) \mathcal{L}(\Delta \theta, \lambda) = g^T \Delta \theta - \lambda \left( \frac{1}{2} \Delta \theta^T \mathbf{F} \Delta \theta - \delta \right) L(Δθ,λ)=gTΔθλ(21ΔθTFΔθδ)

Δθ\Delta \thetaΔθ 求导并令其为 0:
g−λFΔθ=0  ⟹  Δθ=1λF−1g g - \lambda \mathbf{F} \Delta \theta = 0 \implies \Delta \theta = \frac{1}{\lambda} \mathbf{F}^{-1} g gλFΔθ=0Δθ=λ1F1g

这里的 F−1g\mathbf{F}^{-1} gF1g 就是大名鼎鼎的自然梯度(Natural Gradient)。它根据参数空间的局部曲率(F\mathbf{F}F)校正了梯度方向。

3.3 求解步长系数

我们还需要确定 λ\lambdaλ(或者说步长大小)。将 Δθ=1λF−1g\Delta \theta = \frac{1}{\lambda} \mathbf{F}^{-1} gΔθ=λ1F1g 代入约束条件 12ΔθTFΔθ=δ\frac{1}{2} \Delta \theta^T \mathbf{F} \Delta \theta = \delta21ΔθTFΔθ=δ

12(1λF−1g)TF(1λF−1g)=δ \frac{1}{2} \left( \frac{1}{\lambda} \mathbf{F}^{-1} g \right)^T \mathbf{F} \left( \frac{1}{\lambda} \mathbf{F}^{-1} g \right) = \delta 21(λ1F1g)TF(λ1F1g)=δ
12λ2gTF−1FF−1g=δ \frac{1}{2\lambda^2} g^T \mathbf{F}^{-1} \mathbf{F} \mathbf{F}^{-1} g = \delta 2λ21gTF1FF1g=δ
12λ2gTF−1g=δ \frac{1}{2\lambda^2} g^T \mathbf{F}^{-1} g = \delta 2λ21gTF1g=δ

解得:
λ=gTF−1g2δ \lambda = \sqrt{\frac{g^T \mathbf{F}^{-1} g}{2\delta}} λ=2δgTF1g

因此,最终的更新向量为:
Δθ=2δgTF−1gF−1g \Delta \theta = \sqrt{\frac{2\delta}{g^T \mathbf{F}^{-1} g}} \mathbf{F}^{-1} g Δθ=gTF1g2δF1g


第四章:工程实现的艺术——共轭梯度与 HVP

理论推导很完美,但在深度学习中,参数量 NNN 可能高达数百万。
F\mathbf{F}F 是一个 N×NN \times NN×N 的矩阵。计算并存储它需要 O(N2)O(N^2)O(N2) 空间,求逆 F−1\mathbf{F}^{-1}F1 需要 O(N3)O(N^3)O(N3) 时间。这在计算上是不可行的。

TRPO 使用 共轭梯度法 (Conjugate Gradient, CG) 来避开这个瓶颈。

4.1 将求逆转化为解方程

我们不需要显式求 F−1\mathbf{F}^{-1}F1,我们只需要求向量 x=F−1gx = \mathbf{F}^{-1} gx=F1g。这等价于求解线性方程组:
Fx=g \mathbf{F} x = g Fx=g

由于 F\mathbf{F}F 是对称正定矩阵,CG 算法非常适合求解此类方程。

4.2 Hessian-Vector Product (HVP)

在 CG 迭代中,我们需要频繁计算矩阵与向量的乘积 Fv\mathbf{F} vFv(其中 vvv 是 CG 算法中的搜索方向向量)。
Pearlmutter (1994) 提出的技巧告诉我们,计算 Hessian 与向量的乘积,不需要构建 Hessian 矩阵

回顾 F\mathbf{F}F 的定义,我们可以通过两次反向传播来计算 Fv\mathbf{F} vFv

Fv=∇θ((∇θlog⁡πθ(a∣s)⋅v)T∇θlog⁡πθ(a∣s)) \mathbf{F} v = \nabla_\theta \left( (\nabla_\theta \log \pi_\theta(a|s) \cdot v)^T \nabla_\theta \log \pi_\theta(a|s) \right) Fv=θ((θlogπθ(as)v)Tθlogπθ(as))

但在实践中,我们通常使用 KL 散度的梯度形式更方便:
Fv=∇θ(∇θDKL(πθold∥πθ)⋅v) \mathbf{F} v = \nabla_\theta \left( \nabla_\theta D_{KL}(\pi_{\theta_{old}} \| \pi_\theta) \cdot v \right) Fv=θ(θDKL(πθoldπθ)v)

具体操作步骤:

  1. 计算 KL 散度关于 θ\thetaθ 的梯度(一阶导)。
  2. 计算该梯度与向量 vvv 的点积(标量)。
  3. 对这个标量再求一次关于 θ\thetaθ 的梯度(二阶导信息)。

这样,我们就在 O(N)O(N)O(N) 的时间复杂度内算出了 Fv\mathbf{F} vFv,使得 TRPO 在大模型上变得可行。


第五章:最后一道防线——回溯线性搜索 (Backtracking Line Search)

由于我们在第三章使用了泰勒展开,计算出的 Δθ\Delta \thetaΔθ 只是在局部是准确的。如果步子迈得太大,泰勒近似就会失效,导致 KL 散度越界或者目标函数下降。

TRPO 引入了线性搜索机制来确保单调性。

设搜索方向为 d=F−1gd = \mathbf{F}^{-1} gd=F1g,最大步长为 β=2δ/(dTFd)\beta = \sqrt{2\delta / (d^T \mathbf{F} d)}β=2δ/(dTFd)
我们尝试更新:
θnew=θold+αjβd \theta_{new} = \theta_{old} + \alpha^j \beta d θnew=θold+αjβd
其中 α∈(0,1)\alpha \in (0, 1)α(0,1) 是衰减率(例如 0.5),jjj 从 0 开始增加。

我们接受 θnew\theta_{new}θnew 当且仅当满足以下两个条件:

  1. 目标提升条件L(θnew)−L(θold)>0L(\theta_{new}) - L(\theta_{old}) > 0L(θnew)L(θold)>0(或者满足一定的提升比例)。
  2. 信赖域约束条件DˉKL(θold,θnew)≤δ\bar{D}_{KL}(\theta_{old}, \theta_{new}) \le \deltaDˉKL(θold,θnew)δ

通过这种“先计算最佳方向,再小心翼翼试探”的策略,TRPO 实现了极其稳定的更新。


总结:TRPO 的数学美学

TRPO 的推导过程是一场数学盛宴:

  1. 性能差异引理 出发,建立了单调提升的目标。
  2. 利用 KL 散度 构建了黎曼流形上的信赖域约束。
  3. 通过 泰勒展开 将非线性约束规划转化为二次规划。
  4. 引入 费雪信息矩阵 得到了自然梯度解。
  5. 使用 共轭梯度法HVP 技巧 解决了高维矩阵求逆难题。
  6. 最后用 线性搜索 弥补了近似误差。

每一个环节都环环相扣,逻辑严密。虽然后来的 PPO 通过 Clip 操作极大地简化了这一过程,但 PPO 之所以有效,正是因为它在试图模拟 TRPO 所定义的那个完美的“信赖域”。理解了 TRPO,你才真正触碰到了策略梯度算法的灵魂。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐