為了將大型語言模型(LLM)與人類的價值和意圖對齊,學習人類反饋至關重要,這能確保它們是有用的、誠實的和無害的。在對齊 LLM 方面,一種有效的方法是根據人類反饋的強化學習(RLHF)。儘管經典 RLHF 方法的結果很出色,但其多階段的過程依然帶來了一些最佳化難題,其中涉及到訓練一個獎勵模型,然後最佳化一個策略模型來最大化該獎勵。
近段時間已有一些研究者探索了更簡單的離線演算法,其中之一便是直接偏好最佳化(DPO)。DPO 是透過引數化 RLHF 中的獎勵函式來直接根據偏好資料學習策略模型,這樣就無需顯式的獎勵模型了。該方法簡單穩定,已經被廣泛用於實踐。
使用 DPO 時,得到隱式獎勵的方式是使用當前策略模型和監督式微調(SFT)模型之間的響應似然比的對數 的對數比。但是,這種構建獎勵的方式並未與引導生成的指標直接對齊,該指標大約是策略模型所生成響應的平均對數似然。訓練和推理之間的這種差異可能導致效能不佳。
為此,弗吉尼亞大學的助理教授孟瑜與普林斯頓大學的在讀博士夏夢舟和助理教授陳丹琦三人共同提出了 SimPO—— 一種簡單卻有效的離線偏好最佳化演算法。
論文標題:SimPO: Simple Preference Optimization with a Reference-Free Reward
論文地址:https://arxiv.org/pdf/2405.14734
程式碼 & 模型:https://github.com/princeton-nlp/SimPO
該演算法的核心是將偏好最佳化目標中的獎勵函式與生成指標對齊。SimPO 包含兩個主要元件:(1)在長度上歸一化的獎勵,其計算方式是使用策略模型的獎勵中所有 token 的平均對數機率;(2)目標獎勵差額,用以確保獲勝和失敗響應之間的獎勵差超過這個差額。
總結起來,SimPO 具有以下特點:
簡單:SimPO 不需要參考模型,因此比 DPO 等其它依賴參考模型的方法更輕量更容易實現。
效能優勢明顯:儘管 SimPO 很簡單,但其效能卻明顯優於 DPO 及其最新變體(比如近期的無參考式目標 ORPO)。如圖 1 所示。並且在不同的訓練設定和多種指令遵從基準(包括 AlpacaEval 2 和高難度的 Arena-Hard 基準)上,SimPO 都有穩定的優勢。
儘量小的長度利用:相比於 SFT 或 DPO 模型,SimPO 不會顯著增加響應長度(見表 1),這說明其長度利用是最小的。
該團隊進行了大量分析,結果表明 SimPO 能更有效地利用偏好資料,從而在驗證集上對高質量和低質量響應的似然進行更準確的排序,這進一步能造就更好的策略模型。
如表 1 所示,該團隊基於 Llama3-8B-instruct 構建了一個具有頂尖效能的模型,其在 AlpacaEval 2 上得到的長度受控式勝率為 44.7,在排行榜上超過了 Claude 3 Opus;另外其在 Arena-Hard 上的勝率為 33.8,使其成為了目前最強大的 8B 開源模型。
SimPO:簡單偏好最佳化
為便於理解,下面首先介紹 DPO 的背景,然後說明 DPO 的獎勵與生成所用的似然度量之間的差異,並提出一種無參考的替代獎勵公式來緩解這一問題。最後,透過將目標獎勵差額項整合進 Bradley-Terry 模型中,推匯出 SimPO 目標。
背景:直接偏好最佳化(DPO)
DPO 是最常用的離線偏好最佳化方法之一。DPO 並不會學習一個顯式的獎勵模型,而是使用一個帶最優策略的閉式表示式來對獎勵函式 r 進行重新引數化:
其中 π_θ 是策略模型,π_ref 是參考策略(通常是 SFT 模型),Z (x) 是配分函式。透過將這種獎勵構建方式整合進 Bradley-Terry (BT) 排名目標,,DPO 可使用策略模型而非獎勵模型來表示偏好資料的機率,從而得到以下目標:
其中 (x, y_w, y_l) 是由來自偏好資料集 D 的 prompt、獲勝響應和失敗響應構成的偏好對。
一種與生成結果對齊的簡單無參考獎勵
DPO 的獎勵與生成之間的差異。使用 (1) 式作為隱式的獎勵表示式有以下缺點:(1) 訓練階段需要參考模型 π_ref,這會帶來額外的記憶體和計算成本;(2) 訓練階段最佳化的獎勵與推理所用的生成指標之間存在差異。具體來說,在生成階段,會使用策略模型 π_θ 生成一個能近似最大化平均對數似然的序列,定義如下:
在解碼過程中直接最大化該指標是非常困難的,為此可以使用多種解碼策略,如貪婪解碼、波束搜尋、核取樣和 top-k 取樣。此外,該指標通常用於在語言模型執行多選任務時對選項進行排名。在 DPO 中,對於任意三元組 (x, y_w, y_l),滿足獎勵排名 r (x, y_w) > r (x, y_l) 並不一定意味著滿足似然排名。事實上,在使用 DPO 訓練時,留存集中大約只有 50% 的三元組滿足這個條件(見圖 4b)。
構建在長度上歸一化的獎勵。很自然地,我們會考慮使用 (3) 式中的 p_θ 來替換 DPO 中的獎勵構建,使其與引導生成的似然指標對齊。這會得到一個在長度上歸一化的獎勵:
其中 β 是控制獎勵差異大小的常量。該團隊發現,根據響應長度對獎勵進行歸一化非常關鍵;從獎勵公式中移除長度歸一化項會導致模型傾向於生成更長但質量更低的序列。這樣一來,構建的獎勵中就無需參考模型了,從而實現比依賴參考模型的演算法更高的記憶體和計算效率。
SimPO 目標
目標獎勵差額。另外,該團隊還為 Bradley-Terry 目標引入了一個目標獎勵差額項 γ > 0,以確保獲勝響應的獎勵 r (x, y_w) 超過失敗響應的獎勵 r (x, y_l) 至少 γ:
兩個類之間的差額已知會影響分類器的泛化能力。在使用隨機模型初始化的標準訓練設定中,增加目標差額通常能提升泛化效能。在偏好最佳化中,這兩個類別是單個輸入的獲勝或失敗響應。
在實踐中,該團隊觀察到隨著目標差額增大,生成質量一開始會提升,但當這個差額變得過大時,生成質量就會下降。DPO 的一種變體 IPO 也構建了與 SimPO 類似的目標獎勵差額,但其整體目標的效果不及 SimPO。
目標。最後,透過將 (4) 式代入到 (5) 式中,可以得到 SimPO 目標:
總結起來,SimPO 採用了與生成指標直接對齊的隱式獎勵形式,從而消除了對參考模型的需求。此外,其還引入了一個目標獎勵差額 γ 來分離獲勝和失敗響應。
實驗設定
模型和訓練設定。該團隊的實驗使用了 Base 和 Instruct 兩種設定下的兩類模型 Llama3-8B 和 Mistral-7B。
評估基準。該團隊使用了三個最常用的開放式指令遵從基準:MT-Bench、AlpacaEval 2 和 Arena-Hard v0.1。這些基準可評估模型在各種查詢上的多樣化對話能力,並已被社群廣泛採用。表 2 給出了一些細節。
基線方法。表 3 列出了與 SimPO 做對比的其它離線偏好最佳化方法。
實驗結果
主要結果與消融研究
SimPO 的表現總是顯著優於之前已有的偏好最佳化方法。如表 4 所示,儘管所有的偏好最佳化演算法的表現都優於 SFT 模型,但簡單的 SimPO 卻在所有基準和設定上都取得了最佳表現。這樣全面的大幅領先彰顯了 SimPO 的穩健性和有效性。
基準質量各不相同。可以觀察到,在 Arena-Hard 上的勝率明顯低於在 AlpacaEval 2 上勝率,這說明 Arena-Hard 是更困難的基準。
Instruct 設定會帶來顯著的效能增益。可以看到,Instruct 設定在所有基準上都全面優於 Base 設定。這可能是因為這些模型使用了更高質量的 SFT 模型來進行初始化以及這些模型生成的偏好資料的質量更高。
SimPO 的兩種關鍵設計都很重要。表 5 展示了對 SimPO 的每種關鍵設計進行消融實驗的結果。(1) 移除 (4) 式中的長度歸一化(即 w/o LN);(2) 將 (6) 式中的目標獎勵差額設定為 0(即 γ = 0)。
移除長度歸一化對結果的影響最大。該團隊研究發現,這會導致模型生成長且重複的模式,由此嚴重拉低輸出的整體質量。將 γ 設為 0 也會導致 SimPO 的效能下降,這說明 0 並非最優的目標獎勵差額。
有關這兩項設計選擇的更深度分析請參閱原論文。
深度對比 DPO 與 SimPO
最後,該團隊還從四個角度全面比較了 DPO 與 SimPO:(1) 似然 - 長度相關性、(2) 獎勵構建、(3) 獎勵準確度、(4) 演算法效率。結果表明 SimPO 在準確度和效率方面優於 DPO。
DPO 獎勵會隱式地促進長度歸一化。
儘管 DPO 獎勵表示式 (不包含配分函式)缺乏一個用於長度歸一化的顯式項,但策略模型和參考模型之間的對數比可以隱式地抵消長度偏見。如表 6 與圖 4a 所示,相比於沒有任何長度歸一化的方法(記為 SimPO w/o LN),使用 DPO 會降低平均對數似然和響應長度之間的斯皮爾曼相關係數。但是,當與 SimPO 比較時,其仍然表現出更強的正相關性。
DPO 獎勵與生成似然不匹配。
DPO 的獎勵與平均對數似然指標之間存在差異,這會直接影響生成。如圖 4b 所示,在 UltraFeedback 訓練集上的例項中,其中 ,幾乎一半的資料對都有。相較之下,SimPO 是直接將平均對數似然(由 β 縮放)用作獎勵表示式,由此完全消除了其中的差異。
DPO 在獎勵準確度方面不及 SimPO。
圖 4c 比較了 SimPO 和 DPO 的獎勵準確度,這評估的是它們最終學習到的獎勵與留存集上的偏好標籤的對齊程度。可以觀察到,SimPO 的獎勵準確度高於 DPO,這說明 SimPO 的獎勵設計有助於實現更有效的泛化和更高質量的生成。
SimPO 的記憶體效率和計算效率都比 DPO 高。
SimPO 的另一大優勢是效率,畢竟它不使用參考模型。圖 4d 給出了在 8×H100 GPU 上使用 Llama3-Base 設定時,SimPO 和 DPO 的整體執行時間和每臺 GPU 的峰值記憶體使用量。相比於原版 DPO 實現,得益於消除了使用參考模型的前向透過,SimPO 可將執行時間降低約 20%,將 GPU 記憶體使用量降低約 10%。
更多詳細內容,請閱讀原文。