本文へ移動

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

くえり

クエリ

Query

アテンション関数で、各キーとの適合度から値への重みを決めるための問い合わせにあたるベクトル。Transformerでは複数のクエリを行列Qにまとめて扱う。

詳しい説明

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

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

この枠組みで、クエリは出力を得るための問い合わせにあたる。どの値をどれだけ出力に取り込むかは、クエリが各キーとどれだけ適合するかで決まる。重みはクエリとキーから計算されるので、キーと値の集合が同じでもクエリが違えば重みが変わり、出力も変わる。

Scaled Dot-Product Attentionでの使われ方

Transformerが使うScaled Dot-Product Attentionでは、クエリとキーの次元はd_k、値の次元はd_vである。クエリは次の3段階で使われる。

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

3. softmax関数を適用して、値への重みを得る

実際には、複数のクエリをまとめて同時に処理する。クエリの集合を行列Qにまとめ、キーと値もそれぞれ行列KとVにまとめる。出力の行列は次の式で計算する。

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

式のQK^Tが、各クエリとすべてのキーとの内積をまとめて求める部分にあたる。

クエリはどこから来るか

Transformerでは、層の種類によってクエリの出所が違う。

  • encoder-decoder attention層では、クエリはデコーダの前の層から来る。キーと値はエンコーダの出力から来る。この組み合わせにより、デコーダのどの位置も、入力系列のすべての位置に注意を向けられる。
  • エンコーダのセルフアテンション層では、キー・値・クエリがすべて同じ場所から来る。この場合の出所は、エンコーダの前の層の出力である。

学習された線形写像による射影

Transformerでは、d_model次元のクエリ・キー・値でアテンション関数を1回だけ実行するのではなく、クエリ・キー・値を、それぞれ異なる学習済みの線形写像でh回射影する。論文は、この方法のほうが有益だったと述べている。この射影で、クエリはd_k次元へ写される。キーも同じd_k次元へ写されるので、射影後のクエリとキーの内積を計算できる。

試験で問われること

G検定

  • クエリは、アテンション関数がクエリと、キーと値のペアの集合を出力へ写すときの問い合わせにあたるベクトルである。各値への重みは、クエリと対応するキーとの適合度から計算される。
  • Scaled Dot-Product Attentionでは、クエリとすべてのキーの内積を取り、それぞれをd_kの平方根で割ってからsoftmax関数を適用して、値への重みを得る。
  • 複数のクエリは行列Qにまとめて同時に処理され、出力はAttention(Q,K,V) = softmax(QK^T/sqrt(d_k))Vで計算される。式中のQがクエリの集合にあたる。
  • encoder-decoder attention層では、クエリはデコーダの前の層から、キーと値はエンコーダの出力から来る。これにより、デコーダの各位置が入力系列の全位置に注意を向けられる。
  • エンコーダのセルフアテンション層では、クエリ・キー・値がすべてエンコーダの前の層の出力から来る。複数ヘッドの構成では、クエリは異なる学習済みの線形写像でh回、d_k次元へ射影される。

最終更新日: 2026/09/23