在大型語言模型對齊的大部分歷史中,主導範式一直是基於人類回饋的強化學習(RLHF)——一個結合獎勵模型訓練與強化學習的複雜多階段流程。直接偏好最佳化(DPO) 以一個令人驚訝的簡單替代方案顛覆了這種方法:直接從偏好資料對齊語言模型,完全不需要任何強化學習。
DPO 由史丹佛大學的研究人員於 2023 年提出,此後已成為 LLM 對齊文獻中最具影響力的論文之一。核心洞察在於,RLHF 中基於 RL 的最佳化步驟可以重新參數化為偏好對上的簡單二元交叉熵損失,從而消除了對單獨獎勵模型、RL 取樣以及 PPO 眾所周知的繁瑣超參數調整的需求。
其影響是巨大的。DPO 已被 Mistral(Zephyr 模型)、Meta(Llama 3 對齊)以及無數開源微調專案所採用。eric-mitchell/direct-preference-optimization 儲存庫提供了一個乾淨、文件完善的參考實作,已成為研究人員和工程師實作 DPO 的首選資源。
DPO 在數學上是如何運作的?
DPO 將 RLHF 目標重新參數化為一個可以直接使用標準監督式學習技術最佳化的直接偏好損失。
graph LR
A[偏好資料\n提示 + 選擇 + 拒絕] --> B[參考模型\n凍結的基礎策略]
A --> C[策略模型\n訓練中的策略]
B --> D[對數機率\n比較]
C --> D
D --> E[DPO 損失\n二元交叉熵]
E --> F[策略更新\n梯度步驟]
F --> C
關鍵洞察在於,DPO 隱式地將獎勵函數表示為策略本身的函數,透過訓練策略與參考模型之間的對數機率比率來表達。這避免了明確建模和訓練單獨的獎勵函數。
DPO 與 RLHF 的比較
DPO 和 RLHF 之間的實務差異遠不止於方法的理論優雅性。
| 方面 | RLHF (PPO) | DPO |
|---|---|---|
| 組件 | 3 個模型:SFT + 獎勵 + 策略 | 2 個模型:SFT + 策略 |
| 訓練階段 | 3 個:獎勵模型 + RL (PPO) | 1 個:直接最佳化 |
| 超參數 | 多個(KL 懲罰、裁剪範圍等) | 少數(beta、學習率) |
| 穩定性 | 對 PPO 超參數敏感 | 更穩定 |
| 計算量 | 高(RL 取樣成本高) | 低(監督式風格訓練) |
| 記憶體 | 獎勵模型 + 策略 + 參考 | 策略 + 參考(凍結) |
對於大多數實務對齊任務,DPO 達到或超過 RLHF 的品質,同時在實作和訓練上顯著更簡單。
DPO 有哪些變體?
DPO 的成功催生了豐富的變體生態系統,以解決特定限制或替代場景。
| 變體 | 主要差異 | 使用場景 |
|---|---|---|
| IPO(身分偏好最佳化) | 增加正則化以防止過度擬合 | 偏好資料有限時 |
| KTO(Kahneman-Tversky 最佳化) | 處理未配對的偏好 | 僅有好/壞範例時 |
| ORPO(勝算比偏好最佳化) | 在單一階段中結合 SFT + 對齊 | 單階段訓練流程 |
| CPO(對比偏好最佳化) | 對比學習公式 | 多偏好排序 |
| SimPO(簡單偏好最佳化) | 無需參考模型的 DPO 變體 | 減少記憶體佔用 |
每種變體都保留了 DPO 的核心洞察——從偏好直接最佳化——同時適應不同的資料可用性場景和訓練限制。
如何使用 DPO 進行訓練?
使用 DPO 進行訓練遵循一個直接的流程,任何熟悉標準語言模型微調的人都可以使用。
| 步驟 | 說明 | 工具 |
|---|---|---|
| 資料準備 | 收集或生成偏好對(選擇 vs 拒絕) | Hugging Face datasets、自訂 JSON |
| 參考模型 | 載入凍結的基礎 SFT 模型副本 | Transformers 函式庫 |
| 策略模型 | 載入相同模型的可訓練副本 | Transformers 函式庫 |
| 訓練迴圈 | 計算偏好對上的 DPO 損失 | TRL 函式庫、自訂實作 |
| 評估 | 比較對齊與未對齊的模型輸出 | 人類評估、LLM 作為評審 |
eric-mitchell/direct-preference-optimization 中的參考實作提供了一個完整的訓練流程,可適用於大多數現代語言模型架構。
常見問題
什麼是 DPO? DPO 是由史丹佛大學研究人員引入的訓練範式,無需強化學習即可將語言模型與人類偏好對齊。它直接在偏好對上使用簡單的二元交叉熵損失來最佳化語言模型策略。
DPO 與 RLHF 有何不同? RLHF 需要三個階段:監督式微調、獎勵模型訓練和基於 RL 的策略最佳化。DPO 將其縮減為監督式微調後直接偏好最佳化,消除了對獎勵模型、RL 取樣和複雜超參數調整的需求。
DPO 相較於 RLHF 有哪些優勢? DPO 實作更簡單、計算更高效、更穩定,且通常能達到更好的對齊效果。
DPO 需要什麼樣的資料? DPO 需要偏好對,包含一個提示與兩個回應(選擇和拒絕)。
DPO 適用於所有 LLM 對齊任務嗎? DPO 在一般偏好對齊方面表現良好,但變體如 KTO、IPO 和 ORPO 可能更適合特定場景。
延伸閱讀
- DPO GitHub 儲存庫 – Eric Mitchell 的參考實作
- DPO 論文 (ArXiv) – “Direct Preference Optimization: Your Language Model is Secretly a Reward Model”
- TRL 函式庫文件 – Hugging Face TRL DPO 訓練器整合
- RLHF 與 DPO 比較 – 對齊方法的技術比較
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!