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 核心演算法描述基於原論文及開源實現,屬公共領域知識。