# 論文閱讀 : Direct Preference Optimization: Your Language Model is Secretly a Reward Model
## 摘要
1. **問題**:大規模無監督語言模型雖具備廣泛知識與推理能力,但難以精確控制其行為。現有的 RLHF 方法流程複雜且不穩定,需要訓練獎勵模型並進行強化學習。
2. **貢獻**:提出 **Direct Preference Optimization (DPO)**,將人類偏好學習轉化為分類問題,透過單一階段的訓練即可直接得到最優策略。
3. **優勢**:
* 不需獎勵模型
* 不需在微調過程中從 LM 抽樣
* 幾乎不需超參數調整
* 計算輕量、穩定且效能佳
4. **實驗結果**:
* 在情感控制上超越 PPO-based RLHF
* 在摘要與單輪對話任務上表現相當或更好
* 簡化實作與訓練過程
## Introduction

1. **研究背景與問題**
* 大型語言模型(LMs)透過大規模無監督訓練獲得強大的知識與能力,但這些能力來源多樣,可能包含不理想的行為。
* **例子**:
* 希望 AI 助手能理解常見錯誤,但生成程式碼時要偏向高品質輸出。
* 希望模型知道常見迷思,但不能在回答時照比例「誤導」使用者。
* **挑戰**:如何從模型的廣泛知識中「挑選」並對齊 **理想回應與行為**,是 AI 的安全性、效能與可控性核心問題。
2. **現有方法與限制**
* **RLHF/RLAIF** 是目前最成功的偏好對齊方法:
* 步驟:訓練獎勵模型 → 用 RL 最佳化政策(policy),同時避免偏離原始模型。
* 優點:能產生強大的對話與程式能力。
* 缺點:流程複雜、需訓練多個模型、需在 loop 中抽樣,計算與實作成本高。
3. **提出的方法:Direct Preference Optimization (DPO)**
* 不需要顯式獎勵模型或強化學習。
* 理論基礎:與 RLHF 相同,優化「獎勵最大化 + KL 約束」目標,但透過 **變數轉換**,可直接對政策進行訓練。
* 訓練方式:利用人類偏好資料,將問題轉化為 **二元交叉熵分類目標**。
* 直覺:提升「偏好回應」相對於「不偏好回應」的對數機率,並透過動態的重要性權重避免模型崩壞(degeneration)。
* 不再需要:
* 額外獎勵模型
* 訓練過程中從 policy 抽樣
4. **主要貢獻**
* 提出 **DPO**:一個簡單、無 RL 的偏好學習演算法。
* 透過人類偏好資料直接學習 policy,顯著簡化 pipeline。
* **實驗結果**:
* 在情感調控、摘要、對話任務上,DPO 的效能與 PPO-based RLHF 至少相當,甚至更好。
* 驗證於最多 60 億參數規模的模型上。
## Related Work
1. **指令微調(Instruction Tuning)**
* 大規模 LM 雖可零樣本或少樣本完成任務,但效能與使用者需求對齊仍有限。
* **Instruction tuning**:利用人工撰寫的指令與回應資料微調 → 提升泛化性與可用性。
* 限制:收集專家示範成本高。
2. **偏好學習(Preference Learning with Human Feedback)**
* **相對偏好標註**(例如「哪個回應較好」)比專家示範更容易蒐集。
* 已應用於翻譯、摘要、故事生成、指令跟隨等任務,顯著提升模型效能。
* 流程:
1. 訓練獎勵模型(基於 Bradley-Terry 等偏好模型)
2. 使用 RL(REINFORCE、PPO 等)微調 LM,以最大化獎勵。
* 相關擴展:結合人類簡單規則(rubric)與 LM 自動生成偏好資料(如 Constitutional AI)。
3. **兩大研究路線的交集**
* **強化學習訓練 LM**(多種目標,序列生成等)。
* **人類偏好學習方法**(利用偏好數據建立獎勵模型並訓練 policy)。
* 現有方法結合兩者,但都需 RL,計算複雜。
4. **語言模型外的相關研究**
* **情境對決 bandit (Contextual Dueling Bandits, CDB)**:用偏好或排序代替獎勵,分析「von Neumann winner」作為最佳政策。
* 特點:標註在線產生,而非離線固定批次。
* **偏好式強化學習 (Preference-based RL, PbRL)**:利用偏好而非明確獎勵學習,通常需先估計潛在的「打分函數」(reward model),再優化策略。
* 限制:多數演算法仍依賴顯式獎勵模型。
5. **本文的差異**
* 過去方法:兩階段 → 先估計獎勵模型,再做 RL。
* 本文:**單階段策略學習** → 直接優化 policy 滿足偏好,不需額外 RL。
## 論文重點與解釋(Preliminaries)
### RLHF 三階段流程
整個 RLHF (Reinforcement Learning from Human Feedback) pipeline 通常包含三個步驟:
1. **SFT(Supervised Fine-Tuning)監督微調**
* 先將預訓練語言模型(LM)在特定高品質資料上做監督學習微調,得到一個基礎模型 $\pi\_{\text{SFT}}$。
* 這個階段主要是讓模型對下游任務(對話、摘要等)有更好的起始能力。
---
2. **Reward Modeling Phase(獎勵模型學習階段)**
* **資料生成**:用 SFT 模型 $\pi\_{\text{SFT}}$,對輸入 prompt $x$ 產生兩個候選回應 $(y\_1, y\_2)$。
* **人工偏好標註**:標註者判斷哪個回應更好,形成 $y\_w \succ y\_l \mid x$(代表 $y\_w$ 被偏好,$y\_l$ 被拒絕)。
* **理論假設**:這些偏好由一個潛在的「真實獎勵函數」$r^\*(x,y)$ 產生,但我們看不到這個函數。
* **偏好模型(Bradley-Terry, BT)**:假設人類偏好機率為
$$
p^*(y_1 \succ y_2 \mid x) = \frac{\exp(r^*(x,y_1))}{\exp(r^*(x,y_1)) + \exp(r^*(x,y_2))}.
$$
→ 直觀意思:回應 $y\_1$ 被選中的機率,取決於它的獎勵值相對於 $y\_2$。
* **獎勵模型學習**:我們設計一個可參數化的 reward model $r\_\phi(x,y)$,利用最大概似估計去擬合人類偏好資料集 $\mathcal{D}$。
* **等價於分類問題**:其損失函數為負對數似然(binary classification):
$$
\mathcal{L}_R = - \mathbb{E}_{(x,y_w,y_l)\sim \mathcal{D}} \Big[\log \sigma(r_\phi(x,y_w) - r_\phi(x,y_l))\Big],
$$
其中 $\sigma$ 是 sigmoid。
* **實作細節**:
* 獎勵模型常直接用 SFT 模型 backbone,加一個線性層輸出 scalar reward。
* 為避免 reward variance 過大,通常會做 normalization,使得平均 reward = 0。
---
3. **RL Fine-Tuning Phase(強化學習微調階段)**
* 在這個階段,獎勵模型 $r\_\phi(x,y)$ 被用來提供回饋,幫助微調語言模型 policy $\pi\_\theta$。
* 目標函數:
$$
\max_{\pi_\theta} \ \mathbb{E}_{x,y}[r_\phi(x,y)] - \beta D_{\text{KL}}[\pi_\theta(y|x) \parallel \pi_{\text{ref}}(y|x)]
$$
* 第一項:希望最大化 reward。
* 第二項(KL 約束):避免新 policy $\pi\_\theta$ 偏離參考模型 $\pi\_{\text{ref}}$(通常就是 SFT 模型 $\pi\_{\text{SFT}}$)太多。
* **KL 項的重要性**:
* 保持 reward model 的有效性(因為它只在原始分布附近可靠)。
* 維持生成多樣性,避免模型 collapse 只產生單一高 reward 答案。
* **優化方式**:
* 語言輸出是離散的,無法直接微分,因此需用 RL 演算法來最佳化。
* 常用方法:PPO (Proximal Policy Optimization)。
* 在實務中,reward function 會改寫成:
$$
r(x,y) = r_\phi(x,y) - \beta \big(\log \pi_\theta(y|x) - \log \pi_{\text{ref}}(y|x)\big),
$$
再透過 PPO 來更新 policy。
## DPO
## 1. 問題背景
* RLHF 傳統流程 = **Reward Model + RL**。
→ 複雜、需要 RL loop、訓練成本高。
* DPO 的想法 = **直接用偏好資料訓練 policy**,省略 reward model 和 RL。
→ 透過數學推導,把「reward-based RL 問題」轉化為「分類學習問題」。
---
## 2. 從 RLHF 目標到最優 policy
在 RLHF 中,我們的優化目標(Eq. \ref{eq\:RL})是:
$$
\max_{\pi_\theta} \ \mathbb{E}[r(x,y)] - \beta D_{\text{KL}}[\pi_\theta(y|x)\|\pi_{\text{ref}}(y|x)]
$$
推導後可得最優 policy 的封閉解(Eq. \ref{eq\:op\_policy}):
$$
\pi_r(y|x) = \frac{1}{Z(x)} \pi_{\text{ref}}(y|x)\exp\Big(\tfrac{1}{\beta}r(x,y)\Big)
$$
直觀:
* 新 policy $\pi\_r$ = **參考模型分布 × 獎勵加權**。
* $Z(x)$ 是 partition function,確保分布歸一化。
---
## 3. 重參數化:把 reward 換成 policy
把上式取 log 可得:
$$
r(x,y) = \beta \log \frac{\pi_r(y|x)}{\pi_{\text{ref}}(y|x)} + \beta \log Z(x)
$$
重點:
* 獎勵 $r(x,y)$ 可以用 **policy 與參考分布的比值** 來表達。
* 在 BT 偏好模型下,reward 只會以「差值」的形式出現,所以 \$Z(x)\$(常難計算)會被消掉。
---
## 4. 偏好機率直接用 policy 表示
代回 BT 模型:
$$
p^*(y_1 \succ y_2 | x) = \sigma\Big(\beta \log \tfrac{\pi^*(y_1|x)}{\pi_{\text{ref}}(y_1|x)} - \beta \log \tfrac{\pi^*(y_2|x)}{\pi_{\text{ref}}(y_2|x)} \Big)
$$
意思是:**人類選擇 \$y\_1\$ 的機率**,可以直接用 **policy 與參考分布比值** 來建模,不需要 reward model。
---
## 5. DPO 損失函數
於是,我們得到 DPO 的目標(Eq. \ref{eq\:optimum\_model}):
$$
\mathcal{L}_{\text{DPO}}(\pi_\theta;\pi_{\text{ref}}) = -\mathbb{E}_{(x,y_w,y_l)\sim \mathcal{D}} \Big[ \log \sigma\Big( \beta \log \tfrac{\pi_\theta(y_w|x)}{\pi_{\text{ref}}(y_w|x)} - \beta \log \tfrac{\pi_\theta(y_l|x)}{\pi_{\text{ref}}(y_l|x)} \Big) \Big]
$$
這就是一個 **二元分類 cross-entropy**:
* 標籤:人類偏好 $y\_w$(贏家) vs $y\_l$(輸家)
* 模型:直接學 policy 分布,而不是 reward function
## 6. DPO 更新規則(梯度解釋)
梯度展開後可寫成:
$$
\nabla_\theta \mathcal{L}_{\text{DPO}} = -\beta \,\mathbb{E}\Big[ \sigma(\hat{r}_\theta(x,y_l) - \hat{r}_\theta(x,y_w)) \Big(\nabla_\theta \log \pi(y_w|x) - \nabla_\theta \log \pi(y_l|x)\Big) \Big]
$$
直觀解釋:
* **增加** 被偏好的答案 $y\_w$ 的機率
* **降低** 不被偏好的答案 $y\_l$ 的機率
* 權重 = reward 模型「判錯」的程度(如果模型覺得壞答案更好 → 給更大更新力道)
---
## 7. DPO Pipeline 流程
1. **收集偏好資料**:從參考模型 $\pi\_{\text{ref}}$ 生成 $(y\_1,y\_2)$,再請人標註哪個更好。
2. **定義參考分布**:通常 $\pi\_{\text{ref}} = \pi\_{\text{SFT}}$;若沒有 SFT,則用最大化 preferred answers likelihood 的方式近似。
3. **最小化 $\mathcal{L}\_{\text{DPO}}$**:直接優化 policy,得到對齊人類偏好的 $\pi\_\theta$。
## Theoretical Analysis of DPO
### 1. 大方向
* **RLHF 的問題**:需要 reward model + RL,數學上有「不唯一解」(under-specification) 的問題。
* **DPO 的核心 insight**:其實「policy 本身就等價於一個隱式 reward model」,因此我們可以直接學 policy,而不必顯式建 reward function。
* DPO 的優化目標其實等價於 BT 模型,但 reward 被換成:
$$
r^*(x,y) = \beta \log \frac{\pi_\theta^*(y|x)}{\pi_{\text{ref}}(y|x)}
$$
* 換句話說,**policy(生成分布)本身隱含了一個 reward function**,所以不需要額外建 reward model。
### 3. Reward function 的等價類
定義:兩個 reward functions 若相差只是一個「與 $x$ 有關但與 $y$ 無關的函數」,即
$$
r(x,y) - r'(x,y) = f(x),
$$
則它們被視為**等價**。
這代表:
* **Lemma 1**:同一個等價類的 reward functions,會給出一樣的 preference 分布。
* **Lemma 2**:同一個等價類的 reward functions,會導致相同的最優 policy。
## 4. DPO 的理論保證
**Theorem 1**:在溫和假設下,所有與 Plackett-Luce / BT 偏好模型一致的 reward classes,都可以寫成
$$
r(x,y) = \beta \log \frac{\pi(y|x)}{\pi_{\text{ref}}(y|x)}
$$
對某個 policy $\pi$ 和基準分布 $\pi\_{\text{ref}}$ 都成立。
直觀:
* 任意 reward function,都可以「投影」成這個形式。
* 這樣做不會丟掉一般性 → 所以用這個 reparameterization(policy vs ref policy 比值)學習 reward,不會失真。
---
## 5. Projection 操作(證明核心)
作者定義了一個投影算子:
$$
f(r; \pi_{\text{ref}}, \beta)(x,y) = r(x,y) - \beta \log \sum_y \pi_{\text{ref}}(y|x)\exp\Big(\tfrac{1}{\beta}r(x,y)\Big)
$$
* 它會把 reward 減去 partition function 的 log。
* 這個修正項僅依賴 $x$,因此結果仍在同一個等價類。
* 最後得到的形式剛好就是:
$$
f(r) = \beta \log \frac{\pi_r(y|x)}{\pi_{\text{ref}}(y|x)}
$$
---
## 6. 關鍵 insight
* Plackett-Luce / BT 模型原本 under-specified(因為 reward 不是唯一的)。
* DPO 的 reparameterization = 指定了 reward 在等價類中的一個具體代表。
* 好處是:這個形式下的最優 policy **可解析、可直接訓練**,不需要 RL loop。
## Instability of Actor-Critic Algorithms
### 1. Actor-Critic 在 RLHF 中的角色
* 在 RLHF 的 **fine-tuning** 階段,我們要讓 policy $\pi\_\theta$ 接近「最優 policy $\pi^\*$」。
* 理想目標:最小化分布差異
$$
\mathbb{D}_{KL}[\pi_\theta(y|x) \| \pi^*(y|x)]
$$
* 在實務上,PPO 就是用這種「policy gradient + baseline」的方式來優化。
---
### 2. 展開後的 Actor-Critic 目標 (Eq. \ref{eq\:AC})
透過代數推導,作者得到目標函數:
$$
\max_{\pi_\theta} \ \mathbb{E}_{\pi_\theta(y|x)} \Big[ \underbrace{r_\phi(x,y) - \beta \log \sum_y \pi_{\text{ref}}(y|x)\exp(\tfrac{1}{\beta}r_\phi(x,y))}_{f(r_\phi, \pi_{\text{ref}}, \beta)} - \underbrace{\beta \log \tfrac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)}}_{\text{KL term}} \Big]
$$
拆解:
1. **第一項 $r\_\phi(x,y)$**:獎勵模型給的分數。
2. **Normalization 項(log-sum-exp)**:可以解釋為 **soft value function**(參考 policy 下的期望獎勵)。
* 它不影響最優解,但影響 policy gradient 的方差。
* 沒有這個 baseline,policy gradient 會很不穩定。
3. **KL 項**:限制 policy 不要偏離參考分布。
---
### 3. Actor-Critic 不穩定的原因
* 在 RLHF 的 PPO 設定裡:
* **Normalization 項**難以處理:
* 要麼學一個 value function baseline(但難優化);
* 要麼用單樣本 Monte Carlo 近似(高方差,不準)。
* 這些 baseline 的估計誤差,會導致訓練不穩定、收斂慢。
---
### 4. DPO 的優勢
* DPO 透過 **reparameterization**,把 reward function 重寫成:
$$
\hat r_\theta(x,y) = \beta \log \frac{\pi_\theta(y|x)}{\pi_{\text{ref}}(y|x)}
$$
* 好處:這個形式 **天然包含了 normalization**,不需要額外 baseline。
* 結果:
* 避免了 PPO 這種演算法在 baseline 上的估計問題。
* Policy gradient 方差更小,學習更穩定。
## 實驗

