Skip to main content

Iterative and Online DPO

Iterative / Online DPO は、固定された preference dataset に対して一度だけ DPO を行うのではなく、現在の policy から新しい response を sample し、judge や verifier で preference を作り直し、DPO で再び更新するという loop 型の alignment method です。Offline DPO の簡潔さを保ちながら、policy が実際に出す分布に preference data を近づけることを狙います。

Iterative DPO loop

自作概念図。現在の policy が sample を生成し、judge / verifier が winner と loser を作り、その pair で DPO 更新を行います。

なぜ offline DPO だけでは足りないのか

標準的な DPO は、既に集められた pair preference data (x,yw,yl)(x, y_w, y_l) を使います。この設計は非常に扱いやすい一方で、次の問題があります。

  • Preference data が古い policy から作られており、現在の policy の失敗を反映しないことがあります。
  • Model が改善すると、古い loser が簡単すぎて学習 signal が弱くなります。
  • Hard negative、長い reasoning、tool use などの失敗例は、on-policy に集めないと見つかりにくいです。
  • Dataset にない領域では、offline preference objective が過信や reward hacking を起こすことがあります。

Iterative / online DPO は、policy が実際に生成する response に対して preference を付けることで、この distribution mismatch を減らします。

標準 DPO の復習

DPO の loss は、winner と loser の log probability ratio の差を使って書けます。

LDPO(πθ)=E(x,yw,yl)[logσ(β(logπθ(ywx)πref(ywx)logπθ(ylx)πref(ylx)))]\mathcal{L}_{\text{DPO}}(\pi_\theta) = -\mathbb{E}_{(x,y_w,y_l)} \left[\log \sigma\left(\beta \left( \log \frac{\pi_\theta(y_w \mid x)}{\pi_{\text{ref}}(y_w \mid x)} - \log \frac{\pi_\theta(y_l \mid x)}{\pi_{\text{ref}}(y_l \mid x)} \right)\right)\right]

Online 化しても、この loss 自体は大きく変わらないことが多いです。変わるのは、pair をどの policy から生成し、どの judge で label し、どの頻度で buffer を更新するかです。

Iterative DPO

Iterative DPO は、DPO を round ごとに繰り返す recipe です。

  1. 現在の policy から複数 response を sample します。
  2. Human、reward model、LLM judge、rule-based verifier で preference を付けます。
  3. 新しい pair を preference buffer に追加します。
  4. DPO で policy を更新します。
  5. 更新された policy で次 round の sample を作ります。

この方法では、各 round で model の弱点が変わるため、preference data も徐々に難しくなります。Math や code のように automatic verifier が使える task では、human annotation なしでも loop を回せる場合があります。

Online DPO

Online DPO は、policy sampling と preference optimization をより密に結合します。たとえば、mini-batch ごとに current policy から candidate を生成し、その場で judge して DPO loss を計算します。

観点Iterative DPOOnline DPO
Data collectionround 単位training 中に逐次
実装比較的簡単serving と training の結合が必要
Data freshness高いさらに高い
Cost
安定性buffer で平滑化しやすいjudge noise の影響を受けやすい

Online DPO は on-policy RL に近づきますが、PPO や GRPO と違い、value model や advantage estimation を持たないことが多いです。その代わり、pairwise preference の作り方が性能を大きく左右します。

SPIN との関係

SPIN (Self-Play Fine-Tuning) は、model 自身の出力と human-written response を対比し、model が自分の過去出力を識別して改善するように学習する self-play 型の post-training method です。DPO と同じく pairwise な contrastive objective に近く、iteration によって model の出力分布を更新していく点で、iterative preference optimization の代表例と見なせます。

Self-Rewarding Language Models

Self-Rewarding Language Models は、LLM 自身を judge として使い、instruction following data と preference data を反復的に生成します。これは RLAIF や AI feedback と近く、human annotation の scale 制約を緩和します。ただし、judge model の bias、自己強化による崩壊、reward hacking の検出が課題になります。

Judge / verifier の設計

Judge向いている task注意点
HumanSafety、helpfulness、creative高コストで遅い
Reward modelChat quality、stylereward hacking と drift
LLM-as-a-judge大規模 annotationjudge bias と position bias
Rule verifierMath、code、formatreward が sparse になりやすい

DPO、Online DPO、GRPO の違い

観点Offline DPOIterative / Online DPOGRPO
Data固定 preference datasetcurrent policy 由来の preferenceon-policy rollout + scalar reward
Objectivepairwise logistic loss多くは DPO losspolicy gradient
Value model不要不要不要なことが多い
Reward model不要または label 用judge / verifier として使うことがあるscalar reward が必要
強み簡単、安定、安いdistribution mismatch を減らすverifiable reasoning に強い
弱みdata が古くなるsampling と judge が高コストRL tuning が不安定になりやすい

実装上の注意

  • Reference model をいつ更新するかで挙動が変わります。固定 reference は安定しますが、古くなります。
  • Judge が current policy に甘くなると、自己強化で品質が落ちます。
  • Easy pair ばかりになると学習 signal が弱くなるため、hard negative mining が重要です。
  • Length bias を抑えるために、response 長の制御や normalization が必要です。
  • Safety alignment では、online sampling 中に危険出力を生成するため、filtering と sandbox が必要です。

数式で見る online preference data の分布変化

Iterative / online DPO では、現在の policy πθk\pi_{\theta_k} から response を生成し、その response に対する preference data を追加します。

Dk+1=Dk{(x,y+,y)}yπθk\mathcal{D}_{k+1}=\mathcal{D}_k\cup\{(x,y^+,y^-)\}_{y\sim\pi_{\theta_k}}

その後、新しい data で policy を更新します。

θk+1=argminθLDPO(θ;Dk+1)\theta_{k+1}=\arg\min_\theta \mathcal{L}_{DPO}(\theta;\mathcal{D}_{k+1})

この式の気持ちは、「古い policy が作った response だけで学習するのではなく、現在の policy が実際に出しそうな response に対して preference を集め、学習分布を追いかける」というものです。

ただし、online data は policy が改善するほど distribution が変わります。過去 data に過剰適合すると現在の failure を直せず、現在 data だけに寄せすぎると forgetting が起きます。そのため、replay buffer、data mixture、KL regularization が重要になります。

関連ページ

主なソース