SimPO(Simple Preference Optimization)(シンポーシンプルプリファレンスオプティミゼーション)
長さ正規化とターゲットマージンを導入したDPO改善手法。参照モデル不要・応答長による性能バイアスを解消・シンプルな実装が特徴。Princeton大学が2024年に提案。AlpacaEval2・MT-BenchでDPO/KTO/IPO/ORPOを上回る性能を報告。
SimPO(Simple Preference Optimization)とは
SimPO(Simple Preference Optimization)は、Princeton大学が2024年に提案したLLMアライメント手法です。DPOの2つの主要な問題点——参照モデルへの依存と長さバイアス——を同時に解決する設計になっています。
DPOの2大問題
問題1: 参照モデル依存
DPOは学習時に参照モデル(π_ref)をロードし続ける必要があり、GPUメモリを2倍消費します。
問題2: 長さバイアス
DPOで学習したモデルは「長い応答を好む」バイアスが発生しやすいです。これはDPOの報酬計算が応答の合計対数尤度を使うため、長い応答は単純に値が大きくなるからです。
SimPOの解法
長さ正規化(平均対数尤度)
DPOでは Σ log P(y_i|x) を使いますが、SimPOでは (1/|y|) * Σ log P(y_i|x) という平均対数尤度を使います。これで応答長に関係なく公平な比較が可能になります。
# DPO報酬(長さバイアスあり)
reward_dpo = sum(log_probs) # 長い応答ほど大きくなりやすい
# SimPO報酬(長さ正規化済み)
reward_simpo = sum(log_probs) / len(tokens) # 長さ非依存
ターゲットマージン γ (gamma)
SimPOは選好マージンを明示的に制御するγパラメータを導入します。
L_SimPO = -log_sigmoid(β/|y_w| * log P(y_w) - β/|y_l| * log P(y_l) - γ)
γは「好ましい応答が好ましくない応答よりどれだけ高いスコアを持つべきか」のターゲット値。γ > 0 により、モデルが確信を持って選好を学習できます。
主要ハイパーパラメータ
- β (beta): 選好の強さ制御(典型的: 2.0〜10.0、DPOより大きい値)
- γ (gamma): ターゲットマージン(典型的: 0.5〜1.5)
実装例
from trl import DPOTrainer, DPOConfig
training_args = DPOConfig(
loss_type="simpo",
beta=2.0,
simpo_gamma=0.5,
output_dir="./simpo-model",
)
trainer = DPOTrainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer,
)
trainer.train()
ベンチマーク性能
Princeton論文(2024年)での比較結果(Llama-3-8B-Instruct使用時):
| 手法 | AlpacaEval2 LC Win Rate | MT-Bench |
|---|---|---|
| DPO | 約30% | 約7.2 |
| IPO | 約28% | 約7.1 |
| KTO | 約31% | 約7.3 |
| ORPO | 約32% | 約7.3 |
| SimPO | 約37% | 約7.5 |
採用事例
2024年後半からHuggingFaceコミュニティでSimPOを使ったモデルが増加。princeton-nlp/SimPO-Llama3-8B等の公開モデルが参照実装として利用されています。
よくある質問
Q1: betaをDPOより大きく設定する理由は? A: SimPOの報酬スケールがDPOと異なるため。論文ではβ=2〜10が推奨。DPOの0.1〜0.5と混同しないよう注意。
Q2: gammaはどう選ぶ? A: 0.5から始め検証セットで調整。大きすぎると選好マージンが要求過多になり学習が難しくなる。
Q3: Qwen・Mistralでも使えますか? A: はい。モデルアーキテクチャ非依存。TRLのDPOTrainer(loss_type="simpo")で対応。
まとめ
SimPOはDPOの根本的な課題(長さバイアス・参照モデル依存)を解決した洗練された手法で、複数のベンチマークでDPO/KTO/IPO/ORPOを上回る性能が報告されています。2025年現在、選好最適化の最先端手法として研究・実用の両面で注目されています。