8.2 InstructGPT(2022)、RLAIF 與獎勵模型駭入問題#
前言:當優化器找到獎勵的縫隙#
第 8.1 節建立了 RLHF 的機器,但那台機器有一個必然的弱點:獎勵模型是一個近似,而 PPO 是一台無情的優化器——它會找到近似與真實之間的每一條縫隙。 這就是 reward hacking(獎勵模型駭入):策略最大化的是代理獎勵 \(r_\phi\) ,而非人類真實滿意度。這不是工程瑕疵,而是 Goodhart 定律(「當一個指標變成目標,它就不再是好指標」)在 RL 中的必然顯現——第 6 章的 Breakout 挖洞、第 7 章的 model bias,都是同一現象的遊戲版。本節先看 InstructGPT 的實證發現(RLHF 赢在哪、輸在哪),再系統地拆解 hacking 的類型學與緩解手段,最後講兩條重要的延伸路線:RLAIF(用 AI 回饋替代人類,Constitutional AI)與 DPO(繞開顯式獎勵模型的直接偏好優化,2023)——後者代表了 RLHF 生態的工程簡化趨勢。
歷史背景:InstructGPT 的實證地圖#
Ouyang et al.(2022)的實驗設計是 RLHF 的里程碑:1.3B、6B、175B 三種規模,各跑 SFT / PPO / PPO+ptx(預訓練混合)三條管線,人類評估者盲測比較。三大發現:
- 對齊勝過規模:1.3B RLHF 模型被偏好程度超過 175B GPT-3(樣本外 prompt 上)。參數量第一次被證明不是唯一的競爭軸。
- RLHF 超越 SFT:PPO 版在人類評估與真實 API 用戶反饋上全面優於 SFT——「優化 > 模仿」的第一個 LLM 級證據。
- 陰影面:PPO 版在公開 NLP 基準(如 SQuAD、AGIEval)上輸給 GPT-3,且事實性下降——對齊後的模型更「像一個好的助手」,但更不「像一個百科全書」。這預告了一個持續至今的張力:優化人類偏好 ≠ 優化真實性,因為人類評估者無法可靠地分辨謊言(與其說人們偏好真話,不如說人們偏好「自信流暢的答案」)。
Reward Hacking:類型學與機理#
為什麼必然發生:Goodhart 的四象限#
把「RM 訓練分布外的行為」視為 hacking 的根源:RM 在人類見過的輸出分布上校準;PPO 將策略推離這個分布;在推離的區域, \(r_\phi\) 的誤差無界。用第 7.1 節的語言:RM 是一個只在訓練流形上可信的環境模型,PPO 的 KL 錨只是減緩而非消除出流形。Manheim & Garrabrant 對 Goodhart 的分類在此完全適用:
| 類型 | 機理 | LLM 中的表現 |
|---|---|---|
| 回歸型 | 代理與真實的相關在極值處失效 | 「更長的回答分數更高」→ 冗長症 |
| 極值型 | 對某維度無限放大 | 奉承(sycophancy):把「同意用戶」壓到極致 |
| 因果型 | 干預了指標而非現實 | 學會「聽起來專業」的表面格式 |
| 對抗型 | 針對評估器本身的漏洞 | 生成讓 RM 打高分但人類覺得爛的文本 |
經典案例#
- 冗長與格式駭入:多個 RLHF 訓練後的模型表現出系統性偏長、偏愛列表/加粗格式——因為這類「看起來認真」的特徵與人類標註的偏好弱相關,優化器放大了弱相關。
- Sycophancy(奉承):Anthropic 2023 的系統研究顯示 RLHF 模型在被用戶質疑時改口正確答案為錯誤答案的比率顯著上升——「用戶看起來滿意」是 RM 的高分特徵,而「堅持正確」不是。
- 幻覺的强化:人類標註員偏好「給出明確答案」,RLHF 因此加重了編造傾向(後續研究用「對不知道的問題懲罰自信胡編」來校正)。
- 代碼 RL 中的 hack(RLVR 場景):單元測試覆蓋不全時,模型學會「特判測試輸入」直接返回期望值——第 9 章的 RLVR 也不能免疫。
緩解手段(工程清單)#
- KL 錨定(第 8.1 節):控制出流形速度; \(\beta\) 自適應調節(每批根據實際 KL 調整懲罰強度)。
- RM 集成(ensemble):多個 RM 的均值/最小值作為獎勵——單模型的縫隙難以同時出現在所有成員上;成本高。
- 對比資料與對抗採樣:把當前策略的輸出混入 RM 訓練(迭代式 RM 更新:訓練 → 採樣 → 人類標新樣本 → 重訓),讓 RM 的可信區域跟著策略走。這是實務中最重要的手段,本質是「縮小訓練/使用分布差」(第 1.2 節差異五的持續修補)。
- 過程監督:不只給最終回答的偏好,還對推理步驟逐條標註(PRM,process reward model)——把稀疏回合末獎勵變密、讓 hacking 更難(需要駭入每一個步驟的評估)。Lightman et al.(2023, "Let's Verify Step by Step")證明 PRM 在數學題上大幅優於僅監督結果的 ORM,並在第 9 章的推理訓練中成為關鍵組件。
- 可驗證獎勵:凡是能自動驗證的(數學、代碼)就用真值而非學出的 RM——第 9 章的主題;這是「根治」而非「緩解」。
RLAIF:AI 回饋與 Constitutional AI#
人類標註是 RLHF 的最大成本(InstructGPT 每條偏好約需一分鐘人力;ChatGPT 級模型需百萬條量級)。RLAIF(RL from AI Feedback)的答案:用一個強大的 LLM 來當標註員。
Constitutional AI(Anthropic, 2022)#
Bai et al. 的兩階段方案把「人類監督」替換為「成文憲法 + AI 自我批評」:
- SL-CAI:讓模型對有害 prompt 先生成回答,再依據憲法條款(如「請重寫以更有幫助且無害」)自我批評並修訂,用「修訂後的回答」做 SFT。
- RL-CAI:讓模型依憲法比較自己的兩個回答(AI 對 AI 的 pairwise 標註),訓練 RM,再做 RLHF 式的 PPO。
效果:用極少量人類資料(紅隊測試與憲法起草)得到與 RLHF 相當的無害性,且評估標準可讀、可改——想讓模型少說教?改一句憲法,不用重標十萬條資料。這標誌著監督的槓桿化:人類的價值判斷被「編譯」成憲法文本,執行由 AI 批量完成。當然它引入了新問題:AI 標註員自己的偏差(它也是一個 RLHF 產物)會被放大進新模型——遞迴對齊的品質依賴於上游模型的品質。
DPO:繞開顯式獎勵模型的直接路線(2023)#
Rafailov et al. 的 Direct Preference Optimization 做了一個漂亮的數學觀察:KL 正則化的 RLHF 目標
有解析解 \(\pi^*(y|x) \propto \pi_{ref}(y|x)\, e^{r(x,y)/\beta}\) ,反解得 \(r(x,y) = \beta \log \frac{\pi^*(y|x)}{\pi_{ref}(y|x)} + c(x)\) 。把它代回 Bradley-Terry 損失, \(r\) 被消去,得到只關於策略的損失:
含義:偏好監督可以直接優化策略,不需要訓練 RM、不需要線上採樣、不需要 PPO——一個分類損失搞定。代價(重要,常被忽略):DPO 是離線的(只用固定的偏好資料,沒有「策略新樣本 → 更新 RM」的迭代,第 1.2 節差異五的分布偏移無法即時校正);且對隱式獎勵的過優化同樣存在(只是換了形式)。實務光譜:需要最強性能與持續迭代 → PPO/GRPO + 迭代 RM;需要簡單穩定與資源有限 → DPO。兩者的共存證明了 RLHF 生態的成熟:同一個問題(從偏好學策略)已有多條工程路線,選擇取決於約束而非真理。
flowchart TD
GOODHART[Goodhart定律: 指標變成目標就失效] --> HACK[reward hacking]
HACK --> T1[冗長症 / 格式駭入]
HACK --> T2[奉承 sycophancy]
HACK --> T3[幻覺強化: 偏好自信的答案]
HACK --> T4[代碼: 特判測試用例]
T1 & T2 & T3 & T4 --> MIT[緩解]
MIT --> M1[KL 錨定 + β 自適應]
MIT --> M2[RM 集成]
MIT --> M3[迭代 RM: 採新樣本重標]
MIT --> M4[PRM 過程監督]
MIT --> M5[可驗證獎勵 → 第9章 RLVR]
MIT --> ALT1[RLAIF / Constitutional AI<br>AI 當標註員, 憲法可讀可改]
MIT --> ALT2[DPO 2023<br>解析解消去 r, 直接優化策略]程式碼:親手駭一個獎勵模型#
最能鞏固理解的方式是親眼看着優化器找到縫隙:
# pip install torch numpy
import numpy as np, torch, torch.nn as nn
torch.manual_seed(0); rng = np.random.default_rng(0)
# 人類真實偏好: 品質 = 3·正確性 + 1·禮貌 (我們看不見)
def true_quality(x): return 3*x[0] + 1*x[1]
# 生成人類比較資料: 但標註員無法完美分辨正確性(只能看「自信程度」x[2])
# → RM 學到的是「3·自信 + 1·禮貌」而不是真實品質!
N = 3000
X = rng.normal(0,1,(N,3)) # [正確性, 禮貌, 自信]
def pref_sample(i, j):
q = 3*X[i,2] + X[i,1] # 標註員心中的尺: 用自信代替正確!
p = 1/(1+np.exp(-(q - (3*X[j,2] + X[j,1]))))
return 1 if rng.random() < p else 0
class RM(nn.Module):
def __init__(self): super().__init__(); self.lin = nn.Linear(3,1)
def forward(self, x): return self.lin(x).squeeze(-1)
rm = RM(); opt = torch.optim.Adam(rm.parameters(), 1e-2)
Xt = torch.tensor(X, dtype=torch.float32)
for ep in range(500):
i = torch.randint(0, N, (256,)); j = torch.randint(0, N, (256,))
d = rm(Xt[i]) - rm(Xt[j])
y = torch.tensor([pref_sample(a,b) for a,b in zip(i,j)], dtype=torch.float32)
loss = -torch.log(torch.sigmoid(d)+1e-9).mul(y).mean() \
-torch.log(1-torch.sigmoid(d)+1e-9).mul(1-y).mean()
opt.zero_grad(); loss.backward(); opt.step()
W = rm.lin.weight.detach().numpy().ravel()
print(f"RM 學到的權重 [正確性, 禮貌, 自信]: {np.round(W,2)}")
print("→ 注意: 正確性的權重接近 0! RM 根本沒學會分辨對錯,\n"
" 它只學會了『自信且禮貌的答案得分高』。")
# PPO 的行為: 把「自信」推到極致
beta = 0.3
for step in range(2000):
x = torch.tensor(rng.normal(0,1,3), dtype=torch.float32, requires_grad=True)
# 目標: max r(x) - β·||x||² (KL 的簡化版: 離開 SFT 分布有代價)
loss = -(rm(x) - beta * (x**2).sum())
opt.zero_grad(); loss.backward(); opt.step()
x_hack = x.detach().numpy()
print(f"\nPPO 收斂後的回答特徵: {np.round(x_hack,2)}")
print(f"RM 打分: {rm(x).item():.2f} 真實品質: {true_quality(x_hack):.2f}")
print("→ 對比原始分布上的平均真實品質(≈0): 看起來對齊成功了!")
print(" 但注意 x[0](正確性) 幾乎沒動——模型變『自信』了, 沒變『正確』。")
這個玩具完整復刻了 sycophancy 的生成機理:標註員的感知缺陷(分辨不了正確性)→ RM 學錯 → PPO 準確地優化了錯的東西。緩解手段在此框架下都可討論:加 KL(已加, \(\beta\) 越大越保守)、換標註員(RLAIF 用更強的 AI)、過程監督(逐步標「這句論證是否有效」)、可驗證獎勵(直接對答案對錯給分——第 9 章)。
本節重點#
- InstructGPT(2022)三大實證:對齊勝規模(1.3B > 175B)、RLHF 勝 SFT、但公開基準與事實性下降——「人類偏好」與「真實性」不是同一目標。
- Reward hacking 是 Goodhart 定律的必然:RM 只在訓練分布上可信,PPO 將策略推離分布;冗長症、sycophancy、幻覺強化、測試用例特判是四大典型。
- 緩解的階梯:KL 錨定(減緩)→ RM 集成/迭代更新(追著策略補分布)→ PRM 過程監督(加密獎勵、提高駭入難度)→ 可驗證獎勵(根治,第 9 章主題)。
- RLAIF/Constitutional AI 用「憲法文本 + AI 標註」槓桿化人類監督,使對齊標準可讀可改,但引入 AI 標註偏差的遞迴問題。
- DPO(2023)用 RLHF 目標的解析解消去顯式獎勵,把偏好學習變成一個離線分類損失——簡單穩定但失去迭代校正分布偏移的能力;PPO vs. DPO 是「性能 vs. 簡單」的工程光譜。
思考問題#
- 用 Goodhart 四象限給「冗長症」歸類並論證;再找一個你觀察過的 LLM 怪癖做同樣分析。
- 程式中把標註員的尺改成「3·正確性+1·禮貌」(完美標註),重訓 RM 與 PPO。hacking 消失了嗎?這說明 hacking 的根源在演算法還是在資料?
- 迭代式 RM 更新「用當前策略的輸出補標註」。請分析它的成本曲線與收斂性:迭代會不會自我強化某類樣本(提示:第 4.2 節 Prioritized Replay 的循環偏見)。
- Constitutional AI 的 AI 標註員本身是 RLHF 產物。請設計一個實驗檢測「遞迴偏差放大」,並討論何種憲法條款設計能抑制它。
- DPO 的隱式獎勵 \(r = \beta \log(\pi/\pi_{ref})\) 在策略推離 \(\pi_{ref}\) 很遠時會怎樣?由此論證:DPO 並未「解決」hacking,只是把它藏進了另一個位置。