Self-Attention(自己注意機構)は、Attentionの中でも「同じデータの内部で要素同士の関連を計算する」タイプを指します。Transformerの中核であり、GPTやBERT、さらには画像認識のVision Transformerまで、現代AIの根幹を支える仕組みです。この記事では「自己参照」という切り口——自分自身のどこを見るのか、それの何がすごいのか——を中心に解説します。

📖 ひと言でいうと

Self-Attentionとは、入力データ内の各要素が、自分を含む同じ系列内の全要素との関連度を計算し、関連の強さに応じて情報を集約する仕組みです。会議での議論に例えると、参加者(単語)の一人ひとりが他の全員の発言を聞き、「自分に関係が深い発言」を重視して自分の意見をアップデートするイメージです。全員が全員と直接つながるので、席が離れていても(=文中で遠く離れていても)関係を見落としません。厳密には、各要素がQuery・Key・Valueを持ち、自分のQueryを全要素のKeyと照合して重みを決め、Valueの重み付き和として新しい表現を得ます。

🖼 1枚でわかるSelf-Attention

Self-Attention = 同じ系列の内部で関連度を計算
  • 仕組み — 各要素が自身を含む全要素へ注意を向け、関連度で情報を集約
  • 効果 — 文脈理解が深まり、長い文・複雑な構造も効果的に処理
  • 強み — RNN・CNNと比べ並列処理が可能で計算効率が高い
  • 役割 — Transformerの中核。機械翻訳・文章生成で高性能
  • 広がり — 画像認識にも応用(Vision Transformer / ViT)
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

入力データ内の各要素が他の要素とどの程度関連しているかを評価し、情報の重み付けを行う仕組みである。具体的には、各要素が自身を含む全ての要素に対して注意を向け、関連度に応じて情報を集約する。これにより、文脈の理解が深まり、長い文や複雑な構造の文章でも効果的に処理できるようになる。Self-Attentionは、従来のリカレントニューラルネットワーク(RNN)や畳み込みニューラルネットワーク(CNN)と比較して、並列処理が可能であり、計算効率が高い点が特徴である。特に、Transformerモデルにおいては、Self-Attentionが中核的な役割を担っており、機械翻訳や文章生成など多様なタスクで高い性能を示している。また、Self-Attentionの概念は画像認識分野にも応用されており、Vision Transformer(ViT)などのモデルで活用されている。これにより、画像内の各部分が他の部分とどのように関連しているかを効果的に捉えることが可能となり、従来のCNNベースのモデルと比較して新たなアプローチを提供している。

注目すべきは「各要素が自身を含む全ての要素に対して注意を向け」という部分です。参照先が外部の別データではなく、同じ入力の内部——つまり「自己」——であることがSelf-Attentionの名前の由来であり、定義の核心です。もうひとつの柱は「並列処理が可能で計算効率が高い」というRNN・CNN比の利点で、これがTransformer時代の幕開けを可能にしました。

🔍 しっかり理解する

「自己参照」で何が起きるのか

文中の単語は、単体では意味が確定しないことがよくあります。「彼は銀行の金利について話した」の「銀行」は金融機関ですが、「彼は川の銀行...」とは言わないまでも、英語の「bank」なら川岸の可能性もあります。Self-Attentionでは、各単語が文中の全単語との関連度を計算するため、「金利」との関連が強い「bank」は金融機関寄りの表現へ更新されます。つまりSelf-Attentionの出力は「文脈を織り込んだ各単語の新しい表現」です。この処理を層として何段も重ねることで、文全体の構造を反映した深い理解が積み上がっていきます。

文内の全ての単語間の関係を直接かつ高速に計算できるため、RNNでは難しかった、遠く離れた単語間の関係性も容易に捉えられます。文頭の主語と文末の動詞の対応のような長距離の関係も、間の単語を経由せず1ステップで結ばれるのです。

RNNとの決定的な違い: 逐次処理か並列処理か

🅰 Self-Attention
  • 全要素間の関連を直接計算
  • 全時刻を同時に処理でき並列化が容易
  • 遠い要素同士も1ステップでつながる
  • Transformerの中核
🅱 RNN
  • 先頭から1ステップずつ逐次処理
  • 前の計算が終わらないと次に進めない
  • 遠い要素の関係は内部状態経由で薄れがち
  • 長系列で勾配消失の課題

