2.9 TRPO 与 PPO:从“信赖域约束”到“近端裁剪”的稳定策略优化

2.9 TRPO 与 PPO:从"信赖域约束"到"近端裁剪"的稳定策略优化

策略梯度(Policy Gradient)与 Actor-Critic 方法的核心思想,是沿着目标函数 J(θ)J(\theta)J(θ) 的梯度方向更新策略参数 θ\thetaθ,从而提升期望回报。但在深度神经网络策略中,一个关键难点是:如果单次更新幅度过大,新策略可能突然变差(例如把高概率动作改成低概率动作,或把原本合理的分布推向极端),训练会出现性能骤降、震荡甚至崩溃。

TRPO(Trust Region Policy Optimization)与 PPO(Proximal Policy Optimization)就是围绕这个问题提出的两类代表性方法:

  • TRPO:显式加入"策略距离(KL散度)约束",把每次更新限制在一个"信赖域(trust region)"内。
  • PPO :用更容易实现的方式近似 TRPO 的"安全更新",最常用的是 PPO-Clip(裁剪版 PPO)

1. 为什么策略更新会"突然变坏"?

设旧策略是 πθk\pi_{\theta_k}πθk,我们用它采样得到一批状态-动作对 (s,a)(s,a)(s,a)。如果直接用策略梯度大步更新得到新策略 πθ\pi_\thetaπθ,可能出现:

  • 在一些关键状态 sss 上,旧策略对"好动作" aaa 的概率本来很高,更新后反而显著降低;
  • 或者把分布推向过度确定(entropy 下降过快),导致探索不足;
  • 或者由于优势估计 A(s,a)A(s,a)A(s,a) 有噪声,大步更新会放大噪声影响。

一个直观衡量"策略变化有多大"的指标是 KL 散度 。若 πθ(⋅∣s)\pi_\theta(\cdot|s)πθ(⋅∣s) 与 πθk(⋅∣s)\pi_{\theta_k}(\cdot|s)πθk(⋅∣s) 相差很大,就意味着策略在该状态的行为模式改变很剧烈,风险更高。


2. TRPO:信赖域策略优化(Trust Region Policy Optimization)

2.1 TRPO 的核心思想

TRPO 的目标是:
在提升策略性能的同时,限制新旧策略之间的差异不超过一个阈值。

这和数值优化中的"信赖域方法"一致:只在你"信得过"的邻域内做更新,避免一步走太远。

TRPO 的优化形式通常写为(你给出的版本):

θk+1=arg⁡max⁡θ L(θk,θ)s.t. DˉKL(θ∣∣θk)≤δ \theta_{k + 1} = \underset{\theta}{\arg\max} \ \mathcal{L}(\theta_k, \theta) \quad \text{s.t. } \bar{D}_{KL}(\theta||\theta_k) \leq \delta θk+1=θargmax L(θk,θ)s.t. DˉKL(θ∣∣θk)≤δ

其中 surrogate objective(代理目标)为:

L(θk,θ)=Es,a∼πθk[πθ(a∣s)πθk(a∣s)Aπθk(s,a)] \mathcal{L}(\theta_k, \theta) \mathrm{}= \underset{s,a\sim\pi_{\theta_k}}{\mathbb{E}} \left[ \frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)} A^{\pi_{\theta_k}}(s, a) \right] L(θk,θ)=s,a∼πθkE[πθk(a∣s)πθ(a∣s)Aπθk(s,a)]

约束项是平均 KL 散度(常见写法是对状态分布取期望):

DˉKL(θ∣∣θk)=Es∼νπθk[DKL ⁣(πθk(⋅∣s) ∥ πθ(⋅∣s))] \bar{D}{KL}(\theta||\theta_k) \mathrm{}= \underset{s\sim \nu^{\pi{\theta_k}}}{\mathbb{E}} \left[ D_{KL}\!\left(\pi_{\theta_k}(\cdot|s)\ \|\ \pi_{\theta}(\cdot|s)\right) \right] DˉKL(θ∣∣θk)=s∼νπθkE[DKL(πθk(⋅∣s) ∥ πθ(⋅∣s))]

