ヘッドを分け、ブロックに組む ── Transformer の全体像
第6章で注意機構を1つだけ見ました。残っているのは2つです。なぜ複数に分けるのかと、その部品がどう組まれて1つのブロックになるのか。
この章で第III部の道具はそろいます。第1章から積み上げてきたもの——差を下まで届ける仕掛け(第3章)、止める場所(第4章)、構造に埋める前提(第5章)、どこを見るかを入力が決める仕掛け(第6章)——が、1つの図に収まります。
1. ヘッドを分ける理由は、パラメータではない
まず、増えないことを確認します。 を 個に割って各ヘッドを とすると、 の合計は
| ヘッド数 | パラメータ | |
|---|---|---|
| 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つのヘッドで か所を同時に強く見ることはできません。2か所を狙えば、1か所あたり最大 0.5。3か所なら 0.333。
| 狙う数 | ||||
|---|---|---|---|---|
| 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 |
どの狙いにも保証できる重みは です。ヘッドは丸ごと割り当てるので、平均の取り分 にはなりません—— なら 0.667 ではなく 0.500(2つ担当するヘッドが出るため)。ヘッドを増やすことは、同時に狙える場所の数を増やすことでした。
2. 因果マスク ── 未来を隠したことを確かめる
文章を左から生成するモデルでは、位置 の出力が 以降を見てはいけません。やることは単純で、 の上三角を にしてから softmax を通します。
本当に見ていないかは測れます。位置 の入力を少し動かして、位置 の出力がどれだけ動くかを中心差分で見ます(第0部の第2章の式(2))。
| 未来()への依存の最大 | 過去() | |
|---|---|---|
| マスクあり | 0.000000 | 0.6583 |
| マスクなし | 0.2550 | 0.3368 |
厳密に0です。 を通した softmax の出力がちょうど0になり、そこから先に勾配も流れません。マスクは「見ないようにお願いする」のではなく、経路を塞いでいます。
3. ブロックに組む
Transformer の1ブロックは、第6章までに出た部品だけでできています。
コメント
コメントにはログインが必要です