* **左圖(Reward vs KL frontier)**:DPO 在所有 KL 水準下 reward 都最高,顯示它的優化品質比 PPO 好。
* **右圖(Summarization win rate)**:DPO 在 TL;DR 任務中表現超越 PPO,且對 sampling 溫度更不敏感(更穩健)。
* **對話任務**:DPO 與 PPO 相比,能更穩定提升 helpfulness / harmlessness。
好 這一段主要是 **實驗結果分析**,我幫你完整整理:
---
## 1. How well can DPO optimize the RLHF objective?
### 實驗設計
* **任務**:Controlled Sentiment Generation(有真實 reward function)。
* **評估**:同時計算 **reward** 與 **KL-divergence** → reward/KL frontier。
* **比較方法**:DPO、PPO(不同 target KL)、Unlikelihood(不同 α)、Preferred-FT(不同 seed)、以及 PPO-GT(使用真實 reward)。
* 共進行 22 次訓練 run。
### 結果
* **DPO frontier 最優**:在所有 KL 水準下,DPO 能同時達到更高 reward、保持較低 KL。
* **嚴重超越 PPO**:即使 PPO 也在優化同一目標,DPO 的效率與結果都更好。
* **甚至超越 PPO-GT**:即使 PPO 能直接使用「真實 reward function」,DPO 的 frontier 依舊更優。
意義:DPO 在 reward/KL tradeoff 上 **全面支配 PPO**,更高效且穩定。
---
## 2. Can DPO scale to real preference datasets?
### (a) Summarization(Reddit TL;DR)
* **模型**:GPT-J SFT model 微調。
* **評估**:GPT-4 win rate vs. 參考摘要。
* **結果**:
* DPO 在 \$T=0.0\$ 溫度下 win rate ≈ **61%**,超越 PPO 的 **57%**。
* DPO **超過 Best-of-N baseline** 的最佳表現。
* DPO 對 **溫度變化更穩健**,而 PPO 在高溫下性能掉回基線 GPT-J。
* Preferred-FT 幾乎無改善。
* 人類評估(Sec. \~\ref{sec\:human-judgments}):DPO (T=0.25) 輸出比 PPO (T=0.0) 更受偏好(58% vs 42%)。
---
### (b) Single-turn Dialogue(Anthropic HH)
* **模型**:基於 Pythia-2.8B。
* Preferred-FT → 建立 reference model。
* 然後用 DPO 微調。
* **比較**:Best-of-128、Pythia-2.8B 2-shot prompting、以及公開的 PPO-HH 模型。
* **結果**:
* DPO 表現與 Best-of-128 **相當或更好**,但計算量遠低於 Best-of-N。
* **唯一能超越「偏好標註回應」的有效方法**。
* 公開 PPO-HH 模型(Pythia-6B)表現甚至不如基線模型,凸顯 PPO 不穩定。
* DPO **收斂速度快**,很快達到最佳性能。
---
## 總結
* **Controlled setting**:DPO 的 reward/KL frontier 全面優於 PPO(甚至超越 PPO-GT oracle)。
* **Summarization**:DPO > PPO > Preferred-FT,且 DPO 更穩健,對 sampling temperature 不敏感。
* **Dialogue**:DPO = Best-of-128 (高效替代),且是唯一能穩定優於標註 baseline 的方法。
* **整體結論**:DPO 在各種任務中不僅更簡單、更高效,而且表現上 **支配或匹配** 所有 baseline。
## 1. Generalization to a new input distribution
### 實驗設計
* **模型來源**:來自 Reddit TL;DR summarization 實驗中訓練好的 DPO 與 PPO policy。
* **新分布**:CNN/DailyMail 新聞文章(而不是 Reddit forum post)。
* **評估**:GPT-4 win rate vs. ground truth summaries。
* **採樣溫度**:延用 TL;DR 實驗最佳溫度(0 與 0.25)。
### 結果(表\~\ref{tab\:ood})

