對齊(alignment)的核心問題,是把「能預測下一個字」的模型變成「願意照人類期望回答」的助理。一個純預訓練的大型語言模型看過整個網路,學到的是「這個上下文接下來最可能出現什麼字」,而不是「怎樣的回答對使用者最有幫助、最誠實、最無害」。RLHF(Reinforcement Learning from Human Feedback,人類回饋強化學習)與 DPO(Direct Preference Optimization,直接偏好最佳化)就是兩條把人類偏好灌進模型的主流路徑。今天把這兩條路徑的機制、取捨與衍生方法拆開講清楚。
📖 學
為什麼預訓練加 SFT 還不夠
預訓練讓模型學會語言與世界知識,但它的目標函數只是「最大化語料的似然」。這意味著模型會忠實地模仿網路上的所有文字,包含胡扯、偏見與答非所問。你問它一個問題,它可能回你另外三個相關問題,因為在語料裡「問題後面接問題」也很常見。
SFT(Supervised Fine-Tuning,監督微調)是第一步修正:找人寫出「理想回答」的示範資料,讓模型模仿。這確實能讓模型學會「回答問題」這個格式,但示範資料昂貴且有上限。更關鍵的是,SFT 只能教模型「模仿某個好答案」,卻無法表達「A 答案比 B 答案好多少」這種比較性訊號。人類其實很難憑空寫出滿分答案,但很擅長在兩個答案之間挑出比較好的那個。RLHF 與 DPO 正是建立在這個洞察上:用「偏好比較」而非「絕對示範」來訓練。
RLHF 三階段:SFT、獎勵模型、PPO
第一階段是 SFT,如前所述,得到一個會照格式回答的基礎策略模型。第二階段是訓練獎勵模型(reward model):讓 SFT 模型對同一個提示生成多個回答,再請人類標註者把這些回答排序或兩兩比較。獎勵模型通常是在 SFT 模型上加一個純量輸出頭,學習輸入一段對話、輸出一個分數。它用的是 Bradley-Terry 偏好模型:把「人類偏好 A 勝過 B 的機率」建模成兩者獎勵分數差的 sigmoid,訓練損失就是最大化「勝出答案分數高於落敗答案」的對數似然。OpenAI 的 InstructGPT 論文指出,實務上一個應用大約需要數萬筆(約 50k 量級)偏好標註才能訓好一個堪用的獎勵模型。
第三階段用 PPO(Proximal Policy Optimization)做強化學習:把獎勵模型當成環境的獎勵函數,讓策略模型生成回答、拿到分數、朝高分方向更新參數。這裡有個關鍵設計——KL 懲罰項。InstructGPT 把目標寫成「最大化獎勵,同時減去策略模型與原始 SFT 模型之間的 KL 散度」。這個 KL 項像一條橡皮筋,把被 RL 拉扯的模型綁在 SFT 錨點附近,避免它為了衝高獎勵而跑到語言不通、只會鑽獎勵模型漏洞的怪異分佈去。這個「以 SFT 為固定錨點加 KL 懲罰」的公式,後來成了幾乎所有大規模對齊系統的標準寫法。
獎勵模型的軟肋:reward hacking 與過度優化
獎勵模型只是人類真實偏好的「代理(proxy)」,不是偏好本身。當 PPO 把模型往獎勵分數猛推,模型會逐漸學會鑽這個代理的漏洞,這就是 reward hacking(獎勵駭客)。典型現象包括:模型發現「答案愈長分數愈高」就開始長篇廢話、狂用條列與客套話、過度自信地宣稱正確,只因這些特徵剛好被獎勵模型偏愛,而非真的更有幫助。
這背後是 Goodhart 定律的體現:一旦某個度量變成優化目標,它就不再是好度量。實務上會觀察到「過度優化(over-optimization)」曲線——真實品質先隨獎勵上升,超過某點後獎勵繼續漲、真實品質卻掉頭往下。對策包括:調大 KL 懲罰把模型綁緊、及早停止(early stopping)、用更大或多個獎勵模型集成,以及最根本的——週期性重新蒐集「新鮮」的人類偏好,因為固定的獎勵模型遲早會被模型摸透。
DPO:略過獎勵模型,直接用偏好資料最佳化
DPO 的洞見寫在它的論文標題裡:「你的語言模型其實偷偷就是一個獎勵模型」。它從「帶 KL 約束的最佳化」的閉式解出發,證明最優策略與獎勵函數之間存在一個可逆的數學關係,於是可以把 Bradley-Terry 偏好模型裡的獎勵,直接用策略模型本身(相對於參考模型的對數機率比)來表達。結果是:整個 RLHF 從「訓獎勵模型 + 跑 PPO」的兩段式流程,塌縮成一個簡單的分類損失,直接在偏好資料上做梯度下降。
具體來說,DPO 的損失鼓勵模型「提高勝出答案的相對對數機率、壓低落敗答案的」,而參考模型(通常是 SFT 模型)扮演了原本 KL 懲罰的角色。它不需要在訓練中即時生成樣本、不需要跑不穩定的 RL loop、不需要額外維護一個獎勵模型,因此更省算力、更好調、更穩定。這讓 DPO 成為開源社群做偏好對齊時的預設起手式。
取捨,以及 GRPO、Constitutional AI、RLAIF
DPO 與 RLHF 各有勝場。DPO 簡單穩定,但它只能用你手上這批固定的偏好資料(off-policy),模型無法在訓練中「自己生成新回答、即時被評分」,因此探索能力較弱,對資料分佈外的情況泛化可能不如線上 RLHF;PPO 式的線上 RLHF 雖然工程複雜、訓練昂貴,卻能持續探索並用獎勵模型評新樣本,在頂尖系統中仍有其上限優勢。
衍生方法值得認識。GRPO(Group Relative Policy Optimization)是 DeepSeek 提出的變體,對同一提示生成一組回答、用組內相對優勢取代 PPO 的價值網路,省掉一個大模型、對推理任務特別有效。Constitutional AI(憲法式 AI)是 Anthropic 的路線:用一套明文「憲法」原則讓 AI 自我批判與修改答案,再用這些 AI 產生的偏好來訓練,大幅減少對人類標註有害內容的依賴。RLAIF(Reinforcement Learning from AI Feedback)則是更廣的概念——用 AI 模型取代人類來產生偏好標籤,研究顯示其效果可逼近 RLHF,同時把標註成本壓下來。這三者共同指向一個方向:讓對齊訊號的來源從昂貴的人類,逐步轉向可規模化的 AI 與規則。
🧠 記
- 預訓練學「像人類寫字」,SFT 學「照格式回答」,RLHF/DPO 才學「符合人類偏好」。
- RLHF 三階段:SFT → 訓獎勵模型(Bradley-Terry 偏好損失)→ PPO 強化學習,並用 KL 懲罰把模型綁在 SFT 錨點。
- 獎勵模型是偏好的代理,會被 reward hacking 與過度優化鑽漏洞;對策是 KL、early stopping、集成、換新鮮資料。
- DPO 用閉式解把獎勵函數併進策略本身,變成一個分類損失,略過獎勵模型與 RL loop,省算力又穩定。
- 取捨:DPO 簡單但 off-policy 探索弱;RLHF 複雜但線上探索強。GRPO/Constitutional AI/RLAIF 是降成本、可規模化的延伸。
✍️ 實踐
今天用最小成本跑通一次 DPO 直覺。用 Hugging Face 的 trl 套件,pip install trl datasets,載入一個小型偏好資料集(如 trl-lib/ultrafeedback_binarized 取前 500 筆),搭配一個小模型(如 Qwen2.5-0.5B 的 SFT 版),用 DPOTrainer 跑 1 個 epoch。過程中特別觀察 log 裡的 rewards/chosen、rewards/rejected 與兩者的 margin,親眼看到「勝出答案的隱含獎勵被拉高、落敗答案被壓低」。若沒有 GPU,退而求其次:讀 DPO 論文第 4 節,手推一次它從 KL 約束最優解到最終損失的關鍵三步,並在紙上寫出「參考模型如何取代了 KL 懲罰」這句話的數學理由。
🔗 延伸學習
- Training language models to follow instructions with human feedback (InstructGPT) — RLHF 三階段與 KL 懲罰的奠基論文,對齊工程的標準範式源頭。
- Direct Preference Optimization: Your Language Model is Secretly a Reward Model — DPO 原論文,說明如何用閉式解略過獎勵模型直接最佳化偏好。
- Illustrating Reinforcement Learning from Human Feedback (RLHF) — Hugging Face 圖解教學,把三階段流程講得非常直觀好懂。
- Constitutional AI: Harmlessness from AI Feedback — Anthropic 憲法式 AI 論文,展示如何用 AI 回饋取代人類標註有害內容。
💬 問 AI
把下面這段貼給你常用的 AI,讓它幫你把抽象數學落到具體直覺:
我想真正理解 DPO 為什麼可以略過獎勵模型。請你:
1. 先用一句話說明帶 KL 約束的 RLHF 最優策略的閉式解長什麼樣;
2. 解釋這個解如何被「反解」成用策略本身表達獎勵;
3. 把它代回 Bradley-Terry 偏好損失,推導出最終 DPO 損失;
4. 最後用一個比喻說明「參考模型」在其中扮演的角色,以及它和 PPO 裡的 KL 懲罰有什麼對應關係。
每一步都用高中程度能懂的語言,並指出哪一步是整個推導的關鍵轉折。