跳转到内容

TRPO 与 PPO

策略更新过大会导致性能崩溃。TRPO 用 KL 约束的二阶方法保证单调改进;PPO 用裁剪的目标函数以一阶方法近似之。本章推导替代目标、解释裁剪的作用,并讨论 PPO 实际效果高度依赖实现细节这一事实。

on-policy 方法用当前数据更新策略,数据的有效性以"策略没怎么变"为前提。学习率一大、更新一远,新策略就偏离了产生数据的分布,优势估计失效,性能瞬间崩溃且难以恢复(策略可能掉进很差的区域,再也采不出好数据)。监督学习没有这个问题(数据固定),RL 特有。

TRPO(Schulman et al., 2015)的思路:优化一个替代目标(surrogate objective)——用旧策略 πθold\pi_{\theta_{\text{old}}} 的数据估计新策略的表现:

L(θ)=Es,a∼πold[ πθ(a∣s)πold(a∣s) Aπold(s,a)],L(\theta) = \mathbb{E}_{s, a \sim \pi_{\text{old}}}\Big[\, \frac{\pi_\theta(a \mid s)}{\pi_{\text{old}}(a \mid s)}\, A^{\pi_{\text{old}}}(s, a) \Big],

其中比值 ρ(θ)=πθ/πold\rho(\theta) = \pi_\theta / \pi_{\text{old}} 是重要性权重。数学上可证明(Kakade & Langford 的保守策略迭代):在旧策略附近,替代目标的改进近似真实改进;且存在 α\alpha 使 πold\pi_{\text{old}} 的 KL 邻域内单调改进。TRPO 把"附近"写成硬约束:

max⁡θ L(θ)s.t.E[ KL(πold ∥ πθ)]≤δ.\max_\theta\ L(\theta) \quad \text{s.t.} \quad \mathbb{E}\big[\, \mathrm{KL}\big(\pi_{\text{old}} \,\|\, \pi_\theta\big) \big] \le \delta.

这是一个带约束的二阶优化(KL 的二阶近似 = Fisher 信息矩阵,用共轭梯度求解)。理论上优雅,实现复杂。

PPO(Schulman et al., 2017)观察到:限制更新幅度不必用约束优化,直接把目标函数在超过阈值的地方压平即可。PPO-clip 的目标:

L(θ)=E[ min⁡( ρt(θ) At, clip(ρt(θ), 1−ϵ, 1+ϵ) At )],L(\theta) = \mathbb{E}\Big[\, \min\big(\, \rho_t(\theta)\, A_t,\ \mathrm{clip}\big(\rho_t(\theta),\ 1-\epsilon,\ 1+\epsilon\big)\, A_t \,\big) \Big],

其中 ρt(θ)=πθ(at∣st)/πold(at∣st)\rho_t(\theta) = \pi_\theta(a_t \mid s_t) / \pi_{\text{old}}(a_t \mid s_t)。裁剪的作用分两个方向:

  • 正优势、ρ\rho 过大(新策略把好动作概率提得太高):目标被截断,梯度消失,不再鼓励继续提高——防止一步走太远;
  • 负优势、ρ\rho 过小:同样截断,不再鼓励继续压低坏动作的概率。

min 保证截断后的目标不高于未截断版本,即只截"过度自信"的方向。PPO 是一阶方法(Adam 即可),实现简单,效果与 TRPO 相当,迅速成为默认算法。

ratio = exp(log_pi_new - log_pi_old) # 重要性权重 ρ_t
surr1 = ratio * advantage
surr2 = clamp(ratio, 1 - eps, 1 + eps) * advantage
loss = -mean(min(surr1, surr2)) # 再加价值损失与熵奖励

PPO 的性能高度依赖实现细节——同一伪代码在不同代码库中的表现差异可以超过算法之间的差异(→ 评估协议与可复现性)。Huang 等人整理的 "37 Implementation Details" 中影响最大的:

  • 优势归一化:每个 minibatch 把 A^\hat{A} 标准化(减均值除标准差)——几乎必需;
  • 价值裁剪:价值损失也做类似 clip 的截断;
  • 学习率退火与线性衰减;
  • 多次 epoch 重用数据(通常 3–10 个 epoch,clip 限制每次的偏移量);
  • 正交初始化、梯度裁剪、熵奖励系数。

PPO 在游戏中是竞争者之一,在 RLHF 中是默认算法(InstructGPT 之后):token 级 MDP、四个模型并存的基础设施(→ PPO for LLM)、以及裁剪目标对小批量高噪声梯度的稳健性,都让它适合大模型后训练。KL 约束思想(信任域)在这里以逐 token KL 惩罚的形式延续(→ KL 惩罚 / 信任域)。

  • PPO-clip 的目标:min⁡(rtAt,clip(rt,1±ϵ)At)\min(r_t A_t, \mathrm{clip}(r_t, 1\pm\epsilon) A_t)
  • 优势归一化、价值裁剪、学习率退火等细节影响巨大
  • PPO 是 RLHF 的默认算法