02 PPO 算法数学推导

Lingfeng2026-04-03

02 PPO 算法数学推导

PPO(Proximal Policy Optimization)是 RLHF 中最常用的强化学习算法。本文从 TRPO 讲起,逐步推导 PPO 的两种形式:PPO-Penalty 和 PPO-Clip。

1. 问题:Policy Gradient 的不稳定性

1.1 直接 Policy Gradient 的问题

基础的 Policy Gradient 更新:

问题:如果步长 太大,策略可能剧烈变化,导致:

  1. 性能骤降:新策略比旧策略差很多
  2. 难以恢复:一旦策略变差,可能进入"坏区域"就回不来了
  3. 训练不稳定:性能曲线剧烈震荡

1.2 直观理解

想象你在山上找最低点:

  • 太小的步子:走得慢
  • 太大的步子:可能直接跳到另一座山上

策略优化也一样,我们需要控制步长

2. TRPO:Trust Region Policy Optimization

2.1 核心思想

TRPO 的核心思想:在信任域内更新策略

解释

  • 目标:最大化期望优势(用重要性采样)
  • 约束:新策略不能离旧策略太远(KL 散度约束)

2.2 为什么用 KL 散度?

KL 散度约束等价于限制策略在"信任域"内:

这保证了:

  1. 重要性权重 接近 1
  2. 重要性采样的估计方差小
  3. 策略更新平滑

2.3 TRPO 的求解:拉格朗日乘子法

将约束优化转化为无约束优化:

其中 是拉格朗日乘子。

2.4 TRPO 的实际计算

使用共轭梯度法求解自然梯度方向:

  1. 计算策略梯度
  2. 用共轭梯度法估算 是 KL 散度的 Hessian 矩阵)
  3. 求更新步长使得 KL 约束刚好满足

优点:理论保证单调不减

缺点:计算复杂,共轭梯度法耗时

3. PPO:简化 TRPO

3.1 PPO 的核心创新

PPO 的核心思想:用简单方法近似 TRPO 的约束效果

TRPO 的约束条件难以计算。PPO 提出两种简化方案:

  1. PPO-Penalty:把 KL 约束转化为惩罚项
  2. PPO-Clip:直接裁剪重要性权重

4. PPO-Penalty

4.1 目标函数

将 KL 散度约束转化为目标函数中的惩罚项:

其中 是惩罚系数。

4.2 自适应调整

PPO-Penalty 会自动调整

  • 如果 KL 散度 > 目标值 :增大 (更严格惩罚)
  • 如果 KL 散度 < 目标值 / 2:减小 (放松惩罚)

这保证 KL 散度始终在合理范围内。

4.3 问题

虽然比 TRPO 简单,但:

  1. 仍需计算 KL 散度
  2. 超参数 的调整增加了复杂性

5. PPO-Clip:最常用的形式

5.1 核心思想

直接裁剪重要性权重,防止它偏离 1 太远。

定义重要性权重

5.2 PPO-Clip 目标函数

其中:

  • :重要性权重
  • :估计的优势函数
  • :裁剪范围(通常 0.1 或 0.2)
  • :把 限制在 范围内

5.3 逐步推导 PPO-Clip

Step 1:普通 Policy Gradient 目标

问题:如果 很大,更新可能太激进。

Step 2:为什么要裁剪?

考虑两种情况:

情况 A:(动作好于平均)

我们想增大 ,即增大

但如果不限制, 可能变得很大,导致策略剧烈变化。

情况 B:(动作差于平均)

我们想减小 ,即减小

同样, 可能变得很小,策略剧烈变化。

Step 3:Clip 的作用

对于

  • 目标函数是 ,想增大
  • 但 clip 后, 时,项变为 ,不再增大
  • 这限制了策略更新的幅度

对于

  • 目标函数是 ,想减小
  • 但 clip 后, 时,项变为 ,不再减小
  • 同样限制了策略更新的幅度

Step 4:为什么用 min?

