1.4 PPO — 经典策略优化基础¶
论文:PPO
Proximal Policy Optimization Algorithms (Schulman et al., 2017) 地位: 整条演进路线的起点,ChatGPT/InstructGPT 的核心算法
核心思想¶
PPO 的目标是:在更新策略时,不要走得太远——通过一个裁剪的替代目标函数 (clipped surrogate objective) 平衡探索与稳定。
核心公式¶
\[
\mathcal{J}_{\text{PPO}}(\theta) = \mathbb{E}_{q \sim P(Q),\, o \sim \pi_{\theta_{\text{old}}}(\cdot|q)} \left[ \frac{1}{|o|} \sum_{t=1}^{|o|} \min \left( r_t(\theta) \hat{A}_t, \; \text{clip}\big(r_t(\theta),\, 1-\varepsilon,\, 1+\varepsilon\big) \hat{A}_t \right) \right]
\]
其中:
- 重要性采样比率: \(r_t(\theta) = \frac{\pi_\theta(o_t \mid q, o_{<t})}{\pi_{\theta_{\text{old}}}(o_t \mid q, o_{<t})}\)
- 优势函数 \(\hat{A}_t\) 由 GAE (Generalized Advantage Estimation) 计算:
\[
\hat{A}_t^{\text{GAE}(\gamma, \lambda)} = \sum_{l=0}^{T-t-1} (\gamma \lambda)^l \, \delta_{t+l}, \quad \delta_l = R_l + \gamma \, V_\psi(s_{l+1}) - V_\psi(s_l)
\]
- \(V_\psi\) 是价值网络 (Critic),一个与策略模型同等规模的独立网络
- \(\varepsilon\) 通常取 \(0.2\)
📖 初学者补充:PPO 的三个关键概念
- 策略 (Policy): 在 LLM 中,策略 \(\pi_\theta\) 就是模型本身——给定问题 \(q\) 和已生成的 token \(o_{<t}\),输出下一个 token \(o_t\) 的概率分布
- 重要性采样比率 \(r_t(\theta)\): 用旧策略采样的数据更新新策略时的偏差矫正系数。\(r_t = 1\) 表示新旧一致,\(r_t > 1\) 表示新策略更倾向于生成这个 token
- 优势函数 \(\hat{A}_t\): "这个动作比平均水平好多少"。\(\hat{A}_t > 0\) 表示该动作超出预期(鼓励),\(< 0\) 表示低于预期(抑制)
裁剪机制¶
min(r·A, clip(r)·A) 的效果是双向限制:
| 情况 | \(\hat{A}_t > 0\)(好动作) | \(\hat{A}_t < 0\)(坏动作) |
|---|---|---|
| \(r_t\) 太大 | 裁剪到 \(1+\varepsilon\),防止过度增加 | 不裁剪,允许自由减少 |
| \(r_t\) 太小 | 不裁剪,允许自由增加 | 裁剪到 \(1-\varepsilon\),防止过度减少 |
PPO 在 LLM 场景的问题¶
PPO 最初为游戏/机器人设计,在 LLM 场景中暴露了核心问题:
- 需要 4 个模型同时在 GPU 上: 策略模型 + 参考模型 + 奖励模型 + 价值网络(Critic),显存开销巨大
- Critic 训练困难: LLM 的奖励通常只在最后一个 token 给出(稀疏奖励),但 Critic 需要在每个 token 位置给出准确的价值估计
- 长序列中 Critic 不准: 对于长 Chain-of-Thought (CoT) 推理,Critic 估计的误差会累积
这些问题直接催生了 GRPO 的设计。