G検定(ジェネラリスト検定)
ばりゅー
バリュー
Value
アテンション関数で出力の材料となるベクトル。クエリとキーの適合度から求めた重みを各値に掛けて合計したものが、アテンションの出力になる。
詳しい説明
アテンション関数の出力を形づくる要素
アテンション関数は、1つのクエリと、キーと値(バリュー)の組の集合を受け取って出力を返す関数として説明される。クエリ、キー、値、出力はどれもベクトルである。このうちバリューは出力の材料になる。出力は値の重み付き和として計算される。各値に割り当てる重みは、クエリとその値に対応するキーとの適合度を測る関数(compatibility function)で決まる。キーは重みを決めるために使われ、その重みを掛けられて足し合わされるのがバリューである。
Scaled Dot-Product Attentionでの使われ方
Scaled Dot-Product Attentionでは、クエリとキーの次元をd_k、値の次元をd_vとする。まずクエリとすべてのキーとの内積を計算する。それぞれをsqrt(d_k)で割ったうえでsoftmax関数を適用し、値に対する重みを得る。この重みを各値に掛けて合計したものが出力になる。
実際の計算では、複数のクエリを行列Qにまとめて同時に扱い、キーと値もそれぞれ行列K、Vにまとめる。出力の行列は次の式で求める。
Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
式の最後に掛けられているVが、バリューをまとめた行列である。softmax(QK^T / sqrt(d_k)) の部分が重みを表し、これにVを掛けることで値の重み付き和が得られる。
バリューはどこから来るか
Transformerでは、層の種類によって値の出所が異なる。
- encoder-decoder attention層: クエリは直前のデコーダ層から来る。キーと値はエンコーダの出力から来る。これにより、デコーダの各位置が入力系列のすべての位置に注意を向けられる。
- セルフアテンション層: キー、値、クエリはすべて同じ場所から来る。エンコーダでは、直前のエンコーダ層の出力がその場所にあたる。
マルチヘッドアテンションでの扱い
d_model次元のキー、値、クエリで1回だけアテンション関数を実行する代わりに、それぞれを学習された別々の線形写像でh回射影するほうが有益だったと報告されている。値はこの線形写像によってd_v次元へ写される(キーとクエリはd_k次元へ写される)。射影された版ごとにアテンション関数を並列に実行し、それぞれがd_v次元の出力値を生成する。
試験で問われること
G検定
- アテンション関数の出力は値(バリュー)の重み付き和として計算される。各値の重みは、クエリとその値に対応するキーとの適合度を測る関数によって決まる。この関係を押さえる。
- Scaled Dot-Product Attentionでは、クエリとすべてのキーとの内積をsqrt(d_k)で割り、softmaxを適用して重みを得る。その重みを値に掛けて合計したものが出力になる。
- 行列にまとめた式Attention(Q,K,V) = softmax(QK^T/sqrt(d_k))Vでは、最後に掛けるVが値の行列である。値の次元はd_vで表すことも確認する。
- 値の出所は層によって異なる。encoder-decoder attention層ではキーとともにエンコーダの出力から来る。セルフアテンション層ではキー、値、クエリがすべて同じ場所から来る。
- マルチヘッドアテンションでは、値は学習された線形写像でd_v次元へ射影される。射影した版ごとにアテンション関数を並列に実行し、それぞれがd_v次元の出力値を生成する。
最終更新日: 2026/09/18