Attention機構の計算には、クエリ(Query)・キー(Key)・バリュー(Value)という3つのベクトルが登場します。本記事はそのうち「キー」に焦点を当てます。キーは、検索でいえば本に付けられた見出しラベル——「探されるのを待つ側」の目印です。3つの役割分担が分かれば、Attentionの計算式は一気に読めるようになります。

📖 ひと言でいうと

キーとは、Attention機構において、クエリ(問い合わせ)と照合される側の「目印」となるベクトルです。入力データの各要素にはそれぞれキーが用意され、クエリとの関連度(近さ)を測ることで「どの要素に注目すべきか」の判定材料になります。

図書館の蔵書検索に例えると、あなたが検索窓に打ち込む検索ワードがクエリ、各本の背表紙に付いたタイトル・索引ラベルがキー、本の中身(本文)がバリューです。検索ワードは全ての本のラベルと照合され、よく一致する本ほど「読むべき本」として強く選ばれます。キーは、この照合を受ける側のラベルにあたります。

🖼 1枚でわかるキー

キー(Key)
  • 正体 — 情報を抽出する際の指標(手がかり)となるベクトル
  • 役割 — クエリと照合され、関連度スコアの計算相手になる
  • 例え — 図書館の本の「タイトル・索引ラベル」(検索される側の目印)
  • 相棒 — クエリ(検索ワード)・バリュー(本の中身)との3点セット
  • 使われ方 — クエリとキーの内積→ソフトマックスで注意の重みに
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

モデルが特定の情報を抽出する際の指標となるベクトルである。具体的には、入力データから得られる特徴量をもとに、関連性の高い情報を検索するための手がかりとして機能する。例えば、機械翻訳の文脈では、デコーダが次に生成すべき単語を予測する際、現在の文脈情報をクエリとして用いる。このクエリと、エンコーダから得られるキーおよびバリューとを比較し、最も関連性の高い情報を抽出する。このプロセスにより、モデルは入力データ内の重要な部分に焦点を当て、適切な出力を生成することが可能となる。

かみ砕くと、キーは「検索の手がかり」です。機械翻訳では、デコーダが持つ現在の文脈情報がクエリとなり、エンコーダ側の各単語に対応するキーと照合されます。照合の結果、関連の深い単語が特定され、そのバリュー(中身の情報)が取り出される——キーはこの「照合」を成立させる目印の役割を担っています。

🔍 しっかり理解する

Attention計算の中でのキーの出番

Attentionの計算は、次の流れで進みます。キーが働くのは前半の「照合」の場面です。

① 照合
クエリと各キーの内積で関連度スコアを計算
② 正規化
ソフトマックスで合計1の「注意の重み」に変換
③ 取り出し
重みを掛けてバリューを加重和し出力に

この一連の計算はScaled Dot-Product Attentionと呼ばれ、式で書くと次のとおりです。

Attention(Q, K, V) = softmax(QK^T / √d_k) V

QK^Tがクエリとキーの内積(関連度スコア)、d_kはキーのベクトルの次元数で、√d_kで割るのが「Scaled(スケール調整)」の意味です。次元数が大きいと内積の値が大きくなりすぎ、ソフトマックスの出力が極端に偏って学習が不安定になるため、√d_kで割って調整します。スケーリングの分母に使われるのがキーの次元数であることは、キーという要素の存在感を示すポイントです。

キーとバリューは「同じ要素の2つの顔」

図書館の例えで、ラベル(キー)と中身(バリュー)が同じ1冊の本に付いているように、Attentionでも入力の各要素からキーとバリューがペアで作られます。実際には、同じ入力ベクトルに対して別々の重み行列を掛けて、キー用・バリュー用のベクトルをそれぞれ変換して作ります(この重み行列は学習で獲得されます)。

役割の違いは明確です。キーは「照合されるための目印」であり、スコア計算にだけ使われます。バリューは「取り出される中身」であり、最終的な出力に混ぜ込まれます。探すための情報と、持ち帰るための情報を分けている——この分業がAttentionの設計の肝です。

キーはどこから来るか——Self-AttentionとSource-Target Attention

キー(とバリュー)の供給元は、Attentionの種類によって異なります。公式テキストの機械翻訳の例のように、クエリがデコーダ側・キーとバリューがエンコーダ側から来るのがSource-Target Attentionです。一方、Self-Attentionでは、クエリ・キー・バリューのすべてが同じ系列の単語たちから作られ、「同じ文の中でどの単語同士が関係し合うか」を照合します。どちらの場合も、キーが「照合される側の目印」である点は変わりません。

💡 具体例で考える

翻訳で「猫」を生成する瞬間のキーの働き

「I love cats」を「私は猫が好き」と訳す場面で、デコーダが「猫」を生成しようとしているとします。このときデコーダの文脈情報(クエリ)は、エンコーダが「I」「love」「cats」のそれぞれに用意したキーと内積を取ります。「cats」のキーはこのクエリと強く一致して高いスコアになり、ソフトマックス後の重みが大きくなります。結果として「cats」のバリューが色濃く取り出され、「猫」という出力につながります。

もしキーという照合用ベクトルがなければ、モデルは入力のどこが今の生成に関係するのかを測る物差しを持てません。「探されるための目印」を各要素が掲げているからこそ、動的な注目が成立するのです。生成が「好き」のステップに進めば、同じキーの集合に対して別のクエリが照合され、今度は「love」のキーが高いスコアを返します。キーは据え置きのまま、クエリの側が変わることで注目先が動く——この関係も押さえておきましょう。

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

💡 ポイント
  • クエリとの混同 — クエリは「探しに行く側」の問い合わせベクトル、キーは「探される側」の目印です。図書館の例えなら検索ワードとタイトルラベルの関係です。
  • バリューとの混同 — キーはスコア計算(照合)専用で、出力には直接混ざりません。出力に加重和されるのはバリューです。
  • 「キーは1つだけ」は誤り — キーは入力の各要素ごとに存在します。1つのクエリが多数のキーと総当たりで照合されます。
  • データベースの主キーとの混同 — 名前の由来は検索の類推ですが、Attentionのキーは一意識別子ではなく、学習で得られる連続値のベクトルです。厳密には「一致するか否か」ではなく内積による関連度の強弱で照合されます。

📝 試験でのポイント

💡 ポイント
  • 「モデルが特定の情報を抽出する際の指標となるベクトル」「関連性の高い情報を検索するための手がかり」という定義の記述がキーを指すと判定できるようにしましょう。
  • クエリ・キー・バリューの役割の記述を入れ替えた選択肢が典型的なひっかけです。「照合される側=キー」を軸に判別してください。
  • 機械翻訳の例で「クエリ=デコーダの文脈情報、キーとバリュー=エンコーダ由来」という供給元の対応関係が問われ得ます。
  • 「クエリとキーの内積→ソフトマックスで重み→バリューの加重和」という計算手順の並びは頻出の論点です。

📚 まとめ

💡 ポイント
  • キーは、Attention機構でクエリと照合される「目印」のベクトルで、関連性の高い情報を検索する手がかりとして機能します。
  • クエリとキーの内積で関連度スコアを計算し、ソフトマックスで正規化して注意の重みを得ます。
  • キーはスコア計算専用、バリューは出力用——同じ要素から作られる2つの顔の分業がAttentionの設計の核心です。
  • 機械翻訳(Source-Target Attention)では、キーはバリューとともにエンコーダ側から供給されます。