DPO
DPO (Direct Preference Optimization) は、reward model も PPO も使わず、preference data から policy を直接最適化する 方法です。Rafailov ら (2023) によって提案され、open-source LLM alignment の de facto standard になりました。
核心: reward model を消す
DPO の出発点は、PPO RLHF の最適 policy が closed-form で書ける という観察です。
KL 制約付きの reward 最大化問題
の最適 policy は、
これを reward について解くと、
つまり、reward は policy と reference の log-ratio で表せる のです。 は preference の差を取ると消えます。
Bradley-Terry preference を policy 損失に変換
Preference probability の Bradley-Terry は
ここに上の reward 表現を代入すると、 が消えて、
これを最大化する負の対数尤度が DPO loss です。
直感
直感的には、
- Winner の log-ratio は 上げる
- Loser の log-ratio は 下げる
- 両方が reference から離れすぎないように で制御
という、preference の対照学習 です。
PPO RLHF との比較
| 観点 | PPO RLHF | DPO |
|---|---|---|
| Reward model | 必要 (別 model) | 不要 (policy log-ratio で代替) |
| Online sampling | 必要 | 不要 (offline preference data でよい) |
| 学習対象 | Policy + value + reward + ref | Policy + ref のみ |
| メモリ | 重い | 軽い |
| 実装 | 複雑 | SFT とほぼ同じ複雑度 |
| 安定性 | チューニング難 | 比較的安定 |
| 性能 | 強いが繊細 | 多くの open LLM で同等以上 |
これが、DPO が広く採用された理由です。
β の役割
は KL 強度に相当します。
- 小: policy が reference から大きく離れる (preference に強く適合、forget リスク)
- 大: 保守的、preference 効果が弱い
典型的には 前後がよく使われます。
実装上の注意
| Tip | 内容 |
|---|---|
| Reference model | 凍結し、必要なら別 GPU に置く (gradient 不要) |
| SFT の質 | DPO は SFT がしっかり済んでいることを前提 |
| Length bias | DPO は長 response を好む傾向 → length normalization が有用 |
| Distribution shift | Offline preference の policy 外領域に注意 |
| Catastrophic forgetting | SFT data を mix した DPO や NLL 補正が有効 |
| On-policy 化 | Iterative DPO / online DPO で性能が伸びる |
DPO の変種
DPO 以降、多くの variants が登場しました (詳細)。
| 名前 | キーアイデア |
|---|---|
| IPO | DPO の overfitting を防ぐ identity-preference 損失 |
| KTO | Pair でなく単一 response の good / bad で学習 |
| ORPO | SFT と preference を 1 stage に統合 |
| SimPO | Reference model を省く |
| cDPO | Label noise に robust な variant |
数式で見る DPO の暗黙 reward
DPO は、reference policy からのずれを使って、policy の暗黙 reward を定義します。
Preference pair に対する DPO loss は次の通りです。
この式の気持ちは、「chosen response の log ratio を rejected response より大きくする」というものです。明示的な reward model や PPO rollout を使わず、preference data から policy を直接更新できる点が DPO の大きな利点です。
は reference policy からどれくらい離れることを許すかを決めます。 が大きいほど preference 差を強く反映し、小さいほど reference からの変化が抑えられます。
関連ページ
- RLHF and Alignment Overview
- Reward Model
- RLHF with PPO
- IPO, KTO, ORPO, SimPO
- Iterative and Online DPO
- GRPO
- Supervised Fine-Tuning
- Offline RL
主なソース
- DPO paper: https://arxiv.org/abs/2305.18290
- TRL DPO trainer: https://huggingface.co/docs/trl/main/en/dpo_trainer
- A Long Way to Go (analysis of DPO): https://arxiv.org/abs/2404.10719