Multi-Head Attentionとは

マルチヘッドアテンション別名 マルチヘッド注意機構

1行定義

Multi-Head Attentionとは、クエリ・キー・バリューを複数の組に射影し、並列にAttentionを計算して結果を結合する仕組みのことです。

くわしく

Multi-Head Attentionは、Attentionの計算を複数の「ヘッド」に分けて同時に行う仕組みです。2017年にTransformerの論文で提案されました。

なぜ複数に分けるのか

単語どうしの関係は1種類ではありません。主語と述語という文法上の関係もあれば、「それ」が何を指すかという関係もあります。Attentionが1つだけだと、注目の重みは1通りしか作れません。さまざまな関係が平均されてぼやけます。

そこで、ヘッドごとに別の観点で重みを計算させます。元の論文でも、ヘッドごとに異なる働きを学び、文の構造や意味に関係する振る舞いが見られたと報告されています。各ヘッドの役割は、人ではなく学習で決まります。

計算の流れ

  1. 入力をヘッドごとに異なる重み行列で射影し、次元の小さいクエリ・キー・バリューを作ります。
  2. 各ヘッドで、独立にScaled Dot-Product Attentionを計算します。
  3. 全ヘッドの出力を結合(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のどの部分で使われるかが問われます。

混同しやすい用語

用語意味
Self-Attention系列の各要素が同じ系列内のすべての要素との関連度を求め、その重みで情報を集めて文脈を反映した表現を作る仕組み

◯×チェック

  1. Multi-Head Attentionで各ヘッドがどの種類の関係に注目するかは、設計者があらかじめ割り当てるのではなく、学習によって決まる。

    答えを見る

    答え ◯ 正しい

    ヘッドごとの射影の重みを学習した結果として、役割が分かれます。元の論文でも、文の構造や意味に関係する振る舞いをするヘッドが見られたと報告されています。

  2. 元のTransformerでは、各ヘッドの次元を、モデルの次元をヘッド数で割った大きさに抑えるため、全体の計算量は1つの大きなヘッドで計算する場合と同程度になる。

    答えを見る

    答え ◯ 正しい

    論文の設定では512次元を8つのヘッドに分け、各ヘッドは64次元で計算します。ヘッドを分けても計算量はほとんど増えません。

  3. Transformerでは、Multi-Head AttentionはエンコーダのSelf-Attentionだけで使われ、デコーダでは使われない。

    答えを見る

    答え × 誤り

    エンコーダのSelf-Attention、デコーダのマスク付きSelf-Attention、デコーダからエンコーダを参照するSource-Target Attentionの3か所すべてで使われます。

練習問題

Multi-Head Attentionの問題(3問)
  1. Transformer内の注意機構
  2. Self-Attentionの計算量
  3. Multi-Headのヘッドの分け方

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術23

出典

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習