大規模言語モデル入門【Transformer:基礎理論A-3】

基礎理論

Multi-Head Attentionの詳細メカニズム:文脈理解の核心

前回は、Transformerの全体構造を学びました。今回は、その心臓部であるAttentionメカニズムを詳しく解説します。

以前のブログでもTransformerについては言及しておりますので、こちらもご参考にしてみてください。

【第10回】時系列データ解析と自然言語処理の基礎(後編)
【今回の主な内容】時系列データから言語理解まで、Transformerの可能性を探る今回のテーマは自然言語処理、時系列データ解析、音声認識における技術進化の流れと、Transformerモデルの登場が果たした革新について解説します。まず、自...

Attentionの本質:「文脈に応じた注視」

Transformerの全体イメージ:Transformerは、図1の左半分と右半分に示すように、エンコーダーとデコーダーの両方に、スタックド・セルフ・アテンションとポイントワイズ・フル・コネクテッド・レイヤーを使用した全体的なアーキテクチャを採用している。図1の左半分と右半分に示すように、エンコーダーとデコーダーの両方に点接続レイヤーを使用している。論文:Attention Is All You Needより

上図ではTransformer全体図を扱っていますが、現在の大規模言語モデルのほとんどが、「Decoder-only(デコーダーのみ)」のアーキテクチャを採用しているため、今回はMulti-Head Attentionの仕組みに焦点を当てて紹介します。まずはAttentionメカニズムについて説明を行います。

言語を理解する上で最も重要なのは、「この状況で、どの単語が重要か?」 を判断することです。

例:

文1: 「銀行に行った」
     ↑ 「銀行」は金融機関の意味

文2: 「川の土手に行った」  
     ↑ 「土手」という単語が文脈を変える

単語の意味は、周囲の文脈に依存しています。このような「文脈に応じた理解」を実現するのが、Attentionメカニズム です。

Scaled Dot-Product Attention:4ステップで分かる仕組み

Scaled Dot-Product Attentionとは、Attentionメカニズムの具体的な計算アルゴリズムであり、入力シーケンス内の単語間の関連性を動的に計算する仕組みです。

Self-Attention におけるScaled Dot-Product Attentionの動作イメージ。論文:Attention Is All You Needより

Attentionは、以下の4つのステップで計算されます。

ステップ1:Q, K, Vベクトルの生成

入力ベクトル $x$ から、3種類のベクトルを線形変換で生成します:

$$Q = x \cdot W^Q, \quad K = x \cdot W^K, \quad V = x \cdot W^V$$

ベクトル名前役割
QQuery(問い合わせ)「何について情報が欲しいのか?」
KKey(鍵)「何に関する情報か?」
VValue(値)「実際の情報内容」

具体例:

入力:「猫は可愛い」

Q生成:「このトークンの意味を理解したい」という問い合わせ
K生成:「このトークンは何に関連しているか」のインデックス
V生成:「このトークンの情報(意味・文法等)」

ステップ2:類似度スコアの計算

Qベクトルと全てのKベクトルの内積を計算し、「どのトークンが関連しているか」を数値化します:

$$\text{Score} = Q \cdot K^T / \sqrt{d_k}$$

ここで $\sqrt{d_k}$ は、スコアの分散を安定させるためのスケーリングファクターです。

具体例(「可愛い」という単語に対する計算):

組み合わせスコア解釈
「可愛い」のQ × 「猫」のK0.8高い相関 → 関連度 高
「可愛い」のQ × 「は」のK0.3低い相関 → 関連度 低
「可愛い」のQ × 「可愛い」のK0.9自分自身 → 最高

ステップ3:Attention Weight の正規化

スコアを Softmax関数 に通し、合計が1になるように正規化します:

$$\text{Weight} = \text{Softmax}\left(\frac{Q \cdot K^T}{\sqrt{d_k}}\right)$$

スコア:   [0.8, 0.3, 0.9]
           ↓ Softmax
Weight:   [0.35, 0.10, 0.55]
           (合計 = 1.0)

