為了將大型語言模型(LLM)與人類的價值和意圖對齊,學習人類回饋至關重要,這能確保它們是有用的、誠實的和無害的。在對齊 LLM 方面,一種有效的方法是根據人類回饋的強化學習(RLHF)。儘管 RLHF 方法的結果很出色,但其中涉及了一些最佳化難題。其中涉及訓練一個獎勵模型,然後優化一個策略模型來最大化該獎勵。
近段時間已有一些研究者探索了更簡單的離線演算法,其中之一就是直接偏好最佳化(DPO)。 DPO 是透過參數化 RLHF 中的獎勵函數來直接根據偏好資料學習策略模型,這樣就無需顯示式的獎勵模型了。該方法簡單穩定,已被廣泛用於實踐。
使用 DPO 時,得到隱式獎勵的方式是使用當前策略模型和監督式微調(SFT)模型之間的響應似然比的對數。但是,這種建構獎勵的方式並未與引導產生的指標直接對齊,該指標大約是策略模型產生回應的平均對數比然。訓練和推理之間的這種差異可能導致表現不佳。
為此,維吉尼亞大學的助理教授孟瑞與普林斯頓大學的在讀博士夏夢舟和助理教授陳丹琦三人共同提出了SimPO——一種簡單且有效的離線偏好優化演算法. SimPO的設計是基於將最佳化問題建模為連續黑盒函數的最小化問題。透過不斷迭代,SimPO能夠找到最佳的最佳化策略,並實現高效的收斂。與傳統的最佳化演算法相比,
##該演算法的核心是將偏好優化目標中的獎勵函數與生成指標對齊。 SimPO 包含兩個主要組件:(1)在長度上歸一化的獎勵,其計算方式是使用策略模型的獎勵中所有token 的平均對數機率;(2)目標獎勵差額,用以確保獲勝和失敗響應之間的獎勵差超過這個差額。
總結起來,SimPO 有以下特點:
該團隊進行了大量分析,結果表明SimPO 能更有效地利用偏好數據,從而在驗證集上對高質量和低品質響應的似然進行更準確的排序,這進一步能造就更好的策略模型。
如表1 所示,該團隊基於Llama3-8B-instruct 建構了一個具有頂尖性能的模型,其在AlpacaEval 2 上得到的長度受控勝率為44.7,在排行榜上超過了Claude 3 Opus;另外其在Arena-Hard 上的勝率為33.8,使其成為了目前最強大的8B 開源模型。
為便於理解,以下先介紹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%。
更多詳細內容,請閱讀原文。
以上是全面超越DPO:陳丹琦團隊提出簡單偏好優化SimPO,也煉出最強8B開源模型的詳細內容。更多資訊請關注PHP中文網其他相關文章!