三個階段,從頭到尞
RLHF——人類回饋強化學習(reinforcement learning from human feedback)的名字有點誤導,因為大部分工作發生在任何強化學習之前。經典流程有三個階段,請把三者同時記在腦中,因為它們會一棒接一棒地交接。
- 階段一——SFT。 在精選對話上微調基礎模型,讓它至少表現得像個助理。這是你的起始策略(policy)。
- 階段二——獎勵模型。 蒐集人類在成對回答間的偏好,再訓練另一個模型,去預測人類會偏好哪個回答。
- 階段三——RL 最佳化。 拿獎勵模型當自動評分器,把 SFT 模型強化導向獎勵模型給高分的回應。(第三篇專講此階段。)
從人類偏好比較流向獎勵模型,再到策略微調的流程圖。
注意,人力集中在階段二。人既慢又貴,所以我們只用他們標註有限的一批比較,再把他們的集體判斷蒸餾進一個獎勵模型(reward model)裡,讓它能自動為數百萬個新回答評分。獎勵模型就是那座橋,讓少量人類回饋得以駕馭龐大的訓練量。
偏好資料實際長什麼樣
RLHF 的原始燃料是人類偏好資料(human preference data)。它的單位不是被打分數的作文,而是一次比較:取一個提示,從模型取樣兩個(或更多)候選回答,再問人:「哪個比較好?」這種成對比較(pairwise comparison)格式是刻意設計的。人類很不擅長給絕對分數——這個回答是十分裡的七分還是八分?——卻相當擅長回答 A 勝過回答 B這種相對判斷。
{
"prompt": "Explain why the sky is blue to a 10-year-old.",
"response_a": "Sunlight is made of many colors. Blue light...",
"response_b": "The sky is blue because of the atmosphere.",
"chosen": "a",
"annotator_notes": "A is clearer and age-appropriate; B is too terse."
}把數萬乃至數十萬筆這樣的比較疊起來,你就有了一份資料集,在統計上編碼了你的標註者集體所謂更好的回答是什麼意思——更準確、更清楚、更安全、格式更好、對不確定性更誠實。獎勵模型的任務,就是學會那套隱含的標準。
標註:品質的成敗之地
下游的一切都繼承你偏好資料標註(preference data annotation)的品質。如果標註者含糊、趕工,或對好的定義各執一詞,獎勵模型就學到一個模糊、自相矛盾的目標——而最終的助理會繼承這份混亂。優秀的標註計畫,會大量投資在書面準則上,把抽象的有用—無害—誠實目標,落實成具體、可核對的規則。
標註還必須刻意涵蓋困難案例。每個回答都還行的簡單提示,教不了獎勵模型什麼。有價值的比較,是那些勢均力敵的判斷與邊界案例——一個遊走在不安全邊緣的請求、一個細微錯誤的事實陳述、一個流暢卻迴避問題的回答。精心設計恰好戳中這些邊界的提示,與標註本身一樣重要。
訓練獎勵模型
獎勵模型通常與策略採用相同的 transformer 架構,只是把語言頭(language head)換成單一純量輸出:給定一個提示與一個回應,它吐出一個數字——一份獎勵,估計人類會多喜歡這個回應。它的訓練直接使用那些比較:對每一對,把被選中回答的分數推到高於被拒絕回答的分數。形式上這是成對偏好的 Bradley–Terry 模型,但直覺很單純,就是「讓贏家分數高過輸家」。
一個包含正規化、注意力、殘差連接和前饋網路的 Transformer 模塊。
# Reward model loss for one comparison # r = reward_model; chosen beats rejected score_win = r(prompt, chosen) score_lose = r(prompt, rejected) loss = -log_sigmoid(score_win - score_lose) # Gradient pushes score_win up and score_lose down.
成對排序損失:訓練獎勵模型,使被選中的回答得分高於被拒絕的回答。
有個微妙處現在就值得點出:獎勵模型只見過它訓練時的回答分布。一旦階段三的 RL 開始把策略推向新疆域,模型可能生出獎勵模型訓練集裡前所未見的回應——而在那片陌生地帶,獎勵模型的評分可能嚴重失準。這份落差,正是獎勵駭客(reward hacking)的種子,也是下一篇的核心危害。