取 min 保证:

  • 保守估计:当更新过于激进时,目标函数不会"欺骗"优化器
  • 稳定性:即使优化器想往极端方向走,目标函数也不给奖励

5.4 详细图解

情况 1:

L (目标函数)

│        /
│       /
│──────*──────────  clip后变成常数 (不再上升)
│      /
│     /
│    /
└───────────────── r_t(θ)
    1-ε   1   1+ε
  • :目标 ,增大
  • :目标 ,不再增大(被 clip 了)

情况 2:

L (目标函数)

│    / 
│   /  
│  /   
│─*────────────── clip后变成常数 (不再下降)
│ │
│  \
│   \
└───────────────── r_t(θ)
    1-ε   1   1+ε
  • :目标 (负值),减小
  • :目标 ,不再减小(被 clip 了)

5.5 PPO-Clip 的直觉

核心思想:信任域的软约束

  • 控制"信任域"大小: 的差异限制在
  • 但不是硬约束,而是通过目标函数"软"实现

为什么叫"Proximal"?

"Proximal" 意为"近端的",强调新策略应靠近旧策略。

6. 完整 PPO 算法

6.1 算法伪代码

PPO-Clip 算法:
输入:初始策略参数 θ_0,价值函数参数 φ_0
超参数:裁剪参数 ε,学习率 α,GAE 参数 λ,折扣因子 γ

For iteration = 1, 2, ...:
    1. 收集数据:
       用当前策略 π_θ_actor 生成 N 条轨迹
    
    2. 计算优势估计(GAE):
       For each t:
           δ_t = r_t + γ V_φ(s_{t+1}) - V_φ(s_t)
           Â_t = Σ_{l=0}^{∞} (γλ)^l δ_{t+l}
    
    3. 更新策略(多轮 epoch):
       For epoch = 1, ..., K:
           L^CLIP(θ) = 𝔼_t [min(r_t(θ)Â_t, clip(r_t(θ), 1-ε, 1+ε)Â_t)]
           θ ← θ + α ∇_θ L^CLIP(θ)
    
    4. 更新价值函数:
       L^VF(φ) = 𝔼_t [(V_φ(s_t) - V_t^{target})²]
       φ ← φ - α ∇_φ L^VF(φ)

6.2 目标函数完整形式

实践中,PPO 的目标函数通常包含三项:

其中:

  • :PPO-Clip 目标(策略优化)
  • :价值函数损失
  • :熵奖励(鼓励探索)
  • :系数

7. PPO vs TRPO 对比

特性TRPOPPO-ClipPPO-Penalty
KL 约束方式硬约束 + 共轭梯度Clip 软约束惩罚项
计算复杂度高(共轭梯度)
实现复杂简单中等
理论保证强(单调不减)
工程实际少用最常用较少

8. PPO 在 RLHF 中的应用预告

在 RLHF 中,PPO 需要特化处理:

  1. 奖励信号:不是环境奖励,而是 Reward Model 给出的奖励
  2. KL 惩罚:额外添加 KL 约束,防止模型偏离预训练分布
  3. 特殊目标函数

其中 是参考模型(通常是 SFT 模型)。

这些细节将在 03_rlhf.md 中详细展开。

9. 总结

概念公式作用
重要性权重重用旧样本
KL 约束限制策略变化
TRPO 目标 s.t. KL 约束有理论保证
PPO-Clip 目标简化实现
裁剪范围控制更新步长

PPO 的核心贡献:用简单的 Clip 操作近似复杂的 KL 约束,实现高效稳定的策略优化。

10. 参考文献

  1. Schulman, J., et al. (2015). "Trust Region Policy Optimization." ICML.
  2. Schulman, J., et al. (2017). "Proximal Policy Optimization Algorithms." arXiv:1707.06347.
  3. Kakade, S., & Langford, J. (2002). "Approximately Optimal Approximate Reinforcement Learning." ICML.
Last Updated 4/3/2026, 4:40:46 PM