这里 δ\deltaδ 是一个小常数,控制"信赖域"的大小。


2.2 surrogate objective 为什么长这样?

(1)优势函数引导"往哪儿改"

Aπθk(s,a)A^{\pi_{\theta_k}}(s,a)Aπθk(s,a) 表示在状态 sss 下采取动作 aaa 相对"平均水平"的优势:

  • 若 Aπθk(s,a)>0A^{\pi_{\theta_k}}(s,a) > 0Aπθk(s,a)>0:动作比平均好,应当提高其概率;
  • 若 Aπθk(s,a)<0A^{\pi_{\theta_k}}(s,a) < 0Aπθk(s,a)<0:动作比平均差,应当降低其概率。
(2)重要性采样比率 πθ(a∣s)πθk(a∣s)\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}πθk(a∣s)πθ(a∣s) 为什么出现?

因为采样数据来自旧策略 πθk\pi_{\theta_k}πθk,但我们要优化的是新策略 πθ\pi_\thetaπθ。

用重要性采样可以在"采样分布不变"的情况下估计"目标分布下的期望",从而复用旧数据(至少在有限范围内近似可行)。


2.3 一个直观例子:为什么要限制 KL?

假设在某个状态 sss 下只有两个动作:a1a_1a1 与 a2a_2a2。旧策略为:

πθk(a1∣s)=0.9,πθk(a2∣s)=0.1 \pi_{\theta_k}(a_1|s)=0.9,\quad \pi_{\theta_k}(a_2|s)=0.1 πθk(a1∣s)=0.9,πθk(a2∣s)=0.1

优势估计为:

A(s,a1)=+1,A(s,a2)=−1 A(s,a_1)=+1,\quad A(s,a_2)=-1 A(s,a1)=+1,A(s,a2)=−1

理想上,我们希望新策略进一步提高 a1a_1a1 的概率、降低 a2a_2a2 的概率。但如果学习率过大,更新可能把分布推成:

πθ(a1∣s)=0.2,πθ(a2∣s)=0.8 \pi_{\theta}(a_1|s)=0.2,\quad \pi_{\theta}(a_2|s)=0.8 πθ(a1∣s)=0.2,πθ(a2∣s)=0.8

这会直接反向了原本正确的偏好,导致性能骤降。TRPO 的 KL 约束会阻止这种"翻车式更新",让策略变化保持在一个可控范围内。


2.4 TRPO 的难点

TRPO 的理论与推导会涉及二阶信息(对 KL 约束的近似、共轭梯度等),实现复杂、计算成本高。它很强,但不够"工程友好"。

PPO 的目标就是:保留 TRPO 的稳定性优势,同时把实现做得更简单


3. PPO:近端策略优化(Proximal Policy Optimization)

PPO 常见有两个版本:

  • PPO-Penalty:把 KL 约束变成惩罚项(罚太远);
  • PPO-Clip:直接对更新幅度进行裁剪(clip),最常用。

下面重点讲 PPO-Clip(你给出的目标)。


3.1 PPO-Clip 的目标函数

定义重要性采样比率(ratio):

rt(θ)=πθ(at∣st)πθk(at∣st) r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_k}(a_t|s_t)} rt(θ)=πθk(at∣st)πθ(at∣st)

PPO-Clip 的目标写为:

arg⁡max⁡θ Es∼νβ, a∼πθk(⋅∣s)[min⁡(rt(θ)At, clip(rt(θ),1−ϵ,1+ϵ) At)] \arg \max_{\theta} \ \mathbb{E}{s \sim \nu^{\beta},\ a \sim \pi{\theta_k}(\cdot \mid s)} \left[ \min \left( r_t(\theta) A_t,\ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\ A_t \right) \right] argθmax Es∼νβ, a∼πθk(⋅∣s)[min(rt(θ)At, clip(rt(θ),1−ϵ,1+ϵ) At)]

