博客 / 詳情

返回

【論文復現上新】NeurIPS 2023! 經典論文! DPO:你的語言模型,其實就是個獎勵模型 | 強化學習 | 微調策略

01 論文概述

1.jpg

論文名稱:

Direct Preference Optimization: Your Language Model is Secretly a Reward Model

—— DPO:你的語言模型,其實就是個獎勵模型

論文鏈接:https://arxiv.org/pdf/2305.18290

👉Lab4AI 鏈接:

https://www.lab4ai.cn/paper/detail?utm\_source=jssq\_sf&id=b7f869b397904e6a95f01b7e3ad6f044&type=paper

2.png

🌟 簡介

在大型語言模型(LLM)的對齊技術中,基於人類反饋的強化學習(RLHF)曾是黃金標準。然而,RLHF 流程極其複雜:它需要先訓練一個獨立的獎勵模型(Reward Model)來學習人類偏好,然後再使用強化學習(如 PPO)來微調語言模型以最大化這個獎勵。這個過程不僅計算昂貴,而且訓練過程極不穩定。

於 2023 年發佈的 "直接偏好優化" (Direct Preference Optimization, DPO) 論文提出了一種顛覆性的、更簡單的對齊範式。DPO 的核心洞見是:​我們完全不需要一個顯式的獎勵模型,也不需要強化學習​。通過一個精妙的數學推導,作者證明了可以直接利用人類偏好數據(即“選擇的”和“拒絕的”回答對),通過一個簡單的分類損失函數來直接優化語言模型本身。這篇論文揭示了,在優化的過程中,語言模型自身就隱式地充當了獎勵模型的角色,從而極大地簡化了對齊過程。

🔍 優勢

  • 極致簡化DPO 將 RLHF 複雜的“獎勵建模 -> 強化學習”兩階段流程,簡化為一步式的、類似監督微調(SFT)的直接優化過程。
  • 穩定高效完全摒棄了強化學習,從而避免了其訓練不穩定、超參數敏感等問題。DPO 的訓練過程像常規微調一樣穩定,且計算成本更低。
  • 性能卓越實驗證明,DPO 不僅在實現上更簡單,其最終模型的性能通常能與甚至超越經過複雜 RLHF 調優的模型。
  • 理論優雅為偏好學習提供了堅實的理論基礎,清晰地揭示了語言模型策略與隱式獎勵函數之間的直接關係。

🛠️ 核心技術

  • ​偏好模型的重新參數化 (Reparameterization of the Reward Model)​DPO 的理論基石。它首先基於 Bradley-Terry 等偏好模型建立獎勵函數與最優策略(LLM)之間的關係。
  • 從獎勵優化到直接偏好優化通過數學推導,DPO 將最大化獎勵的目標函數,巧妙地轉換為了一個直接在偏好數據上進行優化的損失函數。這個損失函數的形式類似於一個簡單的二元分類任務。
  • ​隱式獎勵函數 (Implicit Reward Function)​推導出的 DPO 損失函數表明,優化過程實際上是在最大化一個由當前策略(被優化的 LLM)和參考策略(初始 SFT 模型)的比值所定義的​隱式獎勵​。這意味着語言模型自身的變化直接反映了獎勵的變化,無需外部獎勵模型。
  • ​類似 SFT 的實現 (SFT-like Implementation)​DPO 的最終損失函數非常簡潔,可以直接用於微調語言模型。訓練數據是 (prompt, chosen_response, rejected_response) 三元組,模型的目標是最大化 chosen_response 的概率,同時最小化 rejected_response 的概率。

02 論文原文閲讀

您可以跳轉到Lab4AI.cn上進行查看。👉 文末點擊閲讀原文,即可跳轉至對應論文頁面\~

  • Lab4AI.cn 提供免費的AI 翻譯和AI 導讀工具輔助論文閲讀;
  • 支持投稿復現,動手復現感興趣的論文;
  • 論文復現完成後,您可基於您的思路和想法,開啓論文創新。

    3.jpg
    4.png

03 一鍵式論文復現

Lab4AI.cn上已上架了此篇復現案例,【登錄平台】即可體驗論文復現。

👉Lab4AI 平台復現鏈接(或者點擊閲讀原文):

https://www.lab4ai.cn/paper/detail?utm\_source=jssq/_sf&id=5ff4513f94e1408aae0afd05f797d242&type=paper
image.png
6.png

🛠️ 實驗部署

本實驗環境已為您精心配置,開箱即用。

  • 💻 ​代碼獲取​:項目復現代碼已存放於 /codelab/direct-preference-optimization/code 文件夾中。
  • 🧠 ​模型説明​:/codelab/direct-preference-optimization/model 文件夾中存放了用於 DPO 訓練的初始 SFT 模型。
  • 📊 ​數據説明​:/codelab/direct-preference-optimization/dataset 文件夾中包含了用於實驗的人類偏好數據集(如 Anthropic HH-RLHF)。
  • 🌐 ​環境説明​:運行所需的所有依賴已預安裝在 /envs/dpo/ 環境中,您無需進行任何額外的環境配置。

🚀 環境與內核配置

請在終端中執行以下步驟,以確保您的開發環境(如 Jupyter 或 VS Code)能夠正確使用預設的 Conda 環境。

1. 在 Jupyter Notebook/Lab 中使用您的環境

  • 為了讓 Jupyter 能夠識別並使用您剛剛創建的 Conda 環境,您需要為其註冊一個“內核”。
  • 首先,在您已激活的 Conda 環境中,安裝 ipykernel 包:

    conda activate dpopip install ipykernel
  • 然後,執行內核註冊命令。

    # 為名為 dpo 的環境註冊一個名為 "Python(dpo)" 的內核kernel_install --name dpo --display-name "Python(dpo)"
  • 完成以上操作後,刷新您項目中的 Jupyter Notebook 頁面。在右上角的內核選擇區域,您現在應該就能看到並選擇您剛剛創建的 "Python(dpo)" 內核了。

2. 在 VS Code 中使用您的環境

  • VS Code 可以自動檢測到您新創建的 Conda 環境,切換過程非常快捷。
  • 第一步: 選擇 Python 解釋器

    • 確保 VS Code 中已經安裝了官方的 Python 擴展。
    • 使用快捷鍵 Ctrl+Shift+P (Windows/Linux) 或 Cmd+Shift+P (macOS) 打開命令面板。
    • 輸入並選擇 Python: Select Interpreter
  • 第二步: 選擇您的 Conda 環境

    • 在彈出的列表中,找到並點擊您剛剛創建的環境(名為 dpo 的 Conda 環境)。
    • 選擇後,VS Code 窗口右下角的狀態欄會顯示 dpo,表示切換成功。此後,當您在 VS Code 中打開 Jupyter Notebook (.ipynb) 文件時,它會自動或推薦您使用此環境的內核。

Lab4AI.cn 來送禮啦\~

✅ 註冊有禮,註冊即送 30 元代金券

https://www.lab4ai.cn/register?utm\_source=jssq/_sf立即體驗

✅ 入羣有禮,入羣即送 20 元代金券

👇

羣.jpg

user avatar yingyongwubideshuitong 頭像 wolun 頭像 comehope 頭像
3 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.