* DPO:win rate = 0.36 (T=0)、0.31 (T=0.25)。
* PPO:win rate = 0.26 (T=0)、0.23 (T=0.25)。
結論:DPO 在分布轉移下依然明顯優於 PPO,即使 DPO 並未利用 PPO 所額外使用的「未標記 Reddit TL;DR prompt」。
→ 初步證據:DPO 的泛化能力不遜於 PPO,甚至更穩定。
---
## 2. Validating GPT-4 judgments with human judgments

### 實驗設計
* **目標**:驗證 GPT-4 的偏好判斷是否可信。
* **比較對象**:三種模型 → DPO (best, T=0.25)、PPO (worst, T=1.0)、SFT (middle, T=0.25),都和 PPO (T=0) baseline 做比較。
* **GPT-4 prompts**:
* **GPT-4 (S)**:單純問「哪個摘要更好」。
* **GPT-4 (C)**:問「哪個摘要更好 + 更精簡」,避免 GPT-4 偏好冗長答案。
* **人類實驗**:收集人類標註,與 GPT-4 評估比對。
### 結果(表\~\ref{tab\:human\_results})
* **Win rates**:
* DPO:Humans (58%)、GPT-4(S)=47%、GPT-4(C)=54% → GPT-4 與人類趨勢一致。
* SFT:Humans (43%)、GPT-4(S)=27%、GPT-4(C)=32%。
* PPO-1:Humans (17%)、GPT-4(S)=13%、GPT-4(C)=12%。
* **一致性 (Agreement)**:
* GPT-4 與人類的一致性 (67%\~86%) ≈ 人與人之間的一致性 (65%\~87%)。
* GPT-4 (C) 的結果更貼近人類判斷 → 主實驗使用此 prompt。
## 1. DPO 的貢獻與意義
* **偏好學習** 是訓練 alignment LMs 的強大且可擴展框架。
* **DPO 的核心**:
* 建立 policy 與 reward function 的數學映射,直接優化人類偏好。
* 使用 **cross-entropy loss**,避免 RL 訓練。
* 不需要特別調超參數,效能就能與 PPO 等 RLHF 方法相當或更好。
* **意義**:降低了 LM 偏好訓練的技術門檻,讓更多模型能快速 align。
---
## 2. 限制與未來工作
1. **泛化能力**
* 初步結果顯示 DPO 與 PPO 有相近的 out-of-distribution 表現,但需要更全面的研究。
* 問題:能否透過 **self-labeling** 方式,利用未標註 prompt 進一步提升效果?
2. **Reward over-optimization**
* 在 Figure\~\ref{fig\:dialogue-main}-right 出現的效能小幅下降,可能與 **過度優化 reward** 有關,需要深入探討。
3. **Scaling to larger models**
* 本文僅在 **6B 參數規模**測試,尚未驗證在數十億甚至百億以上參數下的可擴展性。
* 未來應研究 DPO 在 **SOTA 大模型**上的表現。
4. **評估方式的敏感性**
* GPT-4 評估結果依賴 prompt,不同 prompt 可能導致不同偏好判斷。
* 需要研究 **如何設計 prompt** 以獲得最穩定且可靠的自動化評估。
5. **更廣泛的應用場景**
* 雖然本文聚焦在 LMs,但 DPO 的方法可能能擴展至其他生成模型(影像、音樂、分子生成等)。
## 證明