其中:

  • AtA_tAt 是优势估计(实践中常用 GAE,下文会讲)。
  • ϵ\epsilonϵ 是裁剪范围超参数,例如 0.10.10.1 或 0.20.20.2。
  • νβ\nu^\betaνβ 表示用于采样的状态分布(在 on-policy 场景下通常由当前/旧策略产生)。

3.2 从"最简策略梯度目标"逆向理解 PPO

先看一个直观的"想法原型":

我们希望把优势大的动作概率提高、优势小的动作概率降低。最粗略的表达是:

arg⁡max⁡θ E[log⁡πθ(at∣st) At] \arg \max_{\theta}\ \mathbb{E}\left[\log \pi_\theta(a_t|s_t)\ A_t\right] argθmax E[logπθ(at∣st) At]

这是经典的策略梯度形式(REINFORCE / Actor-Critic 里常见)。

但如果我们想复用旧策略采样的数据,就会用重要性采样,把目标变成 ratio 形式。于是出现:

E[rt(θ) At] \mathbb{E}\left[r_t(\theta)\ A_t\right] E[rt(θ) At]

其中:

  • 若 At>0A_t>0At>0,最大化 rt(θ)Atr_t(\theta)A_trt(θ)At 会倾向于让 rt(θ)r_t(\theta)rt(θ) 变大,即提高 πθ(at∣st)\pi_\theta(a_t|s_t)πθ(at∣st);
  • 若 At<0A_t<0At<0,最大化该项会倾向让 rt(θ)r_t(\theta)rt(θ) 变小,即降低该动作概率。

问题在于:ratio 可能变得过大或过小,导致更新幅度过猛,重现"策略突然变坏"的风险。


3.3 Clip 为什么能"近似信赖域"?

PPO-Clip 的关键在于:

clip(rt(θ),1−ϵ,1+ϵ) \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) clip(rt(θ),1−ϵ,1+ϵ)

它把 rt(θ)r_t(\theta)rt(θ) 限制在一个"安全区间":

rt(θ)∈[1−ϵ, 1+ϵ] r_t(\theta)\in[1-\epsilon,\ 1+\epsilon] rt(θ)∈[1−ϵ, 1+ϵ]

但注意:PPO 的最终目标不是简单替换成裁剪后的 ratio,而是:

min⁡(rt(θ)At, clip(rt(θ),1−ϵ,1+ϵ)At) \min\left(r_t(\theta)A_t,\ \text{clip}(r_t(\theta),1-\epsilon,1+\epsilon)A_t\right) min(rt(θ)At, clip(rt(θ),1−ϵ,1+ϵ)At)

这个 min⁡\minmin 非常关键,它保证了:

当更新方向会导致"过度变动"并带来过度收益(可能是噪声造成的虚假收益)时,目标会被截断,阻止策略继续朝那个方向无限推进。


3.4 通过正负优势分别看 PPO-Clip 的行为

设 AtA_tAt 的符号不同,PPO-Clip 的效果也不同。

情况 1:At>0A_t > 0At>0(动作好,应该提高概率)

我们希望 rt(θ)r_t(\theta)rt(θ) 变大,但不能无限大。

  • 如果 rt(θ)≤1+ϵr_t(\theta) \le 1+\epsilonrt(θ)≤1+ϵ:
    目标用的是 rt(θ)Atr_t(\theta)A_trt(θ)At,允许你继续提高该动作概率。
  • 如果 rt(θ)>1+ϵr_t(\theta) > 1+\epsilonrt(θ)>1+ϵ:
    clip(rt)=1+ϵ\text{clip}(r_t)=1+\epsilonclip(rt)=1+ϵ,此时
    min⁡(rtAt, (1+ϵ)At)=(1+ϵ)At \min(r_tA_t,\ (1+\epsilon)A_t)=(1+\epsilon)A_t min(rtAt, (1+ϵ)At)=(1+ϵ)At
    目标不再随 rtr_trt 增大而增大,梯度会被压住,避免继续"推过头"。
情况 2:At<0A_t < 0At<0(动作差,应该降低概率)

