SimPO(Simple Preference Optimization)は、リファレンスモデルを不要にしつつ、応答の平均対数確率を報酬として使用することでDPOの長さバイアスを解消した手法で、2024年にVirginia大学が提案した
SimPO(Simple Preference Optimization)は、2024年5月にVirginia大学の Meng らが論文「SimPO: Simple Preference Optimization with a Reference-Free Reward」で提案した選好最適化手法である。DPOの2つの主要な問題—リファレンスモデルの必要性と長さバイアス—を同時に解決するシンプルかつ効果的なアプローチである。
DPOでは暗黙の報酬を log π_θ(y|x) - log π_ref(y|x) として定義するが、SimPOではリファレンスモデルを排除し、応答の平均対数確率 (1/|y|) Σ log π_θ(y_i|y_{<i}, x) を報酬として直接使用する。この平均化操作により、長い応答が自動的に高い報酬を得る「長さバイアス」が解消される。
SimPOの損失関数には追加でマージン項 γ が導入されており、選好された応答と棄却された応答の間に最低限の報酬差を確保する。この γ(推奨値: 0.5-1.5)により、学習の安定性と最終性能の両方が向上する。
| 手法 | AlpacaEval 2.0 LC(%) | ArenaHard(%) | MT-Bench | リファレンス |
|---|---|---|---|---|
| DPO | 33.5 | 26.8 | 7.62 | 必要 |
| IPO | 31.2 | 25.1 | 7.49 | 必要 |
| KTO | 32.8 | 26.2 | 7.55 | 必要 |
| ORPO | 34.1 | 27.3 | 7.61 | 不要 |
| SimPO | 36.8 | 33.8 | 7.71 | 不要 |
※ Llama-3-8B-Instruct ベース、UltraFeedback データセットでの結果(論文より)
DPOで学習したモデルは選好データ中の長い応答を選好する傾向がある。これは暗黙の報酬 r(y) = log π_θ(y|x) - log π_ref(y|x) がトークン数の合計に比例するためである。例えば、200トークンの応答は100トークンの応答に比べて2倍のスコアを持ちやすい。SimPOでは平均化 (1/|y|) を導入することでこの問題を構造的に排除している。2025-2026年の実験では、SimPOで学習したモデルの平均応答長がDPOモデルの約70%に短縮されつつ、品質スコアは向上するという結果が報告されている。
SimPOは TRL ライブラリで CPOTrainer に統合されており、loss_type='simpo' と cpo_alpha パラメータで利用可能。主要ハイパーパラメータの推奨設定は β = 2.0-2.5、γ = 0.5-1.5、学習率 = 1e-6〜5e-7 である。8Bモデルの場合、A100 80GB×4基で約1.5-3時間の学習時間が目安。
Q1: SimPOはDPOの完全な上位互換ですか? A: ベンチマーク上はSimPOが優位だが、特定のドメイン(コード生成など)ではDPOが優れるケースもある。リファレンスモデル不要でメモリ効率が高い点はSimPOの明確な利点。
Q2: SimPOの γ(マージン)パラメータはどう調整しますか? A: γ = 1.0 を出発点として、0.5-1.5の範囲で探索する。γ が大きすぎると学習が不安定になり、小さすぎると選好の分離が不十分になる。
Q3: SimPOとORPOの違いは何ですか? A: 両方ともリファレンスモデル不要だが、ORPOはSFTと選好最適化を統合する(1ステップ)のに対し、SimPOはSFT後に適用する(2ステップ)。SimPOは長さバイアス解消に特化したマージン付き平均報酬を使用する点が独自。