Cross-Attention(交差注意機構)(クロスアテンション)
2つの異なるシーケンス間でAttentionを計算する機構。一方のシーケンスからQuery、他方からKey・Valueを生成し、異なるモダリティや異なるタスクの情報を結合する。機械翻訳のエンコーダ-デコーダ構造やマルチモーダルLLMで広く使用される。
Cross-Attention(交差注意機構)とは
Cross-Attention(交差注意機構)は、2つの異なる入力シーケンス間の関係を計算するAttention機構です。Self-Attentionが同一シーケンス内のトークン同士を参照するのに対し、Cross-Attentionは一方のシーケンス(例:翻訳先の文)が他方のシーケンス(例:翻訳元の文)を参照して情報を取得します。
Self-Attentionとの違い
| 特性 | Self-Attention | Cross-Attention |
|---|---|---|
| Queryの出所 | 入力シーケンス自身 | デコーダ側シーケンス |
| Key/Valueの出所 | 入力シーケンス自身 | エンコーダ側シーケンス |
| 用途 | シーケンス内の文脈理解 | シーケンス間の情報転送 |
| 代表的な位置 | Transformer全層 | デコーダ層内(Self-Attentionの後) |
計算の流れ
- デコーダ側の隠れ状態から Query (Q) を生成
- エンコーダ側の出力から Key (K) と Value (V) を生成
- Q と K の内積でAttentionスコアを計算
- Softmaxで正規化してAttention Weightを得る
- Weightを V に適用して出力を生成
数式: CrossAttention(Q_dec, K_enc, V_enc) = softmax(Q_dec K_enc^T / √d_k) V_enc
主な利用場面
機械翻訳(エンコーダ-デコーダモデル)
Transformerの原論文における主要な用途です。デコーダが出力トークンを生成する際、エンコーダが処理した入力文全体を参照できます。例えば英日翻訳で「I love sushi」のエンコーダ出力に対し、デコーダが「寿司」を生成する際に「sushi」トークンへのAttention Weightが高くなります。
マルチモーダルLLM
画像とテキストを統合するモデルで広く使われます。
| モデル | Cross-Attentionの使い方 |
|---|---|
| Flamingo | 視覚エンコーダの出力をKV、テキストトークンをQとして画像情報を注入 |
| Stable Diffusion | テキスト条件(CLIP埋め込み)をKV、画像の潜在表現をQとして条件付き生成 |
| GPT-4o | 画像・音声エンコーダの出力をテキストストリームにCross-Attentionで融合 |
| Gemini 2.5 | 動画・音声・テキストの各モダリティ間で双方向Cross-Attention |
音声認識(Whisper)
OpenAIのWhisperモデルでは、音声のメルスペクトログラムをエンコーダで処理し、デコーダがCross-Attentionで音声特徴量を参照しながらテキストを生成します。
画像生成(Stable Diffusion / DALL-E 3)
テキストプロンプトの意味表現(CLIPエンコーダ出力)をCross-AttentionのKey/Valueとして使い、U-Netの各層でテキスト条件を画像生成過程に注入します。これにより「赤い車」と指定すると赤い車が描かれるという条件制御が実現します。
Cross-Attentionのないデコーダモデル
GPT系のデコーダオンリーモデル(GPT-4、Claude、LLaMA等)にはCross-Attention層がありません。代わりに、入力(プロンプト)と出力(生成文)を連結した1つのシーケンスとしてSelf-Attentionで処理します。これは設計がシンプルな反面、入力と出力の境界が明示的でないという特徴があります。
実装上の考慮点
- KVキャッシュの共有: エンコーダ出力は全デコーダステップで同一のため、Cross-AttentionのKVは1回計算してキャッシュすれば再計算不要
- 可変長対応: エンコーダとデコーダのシーケンス長が異なるため、Attention行列は正方行列にならない
- 計算量: O(n_dec × n_enc × d)。エンコーダ側が長い場合(例:長い文書の要約)はボトルネックになりうる
よくある質問
Q1: デコーダオンリーモデルにCross-Attentionを追加できますか?
A1: 技術的には可能で、実際にFlamingo(LLMに視覚Cross-Attention層を挿入)やLLaVA-Plus等で実装例があります。ただし追加層の学習が必要で、元のLLMの重みを凍結して追加層のみを学習する手法が一般的です。
Q2: Cross-Attentionはなぜ画像生成で重要なのですか?
A2: テキストの意味情報を画像生成プロセスの各段階に注入するための主要な手段だからです。Cross-Attentionなしではテキスト条件を画像に反映させる効果的な方法がなく、条件無視の画像が生成されてしまいます。
Q3: Self-AttentionだけでCross-Attentionの役割を代替できますか?
A3: 原理的には可能です。デコーダオンリーモデルが実証しているように、2つのシーケンスを連結してSelf-Attentionすれば同等の情報フローが得られます。ただし、エンコーダ-デコーダ構造の方がタスクによっては効率的で、特に入力と出力の長さが大きく異なる場合(長文書→短い要約)に有利です。