我们希望 rt(θ)r_t(\theta)rt(θ) 变小,但不能无限小。

  • 如果 rt(θ)≥1−ϵr_t(\theta) \ge 1-\epsilonrt(θ)≥1−ϵ:
    目标仍会推动你降低概率。
  • 如果 rt(θ)<1−ϵr_t(\theta) < 1-\epsilonrt(θ)<1−ϵ:
    裁剪把它抬回 1−ϵ1-\epsilon1−ϵ,min⁡\minmin 结构同样会阻止继续下降,避免过度惩罚导致分布崩坏。

3.5 一个具体例子:clip 如何阻止"过度更新"?

假设在某一步:

  • 优势 At=+2A_t=+2At=+2(动作很好)
  • ϵ=0.2\epsilon=0.2ϵ=0.2,安全区间是 [0.8,1.2][0.8,1.2][0.8,1.2]

如果更新后 ratio 达到 rt(θ)=1.5r_t(\theta)=1.5rt(θ)=1.5,说明新策略把该动作概率提高了 50%(变化过大)。

此时裁剪后 ratio 为 1.21.21.2,目标使用:

min⁡(1.5×2, 1.2×2)=2.4 \min(1.5\times 2,\ 1.2\times 2)=2.4 min(1.5×2, 1.2×2)=2.4

也就是说,尽管 rtr_trt 更大能带来更大的 surrogate 值,但 PPO 直接截断这部分收益,让梯度不再鼓励你把概率继续推高。

这就实现了类似 TRPO "别离旧策略太远"的效果,但不需要显式计算二阶近似的 KL 约束。


4. 重要性采样:为什么 PPO 能复用旧策略数据?

4.1 重要性采样公式

设要估计函数 h(x)h(x)h(x) 在目标分布 p(x)p(x)p(x) 下的期望:

Ep[h(x)]=∫h(x) p(x) dx \mathbb{E}_p[h(x)] = \int h(x)\ p(x)\ dx Ep[h(x)]=∫h(x) p(x) dx

假设你只能从提议分布 q(x)q(x)q(x) 采样,且只要 p(x)>0p(x)>0p(x)>0 就有 q(x)>0q(x)>0q(x)>0,则:

Ep[h(x)]=∫h(x) p(x)q(x) q(x) dx=Eq[h(x) p(x)q(x)] \mathbb{E}_p[h(x)] \mathrm{}= \int h(x)\ \frac{p(x)}{q(x)}\ q(x)\ dx \mathrm{}= \mathbb{E}_q\left[h(x)\ \frac{p(x)}{q(x)}\right] Ep[h(x)]=∫h(x) q(x)p(x) q(x) dx=Eq[h(x) q(x)p(x)]

在策略梯度里:

  • 目标分布是新策略 πθ(a∣s)\pi_\theta(a|s)πθ(a∣s)
  • 数据来自旧策略 πθk(a∣s)\pi_{\theta_k}(a|s)πθk(a∣s)
    于是比率就是:

πθ(a∣s)πθk(a∣s) \frac{\pi_\theta(a|s)}{\pi_{\theta_k}(a|s)} πθk(a∣s)πθ(a∣s)

4.2 为什么仍然需要"限制比率"?

重要性采样的代价是:当比率方差很大(例如新旧策略差太多),估计会非常不稳定。

这也是 PPO 要做 clip 的根本原因之一:控制比率,降低方差,保持更新稳定。


5. GAE:广义优势估计(Generalized Advantage Estimation)

PPO 在优势函数估计上,常用 GAE 来平衡偏差与方差,从而提升稳定性与样本效率。

5.1 TD 误差与多步优势

定义一步 TD 误差:

δt=rt+γV(st+1)−V(st) \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) δt=rt+γV(st+1)−V(st)

用多步思想可以构造 kkk 步优势估计:

At(1)=δt A_t^{(1)} = \delta_t At(1)=δt

At(2)=δt+γδt+1 A_t^{(2)} = \delta_t + \gamma \delta_{t+1} At(2)=δt+γδt+1

