Stable Diffusionなどの画像生成AIや、Transformer系のモデルの中心には「Attention(注意機構)」と呼ばれる仕組みがあります。その中核をなすのが Q(Query)、K(Key)、V(Value) という3つの要素です。この記事では、テキストから画像が生成される過程を追いながら、QKVがそれぞれ何を意味し、どう連携しているのかを整理します。
Attention層の3つの重要な要素
Attention層では、入力に対して3種類の重み行列(W_Q, W_K, W_V)を掛け合わせることで、Q・K・Vという3つの異なるベクトルを作り出します。
- Q(Query):「今、何を探しているか」という問い合わせ
- K(Key):「自分は何を提供できるか」という目印・見出し
- V(Value):実際に受け渡される中身の情報
テキストから画像を生成する Cross-Attention では、この3つが以下のように対応しています。
| 要素 | 由来 | 役割 |
|---|---|---|
| Q | ノイズ画像(潜在表現) | 画像側が「何が欲しいか」を問い合わせる |
| K | テキストエンコーダの出力 | 各単語が「照合されるための目印」を提供する |
| V | テキストエンコーダの出力 | 各単語が実際に運ぶ「中身の情報」を提供する |
意外に思われるかもしれませんが、Queryを出すのはテキスト側ではなく画像側です。「画像が、自分に必要な意味情報をテキストに問い合わせに行く」というイメージを持つと理解しやすくなります。
W_Q, W_K, W_V ― 学習される重み行列
Q, K, Vはテキストや画像のデータそのものではなく、学習済みの重み行列を掛けることで作られる「変換結果」です。
K = X_text × W_K V = X_text × W_V Q = X_image × W_Q
ここで X_text はテキストエンコーダ(CLIPなど)が出力する埋め込みベクトルです。W_K, W_Vはこの埋め込みベクトルを、Attention計算専用の共通次元へと射影するための行列であり、学習フェーズにおいて誤差逆伝播法によって数値が更新され、学習終了後は固定されます。
重要なのは、KとVは同じテキスト埋め込みを元データとしながらも、W_KとW_Vという完全に独立した行列によって、それぞれ別々に並列生成されるという点です。KからVが作られるわけでも、その逆でもありません。
┌──W_K──→ K(検索用の目印)
テキスト埋め込み ──┤
└──W_V──→ V(伝達される中身)
なぜKとVを分離するのか
「照合に適した形」と「伝えるべき中身」は、必ずしも同じ表現が最適とは限りません。KとVを別々の行列で作ることで、モデルは以下のような役割分担を独立に最適化できます。
- K空間:似た概念のトークンが近くに集まるよう学習された「検索インデックス」的な空間
- V空間:実際に画像特徴へ加算される「意味のペイロード」を運ぶ空間
図書館に例えると、Kは本の背表紙やジャンルラベル(探すための情報)、Vは本の中身そのもの(実際に得られる情報)に相当します。QがKの中から最も関連の強いものを(複数、重み付きで)見つけ出し、その見つかった場所に対応するVの中身を実際に受け取る、という流れです。
生成時のプロセス:ステップごとに何が起きるか
拡散モデルによる画像生成は、ノイズ画像を少しずつ整えていく反復プロセスです。QKVの観点から見ると、次のような流れになります。
- プロンプト(テキスト入力)がText Encoderによってベクトル化される
- そのベクトルにW_K, W_Vが掛けられ、K・Vが1回だけ計算される
- 各拡散ステップで、その時点のノイズ画像(潜在表現)からQが新たに計算される
- QとK(固定)の内積から関連度が計算され、softmaxで重みに変換される
- その重みでV(固定)を加重平均し、Attentionの出力とする
- 出力は画像特徴に統合され、UNet内の他の層を経てノイズ予測に使われる
- 予測ノイズをもとにデノイズが行われ、少しだけノイズが減った新しい潜在表現が生まれる
- その新しい潜在表現が、次のステップのQを生む元になる
ここでのポイントは、QはステップごとにQは変化し続ける一方で、K・Vはプロンプトが同じである限り、全ステップを通じて使い回されるという非対称性です。K・Vは「プロンプトが表す固定的な意味の索引」として、生成プロセス全体の道標のような役割を果たします。この性質は実装上、K・Vを一度だけ計算してキャッシュしておけるという計算コスト削減にもつながっています。
まとめ
| 項目 | 内容 |
|---|---|
| Q(Query) | 画像側から生成される「問い合わせ」。ステップごとに変化する |
| K(Key) | テキスト側から生成される「照合用の目印」。プロンプトが同じなら不変 |
| V(Value) | テキスト側から生成される「伝達される中身」。プロンプトが同じなら不変 |
| W_Q, W_K, W_V | 学習によって獲得された変換ルール(重み行列)。生成時は固定 |
QKVはそれぞれ独立した射影行列によって生み出される別々の役割を持つベクトルであり、「画像が問い合わせ、テキストが目印を示し、テキストが中身を渡す」という一連のやり取りを、拡散の各ステップで繰り返しながら、ノイズ画像を少しずつプロンプトの意味に近づけていく――これがAttention機構の本質的な働きです。


