TL;DR
- ソース・ターゲット注意の:
- 前半はベクトル検索エンジンである
- 全体は擬似適合性フィードバックである
- 自己注意の:
- 前半はquery suggestionである
- 全体はquery rewritingである
ソース・ターゲット注意
ソース・ターゲット注意は、ベクトルの集合であるソースと、単一のベクトルであるターゲットを入力に取り、以下の計算を行う。
- ソースの各ベクトルに対して、ターゲットのベクトルとの関連性を計算する。
- 例えばドット積を計算し、ベクトルの次元数の正の平方根で除算(スケール)した後ソフトマックス関数で正規化する。
- 関連性を重みとして、ソースの各ベクトルの重み付き和を計算し出力する。
- (通常は注意機構の外にあるとされる計算だが)ターゲットのベクトルを出力に加えることもある(残差接続)。
この前半部は、ベクトル検索エンジンの基本的な動作、クエリのベクトルに対してドキュメントの各ベクトルのスコアを計算することに例えられる。
また全体としては、ベクトル検索エンジンにおける擬似適合性フィードバックに例えられる。擬似適合性フィードバックは、スコアが高いドキュメントは検索意図に適合する可能性が高いことを利用して、それらのドキュメントから単語を抽出してクエリに加える手法である。ただしここで、ベクトル検索においてはドキュメントそのものをクエリに加えられるため、そうしているものと考えられる。
さらに、この比喩により、例えばトランスフォーマーに見られるソース・ターゲット注意機構のスタックは、擬似適合性フィードバックを適用したクエリにより再検索を行っていることに例えられる。(ただし、全結合層や後述する自己注意機構を無視すればの話)
なお、一般にはターゲットが複数のベクトルであるが、これは複数のクエリの並列処理に例えられる。
自己注意
自己注意においては、ソースとターゲットが同一である。引き続きベクトル検索エンジンの例えで説明する。
前半部はクエリのベクトルに対してクエリ(複数)の各ベクトルのスコアを計算することに例えられる。これはクエリに対して関連性の高いクエリを返す、query suggestionの基本的な動作である。
また全体としては、スコアを重みとしてクエリ(複数)を元のクエリに加えている。これはクエリを自動で書き換えるquery rewritingの基本的な動作である。
さらに、この比喩により、例えばトランスフォーマーに見られる自己注意機構のスタックは、query rewritingを繰り返し行っていることに例えられ(ただし、全結合層を無視すればの話)、また、自己注意機構の後段にソース・ターゲット注意機構を接続することは、query rewritingと擬似適合性フィードバックを連続で行っていることに例えられる。
今のところ比喩で理解しきれないトピック
(一般の)注意
一般の注意においてはターゲットは2ベクトル(キーと値)のペアの集合である。
関連性の計算にはキーを用い、重み付き和の計算には値を用いる。
これはベクトル検索においては、各ドキュメントが2つのベクトルを部分ドキュメント(フィールド)に持ち、スコア計算とクエリへのフィードバックにおいて異なるフィールドを参照していることに相当する。
言い換えると、擬似適合性フィードバックの前後で、クエリの背後に異なるモデルを仮定しているということである。(ただし、今度は残差接続を無視すればの話)
マルチヘッド注意
マルチヘッド注意においては、ソース・キー・値の各ベクトルに3通りの異なる線形変換をかける。
さらに複数通り($h$通り、組み合わせで$3h$通り)の線形変換をかけ、それぞれ注意を行う。
得られた$h$通りの出力を書き並べ、また異なる線形変換をかけてソース・キーの次元数に戻す。
Masked Attention
Masked Attentionは、系列データに対して注意を行う場合の訓練時に、推論したい位置の重みをゼロに固定してリークを防ぐ手法である。
参考文献
- 岡谷 貴之, 深層学習 改訂第2版, 講談社, 2022.
- Stefan Büttcher et al., 情報検索, 森北出版, 2020.
- Ashish Vaswani et al., Attention Is All You Need, arXiv:1706.03762v5 [cs.CL], 2017.