PPO(Proximal Policy Optimization,近端策略优化)
3 秒看懂
PPO 是一种强化学习策略梯度算法,核心思想极其简单:每次更新策略时,用一个“剪切(clip)”机制把更新幅度锁死在一个安全区间内,既保证学习效率,又防止策略“跑飞”。它是 ChatGPT/RLHF 训练流程中策略模型更新的核心引擎,也是当前大模型对齐(alignment)阶段最主流的 RL 算法。
3 分钟产业解释
它为什么重要?
在大模型训练管线中,预训练(Pre-training)之后是人类反馈对齐(RLHF)。RLHF 的第三步——用人类偏好信号微调语言模型——就需要一个 RL 算法来“拉近”模型输出与人类偏好的距离。PPO 因其实现简单、训练稳定、样本效率尚可,成为 OpenAI(GPT-4、ChatGPT)、Anthropic、Google DeepMind 等头部机构在 RLHF 中的默认选择。
产业位置:
人类标注偏好数据 → 训练奖励模型(Reward Model) → PPO 优化语言模型策略
↑
你在这里:RL 微调阶段
规模印象: 对齐一个 70B+ 参数的大模型,PPO 训练阶段需要同时在显存中维护 4 个模型副本(策略模型 π_θ、参考模型 π_ref、奖励模型 RM、价值模型 V),这意味着 PPO 的 RLHF 阶段对 GPU 显存的需求约为 SFT 阶段的 3-4 倍 [产业经验估算]。
15 分钟专家深入
1. PPO 解决了什么问题?
强化学习策略梯度方法(如 REINFORCE、Vanilla Policy Gradient)面临一个核心矛盾:
- 步子太小 → 学得慢、样本效率低
- 步子太大 → 策略性能可能剧烈崩塌(catastrophic collapse)
前人的解决方案是 TRPO(Trust Region Policy Optimization,Schulman et al., 2015),通过在目标函数中加入 KL 散度约束 限制新旧策略的偏离幅度。但 TRPO 需要计算 Fisher 信息矩阵的逆(二阶优化),实现复杂、计算昂贵、难以与共享参数的架构(如带 Value Head 的网络)兼容。
PPO 的核心贡献:用一个极其简单的 clipped surrogate objective 替代 TRPO 的 KL 约束,得到一阶优化即可工作、实现门槛极低、效果与 TRPO 持平甚至更优的算法。
2. 核心公式(PPO-Clip,最广泛使用的变体)
令:
- r_t(θ) = π_θ(a_t | s_t) / π_θ_old(a_t | s_t) — 新旧策略的概率比(probability ratio)
- A_t — 广义优势估计(GAE, Generalized Advantage Estimation)
- ε — 剪切参数(通常 ε = 0.1 ~ 0.2)
PPO-Clip 的目标函数:
L^CLIP(θ) = E_t [ min( r_t(θ) * A_t, clip(r_t(θ), 1-ε, 1+ε) * A_t ) ]
直觉解读:
| 情况 | A_t > 0(当前动作好于平均) | A_t < 0(当前动作差于平均) |
|---|---|---|
| r_t → 偏大(新策略大幅提升该动作概率) | 被 clip 限制在 1+ε,防止过度偏移 | — |
| r_t → 偏小(新策略大幅降低该动作概率) | — | 被 clip 限制在 1-ε,防止过度偏移 |
本质:只在“安全区”内更新,出了安全区就踩刹车。
3. 完整训练损失
实际使用中,PPO 的总损失通常包含三项:
L(θ) = L^CLIP(θ) - c₁ * L^VF(θ) + c₂ * S[π_θ](s_t)
- L^CLIP — 上述策略剪切目标
- L^VF — 价值函数损失(MSE 或 Huber loss)
- S — 熵奖励(entropy bonus),鼓励探索,防止策略过早坍缩为确定性策略
- c₁, c₂ — 超参数,通常 c₁ ~ 0.5, c₂ ~ 0.01 [原论文推荐范围]
4. 广义优势估计(GAE)
PPO 使用 GAE(Schulman et al., 2016)来估计 A_t:
Â_t = Σ_{l=0}^{∞} (γλ)^l * δ_{t+l}
其中 δ_t = r_t + γV(s_{t+1}) - V(s_t) (TD 误差)
- γ — 折扣因子(discount factor),通常 0.99
- λ — GAE 参数,控制偏差-方差权衡,通常 0.95
λ = 0 退化为单步 TD(低方差、高偏差),λ = 1 退化为蒙特卡洛回报(高方差、低偏差)。GAE 在两者之间平滑插值。
5. PPO 在 RLHF 中的实现
在 LLM-RLHF 场景中,PPO 的状态/动作/奖励需要重新定义:
| RL 概念 | RLHF 中的对应 |
|---|---|
| 状态 s_t | Prompt + 已生成的 token 序列 (x, y_{<t}) |
| 动作 a_t | 下一个 token y_t |
| 策略 π_θ | 语言模型(待优化) |
| 奖励 R | 奖励模型对完整回复的评分(通常在序列末尾给出) |
| 参考策略 π_ref | SFT 阶段的冻结模型副本 |
KL 惩罚: 在 RLHF 中,还会在奖励中加入 KL 散度惩罚项:
R_t = R_φ(x, y) - β * log[π_θ(y_t|x, y_{<t}) / π_ref(y_t|x, y_{<t})]
β 控制策略不偏离参考模型太远的程度,防止 reward hacking(奖励模型被钻空子)。
6. 为什么 PPO 能“霸占” RLHF?
| 优势 | 说明 |
|---|---|
| 实现简单 | ~50 行核心代码,无需二阶优化器 |
| 训练稳定 | clip 机制天然防崩塌 |
| 兼容性强 | 一阶梯度,与标准 PyTorch/TensorFlow 训练循环无缝集成 |
| 可扩展 | 已被证明可在数千 GPU 上稳定训练 [OpenAI 实践] |
| on-policy 但可容忍适度过时 | 通常一个 batch 更新若干个 epoch(mini-batch),不必严格 on-policy |
技术原理(最深)
算法流程伪代码
初始化策略网络 π_θ(语言模型 + 可选 value head)
加载参考模型 π_ref(冻结)
for iteration = 1, 2, ... do:
# ---- 采集阶段 (Rollout) ----
对一批 prompt {x_i}:
从 π_θ 采样生成回复 y_i ~ π_θ(·|x_i)
用奖励模型计算 R_φ(x_i, y_i)
计算 KL 惩罚后的奖励 r_t
用价值网络 V_ψ 估计 V(s_t)
计算 GAE 优势 Â_t
# ---- 更新阶段 (Update) ----
对数据跑 K 个 epoch(通常 K=2~4):
将 rollout 数据分为 mini-batch
对每个 mini-batch:
计算 r_t(θ) = π_θ(a_t|s_t) / π_θ_old(a_t|s_t)
L_clip = min(r_t * Â_t, clip(r_t, 1-ε, 1+ε) * Â_t)
L_vf = MSE(V_ψ(s_t), R_t^target) # 或 Huber
L = -L_clip + c₁*L_vf - c₂*Entropy
θ ← θ - α * ∇_θ L
π_θ_old ← π_θ
关键超参数
| 超参数 | 典型值 | 作用 |
|---|---|---|
| ε (clip range) | 0.2 | 限制概率比偏离 1±ε |
| γ (discount) | 0.99~1.0 | RLHF 中常设为 1.0(无折扣) |
| λ (GAE) | 0.95 | 偏差-方差权衡 |
| K (epochs per batch) | 2~4 | 每批数据复用次数 |
| mini-batch size | 视 GPU 内存 | |
| learning rate | 1e-6 ~ 5e-6 | 比 SFT 阶段小 1~2 个数量级 |
| c₁ (vf coeff) | 0.5 | 价值损失权重 |
| c₂ (entropy coeff) | 0.01 | 熵奖励权重 |
| β (KL penalty) | 0.01~0.1 | 奖励中 KL 惩罚系数 |
PPO 的四个模型并行显存需求
┌──────────────────────────────────────────────┐
│ RLHF PPO 显存布局 (单节点示意) │
├──────────────────────────────────────────────┤
│ π_θ (策略模型, 训练模式) ← 全精度 + 梯度 │
│ π_ref (参考模型, 推理模式) ← 冻结, 可半精度 │
│ R_φ (奖励模型, 推理模式) ← 冻结, 可半精度 │
│ V_ψ (价值模型, 训练模式) ← 全精度 + 梯度 │
│ + 优化器状态 (Adam: ~2x 参数量) │
│ + 激活值 / KV cache │
└──────────────────────────────────────────────┘
对于 7B 模型:4×7B 参数(其中 2 个需梯度和优化器状态) ≈ 需要 多节点分布式训练 [产业实践估算]。
优化手段: DeepSpeed-Chat、TRL (Hugging Face)、OpenRLHF 等框架通过模型并行、LoRA、模型 offload 等技术降低显存压力。
技术演进史
1992 REINFORCE (Williams, 1992) — 奠基
│
2016 A3C (Mnih et al.) — 异步 Actor-Critic, Atari 突破
│
2015 TRPO (Schulman et al.) — 信赖域, KL 约束, 二阶优化
│
2016 GAE (Schulman et al.) — 广义优势估计
│
2017.07 ★ PPO (Schulman et al., OpenAI) — 剪切替代, 一阶优化
│ 论文: arXiv:1707.06347
│
2017~2020 PPO + 玩游戏 (OpenAI Five / Hide-and-Seek)
│
2022.01 InstructGPT (Ouyang et al.) — PPO 用于 RLHF, 开启 LLM 对齐时代
│
2022.11 ChatGPT — PPO-RLHF 大规模落地
│
2023~2024 PPO 变体与替代探索:
• DPO (Direct Preference Optimization) — 2023, 去掉 RM+PPO
• RLOO (Leave-One-Out REINFORCE) — 2024, 更简单的替代
• GRPO (Group Relative Policy Optimization) — DeepSeek, 2024
• KTO, IPO, ORPO 等 — 各种简化对齐方案
│
2024~2025 PPO 仍在 Anthropic、OpenAI 等头部机构的核心 RLHF 流程中使用;
同时 DPO/GRPO 等简化方案在中小规模模型中快速渗透
技术路线对比
| 维度 | PPO | DPO | GRPO | RLOO (REINFORCE-LOO) |
|---|---|---|---|---|
| 是否需要奖励模型 | ✅ 需要 | ❌ 不需要 | ❌/可选 | ✅/可选 |
| 需要的价值网络 | ✅ 需要 (Vψ) | ❌ 不需要 | ❌ 不需要 | ❌ 不需要 |
| 显存需求 | 极高 (4 模型) | 低 (1~2 模型) | 中 (2~3 模型) | 中 |
| 在线生成 | ✅ 需要 | ❌ 不需要 (离线) | ✅ 需要 | ✅ 需要 |
| 在线/离线 | On-policy | Off-policy | On-policy | On-policy |
| 训练稳定性 | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 理论上界 | 高(可持续在线学习) | 受限于离线数据分布 | 高 | 高 |
| 工程复杂度 | 高 | 低 | 中 | 中 |
| 主流使用者 | OpenAI, Anthropic | 学术界 & 中小厂 | DeepSeek | Meta 等 |
| 适用规模 | 超大模型 (百亿+) | 中小模型为主 | 大模型 | 各规模 |
| 代表论文 | Schulman et al., 2017 | Rafailov et al., 2023 | Shao et al., 2024 (DeepSeek) | Ahmadian et al., 2024 |
关键判断: 在超大规模模型 + 需要持续迭代的场景(如前沿实验室的旗舰模型),PPO 或 PPO 变体仍是当前的实践主流;在资源受限或数据已充分的场景,DPO 及其变体正快速渗透。
上下游
上游依赖
| 环节 | 内容 | 关键供应商/技术 |
|---|---|---|
| 预训练模型 | PPO 优化的对象(LLM) | OpenAI, Anthropic, Meta, DeepSeek 等 |
| SFT 模型 | PPO 的初始化和参考模型 π_ref | 人类指令微调后的模型 |
| 奖励模型 | 提供训练信号 R(x,y) | 基于人类偏好数据训练 |
| 人类偏好数据 | 奖励模型的训练数据 | 众包标注 (Scale AI, Surge 等) |
| RL 框架 | 分布式训练基础设施 | TRL, DeepSpeed-Chat, OpenRLHF, verl |
| GPU/算力 | PPO 显存密集 | NVIDIA H100/H200, 互联 NVLink/NVSwitch |
下游应用
| 领域 | 具体应用 |
|---|---|
| LLM 对齐 | ChatGPT, Claude, Gemini 等对话模型的 RLHF |
| 代码生成 | 代码正确性奖励信号的 RL 微调 |
| 推理增强 | 基于过程/结果奖励的推理能力强化 (如数学推理) |
| 游戏 AI | OpenAI Five (Dota 2), Hide-and-Seek |
| 机器人控制 | 模拟到真实的策略迁移 |
| RL 代理 | 通用自主代理 (Agent) 的行为优化 |
关键指标
| 指标 | 含义 | 参考范围 |
|---|---|---|
| KL(π_θ ‖ π_ref) | 策略偏离参考模型的程度 | 训练中通常控制在 |
| Reward Score | 奖励模型对生成回复的评分 | 随训练单调上升(警惕 reward hacking) |
| Clip Fraction | 被 clip 机制截断的比例 | 健康值 |
| Value Loss | 价值网络预测误差 | 监控收敛 |
| Entropy | 策略的输出熵 | 持续下降 → 可能过早坍缩 |
| Approx KL | 每步实际 KL 散度 | 用于自适应调整 β |
| Win Rate vs SFT | PPO 模型对 SFT 模型的胜率 | 好的 PPO 训练应稳定提升至 > 60~70% |
| Generation Throughput | 采样阶段每秒 token 数 | PPO 瓶颈常在采样阶段 |
供需与市场数据
算力需求估算
| 模型规模 | PPO-RLHF 所需 GPU 数量(估算) | 备注 |
|---|---|---|
| 7B | 8~32 × H100 [行业估算] | 取决于序列长度、batch size |
| 70B | 128~512 × H100 [行业估算] | 模型并行 + 数据并行 |
| 175B+ | 数千张 H100 级别 [行业估算] | OpenAI/Anthropic 级别投入 |
PPO 的 RLHF 阶段对算力的消耗约占整个模型训练生命周期的 5~15% [产业经验估算],但由于需要在线生成和多模型共存,单位时间的 GPU 利用率显著低于预训练。
市场影响
- OpenAI 的 ChatGPT 训练管线中 PPO 是核心组件,推动了 2023~2024 年 RLHF 工具链的爆发式需求
- Hugging Face TRL 库(开源 PPO 实现)Star 数已超 10,000+ [GitHub 数据]
- 围绕 PPO 训练优化的创业公司和开源项目持续涌现:OpenRLHF、verl(字节跳动)等
代表公司与资本映射
| 公司/机构 | 角色 | 与 PPO 的关系 |
|---|---|---|
| OpenAI | 发明者 + 最大用户 | PPO 论文原团队;ChatGPT/GPT-4 系列的核心训练算法 |
| Anthropic | 核心用户 | Claude 系列使用 PPO-based RLHF(宪法 AI 等变体) |
| Google DeepMind | 用户 + 改进者 | Gemini 等模型的对齐管线 |
| DeepSeek (深度求索) | 改进者 | 提出 GRPO 作为 PPO 的轻量替代方案 |
| Meta | 用户 + 推动开源 | LLaMA 系列的 RLHF 实践 |
| Hugging Face | 开源工具 | TRL 库提供 PPO 实现 |
| NVIDIA | 基础设施 | GPU + NeMo 框架支持 PPO 分布式训练 |
| Microsoft | 基础设施 + 用户 | DeepSpeed-Chat 提供 PPO 训练加速 |
产业映射逻辑
产业映射方向
| 方向 | 逻辑 | 代表环节/实体 |
|---|---|---|
| GPU 算力 | PPO 在线生成阶段是算力密集型 | NVIDIA, AMD, 国产算力 |
| RLHF 工具链 | PPO 工程复杂度催生工具需求 | Hugging Face (私有), Anyscale 等 |
| 对齐数据 | PPO 的上游——高质量人类偏好标注 | Scale AI, Surge, 各类标注公司 |
| 推理芯片 | PPO 的 rollout 阶段本质是大规模推理 | 推理优化芯片/GPU 云 |
风险点
- PPO 可能被更简单的算法替代:DPO、GRPO、KTO 等不需要 4 个模型的方案正在快速成熟,尤其在中小模型场景
- 奖励模型是瓶颈:PPO 只能和奖励模型一样好,reward hacking 是持续挑战
- 超参数敏感:PPO 的 ε、lr、β、GAE 参数等需要大量调优,在新场景迁移成本高
- RLHF 范式本身可能被颠覆:如 Constitutional AI、RLAIF、过程奖励模型等新范式可能减少对传统 PPO-RLHF 的依赖
关键判断
短期(1-2 年):PPO 在头部实验室的旗舰大模型对齐中仍不可替代,因为其在线学习能力理论上优于离线方法。 中期(2-3 年):DPO/GRPO 系列可能在大部分场景取代 PPO;PPO 退守超大模型、持续学习等特定场景。 长期:对齐范式可能发生根本变革,但“策略梯度 + 信任域”的核心思想大概率会长存。
常见误读纠偏
误读 1:「PPO 不需要奖励模型」
纠偏: PPO 本身是强化学习算法,它需要一个标量奖励信号。在标准 RLHF 中,这个信号来自奖励模型(Reward Model)。是 DPO 算法通过数学推导将奖励模型隐式地合并到了策略损失中,从而去掉了显式的 RM。PPO 做不到这一点。不要把 DPO 的特性安到 PPO 上。
误读 2:「PPO 是 TRPO 的简化版,效果差一些」
纠偏: PPO 原论文的实验显示,PPO-Clip 的性能在多数基准上持平甚至优于 TRPO [Schulman et al., 2017]。PPO 的“简化”是工程上的简化(一阶优化替代二阶),不是性能上的妥协。后续大规模实践中(Atari、MuJoCo、机器人、LLM RLHF),PPO 已全面取代 TRPO。
误读 3:「PPO 的 clip 机制就是在限制 KL 散度」
纠偏: Clip 限制的是概率比 r_t(θ),而非直接限制 KL 散度。虽然 r_t 的偏离与 KL 散度相关,但两者不是同一个东西。PPO 原论文也提供了 PPO-Penalty 变体(直接用 KL 做惩罚),但实验表明 PPO-Clip 效果更好且更稳定。Clip 是一个更“粗暴”但更有效的机制。
误读 4:「PPO 是 on-policy 算法,所以数据不能复用」
纠偏: PPO 确实是近似 on-policy 的,但在实践中 一个 batch 的数据通常会跑 K=2~4 个 epoch 的 mini-batch 更新。这种“有限复用”正是 PPO 名字中“Proximal”(近端)的含义——只要更新幅度不太大,旧数据暂时还能用。但 K 过大(如 >10)会导致严重偏差,训练不稳定。
误读 5:「DPO 出现后 PPO 就过时了」
纠偏: DPO 有明确的局限性:(1) 离线算法,受数据分布限制,无法在线探索;(2) 在超大规模模型上,目前缺乏与 PPO-RLHF 可比的大规模验证;(3) Anthropic 的研究表明,在线 RL 方法(如 PPO 变体)在复杂任务上优于离线方法。头部前沿实验室目前仍以 PPO 或其变体为主力。
学习路径
入门(2~4 小时)
- 📖 阅读 Lilian Weng 的博客 “Policy Gradient Algorithms” — 最好的中文/英文入门综述之一
- 🎥 看 OpenAI Spinning Up 的 PPO 页面和相关教程
进阶(1~2 天)
- 📄 精读原论文:Schulman et al., “Proximal Policy Optimization Algorithms”, arXiv:1707.06347 (2017)
- 📄 阅读 InstructGPT 论文:Ouyang et al., “Training language models to follow instructions with human feedback”, NeurIPS 2022
- 🔧 使用 Hugging Face TRL 库跑一个小型 PPO-RLHF demo(如对 GPT-2 做情感对齐)
专家(持续)
- 📄 研读 DPO 论文(Rafailov et al., 2023)理解 PPO 的替代方案
- 📄 研读 GRPO 论文(Shao et al., 2024, DeepSeek)
- 🔧 阅读 OpenRLHF、verl 等开源框架的源码,理解大规模分布式 PPO 的工程实现
- 📄 阅读 Anthropic 关于 Constitutional AI 和 RLHF scaling 的技术报告
一句话总结
PPO 是用“剪切”这个最小巧的机制驯服了策略梯度的不稳定性,从而成为大模型 RLHF 对齐阶段事实标准的 RL 算法——它的核心思想只有一行公式,但围绕这一行公式展开的工程生态支撑了整个 LLM 对齐产业。
延伸阅读与来源
| 来源 | 说明 |
|---|---|
| Schulman et al., “Proximal Policy Optimization Algorithms”, arXiv:1707.06347 (2017) | PPO 原始论文 |
| Ouyang et al., “Training language models to follow instructions with human feedback” (InstructGPT), NeurIPS 2022 | PPO 用于 RLHF 的里程碑工作 |
| Rafailov et al., “Direct Preference Optimization: Your Language Model is Secretly a Reward Model”, NeurIPS 2023 | DPO,PPO 的主要替代方案 |
| Shao et al., “DeepSeekMath: Pushing the Limits of Mathematical Reasoning…”, 2024 | GRPO 提出论文 |
| Ahmadian et al., “Back to Basics: Revisiting REINFORCE Style Optimization for Learning from Human Feedback in LLMs”, ACL 2024 | RLOO,将 PPO 与简单 REINFORCE 变体对比 |
| Hugging Face TRL 文档: https://huggingface.co/docs/trl | 开源 PPO 实现参考 |
| OpenAI Spinning Up: https://spinningup.openai.com | RL 基础教程 |
| Lilian Weng Blog, “Policy Gradient Algorithms” | 中英文社区广泛引用的综述 |
| DeepSpeed-Chat 文档 | 微软分布式 PPO 训练方案 |
⚠️ 声明: 本页涉及的显存需求、GPU 数量、训练成本等数字均为产业经验估算或定性描述,因厂商未充分披露具体训练配置,精确数字可能有显著偏差。PPO 核心算法描述基于原论文及开源实现,属公共领域知识。