1行定義
Multi-Head Attentionとは、クエリ・キー・バリューを複数の組に射影し、並列にAttentionを計算して結果を結合する仕組みのことです。
くわしく
Multi-Head Attentionは、Attentionの計算を複数の「ヘッド」に分けて同時に行う仕組みです。2017年にTransformerの論文で提案されました。
なぜ複数に分けるのか
単語どうしの関係は1種類ではありません。主語と述語という文法上の関係もあれば、「それ」が何を指すかという関係もあります。Attentionが1つだけだと、注目の重みは1通りしか作れません。さまざまな関係が平均されてぼやけます。
そこで、ヘッドごとに別の観点で重みを計算させます。元の論文でも、ヘッドごとに異なる働きを学び、文の構造や意味に関係する振る舞いが見られたと報告されています。各ヘッドの役割は、人ではなく学習で決まります。
計算の流れ
- 入力をヘッドごとに異なる重み行列で射影し、次元の小さいクエリ・キー・バリューを作ります。
- 各ヘッドで、独立にScaled Dot-Product Attentionを計算します。
- 全ヘッドの出力を結合(Concat)し、重み行列
W^Oを掛けて1つの出力にまとめます。
式ではMultiHead(Q, K, V) = Concat(head_1, …, head_h) W^Oと書きます。
元のTransformerでは、モデルの次元512をヘッド数8で割り、各ヘッドは64次元で計算します。そのため全体の計算量は、512次元のまま1回計算する場合とほぼ同じです。各ヘッドは並列に計算できます。
Transformerの中での位置づけ
Transformerでは、エンコーダのSelf-Attention、デコーダのマスク付きSelf-Attention、Source-Target Attentionの3か所すべてがMulti-Head Attentionです。Transformerを土台とするBERTやGPTなどでも使われています。
覚え方
「着眼点の違う8人で同時に読み、メモを持ち寄ってまとめる」と覚えます。
G検定での出題
出題のされ方
複数のヘッドが異なる観点の関連を同時に捉えるという目的、ヘッドごとに異なる重みで射影して出力を結合する流れ、Transformerのどの部分で使われるかが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| Multi-Head Attentionこのページの用語 | クエリ・キー・バリューを複数の組に射影し、並列にAttentionを計算して結果を結合する仕組み |
| Self-Attention | 系列の各要素が同じ系列内のすべての要素との関連度を求め、その重みで情報を集めて文脈を反映した表現を作る仕組み |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
Multi-Head Attentionで各ヘッドがどの種類の関係に注目するかは、設計者があらかじめ割り当てるのではなく、学習によって決まる。
答えを見る
答え ◯ 正しい
ヘッドごとの射影の重みを学習した結果として、役割が分かれます。元の論文でも、文の構造や意味に関係する振る舞いをするヘッドが見られたと報告されています。
-
元のTransformerでは、各ヘッドの次元を、モデルの次元をヘッド数で割った大きさに抑えるため、全体の計算量は1つの大きなヘッドで計算する場合と同程度になる。
答えを見る
答え ◯ 正しい
論文の設定では512次元を8つのヘッドに分け、各ヘッドは64次元で計算します。ヘッドを分けても計算量はほとんど増えません。
-
Transformerでは、Multi-Head AttentionはエンコーダのSelf-Attentionだけで使われ、デコーダでは使われない。
答えを見る
答え × 誤り
エンコーダのSelf-Attention、デコーダのマスク付きSelf-Attention、デコーダからエンコーダを参照するSource-Target Attentionの3か所すべてで使われます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目23 Attention)
- Ashish Vaswani et al., Attention Is All You Need (2017) (3.2.2 Multi-Head Attention / 3.2.3 Applications of Attention in our Model)