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

ヘッドを分け、ブロックに組む ── Transformer の全体像

★ 会員11分

第6章で注意機構を1つだけ見ました。残っているのは2つです。なぜ複数に分けるのかと、その部品がどう組まれて1つのブロックになるのか。

この章で第III部の道具はそろいます。第1章から積み上げてきたもの——差を下まで届ける仕掛け(第3章)、止める場所(第4章)、構造に埋める前提(第5章)、どこを見るかを入力が決める仕掛け(第6章)——が、1つの図に収まります。

1. ヘッドを分ける理由は、パラメータではない

まず、増えないことを確認します。dmodel=512d_{\text{model}} = 512 を hh 個に割って各ヘッドを dk=512/hd_k = 512/h とすると、WQ,WK,WV,WOW_Q, W_K, W_V, W_O の合計は

ヘッド数 hh dkd_k パラメータ
1 512 1,048,576
2 256 1,048,576
8 64 1,048,576
64 8 1,048,576

どれも同じ。 幅を分けているだけなので、ヘッドを増やしても減らしても総数は動きません。では何のために分けるのか。

理由は softmax の形にあります。1つの softmax の出力は合計が1です(第0部の第3章のカテゴリカル分布)。だから、1つのヘッドで kk か所を同時に強く見ることはできません。2か所を狙えば、1か所あたり最大 0.5。3か所なら 0.333。

狙う数 kk h=1h=1 h=2h=2 h=4h=4 h=8h=8
1 1.000 1.000 1.000 1.000
2 0.500 1.000 1.000 1.000
3 0.333 0.500 1.000 1.000
4 0.250 0.500 1.000 1.000
8 0.125 0.250 0.500 1.000

どの狙いにも保証できる重みは 1/⌈k/h⌉1/\lceil k/h \rceil です。ヘッドは丸ごと割り当てるので、平均の取り分 h/kh/k にはなりません——k=3, h=2k=3,\ h=2 なら 0.667 ではなく 0.500(2つ担当するヘッドが出るため)。ヘッドを増やすことは、同時に狙える場所の数を増やすことでした。

FIG 1位置を押して「狙い」を選び、ヘッド数を変える。狙いがヘッドより多いと1つのヘッドが分担し、softmax の合計1の制約で1か所あたりが薄まる。ヘッドが足りれば各狙いに1.00 を乗せられる。パラメータ数は h によらず同じ
図は理想の分布を構成して測っています。学習は1回もしていません。言えるのは「作れる分布の形」の話であって、実際のモデルのヘッドがきれいに分業しているという主張ではありません。訓練後のヘッドが何を見ているかは、第6章の最後に書いたとおり重みを見ただけでは決まりません。

2. 因果マスク ── 未来を隠したことを確かめる

文章を左から生成するモデルでは、位置 tt の出力が t+1t+1 以降を見てはいけません。やることは単純で、QK⊤QK^{\top} の上三角を −∞-\infty にしてから softmax を通します。

本当に見ていないかは測れます。位置 jj の入力を少し動かして、位置 tt の出力がどれだけ動くかを中心差分で見ます(第0部の第2章の式(2))。

未来(j>tj>t)への依存の最大 過去(j≤tj \le t)
マスクあり 0.000000 0.6583
マスクなし 0.2550 0.3368

厳密に0です。 −∞-\infty を通した softmax の出力がちょうど0になり、そこから先に勾配も流れません。マスクは「見ないようにお願いする」のではなく、経路を塞いでいます。

3. ブロックに組む

Transformer の1ブロックは、第6章までに出た部品だけでできています。

x′=x+MHA(LN(x))y=x′+FFN(LN(x′))\begin{aligned} x' &= x + \mathrm{MHA}\big(\mathrm{LN}(x)\big) \\ y &= x' + \mathrm{FFN}\big(\mathrm{LN}(x')\big) \end{aligned}
(1)

§

この先は会員限定です

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

コメント

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