本文依據 CMU 10-423/623/723 Generative AI Spring 2026 版。 這是 CMU 10-423 導讀系列第 11 篇。主要材料是 2 月 18 日 Lecture 11 投影片(Aran Nayebi 與 Matt Gormley,註明 slides credit: Pat Virtue)的 instruction fine-tuning 與 RLHF 部分,以及 2 月 23 日 Lecture 12 投影片(Matt Gormley,另有手寫註記版)的 RLHF 續篇與 DPO 部分。L11 前半的 in-context learning 在第 10 篇,L12 後半的文生圖留給第 13 篇。
事實皆於 2026-09-30 打開官方材料核對。講次表在這兩講沒有列 readings,本文只引投影片本身與它標注的圖表出處。強化學習的幾頁投影片標明取自 Henry Chai。存取等級 A3:投影片、作業與練習考卷公開;課堂錄影在 CMU Panopto,校外看不到。
系列位置:上一篇 L10–L11:參數高效微調與 in-context learning|下一篇 HW3:用 LoRA 微調 GPT-2|系列總覽
同一段故事,兩種模型的回答
L11 用一個例子開場。同樣一段五句話的小故事,後面接「One-sentence Summary:」,分別餵給兩個模型:
- Llama-2-70B(只有預訓練)直接接出一句摘要。
- Llama-2-7B Chat(做過指令微調)先回「Sure! Here is a one-sentence summary of the story:」,再給摘要。
投影片的說明是:Llama-2-7B Chat 經過 instruction fine-tuning,所以回應的樣子和沒有調過的 Llama-2 很不一樣。前一頁也提醒,ChatGPT、Llama-2 Chat 這類聊天助理多半是用特定的 prompt 模板訓練的,模板會把輸入分成 system、user、assistant 幾段;投影片並列了 Llama-2 Chat 的 [INST] <<SYS>> 格式與 Alpaca 的 ### Instruction:/### Response: 格式。用這類模型時,照它訓練時的模板下 prompt 比較穩。
Instruction fine-tuning:從自動補完到對話
投影片把動機寫成「Autocomplete → Chat」:
- LLM 訓練目標是降低大量網頁、文章、程式碼語料的困惑度,所以它很會「補完你的__」。
- 聊天助理不能只預測下一個字,它要有對話的樣子,還要知道什麼時候該停。
- 我們希望 LLM 對齊人類使用者在某個指令下的期待。
做法只有兩步:建一份「聊天助理」訓練資料集,然後在上面微調。這個技術有很多名字:instruction fine-tuning、chat fine-tuning、alignment、behavioral fine-tuning。
資料從哪裡來
| 資料集 | 規模與做法 |
|---|---|
| InstructGPT | 13k 組 prompt/回應;由標注者寫指令與示範回應,部分 prompt 取自 OpenAI API 早期使用者、再由標注者寫回應;資料完全不公開 |
| Dolly | 15k 筆,InstructGPT 的開源後續;全部由 Databricks 員工撰寫 |
| Flan | 最早的指令微調資料集之一(Wei et al., 2021);近期版本約 350 萬筆;把既有 NLP 任務改寫成指令格式(12 個任務、62 個資料集),每個資料集做 10 種模板 |
| MultiInstruct | 多模態版本(Xu et al., 2023),把 21 個開源資料集的 62 個多模態任務合成一份 |
投影片花了好幾頁展示 databricks-dolly-15k 的真實範例,類別包括開放問答、一般問答、封閉問答(附一段上下文)、資訊抽取、腦力激盪、摘要、分類與創意寫作。
指令微調後的模型都從一個預訓練的 base model 開始,投影片指出它們即使比最大的 LLM 小很多也往往很有效,7B–13B 參數是常見規模。
RLHF:InstructGPT 的三步驟
投影片引 InstructGPT 論文的一句話當動機:在人類評估裡,1.3B 參數的 InstructGPT 輸出比 175B 的 GPT-3 更受偏好,參數少了 100 倍。
Step 1:指令微調。 在 13k 筆示範資料上做監督式微調,讓模型的行為像聊天助理。但它能學到的互動多樣性,受限於訓練資料的內容。投影片的論點是,偏好訊號是更有表達力的監督來源:比起自己寫一個好回應,人類更容易從幾個回應裡挑出比較好的那個。
Step 2:收集排序、訓練獎勵模型。 取 33k 個 prompt,每個讓 Step 1 的模型產生 K 個回應,由標注者排序,K ∈ {4, …, 9}。投影片附了 Anthropic 的標注介面當例子。
獎勵模型是 Step 1 模型的複本,把輸出詞彙的 softmax 換成一個純量輸出,也就是獎勵。訓練目標是讓排名較高的回應得到較高的獎勵:
loss(θ) = −(1 / C(K, 2)) · E_{(x, y_w, y_l)∼D} [ log σ( r_θ(x, y_w) − r_θ(x, y_l) ) ]
x 是 prompt,y_w、y_l 是勝出與落敗的回應,D 是人類排序資料集。同一個 prompt 的全部 C(K, 2) 組比較放在同一個 batch 裡,投影片說這是為了效率與穩定。
Step 3:用強化學習微調。 不再由人類或專家模型給獎勵,而是把 Step 2 的獎勵模型當成「標準答案」。state 是 prompt,action 是回應,reward 是獎勵模型輸出的純量,每個 episode 只有一輪。目標函數同時放了強化學習與預訓練兩項:
objective(φ) = E_{(x,y)∼π_φ^RL} [ r_θ(x, y) − β log( π_φ^RL(y|x) / π^SFT(y|x) ) ] + γ E_{x∼D_pretrain} [ log π_φ^RL(x) ]
投影片給的直覺是三句話:
- 獎勵項:在 RL 模型自己產生的樣本上,獎勵高就提高那個樣本的機率,獎勵低就降低。
- β 項:不要讓 RL 模型的機率離 SFT 模型太遠,實作上就是一個 KL 懲罰。
- γ 項:就是一般的對數似然,只是套在 RL 模型上,讓它不要忘了預訓練分佈。
實務上三個期望值都不是精確計算,而是用極少數樣本做 Monte Carlo 近似。這個目標函數仿照 PPO,而 PPO 是一種 policy gradient 方法,動機來自 TRPO。
結果:依 Anthropic 的實驗,RLHF 提高了有用性與無害性,而且在大多數任務上沒有傷害 zero-shot 或 few-shot 表現。
把 LLM 微調寫成強化學習問題
L11 最後與 L12 開頭用 Henry Chai 的投影片把上面的 Step 3 放進 RL 的標準框架:
| RL 元素 | 在 LLM 微調裡是什麼 |
|---|---|
| 狀態空間 𝒮 | 所有可能的 token 序列 |
| 動作空間 𝒜 | 下一個 token 的詞彙表 |
| 獎勵函數 | 由人類回饋訓練出的獎勵模型給出,是確定性的;對非 EOS 的動作一律回傳 0,遇到 EOS 才給整段回應的分數 |
| 轉移函數 | 確定性:把動作接到目前序列後面 |
| 策略 | 要微調的 LLM π_φ(a | s),對任何輸入序列給出下一個 token 的分佈 |
一個 episode 就是 prompt x 的一次完整補完,以 EOS 結束;LLM 因此在所有可能的補完上誘導出一個機率分佈,等於每一步 π_φ(a_t | s_t) 的乘積。投影片也指出,從 RL 的角度看,這個獎勵函數有點怪,因為只有最後一步有獎勵。
REINFORCE 與 PPO
L12 從最基本的 policy gradient 講起。目標是最小化負的期望獎勵,難處在於要對一個很長的乘積 p_φ(τ) 取梯度。解法是 likelihood ratio(對數導數)技巧,也就是 REINFORCE(Williams, 1992):
∇_φ p_φ(τ) = p_φ(τ) ∇_φ log p_φ(τ),而 log p_φ(τ) 就是每一步 log π_φ(a_t | s_t) 的總和。
所以梯度可以寫成期望值,再用 N 條取樣的補完做 Monte Carlo 估計:每條補完的獎勵,乘上它每一步 log 機率梯度的總和。
從 REINFORCE 到 PPO(Schulman et al., 2017),投影片只講兩個高層次的修改:
- 降低變異數:取樣的軌跡與獎勵變異很大,估計不穩。PPO 改用軌跡相對於某個基準的 advantage,基準通常由各狀態的 value function 定義。
- 避免策略跑偏:policy gradient 是 on-policy,被優化的策略同時也在產生訓練資料,策略一旦變差就可能不收斂。直覺是讓策略保持在一個已知不錯的策略附近;在 RLHF 裡,那個策略就是原本的指令微調模型 π^SFT。
DPO:強化學習好難,有沒有更簡單的做法
L12 在 RLHF 結果頁後面加了一句「Man, reinforcement learning seems hard; couldn't we do something easier?」,然後進入 DPO(Rafailov et al., 2023)。
先講 Bradley–Terry
要建模兩兩比較的結果,標準的 Bradley–Terry 形式是 p(i > j) = s_i / (s_i + s_j),s 是正的「強度」,只有相對大小有意義。令 s_i = exp(r_i),就變成
p(i > j) = exp(r_i) / (exp(r_i) + exp(r_j)) = 1 / (1 + exp(−(r_i − r_j)))
等價於對分數差做邏輯斯迴歸,而且 r 可以是任意實數。RLHF 的獎勵模型就是用這個形式建模人類對兩個回應的偏好。
PPO 版 RLHF 的五個缺點
投影片列得很直接:
- 兩階段訓練:先訓練獎勵模型,再另外跑 RL。
- 不穩定:PPO 需要仔細調 KL 係數、clipping 等。
- 信用分配不一致:獎勵模型用成對比較訓練,策略卻用純量獎勵優化。
- 計算成本高:on-policy rollout 要反覆取樣。
- 獎勵過度優化:策略會去鑽獎勵模型的漏洞。
DPO 的推導
投影片的直覺是:替 LLM 對齊人類偏好所定義的這個 RL 問題,其實「很簡單」。狀態空間、動作空間、轉移函數、獎勵模型全都事先知道,而且是確定性的。那何不跳過獎勵模型,直接用偏好資料微調 LLM:提高較佳回應 y_w 的機率,降低較差回應 y_l 的機率。
推導的三步(依 L12 投影片)
- 假設存在一個潛在的真實獎勵 r*,人類偏好照 Bradley–Terry 產生:p(y_w ≻ y_l | x) = exp(r*(x, y_w)) / (exp(r*(x, y_w)) + exp(r*(x, y_l)))。
- 如果知道 r*,RLHF(去掉預訓練項)要優化的是「期望獎勵減掉 β 倍的 log(π_φ / π^ref)」。可以證明它的最佳策略是 π*(y|x) = π^ref(y|x) · exp(r*(x, y) / β) / Z(x),Z(x) 是正規化常數。
- 把這條式子反解出 r*,代回第 1 步的機率。Z(x) 在相減時消掉,得到 p(y_w ≻ y_l | x) = 1 / (1 + exp( β log(π*(y_l|x) / π^ref(y_l|x)) − β log(π*(y_w|x) / π^ref(y_w|x)) ))。
投影片引了論文副標題「Your language model is secretly a reward model」。重點是:現在可以直接對 LLM 的參數 φ 最大化這個機率,資料就是人類標注的偏好三元組 (x, y_w, y_l),不需要獎勵模型,也不需要 RL 取樣。
評估結果的但書
DPO 結果頁特別引了論文的兩句原文:摘要任務以測試集的參考摘要當基準,對話任務以測試集裡較受偏好的回應當基準;而且勝率是用 GPT-4 代替人類評估算出來的。投影片把後者標成「Key caveat」。讀 DPO 的實驗數字時,這是該記住的前提。
這兩講在作業與考試裡的位置
- HW3 第 4 大題 Direct Preference Optimization 占 15 分(全份 66 分)。題目先給 PPO 版 RLHF 的 KL 正則化目標當背景,然後要你一步步走完 DPO 的推導:證明最佳策略的形式、把獎勵寫成策略的函數、說明 Bradley–Terry 下只有獎勵差有意義、推出 DPO 的目標函數,最後分析它的梯度裡各項的方向與大小。細節見 HW3 導讀。
- Quiz 3:L12 投影片的 Reminders 寫 2 月 25 日課堂小考,範圍是 Lecture 10、11 與 12(只考 RLHF/DPO)。同一天還有 HW1/HW2 的程式測驗。兩者校外都拿不到。
- 練習考卷:第 10 題 RLHF / DPO 占 12 分。
自學怎麼做
- 先把 InstructGPT 的三步驟畫成一張圖:每一步的輸入資料、訓練的模型、輸出是什麼。能畫出來,L12 的 RL 形式化就只是替這張圖換符號。
- 拿紙筆推一次 DPO:從最佳策略的形式反解出 r*,代回 Bradley–Terry,確認 Z(x) 真的消掉。這一步就是 HW3 第 4 大題的骨架。
- 對照 PPO 版 RLHF 的五個缺點,逐條寫下 DPO 解決了哪一條、哪一條沒解決。例如 DPO 仍然需要一個參考模型 π^ref。
今晚可以做的一件事:打開 L12 投影片的 Bradley–Terry 那頁,自己驗證 exp(r_i) / (exp(r_i) + exp(r_j)) 等於 σ(r_i − r_j),再回頭看獎勵模型的損失函數,會發現它就是這個式子的負對數似然。
延伸閱讀
- 同一段內容在別門課的講法:CS224N 第 8 講:從 instruction tuning、RLHF 到 DPO、CME295 第 5 講:SFT 教不會「別這樣回答」,RLHF 與 DPO 怎麼補上負面訊號
- 課程狀態與自學路線:CMU 10-423 系列總覽
參考資料
- CMU 10-423/623/723 Generative AI(Spring 2026)課程首頁
- 課程講次表——L11、L12 日期與 Quiz 3
- Lecture 11 投影片:In-Context Learning / Instruction Fine-tuning / RLHF
- Lecture 12 投影片:DPO / Latent Diffusion Models(手寫註記版)
- HW3 handout(hw3.zip)——DPO 大題的結構與配分
- Practice Exam(Spring 2026)
- Ouyang et al. 2022:Training language models to follow instructions with human feedback(InstructGPT)
- Bai et al. 2022:Training a Helpful and Harmless Assistant with RLHF
- Rafailov et al. 2023:Direct Preference Optimization: Your Language Model is Secretly a Reward Model
- Schulman et al. 2017:Proximal Policy Optimization Algorithms
- Williams 1992:Simple statistical gradient-following algorithms for connectionist reinforcement learning
- Wei et al. 2021:Finetuned Language Models Are Zero-Shot Learners(Flan)
- Longpre et al. 2023:The Flan Collection——投影片的指令資料集比較圖
- Xu et al. 2023:MultiInstruct
- databricks/databricks-dolly-15k
Loading...