本文へ移動

G検定(ジェネラリスト検定)

きー

キー

Key

アテンション機構で、各値への重みを決めるためにクエリとの適合度を計算する側のベクトル。値と組になり、Scaled Dot-Product Attentionではクエリとの内積として使われる。

詳しい説明

アテンション関数の中での位置づけ

アテンション関数は、クエリと、キーと値のペアの集合を、出力へ写す関数として説明される。クエリ・キー・値・出力はいずれもベクトルである。出力は値の重み付き和として計算され、各値に割り当てる重みは、クエリと、その値に対応するキーとの適合度関数(compatibility function)によって計算される。

キーは値と1対1で組になっている。出力に直接足し合わされるのは値の側で、キーはその値にどれだけの重みを付けるかを計算するために使われる。

Scaled Dot-Product Attentionでのキーの使われ方

この方式の入力は、次元d_kのクエリとキー、次元d_vの値からなる。キーとクエリは同じ次元d_kを持ち、両者の内積が計算される。手順は次のとおりである。

1. クエリとすべてのキーとの内積を計算する
2. それぞれの内積をd_kの平方根で割る

3. softmax関数を適用し、値に対する重みを得る

実際には、複数のクエリに対するアテンション関数をまとめて同時に計算する。クエリは行列Qに、キーと値はそれぞれ行列KとVにまとめられ、出力の行列は次の式で求める。

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

この式で、キーの行列は転置したK^TとしてQに掛けられ、クエリとキーの内積がまとめて計算される。

Transformerでのキーの出所

キーがどこから来るかは、層の種類によって異なる。

  • encoder-decoder attention層では、クエリは直前のデコーダ層から来るのに対し、キーと値(memory keys and values)はエンコーダの出力から来る。これにより、デコーダの各位置が入力系列のすべての位置に注意を向けられる。
  • エンコーダのセルフアテンション層では、キー・値・クエリはすべて同じ場所、この場合は直前のエンコーダ層の出力から来る。

マルチヘッドアテンションでの線形写像

原論文では、d_model次元のキー・値・クエリで単一のアテンション関数を実行する代わりに、クエリ・キー・値をそれぞれ異なる学習された線形写像でh回射影する方が有益だったと述べている。このとき、クエリはd_k次元へ、キーはd_k次元へ、値はd_v次元へ写される。キーはそのまま使われるのではなく、学習された線形写像を通してからアテンション関数に入る。

試験で問われること

G検定

  • アテンション関数は、クエリと、キーと値のペアの集合を出力へ写す関数であり、各値への重みはクエリと対応するキーとの適合度関数で計算され、出力はその重みによる値の重み付き和になる。
  • Scaled Dot-Product Attentionでは、クエリとすべてのキーの内積を取り、それぞれをd_kの平方根で割ってからsoftmaxを適用して値に対する重みを得る、という計算の順序を押さえる。
  • キーはクエリと同じ次元d_kを持ち、値は次元d_vを持つ。複数のキーは行列Kにまとめられ、Attention(Q,K,V) = softmax(QK^T/sqrt(d_k))V の式で転置K^Tとして使われる。
  • encoder-decoder attention層では、クエリは直前のデコーダ層から、キーと値はエンコーダの出力から来るため、デコーダの各位置が入力系列のすべての位置に注意を向けられる。
  • エンコーダのセルフアテンション層ではキー・値・クエリがすべて直前のエンコーダ層の出力から来ること、マルチヘッドではキーが学習された線形写像でd_k次元へ射影されることを区別して覚える。

最終更新日: 2026/09/23