これが「注意の重み(Attention Weight)」で、「各トークンにどれだけ注意を払うか」を表します。

ステップ4:出力ベクトルの生成

Attention Weight とVベクトルを掛け合わせ、加重平均を計算します:

$$\text{Output} = \sum_{i} \text{Weight}_i \cdot V_i$$

Output = 0.35 × 「猫」のV + 0.10 × 「は」のV + 0.55 × 「可愛い」のV

結果:「可愛い」という単語の意味が、主に「可愛い」自身(55%)と「猫」(35%)という文脈から形成される新しいベクトルになります。

【Scaled Dot-Product Attentionの詳細】

【第10回】時系列データ解析と自然言語処理の基礎(後編)
【今回の主な内容】時系列データから言語理解まで、Transformerの可能性を探る今回のテーマは自然言語処理、時系列データ解析、音声認識における技術進化の流れと、Transformerモデルの登場が果たした革新について解説します。まず、自...

スケーリング係数 /\sqrt{d_k}$ の役割

$\sqrt{d_k}$ は、スコアの分散を安定させるためのスケーリングファクター

Attention計算では、なぜ内積を次元数の平方根で割る必要があるのか?

次元が大きいと内積が大きくなる原因

ベクトルの次元数 $d$ が大きいほど、内積は自動的に大きな値になります:

次元数標準偏差
d=64≈ 8
d=1024≈ 32

Softmax関数への悪影響

大きなスコアをSoftmaxに通すと、一部に極端に集中してしまいます:

スコアSoftmax後の分布状態
[0.1, 0.2, 0.3][0.29, 0.33, 0.37]バランス良い
[10, 20, 30][0.0000, 0.0001, 0.9999]一部に集中!

スケーリングによる解決

$$\frac{Q \cdot K^T}{\sqrt{d_k}}$$

で割ることで、スコアの分散を安定させ、Softmaxの出力を「バランスの取れた分布」に保ちます。

スケーリング前:  [10, 20, 30]       → 分散が大きい(問題あり)
スケーリング後:  [1.25, 2.5, 3.75]  → 分散が適切に
Softmax後:      [0.15, 0.23, 0.62] → バランスが取れている

Multi-Head Attention:複数の視点から理解する

Attentionの計算を1回だけ行うのではなく、異なる線形変換を使って複数回(複数ヘッド)実行し、その結果を統合する のが Multi-Head Attention です。つまり先ほどのScaled Dot-Product Attentionを複数回実行し、その結果を統合するAttention機構であるということです。

なぜ複数ヘッドなのか?

ヘッド注目する関係性
ヘッド1文法的な関係性「名詞」「動詞」の品詞関係
ヘッド2意味的な関係性「主語」「目的語」の役割関係
ヘッド3共参照的な関係性「猫」と「その」の指示対象
ヘッド4-8その他の多角的な関係性

各ヘッドが異なる側面からトークン間の関係を捉え、それらを統合することで、より豊かで正確な文脈理解が実現されます。

実装:並列実行と統合

💡 ポイント
GPT-3では、通常 h=96 個のヘッド が使われており、96個の異なる視点からテキストを理解しています。

まとめ

Attentionメカニズムの文脈理解のプロセス

ステップ処理内容
1. Q, K, V生成入力から3種類のベクトルを生成
2. スコア計算Q・Kの内積で類似度を算出
3. 正規化Softmaxで確率分布に変換
4. 出力生成Weightとの加重平均で最終出力

Multi-Head Attentionにより、複数の視点からの文脈理解が可能になります。

📖 参考文献

主要論文

  1. Vaswani, A., et al. (2017): “Attention Is All You Need”, NeurIPS 2017
  2. Jain, S., & Wallace, B. C. (2019): “Attention is Not Explanation”, ACL 2019
  3. Michel, P., Levy, O., & Neubig, G. (2019): “Are Sixteen Heads Really Better than One?”, NeurIPS 2019

📚 シリーズ案内

この記事は「LLM事前学習シリーズ」の一部です。

コメント

タイトルとURLをコピーしました