JA EN
体系学習手法・アライメント
·★ 会員·論文·18分で読めます

DPOとその後 — RLHFを単純化する系譜

報酬モデルを別に建てずに選好から直接学ぶDPOの導出を、KL制約付き最大化の閉形式解から一段ずつ追う。さらにDPOの過学習を数式で説明したIPO、ペアを要求しないKTO、価値モデルを捨ててオンラインへ戻ったGRPOまでを「何を消したか」で整理し、手元のデータの形から選ぶ基準をまとめる。

対象textタスクtraining

Direct Preference Optimization: Your Language Model is Secretly a Reward Model


報酬モデルという「回り道」

料理の腕を上げたいとします。素直な方法は、食べた人に「AとB、どっちが美味しい?」と聞いて、答えを次の一皿に反映させることです。

ところがRLHF(人間のフィードバックによる強化学習)は、そこにワンクッション置きます。まず「AとBならA」という比較データを大量に集め、それで採点員を育てる。採点員とは、料理を入れると点数を返すニューラルネット、つまり報酬モデルです。そのうえで、採点員が高い点をつける料理を作るように、料理人(言語モデル)を強化学習で回す。この3段構えがInstruction Tuning と RLHFで扱ったInstructGPT型のパイプラインです。

回り道をする理由ははっきりしています。強化学習は「試して、点をもらって、直す」を何万回も繰り返すので、そのたびに人間に聞くわけにはいかない。だから人間の代役が要る。

代償も同じくらいはっきりしています。学習中のGPUには4つのモデルが同時に載ります。学習中の方策、固定した参照モデル、報酬モデル、そしてPPOが使う価値モデル。おまけに強化学習は不安定です。「人間の好みを反映したい」だけなのに、装置が大きすぎるのです。

2023年のDPO(Direct Preference Optimization)は、ここに一撃を入れました。採点員はいらない。 正確には、採点員は方策そのものの中にすでに書き込まれているので、別のネットワークとして建てる必要がない、という主張です。

直感: 採点表は方策の中にすでにある

核心は一行です。ある採点基準(報酬関数)を決めれば、それに最適化された料理人が一意に決まる。逆も成り立つ。 料理人の振る舞いを見れば、どんな採点基準に最適化されたかが逆算できる。だとしたら採点基準を先に学ぶ必要はなく、比較データを直接料理人に当てればいい。

但し書きが1つ。逆算には「参照点」が要ります。料理人が塩を強めに使ったとして、それが「塩が高評価だから」なのか「もともとの癖」なのかは単独では分かりません。訓練前の姿と比べて初めて、訓練に押された差分が読み取れます。だからDPOには最後まで参照モデルが登場します。消えるのは報酬モデルと価値モデルであって、参照モデルではありません。

仕組み: 報酬モデルが消える3行の変形

出発点は、RLHFが解こうとしている問題そのものです。

maxπθ  ExD,  yπθ(x)[r(x,y)]    βDKL(πθ(x)πref(x))\max_{\pi_\theta}\; \mathbb{E}_{x\sim\mathcal{D},\; y\sim\pi_\theta(\cdot\mid x)}\big[r(x,y)\big] \;-\; \beta\, D_{\mathrm{KL}}\big(\pi_\theta(\cdot\mid x)\,\|\,\pi_{\mathrm{ref}}(\cdot\mid x)\big)
(1)

xx は入力(プロンプト)、yy は出力(応答)、πθ\pi_\theta が学習中の方策、πref\pi_{\mathrm{ref}} が訓練前に固定した参照モデル、r(x,y)r(x,y) が報酬、DKLD_{\mathrm{KL}} は2つの分布のズレを測るKL情報量です。つまりこの式は「もらえる点数の平均をできるだけ高くしたい。ただし訓練前の自分から離れた分だけ、β\beta 倍の罰金を差し引かれる」という一文を、そのまま記号に置き換えたものです。β\beta は「どれだけ冒険していいか」のつまみです。

ここが分かれ道でした。従来はこれをPPOで近似的に解いていた。ところがこの形の問題には、閉じた式の厳密解があります

π(yx)  =  1Z(x)πref(yx)exp ⁣(1βr(x,y))\pi^{*}(y\mid x) \;=\; \frac{1}{Z(x)}\,\pi_{\mathrm{ref}}(y\mid x)\,\exp\!\left(\frac{1}{\beta}\,r(x,y)\right)
(2)

つまり最適な方策は「元のモデルの出やすさに、報酬の指数関数を掛け、合計が1になるよう割っただけ」ということです。Z(x)Z(x) はその割り算に使う正規化定数(分配関数)で、xx ごとに1つ決まります。報酬が高い応答は指数で持ち上げられますが、元のモデルがほぼ出さない応答は πref\pi_{\mathrm{ref}} が小さいので急には出てきません。KL罰金の正体はこれです。

次に、この式を rr について解き直します。対数を取って移項するだけです。

r(x,y)  =  βlogπ(yx)πref(yx)  +  βlogZ(x)r(x,y) \;=\; \beta\log\frac{\pi^{*}(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)} \;+\; \beta\log Z(x)
(3)

これが決定的な一行です。 報酬が、方策と参照モデルの「対数の比」で書けてしまった。つまりある応答の報酬とは「訓練後のモデルがそれを言う確率は、訓練前と比べて何倍になったか」を対数で測り、β\beta 倍したもの、というのがこの式の中身です(logZ(x)\log Z(x) は応答によらず全員に同じだけ乗る下駄)。報酬関数を別に持つ必要はなく、方策そのものが報酬関数を兼ねている。原論文の副題「あなたの言語モデルは、実は報酬モデルである」はこの式を指しています。

残る問題は logZ(x)\log Z(x) で、全応答にわたる和なので計算できません。ここで選好データの形が効きます。人間が答えているのは絶対的な点数ではなく「AとBならA」という比較でした。比較を確率に変える古典的なモデルがBradley-Terryモデルです。

p(ywylx)  =  σ(r(x,yw)r(x,yl))p(y_w \succ y_l \mid x) \;=\; \sigma\big(r(x,y_w) - r(x,y_l)\big)
(4)

ywy_w は人間が選んだ方、yly_l は選ばれなかった方、σ\sigma はシグモイド関数です。つまり「2つの応答の点差をシグモイドに通した値が、人間がそちらを選ぶ確率になる」— 点差が大きいほど勝つ確率が1に近づく、スポーツのレーティングと同じ発想です。

FIG 1横軸を「勝った応答と負けた応答の報酬の差」、縦軸を「人間がその通りに選ぶ確率」と読み替えると、これがBradley-Terryモデルそのものです。差が0なら五分五分、数目盛り開くだけで0か1に張り付き、そこから先はどれだけ差を広げても曲線がほとんど動かない — この「張り付いた先」が後半の主役になります

注目すべきは、式(4)に入るのが報酬のだという点です。式(3)を代入すると βlogZ(x)\beta\log Z(x) は両側に同じ値で現れるので、引き算できれいに消えます。計算できなかった項が、問題の立て方のおかげで消滅する。

代入して整理すると、DPOの損失関数が出てきます。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

参考文献

  1. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290論文ページ·PDF
  2. A General Theoretical Paradigm to Understand Learning from Human Preferences. arXiv:2310.12036論文ページ·PDF
  3. KTO: Model Alignment as Prospect Theoretic Optimization. arXiv:2402.01306論文ページ·PDF
  4. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300論文ページ·PDF
  5. ORPO: Monolithic Preference Optimization without Reference Model. arXiv:2403.07691論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

コメント

コメントにはログインが必要です