At(3)=δt+γδt+1+γ2δt+2 A_t^{(3)} = \delta_t + \gamma \delta_{t+1} + \gamma^2 \delta_{t+2} At(3)=δt+γδt+1+γ2δt+2

一般形式:

At(k)=∑i=0k−1γi δt+i A_t^{(k)} = \sum_{i=0}^{k-1} \gamma^i\ \delta_{t+i} At(k)=i=0∑k−1γi δt+i

直观理解:

  • 小 kkk:更依赖 V(s)V(s)V(s),方差小但偏差可能大;
  • 大 kkk:更接近 Monte Carlo 回报,偏差小但方差更大。

5.2 GAE 的指数加权平均

GAE 把不同步长的优势估计做指数加权平均:

AtGAE=(1−λ)(At(1)+λAt(2)+λ2At(3)+⋯ ) A_t^{\text{GAE}} \mathrm{}= (1-\lambda)\left(A_t^{(1)}+\lambda A_t^{(2)}+\lambda^2 A_t^{(3)}+\cdots\right) AtGAE=(1−λ)(At(1)+λAt(2)+λ2At(3)+⋯)

将 At(k)A_t^{(k)}At(k) 展开并整理,可得到常用闭式形式:

AtGAE=∑l=0∞(γλ)l δt+l A_t^{\text{GAE}} \mathrm{}= \sum_{l=0}^{\infty} (\gamma \lambda)^l\ \delta_{t+l} AtGAE=l=0∑∞(γλ)l δt+l

其中 λ∈[0,1]\lambda\in[0,1]λ∈[0,1] 控制偏差-方差权衡:

  • 当 λ=0\lambda=0λ=0:
    AtGAE=δt=rt+γV(st+1)−V(st) A_t^{\text{GAE}}=\delta_t=r_t+\gamma V(s_{t+1})-V(s_t) AtGAE=δt=rt+γV(st+1)−V(st)

    只用一步 TD,方差最小但偏差更大。

  • 当 λ=1\lambda=1λ=1:
    AtGAE=∑l=0∞γlδt+l A_t^{\text{GAE}}=\sum_{l=0}^{\infty}\gamma^l\delta_{t+l} AtGAE=l=0∑∞γlδt+l

    更接近 Monte Carlo 形式(更低偏差,但方差更大)。


5.3 一个直观例子:λ\lambdaλ 如何影响优势?

设某段轨迹在未来几步奖励波动很大。如果你只用 δt\delta_tδt,优势几乎只看一步,会"短视",噪声小但可能低估长期收益。

如果你取更大的 λ\lambdaλ,就把后续 δt+1,δt+2\delta_{t+1},\delta_{t+2}δt+1,δt+2 也加权纳入,优势更能反映长期趋势,但会把更多随机波动也带进来。

因此 GAE 的实用价值在于:
用一个超参数 λ\lambdaλ 连续地在"低方差(短视)"与"低偏差(长视)"之间调节。


6. PPO 的整体训练目标通常包含哪些部分?

上面讨论的是 PPO 的核心 surrogate objective。实际使用中,PPO 常配合额外项共同优化:

  1. 策略目标(PPO-Clip surrogate)

    即前述
    E[min⁡(rtAt, clip(rt,1−ϵ,1+ϵ)At)] \mathbb{E}\left[\min(r_tA_t,\ \text{clip}(r_t,1-\epsilon,1+\epsilon)A_t)\right] E[min(rtAt, clip(rt,1−ϵ,1+ϵ)At)]

  2. 价值函数损失(Critic 回归)

    让 V(s)V(s)V(s) 更准确(通常是 MSE):
    LV=E[(Vψ(st)−V^t)2] \mathcal{L}V = \mathbb{E}\left[(V\psi(s_t)-\hat{V}_t)^2\right] LV=E[(Vψ(st)−V^t)2]

  3. 熵正则(鼓励探索)

    防止策略过早变得过度确定:
    LH=E[H(πθ(⋅∣st))] \mathcal{L}{H} = \mathbb{E}\left[H(\pi\theta(\cdot|s_t))\right] LH=E[H(πθ(⋅∣st))]

