Self-Attention(自己注意機構) (G検定)

Self-Attention(自己注意機構)

1. 定義と概要

Self-Attention(自己注意機構)とは、1つの系列データの中で、それぞれの要素が同じ系列内のほかのすべての要素とどれだけ関連するかを計算し、その関連度に応じて要素どうしの情報を混ぜ合わせながら文脈を反映した表現を作る仕組みです。代表的な例として、文中に出てくる代名詞(英語の”it”など)が同じ文中のどの語を指すかという照応(代名詞などが文中の何を指しているかという関係)を、文脈に応じて捉えられる点が挙げられます。

自然言語処理(コンピューターに人間の言葉を扱わせる技術分野)では、Self-Attention が登場する以前、文章を単語ひとつずつ先頭から順番に読み進める RNN が主流でした。RNN(再帰型ニューラルネットワーク)は、文章などの系列データを先頭から順番に読み進めて処理するニューラルネットワークです。しかし文が長くなるほど、冒頭と末尾のように物理的に離れた位置にある単語どうしの関係を覚えておくことが難しいのが RNN の弱点でした。

Self-Attention という考え方自体は2016年ごろから機械読解などの分野で使われはじめていました。2017年に発表された論文では、RNN を使わず Self-Attention だけで系列全体を処理する Transformer というアーキテクチャが確立されました。

Transformer は、Self-Attention を中核部品として使う、現在の主要な AI モデルの構造です。この構造では、系列全体を一度に見渡してすべての要素間の関連を直接計算します。単語を1つずつ手繰っていくのではなく、文全体を同時に見渡す読み方に切り替えたことが、大きな転換点になりました。

2. 試験対策ポイント

計算の考え方は、クエリ・キー・バリューという3つの役割で説明できます。クエリは、注目したい要素側からの「問いかけ」に当たる情報です。キーは、比較される各要素が持つ「特徴の目印」のような情報で、クエリと照らし合わせて関連度を測るために使われます。バリューは、その要素が実際に運んでいる「情報の中身」です。

まずクエリとキーを照らし合わせて要素どうしの関連度を求め、次にその関連度を重みとしてバリューを混ぜ合わせることで、文脈を反映した新しい表現が作られます。この一連の流れが、Self-Attention の計算の柱です。

Self-Attention は系列を先頭から順番にたどる必要がなく、すべての要素間の関連度を一度にまとめて計算できます。この並列計算(複数の計算を同時並行で行うこと)のしやすさが、Self-Attention の際立った特徴です。RNN との詳しい比較は3節で扱います。

一方で、語順そのものを直接表現する仕組みは持たない制約があります。この制約を補う工夫として、位置エンコーディング(単語の並び順の情報を数値として付け加える工夫)と合わせて見ておきたいところです。

Self-Attention は、Transformer という構造の中核として使われている技術です。Transformer 全体の構成は別のテーマとして扱われるため、本記事では Self-Attention 単体の仕組みと位置づけに絞って整理します。

3. 関連概念との比較・相違点

Source-Target Attention(Encoder-Decoder Attention とも呼ばれ、この2つは同じ仕組みを指す呼び方の違いです)との最大の違いは、関連を計算する対象です。Self-Attention は同じ1つの系列の中で関連を計算するのに対し、Source-Target Attention は、翻訳における入力文と出力文のように性質の異なる2つの系列の間で関連を計算します。両者はこの点で対になる位置づけです。

RNN との違いは、系列を順番に処理する必要があるかどうか、そして離れた要素間の関係を直接捉えられるかどうかにあります。RNN の弱点は、先頭から逐次処理するため並列化しにくく、長い系列では離れた要素間の関係を保持しにくい点です。

これに対して Self-Attention は、すべての要素間の関連を一度に計算するため並列計算がしやすく、離れた要素どうしも直接結びつけられます。1節で触れた、文が長くなるほど離れた単語の関係を覚えにくい RNN の課題は、この処理方式の違いから生まれたものです。

この違いを、処理の進め方という軸で並べると次のように整理できます。

観点 Self-Attention RNN
系列の処理 すべての要素間の関連を一度に計算する 先頭から1要素ずつ順番に処理する
並列計算 しやすい しにくい
離れた要素どうしの関係 直接結びつけられる 長い系列では保持しにくい

つまり、両者の差は性能の優劣というより、系列をどの順序で見るかという設計の違いから来ています。この見方をしておくと、どちらの制約がどこから生じているのかを取り違えずに済みます。

4. ビジネス・実務での活用シナリオ

機械翻訳や文章要約の分野では、長文の中で離れた位置にある語句どうしの関係(代名詞が指す語など)を Self-Attention が直接捉えられるため、文脈を保ったまま自然な翻訳文や要約文を生成できます。原文の前後関係を取りこぼさない処理こそが、実務での品質を支える土台です。

検索や文書レコメンドの分野では、文章内の単語どうしの関連度を数値化する Self-Attention の仕組みが、検索クエリと文書の意味的な近さを測る基盤として使われています。キーワードが一致しない文書でも、意味の近い候補を見つけやすくなる点が実務上の効果です。

カスタマーサポートの会話ログ分析では、長い会話履歴の中でどの発言がどの話題を指しているかを追跡しやすく、要約や重要箇所の抽出を自動化する土台になります。オペレーターが会話全体を読み返す手間を減らし、対応の質を安定させる効果につながる仕組みです。

5. 要点まとめ

  • Self-Attention(自己注意機構)は、1つの系列の中で要素どうしがどれだけ関連するかを計算し、文脈を反映した表現を作る仕組みで、クエリ・キー・バリューという3つの役割で処理されます。
  • 系列を順番にたどる必要がなく並列計算がしやすい点が RNN との大きな違いで、離れた要素どうしの関係も直接捉えられる仕組みです。
  • 異なる2つの系列の間で関連を計算する Source-Target Attention(Encoder-Decoder Attention)とは区別される考え方で、Transformer という構造の中核として使われています。

6. 確認問題

問1Self-Attention は、1つの系列データの中で、各要素どうしの関連度を計算する仕組みである。

解答・解説をみる

○ 正しい

系列内の要素どうしの関連を計算する点が、Self-Attention の定義そのものです。異なる2つの系列の間で関連を計算する Source-Target Attention とは対になる位置づけです。

問2Self-Attention では、クエリとキーの関連度をもとに重みを決め、その重みでバリューを混ぜ合わせて新しい表現を作る。

解答・解説をみる

○ 正しい

クエリとキーを照らし合わせて関連度を求め、それを重みとしてバリューを混ぜ合わせる流れが Self-Attention の処理の柱です。クエリ・キー・バリューという3つの役割どおりの説明になっています。

問3Self-Attention は系列を先頭から順番に処理する必要があるため、RNN と同様に並列計算には向かない。

解答・解説をみる

× 誤り

正しくは、Self-Attention はすべての要素間の関連度を一度にまとめて計算できるため並列計算がしやすい仕組みです。系列を逐次処理する RNN との大きな違いに当たります。