セルフアテンション【Self-Attention】自己注意機構
概要

従来のニューラルネットワークでは、文章などの系列的なデータ(要素に順序のあるデータ)を処理する際、構成要素を前から順番に処理していく必要があった。この方式では、文章の冒頭にある単語と末尾にある単語のように、物理的に距離が離れた要素間の関係性を捉えることが難しい課題があった。
これに対し、セルフアテンションは文章内のすべての単語の組み合わせについて、その関連性の強さを一度に計算する。文脈における各単語の意味を、周囲の単語との関係性に基づいて深く理解することが可能になった。位置に依存しない計算が行われ、素朴な実装では単語の並び順や構文構造が失われるため、「位置エンコーディング」という手法で語順の情報を補う。
内部的には、「クエリ」(query)、「キー」(key)、「バリュー」(value)という三つの要素を用いて処理を進める。まず、注目したい単語を「クエリ」、比較対象となる単語を「キー」とし、両者の内積を計算することで「関連度スコア」を算出する。このスコアが高いほど、その単語の組み合わせは文脈上重要であると判断される。最後に、算出されたスコアを重みとして「バリュー」を足し合わせることで、周辺情報を反映した新しい単語の表現が生成される。
セルフアテンションは単体で用いることもできるが、実用上は複数の注意機構を並列に適用するマルチヘッドアテンション(Multi-Head Attention)の一部として組み込まれることが多い。各ヘッドは異なる表現空間や関係性に着目するため、意味的関係、構文的関係、位置的近接性など多様な側面を同時に捉えられる。
セルフアテンションは逐次的な処理を必要とせず、処理の並列化が容易な構造となっているため、膨大な計算資源を投入して大規模なデータを高速に学習させることができる。これにより、大規模言語モデル(LLM)の巨大化と性能向上が加速し、今日の生成AIの発展へと繋がった。自然言語処理だけでなく、画像認識や音声処理など他分野にも応用されており、データ内の広域的な依存関係を効率的に扱う一般的手法として広く普及している。