Transformerアーキテクチャの中核をなす機構で、入力シーケンス内の各トークンが他の全トークンとの関連度(Attention Weight)を計算し、文脈に応じた表現を動的に生成する仕組み。Query・Key・Valueの3つの射影行列を用いて計算される。
Self-Attention(自己注意機構)は、Transformerモデルの根幹をなす計算機構です。入力シーケンス内の各トークンが、同じシーケンス内の他の全トークンとの関連性を動的に計算し、文脈を反映した表現ベクトルを生成します。2017年のGoogle論文「Attention Is All You Need」で提案されて以来、GPT-4o・Claude 4・Gemini 2.5など現代のLLMすべてがこの機構に基づいています。
Self-Attentionは各トークンの入力ベクトルを3つの異なる線形変換で射影します。
| 要素 | 役割 | 直感的な比喩 |
|---|---|---|
| Query (Q) | 「何を知りたいか」を表す | 検索エンジンに入力するクエリ |
| Key (K) | 「どんな情報を持っているか」を表す | 文書のインデックスキー |
| Value (V) | 「実際の情報内容」を表す | 文書の本文 |
数式で表すと: Attention(Q, K, V) = softmax(QK^T / √d_k) V
d_k が大きいとQK^Tの内積値が極端に大きくなり、Softmaxの出力がほぼone-hot(1つだけ1で残り0)になってしまいます。√d_k で割ることで勾配が安定し、学習が円滑に進みます。GPT-4クラスのモデルでは d_k = 128 程度が一般的で、√128 ≈ 11.3 で除算します。
Self-Attentionの計算量はシーケンス長 n に対して O(n²) です。これが長文処理のボトルネックになります。
| シーケンス長 | Attention行列サイズ | FP16メモリ(1ヘッド) |
|---|---|---|
| 2,048 | 4M要素 | 8 MB |
| 8,192 | 67M要素 | 128 MB |
| 32,768 | 1,073M要素 | 2 GB |
| 131,072 | 17,179M要素 | 32 GB |
| 1,000,000 | 1T要素 | 1.9 TB |
この二乗スケーリングが、FlashAttentionやGrouped-Query Attentionなどの効率化手法が研究される動機です。
GPTなどのデコーダモデルでは、未来のトークンを参照できないようにマスクをかけます。Attention行列の上三角部分を -∞ に設定し、Softmax後に0にすることで、各位置が自分より前のトークンのみを参照する「因果的(causal)」な制約を実現します。
一方、BERTなどのエンコーダモデルではマスクなしの双方向Self-Attentionを使い、文全体の文脈を双方向に捉えます。
| 特性 | Self-Attention | RNN/LSTM |
|---|---|---|
| 長距離依存 | O(1)パス長 | O(n)パス長 |
| 並列化 | 全位置を同時計算可能 | 逐次処理必須 |
| 計算量 | O(n²d) | O(nd²) |
| メモリ | O(n²) | O(n) |
| 学習速度 | 高速(GPU並列) | 低速(逐次依存) |
Self-Attentionは長距離の依存関係を1ステップで捉えられる反面、シーケンスが長くなるとメモリ使用量が急増します。この特性がLinear AttentionやState Space Model(Mamba等)の研究動機になっています。
A1: Attentionは2つの異なるシーケンス間(例:翻訳の入力文と出力文)の関連を計算する汎用概念です。Self-Attentionはその特殊ケースで、同一シーケンス内のトークン同士の関連を計算します。
A2: 最大の利点は並列計算が可能な点です。RNNは前のトークンの処理完了を待つ必要がありますが、Self-Attentionは全トークンを同時に処理できるため、GPUの並列性能を最大限活用できます。
A3: FlashAttention(IO最適化)、Grouped-Query Attention(ヘッド共有)、Linear Attention(カーネル近似)、Ring Attention(分散処理)など多数の手法が提案されています。2026年現在、FlashAttention-3が実用的な標準手法です。