DPO(Direct Preference Optimization) でぃーぴーおー(だいれくとぷりふぁれんすおぷてぃまいぜーしょん)
DPODirect Preference Optimization人間フィードバックRLHFの代替選好学習ファインチューニング
DPOについて教えて
DPO(Direct Preference Optimization)とは
DPO(Direct Preference Optimization) とは、2023年にStanford大学が提案した、RLHFの報酬モデルと強化学習を省略し、人間の選好(好みの比較データ)から直接LLMを最適化する手法です。RLHFでは「SFT → 報酬モデル学習 → PPOによる強化学習」という3ステップが必要でしたが、DPOはこれを数式上でまとめて1つの損失関数に統合しています。
理論的には、RLHFが解こうとしている最適化問題を変形すると、報酬モデルを陽に学習しなくても直接LLM自体の選好を損失関数として表せることをDPOは示しました。実装が単純(通常の分類と同様の学習ループ)、報酬モデル不要でコストが低い、学習が安定しやすいという利点があります。Llama 2 Chat・Zephyrなどの有力モデルで採用されています。
DPOとRLHFの比較
| 項目 | RLHF | DPO |
|---|---|---|
| 報酬モデル | 必要(別途学習) | 不要 |
| 強化学習 | PPOが必要 | 不要(通常の損失関数) |
| 実装の複雑さ | 高い | 低い |
| 計算コスト | 高い | 中程度 |
| 安定性 | 報酬ハッキングのリスク | 比較的安定 |
| 代表採用モデル | ChatGPT | Llama 2 Chat, Zephyr |
歴史と背景
- 2023年5月:Rafailov et al.「Direct Preference Optimization: Your Language Model is Secretly a Reward Model」を発表
- 2023年後半:Zephyr(HuggingFace)がDPOで高性能を達成し注目
- 2024年:SimPO・ORPO・IPOなどDPOの改良版が多数登場
- 現在:RLHFとDPOの両方が使われており、用途・コストに応じて選択
DPOの学習データ例
DPOの学習データ形式(Preference Pair):
指示: 「東京の観光スポットを教えて」
chosen(良い回答):
「東京の主な観光スポットには、浅草寺・東京スカイツリー・
新宿御苑・上野公園などがあります。浅草寺は...」
rejected(悪い回答):
「東京に観光スポットはたくさんありますね。色々あると
思います。ご自身で調べてみてください。」
→ DPOはchosenをrejectedより生成しやすいよう最適化