RNNは「前の時刻の結果」がないと次の計算ができないため、系列が長いほど処理時間が伸び、GPUの並列計算能力を活かしきれません。Self-Attentionは各要素の計算が互いに独立しているため、全単語分を一度に並列計算できます。この計算効率の高さが、大量のデータで巨大なモデルを訓練することを現実的にし、今日の大規模言語モデルにつながりました。

言語を超えて: Vision Transformer

Self-Attentionの「要素間の関連を捉える」という考え方は、単語に限らず使えます。Vision Transformer(ViT)は、画像を小さなパッチ(区画)に分割し、各パッチを単語のように扱ってSelf-Attentionを適用します。これにより、画像内の各部分が他の部分とどのように関連しているか——例えば、犬の耳のパッチと尻尾のパッチが同じ物体に属すること——を効果的に捉えられます。近くの画素同士から段階的に特徴を組み上げるCNNに対し、最初から画像全体の関係を見渡せる新たなアプローチを提供しています。

💡 具体例で考える

「昨日買ったケーキを冷蔵庫に入れたが、それを弟が食べてしまった」という文で、「それ」が何を指すかを考えてみましょう。Self-Attentionでは「それ」が文中の全単語と関連度を計算し、「ケーキ」との関連が最も強く評価されれば、「それ」の表現に「ケーキ」の情報が強く混ざります。「冷蔵庫」や「弟」ではなく「ケーキ」を選ぶこの照応解決は、文脈理解の典型例です。RNNなら「ケーキ」から「それ」まで7語分の逐次処理を経て情報を運ぶ必要がありますが、Self-Attentionは1ステップで直接結びます。

もうひとつ、ChatGPTのような文章生成AIも、Self-Attentionを何十層も重ねたTransformerでできています。長い会話の冒頭で設定した条件を後半の応答でも守れるのは、生成中の各ステップで過去の系列全体にSelf-Attentionを効かせ、関連する箇所を直接参照しているからです。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • Source-Target Attentionとの区別(最重要) — Self-Attentionは「同じ系列の内部」で関連度を計算します。一方Source-Target Attention(Encoder-Decoder Attention)は「入力文と出力文」という異なる系列の間の関連度を計算します。参照先が自分か相手かが分かれ目です。
  • Multi-Head Attentionとの区別 — Multi-Headは「注意計算を複数並列に走らせる」構造上の工夫で、Self-Attentionは「どこを参照するか」の分類です。実際のTransformerではSelf-AttentionがMulti-Head形式で実装されており、両者は排他的ではありません。
  • 「Self-Attentionは自分1要素だけを見る」は誤り — 「Self」は系列が自分自身という意味であり、各要素は自身を含む全ての要素に注意を向けます。1要素に閉じた処理ではありません。
  • 「ViTはCNNの一種」は誤り — Vision TransformerはSelf-Attentionを画像に適用したモデルで、畳み込みを主役とするCNNとは異なるアプローチです。「CNNベースのモデルと比較して新たなアプローチ」という位置づけで覚えましょう。

📝 試験でのポイント

💡 ポイント
  • 「入力データ内の各要素が他の要素との関連度を評価し、情報を重み付けする」「自身を含む全ての要素に注意を向ける」という定義文からSelf-Attentionを選ばせる形式が基本です。
  • RNN・CNNとの比較で「並列処理が可能」「計算効率が高い」という利点を選ばせる問題が想定されます。RNNの逐次処理との対比を説明できるようにしましょう。
  • 「Transformerで中核的な役割を担う」という位置づけと、Source-Target Attention(入力文と出力文の間)との区別は、選択肢の入れ替えで狙われやすいポイントです。
  • 画像分野への応用としてVision Transformer(ViT)の名前が結びつけられるかも問われ得ます。

📚 まとめ

Self-Attentionは、同じ系列内の各要素が自身を含む全要素との関連度を計算し、関連の強さに応じて情報を集約する仕組みです。文脈を織り込んだ表現が得られ、遠く離れた要素間の関係も直接捉えられます。RNNと違って並列処理が可能なため計算効率が高く、Transformerの中核として機械翻訳・文章生成を支え、ViTとして画像認識にも広がりました。「参照先は自分自身の系列」という一点でSource-Target Attentionと区別し、Multi-Headとは軸の異なる概念であることを押さえておきましょう。