AI 工程從零開始|Phase 9:強化學習基礎 — RLHF 與遊戲 AI 的根基

大多數人以為強化學習只是遊戲 AI 的黑魔法; 實際上,RLHF 是讓 LLM 從「會說話」進化到「說對話」的核心技術。 大多數人以為 PPO 太複雜所以跳過; 實際上,理解 clip ratio ε=0.2 背後的直覺,才能真正設計對齊系統。


這篇給已經用 SFT 微調出一個會回答問題的模型、但還不知道「更符合人類期望」該怎麼訓練進去的工程師看。讀完你會能用 MDP 的語言描述 LLM 生成、說明 PPO 的 clip 與 KL 項各自在擋什麼、看懂 DPO 為什麼能繞過獎勵模型,並能為一個六週內要上線的對齊流程,從框架、資料、訓練穩定性與評估四個面向做出選擇。


一、核心問題:為什麼 LLM 需要強化學習

1.1 Supervised Fine-Tuning 的天花板

SFT(Supervised Fine-Tuning)本質是「模仿學習」——模型學習複製人類示範的文字。這個方法有三個根本限制:

限制一:示範資料的稀缺性

  • 高品質的完整對話示範成本極高(每條 $5–50 美元標注成本)
  • 1M 條示範資料 ≈ $5M–50M,難以覆蓋所有場景

限制二:偏好無法直接最大化

  • 人類知道「哪個回答更好」,但無法輕易寫出「最好的回答」
  • SFT 學的是「做什麼」,而非「為什麼這樣做最好」

限制三:分佈外泛化失敗

  • SFT 模型在訓練分佈外的 prompt 上容易退化
  • 模型無法自主探索比示範更優的解答

強化學習解決的核心問題是:讓模型在與環境(或人類偏好模型)互動的過程中,學習最大化長期獎勵。

1.2 RL 在 AI 對齊中的角色

傳統訓練流程(純 SFT):
  人類寫示範 ──▶ MLE 損失 ──▶ 模型複製行為
  問題:模型學的是「平均人類行為」,非「最優人類行為」

RLHF 訓練流程:
  人類比較偏好 ──▶ 獎勵模型 ──▶ PPO 最大化獎勵
  優勢:模型學的是「人類偏好的方向」,能超越示範品質

InstructGPT(ChatGPT 前身)論文的核心數字:

  • 1.3B InstructGPT 的輸出,人類評估者偏好程度高於 175B GPT-3(未經指令對齊的原始模型)
  • 同為 175B 時,InstructGPT 對 GPT-3 的勝率約 85%
  • 代表「對齊訓練(SFT + RLHF)」讓 100 倍小的模型贏過未對齊的大模型

二、何時該升級:從最小 RLHF 迴圈到生產對齊管線的觸發條件

最小的 RLHF 迴圈只需要四樣東西:一個凍結的 SFT policy 當參考模型、500–1K 對人工標注的偏好比較、一個 Bradley-Terry 獎勵模型、一個帶 KL 約束的 PPO 迴圈。它的目的只有一個——驗證偏好信號有效:RM 在 held-out 偏好對上的準確率要過 70%(§六),PPO 後的 WinRate 要明顯高於 SFT baseline。該把它升級成可重複的流水線的訊號是瓶頸從演算法移到資料與評估:RM 準確率因資料不足而停滯、每次 PPO 跑出來的結果不可重現(沒有固定的評估集與 WinRate 流程)、或獎勵黑客開始出現(§9.3 的症狀)而你沒有自動化的偵測。

第二道門檻是選路線而不是加機器。偏好資料已經在手、無法線上收集 → DPO 離線訓練就夠(§七);能持續收集線上偏好、需要模型不斷改進 → PPO 配多維獎勵模型;任務可以用規則自動判分(數學、程式碼測試)→ 直接走 RLVR + GRPO,連 RM 都省掉(§七補充)。分散式訓練的觸發條件很具體:PPO 同時要放 policy、reference、RM 與 value 四個模型,policy 到 13B 以上時單節點記憶體放不下,才需要張量並行。

從到觸發訊號
500–1K 偏好對、單頭 BT 獎勵模型、單次 PPO固定評估集、WinRate 流水線、多維(helpful/harmless/honest)RMRM 準確率停滯;PPO 結果不可重現;獎勵黑客症狀出現但無自動偵測
離線偏好資料 + PPODPO(離線)或 RLVR + GRPO(可驗證任務)無法線上收集新偏好 → DPO;任務可規則判分 → RLVR,省掉 RM 與 critic
單節點訓練張量並行的分散式 PPOpolicy ≥ 13B 時四個模型放不進單節點;每週迭代次數被訓練時間卡住

