JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

略過獎勵模型:DPO 與直接偏好最佳化

如果你能直接從偏好學習,完全不必訓練獎勵模型、也不必跑不穩定的 RL 呢?這正是 DPO 及其日益壯大家族的承諾。

DPO 想解除的痛點

經典 RLHF 威力強大卻很難伺候。你得同時在記憶體裡維護四個模型(策略、參考、獎勵模型,外加一個價值頭),你得時時盯著 KL 係數,而 PPO 對十幾個超參數很敏感,任一個都可能悄悄毀掉一次訓練。許多團隊問了一個明顯的問題:獎勵模型不過是通往更好策略的踏腳石——我們能不能甩開這個中間人,直接在偏好上最佳化策略?

直接偏好最佳化(direct preference optimization, DPO)的回答是「能」。它關鍵的數學洞見是:RLHF 的目標——在 KL 牽繩約束下最大化獎勵——存在一個封閉形式的最佳策略,而你可以重排這套代數,讓獎勵模型完全消失。剩下的,是一個直接定義在偏好對上、近似監督式的簡單損失。沒有獨立的獎勵模型、沒有取樣迴圈、沒有 PPO。

\pi^{*}(y\mid x) = \frac{1}{Z(x)}\,\pi_{\mathrm{ref}}(y\mid x)\,\exp\!\left(\tfrac{1}{\beta}\,r(x,y)\right)

受 KL 约束的 RLHF 目标有一个闭式最优解——DPO 正是将它反解,直接从策略中读出隐含奖励,无需单独的奖励模型。

DPO 的直覺運作方式

訣竅在於:語言模型可以充當它自己的隱式獎勵模型。DPO 把隱含獎勵定義為「當前策略對某回應的機率」與「凍結參考模型對它的機率」之間的對數比。接著它套用第二篇那個相同的成對排序損失——把被選中回答的隱含獎勵推到高於被拒絕回答的——只是現在「隱含獎勵」是直接從策略自身的機率算出來的。

# DPO loss for one (chosen, rejected) pair
#   pi  = policy being trained,  ref = frozen reference
delta_chosen   = log pi(chosen)   - log ref(chosen)
delta_rejected = log pi(rejected) - log ref(rejected)
loss = -log_sigmoid( beta * (delta_chosen - delta_rejected) )
# Raise prob of chosen, lower prob of rejected -- relative to ref.
DPO 的損失看起來像獎勵模型訓練,但這裡的「獎勵」是策略相對於凍結參考模型的對數機率比。

用直覺讀這個損失:它提高模型賦予偏好答案的機率、降低不受偏好答案的機率,且是相對於參考模型而言。在 RLHF 裡控制 KL 牽繩的那個 beta,在這裡再度出現,控制策略被允許離開參考模型有多激進。所以 DPO 並沒有丟掉 KL 的概念——它把那條牽繩直接烤進了單一、穩定的損失裡。

\mathcal{L}_{\text{DPO}} = -\,\mathbb{E}_{(x,\,y_w,\,y_l)}\left[\log\sigma\!\left(\beta\log\frac{\pi_\theta(y_w\mid x)}{\pi_{\text{ref}}(y_w\mid x)} - \beta\log\frac{\pi_\theta(y_l\mid x)}{\pi_{\text{ref}}(y_l\mid x)}\right)\right]

DPO 损失函数:相对冻结的参考模型、由 beta 缩放,提升被偏好回答相对被拒回答的隐式对数比奖励。

日益壯大的偏好方法家族

DPO 引爆了一連串變體,統稱直接偏好最佳化方法(preference optimization methods)。每一個都調整了 DPO 的某項假設。IPO針對 DPO 在某答案總是被偏好時容易過擬合的毛病,對目標加上正規化,使它無法把機率推到極端;KTO徹底拋開對成對資料的需求——它從個別答案學習,每個只標「好」或「壞」,蒐集成本低得多;ORPO則把偏好學習摺進 SFT 階段本身,在單一流程中同時做指令微調與偏好最佳化,完全不需要參考模型。

一個值得認識的更簡單表親是拒絕取樣微調(rejection sampling fine-tuning)(有時稱 best-of-N):每個提示取樣多個回應,只留下得分最高的(由獎勵模型或評審判定),再對這些贏家做純 SFT。它雖粗糙卻出奇有效,常被用來在 DPO 或 RLHF 之前自舉(bootstrap)出訓練資料。

DPO 對 RLHF:選哪個、何時選

關於DPO 對 RLHF,誠實的答案是:兩者都有效,選擇取決於工程上的限制,多過取決於誰明顯勝出。DPO 更簡單、更便宜、更穩定、可重現——是當今多數微調的預設,尤其適合你已有一份固定偏好資料集時。搭配 PPO 的完整 RLHF 在你想要策略內(on-policy)學習時仍具吸引力:模型生成新回應、被評分、在迴圈中從自己當下的錯誤學習,能達到 DPO 靜態資料集所及不到的品質。