マルチヘッドAttention

Transformerアーキテクチャの中心的な要素である「マルチヘッドAttention(Multi-Head Attention)」は、Transformerモデルにおける注意機構の強化バージョンであり、異なる部分に焦点を当てる複数のAttentionメカニズムを同時に適用することで、より多様な情報を捉えることができる仕組みです。

基本的な仕組み

Transformerでは、入力データの異なる部分間の依存関係を効率的にモデル化するために、Attentionメカニズムが用いられます。特に、自己Attention(Self-Attention)は、ある単語(もしくはトークン)が他のどの単語に注目するべきかを決定するプロセスです。このAttentionでは、以下の3つのベクトルが使用されます:

  1. クエリ(Query): 注目したい単語やトークンに関する情報。
  2. キー(Key): 他の単語やトークンの特徴を表す情報。
  3. バリュー(Value): 実際に注目する情報の値。

Attentionメカニズムは、クエリとキーの間の類似度(内積)を計算し、その類似度に基づいてバリューを加重平均します。これにより、各単語が他の単語に対してどれだけ「注目」すべきかが決まります。

マルチヘッドAttentionの役割

マルチヘッドAttentionでは、単一のAttentionメカニズムを複数回、異なる視点から同時に実行します。具体的には、クエリ、キー、バリューを複数の「ヘッド」に分割し、各ヘッドで異なる変換を行います。各ヘッドは、異なる部分に焦点を当てることで、さまざまな特徴や依存関係を捉えることができ、モデル全体の性能が向上します。

マルチヘッドAttentionの利点

  1. 多様な情報を同時に捉える: 各ヘッドが異なる場所やパターンに注意を向けるため、単一のAttentionよりも豊富な情報を取り扱えます。
  2. 表現力の向上: 複数の異なる視点からデータを捉えることで、文や入力の複雑な構造や長距離依存関係をよりよく学習できます。
  3. 情報の並列処理: 各ヘッドが並列でAttention計算を行うため、計算効率も高いです。

実際の流れ

  1. 入力の線形変換: 各入力トークンに対して、クエリ、キー、バリューを生成するための線形変換を行います。
  2. 複数のAttention計算: これらのクエリ、キー、バリューを使い、各ヘッドごとにAttentionを計算します。
  3. 出力の結合: 各ヘッドで得られたAttentionの結果を結合し、再び線形変換して次の層に渡します。

これにより、マルチヘッドAttentionは、Transformerアーキテクチャが言語や画像などのさまざまなタスクで強力な性能を発揮する中心的な要素となっています。