三、MDP 框架:狀態/動作/獎勵/策略

3.1 Markov Decision Process 核心定義

強化學習的數學基礎是 MDP,定義為五元組 (S, A, P, R, γ):

元素符號LLM 對應
狀態空間S對話歷史 + 已生成 token 序列
動作空間A詞彙表中下一個 token(~50K 種選擇)
轉移函數P(s’|s,a)確定性(生成 token 後狀態確定更新)
獎勵函數R(s,a)獎勵模型評分(只在序列結尾給出)
折扣因子γ通常設 0.99(RLHF 中常設 1.0)
LLM 生成的 MDP 視角:

時間步 t:
  s_t = [prompt, token_1, ..., token_{t-1}]
  a_t = token_t  ∈ 詞彙表(50,257 種)
  s_{t+1} = [prompt, token_1, ..., token_t]
  r_t = 0(中間步驟)
  r_T = RM(完整回答)(僅在序列結束時)

目標:最大化 E[Σ r_t] = E[RM(完整生成序列)]

3.2 策略(Policy)的定義

策略 π(a|s) 是在狀態 s 下採取動作 a 的條件概率:

  • 確定性策略: π(s) = argmax_a Q(s,a)(貪婪選擇)
  • 隨機策略: π(a|s) = softmax(logits)(LLM 的本質)
  • 最優策略: π* = argmax_π E_π[Σ γ^t r_t]

3.3 值函數與優勢函數

V^π(s) = E_π[Σ_{t≥0} γ^t r_{t+k} | s_0 = s]
         → 從狀態 s 出發,遵循策略 π 的期望累積獎勵

Q^π(s,a) = E_π[Σ_{t≥0} γ^t r_t | s_0=s, a_0=a]
           → 在狀態 s 執行動作 a 後,遵循 π 的期望累積獎勵

A^π(s,a) = Q^π(s,a) - V^π(s)
           → 優勢函數:動作 a 比平均策略好多少
           → A > 0:增加這個動作的概率
           → A < 0:降低這個動作的概率

四、Value-based:Q-Learning 到 DQN

4.1 Q-Learning 核心更新規則

