💭

Attention機構を完全理解!大学生のための分かりやすい解説~バイオリニスト中野哲平が教える

に公開

はじめに:Attentionって何?

「Attention」を日本語に訳すと「注意」という意味ですが、機械学習におけるAttention機構も、まさに「どこに注意を向けるか」を決める仕組みです。

例えば、あなたが英語の文章「I love this beautiful flower」を日本語に翻訳するとき、「beautiful」を翻訳する際には「flower(花)」という単語により多く注意を向けますよね。Attention機構は、この「注意の向け方」をコンピュータに教える技術なのです。

Attention機構の基本構造

Attention機構には3つの主要な要素があります:

Query(クエリ): 「何を知りたいか」を表す
Key(キー): 「何と比較するか」を表す
Value(バリュー): 「実際の情報」を表す

これを図書館で本を探す例で考えてみましょう:

  • Query: あなたが探している本のテーマ(例:「機械学習」)
  • Key: 各本の背表紙のタイトル
  • Value: 本の中身(実際の内容)

あなたは自分のQuery(探しているテーマ)と各本のKey(タイトル)を比較して、最も関連性の高い本のValue(内容)を重点的に読みますよね。

計算式を段階的に理解しよう

Attention(Q,K,V) = softmax(QK^T/√d_k)V

この式を4つのステップに分けて説明します:

ステップ1:類似度の計算(QK^T)

まず、QueryとKeyの類似度を計算します。これは内積(dot product)で行います。

類似度 = Query × Key^T

具体例:

  • Query = [1, 2, 3](探している情報)
  • Key1 = [1, 1, 1](候補1)
  • Key2 = [3, 2, 1](候補2)

類似度1 = 1×1 + 2×1 + 3×1 = 6
類似度2 = 1×3 + 2×2 + 3×1 = 10

Key2の方が類似度が高いので、より注意を向けるべきです。

ステップ2:スケーリング(÷√d_k)

計算した類似度を√d_kで割ります。d_kはKeyの次元数です。

スケーリング後 = 類似度 ÷ √d_k

なぜスケーリングが必要?

次元数が大きくなると、内積の値も大きくなりがちです。値が大きすぎると、後のsoftmax計算で勾配消失問題が起こります。√d_kで割ることで、値を適切な範囲に調整します。

例:d_k = 64の場合、√64 = 8で割る

ステップ3:正規化(softmax)

スケーリングした値をsoftmax関数で正規化し、確率分布に変換します。

注意重み = softmax(スケーリング後の類似度)

softmaxの効果:

  • 全ての重みの合計が1になる
  • 類似度の高いものほど大きな重みを持つ
  • 負の値も扱える

例:[2, 8] → softmax → [0.003, 0.997]

ステップ4:重み付き和(×V)

最後に、計算した注意重みをValueに掛けて重み付き和を取ります。

出力 = Σ(注意重み × Value)

これにより、重要な情報ほど強く反映された結果が得られます。

実際の計算例

簡単な例で全体の流れを見てみましょう:

Q = [1, 0]  (Query)
K = [[1, 0], [0, 1]]  (2つのKey)
V = [[2, 3], [4, 5]]  (対応するValue)
d_k = 2

ステップ1: QK^T = [1×1+0×0, 1×0+0×1] = [1, 0]

ステップ2: [1, 0] ÷ √2 = [0.707, 0]

ステップ3: softmax([0.707, 0]) = [0.67, 0.33]

ステップ4: 0.67×[2,3] + 0.33×[4,5] = [2.66, 3.66]

まとめ:なぜAttentionが重要なのか

Attention機構の素晴らしい点は:

  1. 選択的注意: 重要な情報により多くの注意を向けられる
  2. 並列処理: 全ての位置を同時に処理できる
  3. 長距離依存: 離れた位置の情報も直接参照できる

これらの特性により、翻訳、要約、質問応答など様々なタスクで革命的な性能向上を実現しています。

覚え方のコツ:
QueryKeyを見て、一番似ているもののValue重点的に取る」

この基本を押さえれば、Transformerなどより複雑なアーキテクチャも理解しやすくなります!

Discussion