自己注意機構(Self-Attention)はTransformerモデルの心臓部をなす技術です。従来のリカレントニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)では、長い文章における単語間の長距離依存関係を捉えることが難しいという課題がありました。例えば、RNNは単語を逐次的に処理するため、文頭と文末のように離れた単語の関係性が希薄になりがちでした。一方、CNNは局所的な情報を捉えるのに優れるものの、広範囲の関係性を把握するには多層化が必要でした。Self-Attentionは、この課題を克服するために開発され、入力されたシーケンス(文など)内の各単語が、そのシーケンス内の他の全ての単語との関連度を動的に計算し、その関連度に基づいて自身の表現を重み付けして強化するメカニズムです。これにより、モデルは文脈を深く理解し、距離に関わらず単語間の重要な関係性を効果的に捉えることができるようになります。
Self-Attentionのメカニズム
Self-Attentionの仕組みを理解する上で中心となるのが、「Query (Q)」、「Key (K)」、「Value (V)」という3つの概念です。これらは、情報検索のプロセスに例えると分かりやすいです。

入力の埋め込みとQKVの生成
まず、入力された各単語(トークン)は、数値のベクトルである「埋め込み表現」に変換されます。Self-Attentionでは、この各単語の埋め込みベクトルから、それぞれ異なる線形変換(学習可能な重み行列の乗算)を適用することで、Query (Q)、Key (K)、Value (V) の3つのベクトルを生成します。Self-Attentionの場合、Q, K, Vは全て同じ入力シーケンスから派生します。
- Query (Q)
「自分が知りたい情報は何だろう?」という問いかけを表します。特定の単語が、他のどの単語に注目すべきかを判断するための基準となります。データベースで言うところの「検索クエリ」に相当します。 - Key (K)
「私(この単語)が持っている情報は何だろう?」という情報の内容を示す鍵を表します。他の単語からのQueryに対して、自身の関連度を測るための「見出し」や「タグ」のようなものです。 - Value (V)
「私(この単語)の実際の意味や内容」という具体的な情報そのものを表します。QueryとKeyの関連度に基づいて重み付けされ、集約される情報本体です。
Attentionスコアの計算と正規化
次に、ある単語のQueryベクトルと、入力シーケンス内の全ての単語のKeyベクトルとの間で、類似度を測るために内積(ドット積)を計算します。この内積の結果が「Attentionスコア」となり、Queryの単語がそれぞれのKeyの単語にどれだけ注目すべきか、その関連度を示します。このAttentionスコアは、Keyベクトルの次元数 d_k の平方根で割ることでスケール調整されます。これは、次元数が大きすぎると内積の値が大きくなり、後続のSoftmax関数で勾配が飽和してしまうのを防いで、学習を安定させるためです。最後に、スケーリングされたAttentionスコアをSoftmax関数に通します。これにより、スコアが0から1の間の確率分布に変換され、全ての単語に対するAttention重みの合計が1になります。このAttention重みが、各単語のValueにどれだけの「注目度」を与えるかを決定します。
Softmax関数とは?
Attentionスコアを確率に変換する関数です。Softmax関数は、指数関数になっていますので、スコアが大きいと確率も高くなります。
Valueの加重平均
最終的に、Softmaxによって得られたAttention重みを、対応する各単語のValueベクトルに乗算し、それらを全て合計します。この重み付き和によって、各単語はシーケンス内の他の関連する単語の情報を「取り込んだ」新たな表現(文脈化された埋め込み)を得ることができます。これにより、例えば同じ「light」という単語でも、「light as a feather(羽のように軽い)」と「turn on the light(電気をつける)」では異なる文脈表現を持つようになります。
多角的な文脈理解
Transformerモデルは、Self-Attentionの概念をさらに発展させた「Multi-Head Attention(マルチヘッド注意機構)」を採用しています。これは、単一のSelf-Attentionメカニズムを複数(通常は8個など)並列に実行するものです。各「ヘッド」は独立したQ, K, Vの重み行列を持ち、それぞれ異なる変換を学習します。これにより、各ヘッドは入力シーケンス内の単語間の異なる種類の関係性(例えば、文法的な関係、意味的な関係、あるいは特定の依存関係など)に注目することができます。例えるなら、一つの問題を解決するために、それぞれ異なる視点を持つ複数の専門家チームが同時に分析を行うようなものです。全てのヘッドで個別にAttention計算が行われた後、それぞれのヘッドから出力された結果は結合され(concatenation)、最終的な線形変換を通して単一の出力表現に統合されます。これにより、モデルはより豊かで多角的な文脈情報を捉え、より高精度な予測を行うことが可能になります。
単語の順序情報の付与
Self-Attention機構は、単語間の関連性を計算する際に、単語がシーケンスのどの位置にあるかを本質的に考慮しません。つまり、単語の順序を入れ替えても、Attentionの計算結果は同じになります(順序不変性)。しかし、言語において順序は極めて重要です。例えば、「犬が男を噛んだ」と「男が犬を噛んだ」では、構成する単語は同じでも意味は全く異なります。この課題を解決するのが「Positional Encoding(位置エンコーディング)」です。これは、各単語の埋め込みベクトルに、その単語の位置情報を示すユニークなベクトルを加算する技術です。具体的には、三角関数(sin関数とcos関数)を用いて、各位置ごとに固有のパターンを持つベクトルを生成し、それを単語の埋め込み表現に足し合わせます。この処理により、モデルは各単語の意味情報だけでなく、シーケンス内での絶対的・相対的な位置関係も同時に学習できるようになります。Positional Encodingは、Self-Attentionが文の構造を正しく理解し、順序に依存した文脈を捉えるための不可欠な要素です。
Self-Attentionの利点と課題
Self-Attentionは、Transformerに多くの重要な利点をもたらしましたが、一方でトレードオフとなる課題も存在します。
利点
- 並列処理能力
RNNのように単語を逐次的に処理する必要がなく、シーケンス内の全ての単語のAttention計算を同時に行えます。これにより、GPUなどの並列計算ハードウェアを最大限に活用でき、大規模なデータセットでのトレーニング時間を大幅に短縮できます。 - 長距離依存関係の把握
シーケンス内のどの単語間の関係性も直接計算できるため、距離が離れた単語間の依存関係も効率的に捉えることができます。 - 文脈に応じた表現
各単語の表現が、その単語が置かれている文脈全体に基づいて動的に調整されます。これにより、多義語の解釈など、より複雑な言語現象の理解が可能になります。
過大
- 計算コストの増大
最大の課題は、計算量とメモリ使用量が入力シーケンス長の2乗に比例して増加する点です(計算量 O(N²))。これは、シーケンス内の全ての単語ペア間の関連度を計算する必要があるためです。結果として、シーケンスが長くなるにつれて計算リソースが急激に増大し、非常に長いドキュメントを一度に処理することが困難になるという制約があります。
Self-Attentionの導入は、この計算コストというトレードオフを抱えつつも、ディープラーニングモデルにおける文脈理解能力と計算効率を飛躍的に向上させ、特に自然言語処理分野におけるその後のAI技術の発展に不可欠な要素となりました。
余談
- 自己注意機構は2017年にGoogleの研究者らによって発表された論文「Attention Is All You Need」で提唱されました。
- Transformerは、ChatGPTやBERT、Geminiといった現代の大規模言語モデル(LLM)の基盤となっています。