Bellman 最優方程:
Q*(s,a) = R(s,a) + γ · max_{a'} Q*(s', a')

Q-Learning 更新(off-policy TD):
Q(s,a) ← Q(s,a) + α · [r + γ·max_{a'} Q(s',a') - Q(s,a)]
          ────────────────────────────────────────────────
                         TD error (δ)

超參數含義:

  • α(學習率)= 0.001:每次更新的步長
  • γ(折扣)= 0.99:未來獎勵的重要性(0=短視,1=遠見)
  • ε(探索)= 0.1:ε-greedy 中隨機探索的比例

4.2 DQN:神經網路近似 Q 函數

┌─────────────────────────────────────────────────────┐
│  DQN 訓練流程                                        │
│                                                     │
│  環境                                               │
│  ┌──────┐  s_t  ┌────────────┐  a_t  ┌──────────┐  │
│  │      │──────▶│  Q-Network │──────▶│          │  │
│  │ Atari│       │  (CNN+FC)  │       │  環境    │  │
│  │ Game │◀──────│            │◀──────│  Simulator│ │
│  └──────┘  r,s' └────────────┘       └──────────┘  │
│                      │  TD error                   │
│                      ▼                             │
│  ┌────────────────────────────────────┐            │
│  │  Experience Replay Buffer           │            │
│  │  (最近 1M transitions)              │            │
│  │  防止相關性 → 穩定訓練               │            │
│  └────────────────────────────────────┘            │
│                      │  隨機採樣 mini-batch          │
│                      ▼                             │
│  ┌────────────────────────────────────┐            │
│  │  Target Network(每 10K 步同步)    │            │
│  │  y_t = r_t + γ·max Q_target(s',a') │            │
│  │  Loss = MSE(Q(s,a), y_t)           │            │
│  └────────────────────────────────────┘            │
└─────────────────────────────────────────────────────┘

DQN 的兩個關鍵創新:

  1. Experience Replay:打破時間相關性,重複利用歷史資料
  2. Target Network:固定目標值,防止訓練目標劇烈抖動

DQN 的根本限制(為何 LLM 對齊不用它):

  • 動作空間離散且有限(Atari:18 個按鍵)
  • LLM 動作空間 = 詞彙表大小 ~50K,Q-table 無法擴展
  • → 必須使用 Policy Gradient 方法

五、Policy-based:REINFORCE / Actor-Critic / PPO

5.1 REINFORCE:最原始的策略梯度

策略梯度定理:

∇_θ J(π_θ) = E_π [∇_θ log π_θ(a|s) · G_t]

其中 G_t = Σ_{k=0}^{T-t} γ^k · r_{t+k}(從 t 步起的累積回報)

直覺:
  - 如果一條軌跡的回報 G_t 高 → 增加沿途所有動作的概率
  - 如果 G_t 低 → 降低沿途所有動作的概率
  - ∇_θ log π_θ(a|s):log-trick,避免計算狀態邊際分佈

REINFORCE 的問題:

  • 方差極高(單條軌跡的 G_t 波動很大)
  • 樣本效率極低(on-policy,每條資料只用一次)
  • 收斂慢:Atari 通常需要 >10M 步

5.2 Actor-Critic:引入值函數降低方差

Actor  : π_θ(a|s)   → 選擇動作(策略網路)
Critic : V_φ(s)     → 估計狀態值(值函數網路)

優勢估計(Advantage):
  Â_t = r_t + γ·V_φ(s_{t+1}) - V_φ(s_t)
      = TD error

Actor 更新:
  ∇_θ J = E[∇_θ log π_θ(a_t|s_t) · Â_t]

Critic 更新:
  L_V = E[(r_t + γ·V_φ(s_{t+1}) - V_φ(s_t))²]

優點:Â_t 的方差 << G_t 的方差(減去 baseline)

5.3 PPO:RLHF 的核心演算法

PPO(Proximal Policy Optimization)解決了 Actor-Critic 的訓練不穩定問題。

核心思想: 每次策略更新不能「走太遠」,用 clip 機制強制約束。

PPO 目標函數:

ratio_t = π_θ(a_t|s_t) / π_θ_old(a_t|s_t)
         (新策略 vs 舊策略的概率比)

L_CLIP = E_t [min(
    ratio_t · Â_t,
    clip(ratio_t, 1-ε, 1+ε) · Â_t
)]

其中 ε = 0.2(預設值,OpenAI 論文設定)

完整 PPO 損失:
L_total = -L_CLIP + c₁·L_VF - c₂·H[π_θ]
  L_VF:值函數損失(c₁=0.5)
  H[π_θ]:熵正則化,鼓勵探索(c₂=0.01)

clip 機制的直覺:

情況 1:Â_t > 0(這個動作是好的,應該增加概率)
  ratio_t > 1+ε → clip 截斷,防止過度增加
  ratio_t ≤ 1+ε → 正常梯度更新

情況 2:Â_t < 0(這個動作是壞的,應該降低概率)
  ratio_t < 1-ε → clip 截斷,防止過度懲罰
  ratio_t ≥ 1-ε → 正常梯度更新

效果:策略每步最多移動 ε=0.2 的範圍(20%概率比變化)

六、RLHF 完整流程:SFT → RM → PPO

6.1 三階段流水線

┌──────────────────────────────────────────────────────────────┐
│  RLHF 完整訓練流水線                                           │
│                                                              │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │  Stage 1:Supervised Fine-Tuning (SFT)                  │ │
│  │                                                         │ │
│  │  高品質示範資料 (10K–100K 對話)                            │ │
│  │  ──────────────────────────────▶  π_SFT                 │ │
│  │  MLE:minimize -log P(y|x)                              │ │
│  │  結果:模型會遵循指令,但不保證最優                          │ │
│  └─────────────────────────────────────────────────────────┘ │
│                           │                                  │
│                           ▼                                  │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │  Stage 2:Reward Model Training                         │ │
│  │                                                         │ │
│  │  同一 prompt 生成 2–4 個回答                               │ │
│  │  人工標注偏好:y_w ≻ y_l(w=winner, l=loser)              │ │
│  │                                                         │ │
│  │  Bradley-Terry 模型:                                    │ │
│  │  P(y_w ≻ y_l) = σ(r_θ(x,y_w) - r_θ(x,y_l))            │ │
│  │                                                         │ │
│  │  RM 損失:                                               │ │
│  │  L_RM = -E[log σ(r_θ(x,y_w) - r_θ(x,y_l))]            │ │
│  │                                                         │ │
│  │  評估:測試集上 Accuracy > 70% 才進入下一階段               │ │
│  └─────────────────────────────────────────────────────────┘ │
│                           │                                  │
│                           ▼                                  │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │  Stage 3:PPO Fine-Tuning                               │ │
│  │                                                         │ │
│  │  ┌──────────┐  生成回答  ┌──────────┐  獎勵   ┌───────┐ │ │
│  │  │ Policy   │──────────▶│  RM      │────────▶│  PPO  │ │ │
│  │  │ π_θ      │           │ r_θ(x,y) │         │Trainer│ │ │
│  │  └──────────┘           └──────────┘         └───┬───┘ │ │
│  │       ▲                                          │     │ │
│  │       │              KL 懲罰項                    │     │ │
│  │  ┌────┴─────┐   r = r_RM - β·KL(π_θ ‖ π_SFT)   │     │ │
│  │  │ π_SFT    │◀──────────────────────────────────┘     │ │
│  │  │ (凍結)   │   β = 0.05(防止遠離 SFT 分佈)            │ │
│  │  └──────────┘                                         │ │
│  │                                                         │ │
│  │  總獎勵 = r_RM(x,y) - β·KL(π_θ(y|x) ‖ π_SFT(y|x))    │ │
│  └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘

6.2 KL 懲罰的作用

KL 散度項 β·KL(π_θ ‖ π_SFT) 的三個功能:

  1. 防止獎勵黑客(Reward Hacking): 模型若只最大化 RM 分數,會生成聽起來好但實際無意義的文字
  2. 保留語言能力: 不讓模型遺忘 SFT 學到的基本指令遵循能力
  3. 控制漂移速度: β 越大 = 更保守;β = 0 = 完全不受限

β 的調校經驗:

  • β < 0.01:RM 分數高但 KL 爆炸,模型退化
  • β = 0.05:InstructGPT 論文推薦值
  • β > 0.2:更新過慢,RLHF 效果微弱

七、DPO:無需獎勵模型的替代方案

7.1 DPO 的核心洞見

DPO(Direct Preference Optimization)發現:RLHF 中的最優策略有閉合解,可以直接繞過 RM 訓練。

RLHF 最優解:
  π*(y|x) ∝ π_SFT(y|x) · exp(r*(x,y) / β)

反推 r*(x,y):
  r*(x,y) = β · log [π*(y|x) / π_SFT(y|x)] + β·log Z(x)

代入 Bradley-Terry 模型並化簡:

DPO 損失(直接對偏好資料訓練):
L_DPO = -E_{(x,y_w,y_l)} [
    log σ(
        β · log [π_θ(y_w|x) / π_SFT(y_w|x)]
      - β · log [π_θ(y_l|x) / π_SFT(y_l|x)]
    )
]

7.2 DPO vs RLHF 工程對比

維度RLHF (PPO)DPO
訓練複雜度高(4個模型同時運行)低(只需 2 個模型)
GPU 記憶體~4× Policy 大小~2× Policy 大小
訓練穩定性需仔細調校 β, ε相對穩定
效果(7B 模型)WinRate 基準通常 -3%–+5% vs PPO
線上學習支援(生成新資料)不支援(離線資料)
偏好資料需求可迭代收集必須事先準備

DPO 的核心限制: 它是「離線」方法——無法在訓練中生成新的探索資料,在分佈外 prompt 上的泛化較弱。

2025 年後的主流補充:GRPO 與 RLVR。 DeepSeek-R1(2025 年 1 月)之後,推理模型的 RL 主力變成 RLVR(Reinforcement Learning from Verifiable Rewards):數學答案、程式碼單元測試等可自動驗證的任務,直接用規則判分當獎勵,不需要學出來的 RM,也就少了獎勵黑客的主要來源。演算法多用 GRPO(Group Relative Policy Optimization):對同一 prompt 取樣一組回答,以組內平均分當 baseline 計算優勢,省掉 PPO 的 critic 網路與其記憶體。因此本文的「SFT → RM → PPO」只是幾條對齊管線之一;對可驗證任務,「SFT → GRPO + 規則獎勵」往往更簡單也更有效。


八、為什麼選 X 不選 Y

決策 1:PPO vs REINFORCE

選擇          選 PPO 的理由                    不選 REINFORCE 的理由
──────────────────────────────────────────────────────────────────
訓練穩定性    clip ε=0.2 防止策略劇烈偏移         REINFORCE 方差極高,常發散
樣本效率      mini-epoch 重複利用同批資料          REINFORCE 每條資料只用一次
方差控制      Actor-Critic 的 baseline 降低方差    純 REINFORCE 無值函數,用整條軌跡回報
LLM 適配性    與 Actor-Critic 架構完整整合         Atari 上通常需要 >10M 步才收斂

Flip condition:如果序列極短(< 20 token)且獎勵稠密,
REINFORCE 實現簡單且效果差距不大;GRPO 本質上也是去掉 critic、
以組內平均當 baseline 的 REINFORCE 變體(見 §七補充)。

決策 2:DPO vs PPO

選擇          選 DPO 的理由                    選 PPO 的理由
──────────────────────────────────────────────────────────────────
工程複雜度    只需 2 個模型(省 50% GPU)         4 個模型但效果更穩
線上學習      不需要(離線訓練)                  支援主動探索
資料需求      現有偏好資料即可                   可持續收集新偏好
適用場景      快速迭代、資料已足夠                產品級、需持續改進

Flip condition:當偏好資料 > 50K 且可定期更新,
PPO 的長期效果通常超越 DPO。

決策 3:KL 懲罰 vs 無約束 RL

選擇          加 KL 懲罰的理由                 不加的問題
──────────────────────────────────────────────────────────────────
獎勵黑客防禦  防止模型生成「胡言亂語但 RM 高分」   RM 會被過度利用,輸出退化
語言能力保留  保持 SFT 學到的指令遵循能力          模型快速忘記基礎能力
訓練穩定性    KL 項作為正則,防止策略震盪           無約束 PPO 常在 1K 步後崩潰
人類評估      WinRate 穩定高於 SFT baseline        無 KL 常退化至低於 SFT

Flip condition:β > 0.3 時 KL 懲罰太強,RLHF 效果接近 SFT,
若需要更激進的風格改變,應降低 β 或用 Constitutional AI。

決策 4:Bradley-Terry RM vs 回歸式 RM

選擇          Bradley-Terry 的理由              回歸式 RM 的理由
──────────────────────────────────────────────────────────────────
標注成本      只需比較好壞(比較容易)             需要給出具體分數(難以校準)
理論基礎      有成熟的偏好學習理論支撐             無法保證跨 prompt 的分數可比性
業界採用率    InstructGPT/Llama2 均採用           少見於主流 RLHF 實作
擴展性        K 個候選只需 C(K,2) 次比較          K 個候選需 K 次獨立評分

Flip condition:若有大量絕對品質標注資料(如考試題目答案),
回歸式 RM 可直接利用;純對話對齊優先 Bradley-Terry。

九、系統效應:RLHF 前後對比

9.1 量化對齊改善

以下 9.1、9.2 兩表為示意估算,用來說明量級與趨勢,非特定論文的實測數據。

指標SFT BaselineRLHF 後改善幅度
人類偏好 WinRate50%(基準)68–85%+18–35%
有害輸出率~15%~4.5%-70%
拒絕有益請求(over-refusal)~3%~1.2%-60%
回應長度合適率~65%~82%+26%
事實性(TruthfulQA)~40%~57%+43%
指令遵循準確率~72%~89%+24%

示意估算,非實測數據

9.2 訓練成本 vs 效益

規模RLHF 資料成本訓練 GPU 成本WinRate 提升
500 偏好對~$2,500~$500+10–15%
10K 偏好對~$50,000~$5,000+20–30%
100K 偏好對~$500,000~$50,000+30–40%

示意估算,非實測數據

邊際收益遞減: 偏好資料從 1K→10K 的改善最顯著;10K→100K 改善放緩;100K 以上需要配合模型擴大或架構改進。

9.3 失敗模式與數字

失敗類型觸發條件症狀緩解措施
獎勵黑客β < 0.01 或 RM 訓練資料不足輸出重複詞、格式奇怪但 RM 高分增大 β,擴充 RM 資料
模式崩潰探索不足(熵係數 c₂ = 0)所有回答變得相似增加熵正則 c₂ = 0.01–0.05
KL 爆炸β 過小 + 學習率過大KL > 20 nats,訓練發散降低 lr,增大 β
遺忘(Forgetting)PPO 跑太多輪基礎指令遵循能力下降混入 SFT 資料,限制 PPO epoch

十、系列導航

← 上一篇: Phase 8 Part 2:GAN 與影片生成 — 對抗的藝術

→ 下一篇: Phase 10 Part 1:從頭構建 LLM — Tokenization 的工程藝術


本文為「AI 工程從零開始」系列第 Phase 9 第 1 篇,聚焦強化學習基礎理論與 RLHF 工程實踐。系列完整索引請見 ai-eng-from-scratch 標籤頁 。

Yen

Yen

Yen