Last Updated on 2023-12-27 by Clay
介紹
在大型語言模型(Large Language Model, LLM)的微調任務中,監督式微調(Supervised Fine-tuning, SFT)、基於人類反饋強化學習(Reinforcement Learning from Human Feedback, RLHF)和直接偏好優化(DPO)… 等等都是不錯的方法,不過他們之間存在一些差異。
在經典的 PPO 訓練方法中,LLM 的訓練分成以下幾個步驟:
- 非監督式學習:讓 LLM 透過預測遮蔽 token 或是句子接龍的方式,讓模型透過文字理解各式各樣的知識
- 監督式微調:針對我們希望模型學會的領域,給予有標準答案的訓練資料。以 LLM 為例,這一步驟就是引出其『對話』能力
- RLHF:在 LLM 能夠流暢地對話以後,為了讓模型學習人類的價值觀,明白什麼該說、什麼不該說,嘗試訓練一個獎勵模型(Reward Model, RM),來讓 LLM 回答符合人類喜好的句子
而 DPO 是為了取代 RLHF 而出現的一種訓練方法,詳情可以參考我的上一篇文章《Direct Preference Optimization (DPO) 訓練方法筆記》。
但我在日常工作中,遇到一個需要微調模型的項目;並且該項目中 LLM 的所挑戰的任務為『閱讀理解後回覆使用者』—— 簡單來說,就是做 RAG。關於 RAG,我之前有一篇討論 Self-RAG 的文章《[論文閱讀] Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection》。
但我準備了訓練資料後,我有些迷茫:我到底該使用 SFT 訓練模型呢?還是該用 DPO 呢?
SFT 與 DPO 的差異
為了想通這個問題,我開始回到 SFT 和 DPO 的目的與特性開始思考起。
SFT:
- SFT 明確地讓 LLM 訓練在標註資料集上,讓特定的輸入與輸出有著明確的對應
- SFT 用來提高模型的指令遵守能力、正確性
- SFT 相較 DPO 訓練成本較低(DPO 需要有另外一個 reference model)
- SFT 提昇模型對特定領域的理解力和生成能力
DPO:
- DPO 使用 LLM 本身的 base model 作為參考模型(獎勵模型),通過比較模型回應和人類偏好回應來優化回覆策略
- DPO 根據人類偏好調整模型回應,使其更符合標準與期望
- 需要較高的計算資源
- DPO 可以讓 LLM 保持特定的回覆風格或生成特定的倫理標準
這樣一想,我似乎又更清楚了一些:我要提昇 LLM 回答性能的話該用 SFT、如果要遵守特定價值觀時則用 DPO(比方說客戶問 LLM 台灣是不是國家時,台灣地區的模型必須回答 YES)。
References
- Understanding and Using Supervised Fine-Tuning (SFT) for Language Models
- Direct Preference Optimization (DPO): A Simplified Approach to Fine-tuning Large Language Models
- Fine-Tuning LLMs: Supervised Fine-Tuning and Reward Modelling