Index
Scaled Dot Product Attention とは
Attention の仕組みの中で利用されるスコア関数のひとつ.
諸定義
個の入力(トークン)で構成されいる時系列データ(文章) を処理することを考える.
アルゴリズム
それぞれのトークンは、これら三つのベクトル(Query / Key / Value) により特徴付られる. (新たな特徴量として、それぞれの用途で使われる.)
出力の計算
これらのベクトルの入力として、それぞれのトークンに対して、ベクトル を出力する.
ここで、
つまり、 は Value ベクトルの重み付き平均
重み は、 番目のトークンを処理する際に、 番目のトークンの重要度を表す.
重要度の計算
重み の計算は、Key と Query から決まる.
つまり、 番目のトークンを処理するときには、その Queryと関連度(重要度)が大きい
Key を持つトークンほど、影響を大きく与える が利用される.
Scaled Dot Product と呼ばれる方法(スコア関数)で、Query と Key のスコア (トークン同士の関連度 / 重要度)を計算する.
分子は、Query と Key の内積 (Dot Product)であり、ベクトル同士の類似度のような役割を果たす.
(似通っているベクトル同士であれば、大きい値を出してくれる.)
分母は、ベクトルの次元数 が大きくなってしますと、内積の値も大きくなってしますので、 で調整している.
分母は、ベクトルの次元数 が大きくなってしますと、内積の値も大きくなってしますので、 で調整している.
Softmax 関数で正規化して、重み が完成.
計算時の効率化
異なるトークンに対する出力は別々にするのではなく、一つの行列演算で効率よく計算することができる.
Attentionへの入力、Query、Key、Value、Attentionからの出力を以下のようにする.
出力 は以下のように表現でき、計算を並列化できる.
参考
- BERTによる自然言語処理入門
- 3.1.1 Scaled Dot Product Attention