TransformerのScaled Dot-Product Attentionで、クエリq=(1, 0, 2, 1)と、3つのキーk1=(2, 1, 1, 0)、k2=(0, 1, 1, 2)、k3=(1, 3, 0, 1)から注意の重みを求める。キーの次元数は4である。スケーリング後のスコアと、ソフトマックス関数で求めたキー1とキー3の重みの比の組み合わせとして、最も適切なものを1つ選べ。eは自然対数の底(約2.72)とする。
正解と解説を見る
解説
正解 B
この問題の論点:スケーリング後のスコアと重み
ポイント
注意の重みの比は、スコアの差を指数とするeのべき乗で決まります。スコアは内積をキーの次元数の平方根で割って求めます。
選択肢ごとの解説
- A
不適切
(4, 4, 2)は内積をそのまま使った値で、スケーリングが抜けています。Scaled Dot-Product Attentionでは、内積をキーの次元数の平方根√4=2で割ってから、ソフトマックス関数に入れます。
- B
適切 正解
内積は1×2+0×1+2×1+1×0=4、同様に4、2です。√4=2で割るとスコアは(2, 2, 1)です。重みはeのスコア乗に比例するので、比はe^2÷e^1=e倍です。重みは約0.42、0.42、0.16になります。
- C
不適切
スコアは正しいものの、重みをスコアに比例させています。ソフトマックス関数はeのスコア乗を合計で割るため、重みの比はスコアの比ではなく、スコアの差で決まるe^(2-1)=e倍です。
- D
不適切
(1, 1, 0.5)は、内積をキーの次元数4そのもので割った値です。割る数は次元数の平方根です。次元数で割るとスコアの差が縮み、重みが均等に近づきます。
補足
ソフトマックス関数では、すべてのスコアに同じ数を足しても重みは変わりません。重みを決めるのはスコアどうしの差だけです。差が大きいほど、スコアが最大のキーに重みが集中します。内積を次元数の平方根で割らないと、次元が大きいときに差が広がりやすく、重みが1つのキーに偏って勾配が小さくなります。
試験での狙われ方
割る数が次元数かその平方根かと、ソフトマックス関数が比例配分ではないことの2点を、同時に確かめる形が考えられます。
参考
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目23 Attention)
- Vaswani et al., Attention Is All You Need (2017)