Transformerで用いられるScaled Dot-Product Attentionでは、クエリとキーの内積を√d_k(d_kはキーの次元数)で割ってからソフトマックス関数を適用する。この処理の主な目的として、最も適切なものはどれか。
- 1アテンションの重みの合計が1になるように正規化するため。
- 2系列内の各トークンの位置情報を内積に反映させるため。
- 3次元数が大きいと内積の値が大きくなりやすく、ソフトマックスの出力が極端に偏って勾配が非常に小さくなるのを防ぐため。
- 4アテンションの計算量を、系列長の2乗のオーダーから線形のオーダーに削減するため。
正解と解説を見る
正解:3
クエリとキーの各成分が平均0・分散1程度であれば、内積の分散は次元数d_kに比例して大きくなります。内積の値が大きいとソフトマックスの出力がほぼ0か1に偏り、勾配がきわめて小さくなるため、√d_kで割って値の大きさを抑えています。重みの合計を1にするのはソフトマックス自体の役割で、位置情報は位置エンコーディングで与えます。また、このスケーリングで計算量は変わりません。√d_kで割るのは「ソフトマックスの飽和を防いで勾配を保つため」と押さえておきましょう。
根拠:Attention Is All You Need(Vaswani et al., 2017)のScaled Dot-Product Attention