把它们组合起来(符号按"最大化/最小化"习惯可能不同)通常是:

max⁡θ LPPO(θ)=E[Lclip]−c1E[LV]+c2E[LH] \max_\theta\ \mathcal{L}{\text{PPO}}(\theta) \mathrm{}= \mathbb{E}\left[\mathcal{L}{\text{clip}}\right] \mathrm{}- c_1\mathbb{E}\left[\mathcal{L}V\right] + c_2\mathbb{E}\left[\mathcal{L}{H}\right] θmax LPPO(θ)=E[Lclip]−c1E[LV]+c2E[LH]

其中 c1,c2c_1,c_2c1,c2 是权重超参数。


7. TRPO vs PPO:关键差异与联系

7.1 相同点

  • 都基于策略梯度 / Actor-Critic;
  • 都使用优势函数 A(s,a)A(s,a)A(s,a) 引导策略更新;
  • 都希望避免"策略更新过猛"导致性能崩坏;
  • 都在某种意义上限制新旧策略差异。

7.2 不同点

  • TRPO :显式 KL 约束
    DˉKL(θ∣∣θk)≤δ \bar{D}_{KL}(\theta||\theta_k)\le\delta DˉKL(θ∣∣θk)≤δ

    理论更强,但实现复杂、计算成本高。

  • PPO :隐式限制更新幅度

    通过 ratio 的裁剪:
    rt(θ)∈[1−ϵ,1+ϵ] r_t(\theta)\in[1-\epsilon,1+\epsilon] rt(θ)∈[1−ϵ,1+ϵ]

    实现简单、稳定性好,因此成为工程上最流行的 on-policy 算法之一。


8. PPO 的优势总结(为什么它常用)

  • 稳定性强:clip 机制有效抑制过度更新,训练更平滑;
  • 实现容易:不需要 TRPO 的二阶近似与复杂求解;
  • 适合高维连续动作:与深度网络结合自然;
  • 探索-利用平衡更好:常配合熵正则避免策略过早确定;
  • 样本效率相对更好:重要性采样 + 多轮 epoch 训练可以更充分利用采样数据(仍属于 on-policy 范畴,但比最原始策略梯度更"耐用")。

9. 小结:把直觉串起来

  • 策略梯度想做的是:优势为正的动作概率上升、优势为负的动作概率下降。
  • 直接大步更新风险很高:深度策略可能突然崩坏。
  • TRPO 用 KL 约束定义信赖域,让每次更新不离旧策略太远,但实现复杂。
  • PPO 用 clip 近似信赖域:限制 ratio 的变化范围,让更新"近端化",稳定且易实现。
  • GAE 为优势估计提供连续可调的偏差-方差折中,使 PPO 的训练更稳定、更高效。

这一整套组合(PPO-Clip + GAE + value loss + entropy bonus)构成了现代深度强化学习中最常用、最稳定的 on-policy 策略优化范式之一。

相关推荐
艾醒(AiXing-w)1 小时前
打破信息差——2026年2月19日AI热点新闻速览
人工智能
小雨中_1 小时前
2.5 动态规划方法
人工智能·python·深度学习·算法·动态规划
癫狂的兔子1 小时前
【Python】【机器学习】DBSCAN算法
人工智能·机器学习
归一码字1 小时前
DDPG手写讲解
人工智能·pytorch
得一录1 小时前
Transformer架构的工作原理
深度学习·面试·aigc
癫狂的兔子1 小时前
【Python】【机器学习】决策树
python·决策树·机器学习
skywalk81631 小时前
windows下安装使用comfy
人工智能
天云数据1 小时前
年末回顾:从鹦鹉到乌鸦,天云数据2025智能进化与产业深耕
人工智能
智算菩萨2 小时前
【Python小游戏】基于Pygame的递归回溯迷宫生成与BFS寻路实战:从算法原理到完整游戏架构的深度解析
python·算法·pygame