Skip to main content

IPO, KTO, ORPO, SimPO

DPO の登場以降、その弱点を補ったり、設定を変えたりした direct preference optimization variants が次々と提案されました。ここでは代表的なものを整理します。

比較表

名前キー特徴
IPODPO の logistic loss を squared loss に置き換え、overfitting を抑制
KTO単一 response への good / bad だけで学習可能
ORPOSFT loss と preference loss を 1 stage に統合
SimPOReference model を省き、length-normalized log-prob で学習
cDPOLabel noise を仮定し、robust に loss を smoothing

IPO

DPO は preference data に対して overfit しやすく、reward gap が極端に開く ことが知られています。IPO (Identity Preference Optimization) は logistic loss の代わりに次の二乗 loss を使います。

LIPO=E ⁣[(logπ(ywx)πref(ywx)logπ(ylx)πref(ylx)12β)2]\mathcal{L}_{\text{IPO}} = \mathbb{E}\!\left[\left(\log \frac{\pi(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \log \frac{\pi(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)} - \frac{1}{2\beta}\right)^2\right]

これにより、勝者と敗者の差を「無限に広げる」方向の degenerate solution を避けやすくなります。

KTO

DPO は (winner, loser) pair を要求しますが、現実には「この response は good / bad」という 単独 feedback しか集められない場合も多いです。KTO (Kahneman-Tversky Optimization) は、prospect theory にヒントを得て、

  • Desirable response の効用を上げる
  • Undesirable response の不効用を抑える

を別々に扱う objective を設計します。Pair が不要な点で、production の thumbs-up / down log と相性が良いです。

ORPO

通常 alignment は SFT → preference の 2 stage ですが、ORPO (Odds Ratio Preference Optimization) は SFT と preference を 1 stage に統合 します。

LORPO=LSFT+λLOR\mathcal{L}_{\text{ORPO}} = \mathcal{L}_{\text{SFT}} + \lambda\, \mathcal{L}_{\text{OR}}

LOR\mathcal{L}_{\text{OR}} は odds ratio に基づく preference loss です。Reference model も不要で、reproducibility と簡潔さで人気があります。

SimPO

SimPO は、

  • Reference model を省く
  • Length-normalized average log-probability を使う
  • Margin を導入する

ことで、DPO のメモリ要件と length bias を緩和します。

LSimPO=logσ ⁣(βywlogπ(ywx)βyllogπ(ylx)γ)\mathcal{L}_{\text{SimPO}} = -\log \sigma\!\left(\frac{\beta}{|y_w|}\log \pi(y_w \mid x) - \frac{\beta}{|y_l|}\log \pi(y_l \mid x) - \gamma\right)

選び方の目安

状況候補
高品質 pair preference + SFT 済DPO / SimPO
Overfit / reward gap 暴走IPO
Pair が無く binary label のみKTO
Pipeline をシンプルにしたいORPO
メモリ厳しいSimPO
Annotator noise が大きいcDPO

共通の注意

これら DPO 系は、

  • SFT がしっかりしていることが前提
  • Length bias が出やすい
  • 同じ data で iterate しすぎると過剰最適化
  • Reasoning task では PPO / GRPO の方が強いこともある

ことに注意が必要です。

数式で見る DPO variants の共通形

DPO 系の preference optimization は、chosen と rejected の policy score 差を大きくする形として統一的に見られます。

Δθ(x)=sθ(x,y+)sθ(x,y)\Delta_\theta(x)=s_\theta(x,y^+)-s_\theta(x,y^-)

ここで、sθs_\theta は method ごとに異なる score です。DPO では reference policy との log ratio が使われます。

sθDPO(x,y)=βlogπθ(yx)πref(yx)s_\theta^{DPO}(x,y)=\beta\log\frac{\pi_\theta(y\mid x)}{\pi_{ref}(y\mid x)}

SimPO は reference model を使わず、sequence length で正規化した log probability を score として使います。

sθSimPO(x,y)=βylogπθ(yx)s_\theta^{SimPO}(x,y)=\frac{\beta}{|y|}\log\pi_\theta(y\mid x)

ORPO は、SFT loss に preference の odds ratio penalty を足す見方ができます。KTO は chosen / rejected pair ではなく、good / bad の単独 label から prospect theory 風の utility を学習します。

この整理の気持ちは、「各 variant は、何を score と見なし、reference model を使うかどうか、pairwise か unary label かが違う」と理解することです。

関連ページ

主なソース