教科書 › 第III部 深層学習:何の前提を足すか
CHAPTER 9

指示に従わせる ── 指示チューニングと嗜好最適化

★ 会員21分

第8章で、予算を NN と DD にどう割るかまで来ました。できあがったものは続きを当てる器です。質問を入れれば、その続きとして尤もらしい文字列が出てきます。

ただ「尤もらしい続き」は「役に立つ応答」ではありません。この章は、事前学習の次に来る2段——指示チューニングと嗜好最適化——を、損失関数の側から見ます。

どちらも新しい仕掛けではなく、的の置き方を変えただけです。そのことを式で確かめます。

1. 事前学習が一度も的にしていないもの

第8章の第6節で的の数を数えました。1,000トークンの文書から999個。全部「次のトークンは何か」です。

「良い応答はどちらか」という的は、1個もありません。

これは能力の話ではありません。第2章から繰り返している通り、損失に入っていないものは学習されません。事前学習の損失は次の形でした。

Lpre  =  −∑tlog⁡p(xt∣x<t)L_{\text{pre}} \;=\; -\sum_{t} \log p(x_t \mid x_{<t})
(1)

ここに「読む人の役に立ったか」は入っていません。だから「質問の続き」として、答えではなく

  • 同じ形式の別の質問(問題集の続きなら、そうなります)
  • 「という問題が去年の試験に出た」
  • 選択肢の列

が出てきても、損失の上では何も間違っていません。学習データにそういう続きが実際にあったのだから、分布を当てる仕事としては正しいのです。

事前学習済みモデルが指示に従わないのは、従えないからではなく、従うことを一度も的にしていないからです。足りないのは能力ではなく、的です。

2. 第1段:指示チューニング ── 損失は同じ、数える場所が違う

指示チューニング(SFT, supervised fine-tuning)でやることは2つだけです。

  1. データを〈指示, 応答〉の対にする
  2. 損失を応答の部分だけで取る(指示の部分は数えない)

損失そのものは第0部第4章の交差エントロピーのままで、新しい式は出てきません。変わるのはどこを数えるかです。

数えないと、どこへ行くか

対のうち指示が PP トークン、応答が RR トークンだとします。全トークンで損失を取ると、応答が占める割合は R/(P+R)R/(P+R) です。

指示 PP 応答 RR 応答の割合 マスクすると
200 50 20.0% 100%
500 20 3.8% 100%
1,000 200 16.7% 100%
100 100 50.0% 100%

P=500P=500、R=20R=20 の対——よくある形です——で全部数えると、勾配の96.2%は「指示文の続きを当てる」ことに向かいます。それは事前学習をもう一度やっているだけで、指示に従う練習ではありません。

同じデータ・同じ損失の式でも、数える場所を変えると学習の中身が変わる。 指示側をマスクするのはそのためです。

的の数はどれだけあるか

桁を見ます。対が5万件、応答が平均200トークンなら、的の数は次の通りです。

5×104×200  =  1×1075\times10^{4} \times 200 \;=\; 1\times10^{7}
(2)

第8章の例では事前学習に D=1011D = 10^{11} トークン(=ほぼ同数の的)を流していました。比は 10−410^{-4} です。

SFT の的は事前学習の1万分の1。これは知識を足す段ではありません。すでに持っている分布の、どこを出すかを選ばせる段です。桁が4つ違うものに同じ期待をかけてはいけません。

3. SFT で足りないもの ── 順序を教えていない

交差エントロピーは「見せた応答の分布に合わせろ」という命令です。ここに弱点があります。

同じ指示に対して、良い応答と悪い応答を1本ずつ見せたとします。 データ上の頻度は 1:1。最尤推定はそれに素直に従い、0.5 / 0.5 に合わせます。モデルから1本引いたとき、良いほうが出る確率は 0.5——当て推量と同じです。

引く回数 悪いほうが少なくとも1回出る確率
1回 50.0%
3回 87.5%
5回 96.9%

0.5n0.5^{n} の裏返しです。SFT は模倣なので、見せたものの平均が出てきます。 データに混ざった分だけ、混ざって出ます。

直す道は2つあります。

  • 悪い応答をデータから消す。 ただし「何が悪いか」を言語化できないと消せません。文体が硬い、結論が先にない、聞かれていないことを足している——どれも書き手によって線が違います。
  • どちらが良いかだけを言ってもらう。 応答を書き起こす必要はなく、2本並べて選ぶだけです。得られるのは「良い応答の本文」ではなく順序です。

後者が嗜好最適化(preference optimization)の入口です。問題は、順序をどうやって損失にするかです。

4. 比較を点数に変える ── Bradley–Terry

比較しか手元にないので、まず「点数があったとしたら比較はこう出るはず」という置き方を決めます。応答 AA が BB より好まれる確率を、次のように置きます。

P(A≻B)  =  σ ⁣(rA−rB)σ(z)  =  11+e−z\begin{aligned} P(A \succ B) &\;=\; \sigma\!\left(r_A - r_B\right) \\ \sigma(z) &\;=\; \frac{1}{1+e^{-z}} \end{aligned}
(3)

点数の差がそのままロジットになるという仮定です(Bradley–Terry モデル)。これを置くと、比較のデータからロジスティック回帰で rr を当てられます。

差と勝率の対応は計算できます。

報酬差 Δr\Delta r 勝率
0 50.0%
0.5 62.2%
1 73.1%
2 88.1%
3 95.3%
5 99.3%

逆向きにも読めます。人の意見が7割で一致する程度の差は、ln⁡(0.7/0.3)=0.847\ln(0.7/0.3) = 0.847 です。9割なら 2.197。一致率が上がっても報酬差はゆっくりしか伸びません。

rr について決まるもの・決まらないもの

この置き方では、rr の原点が決まりません。全部に同じ定数を足しても差は変わらないからです。実測:rA=1.2r_A=1.2、rB=0.3r_B=0.3 で勝率 0.710950。両方に +7.5+7.5 しても 0.710950。

一方で倍率は効きます。差を2倍にすると 0.858149 になります。

報酬モデルの出した数字は「絶対的な良さ」ではありません。順序と、差の大きさだけが意味を持ちます。「このモデルの報酬は 3.2 だった」という文は、比べる相手を書かないと何も言っていません。

5. 報酬を上げるだけでは壊れる ── 第2のつまみ

点数が手に入ったので、あとはそれを最大にすればよさそうです。やってみると困ります。

Eπ[r]E_\pi[r] だけを最大にする方針は、報酬が最大の応答を毎回出すものです。分布としては1点に潰れます。そして rr は人の比較から推定した量なので、推定が甘い場所に全部寄ります。良い応答を探しているのではなく、報酬モデルの穴を探していることになります。

だから第2の項を足します。参照方針 πref\pi_{\text{ref}}(SFT を終えたモデル)から離れた分を罰します。

max⁡π  Eπ[r]  −  β KL ⁣(π ∥ πref)\max_{\pi} \; \mathbb{E}_{\pi}[r] \;-\; \beta\, \mathrm{KL}\!\left(\pi \,\|\, \pi_{\text{ref}}\right)
(4)

KL\mathrm{KL} は第0部第4章で出てきた「ずれの量」です。β\beta は1ずれるごとに何点ぶん罰するかの交換レートです。

解を手で出す

応答が有限個なら、この最大化はラグランジュで解けます。やることは2つで、∑yπ(y)=1\sum_y \pi(y) = 1 の制約を付けて目的関数を書き、π(y)\pi(y) で偏微分して 0 に置くだけです。

§

この先は会員限定です

全42章と全ラボが読み放題。月額¥490、いつでも解約できます。

コメント

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