Attention Mechanism のバックアップ(No.26)


Attention Mechanism
カテゴリCategory/Info
状態執筆中

概要

 Attention Mechanism (注意機構)は、データのどこに注目するかを利用した機械学習のモデル。RNNには、離れた位置の情報が反映されにくいという弱点があり、これを解決するためにRNNに付け加えられる形で登場した。

 注意点を示すという性質から、自然言語処理だけでなく画像処理などにも使われる。また、RNNを利用せず、Attention Mechanism を主とした機械学習モデル (Transformer) が発明され、高性能な自然言語処理(BERT等)の基礎となった。

モデル(大まかな機構)

 Attention Mechanism は(2020年現在)短期間で発達し、様々なモデルが提案されているが、ここでは幾つかのモデルに包括するquery, key, value構造について述べる。

 Attention の目的は、特徴ベクトル群value:\( V \)に対して、注目すべき度合いに応じて重み付けをすることである。
このとき、\( V \)に関する情報はkey:\( K \)として与えられる。\( V,K \)は合わせてmemoryとも呼ばれ、同じであることが多いが、\( V,K \)それぞれに違う加工を施した後に Attention に渡すモデルもある。
また、複数の状況や変化する状況に応じて重み付けを変えたい場合もある。このとき、複数の状況のベクトル\( Q \):queryを Attention に渡す。\( Q \)がないモデルもあるが、翻訳のような刻々と状況が変化するようなモデルでは必須となる。


Attention Mechanism は以下の3式で構成されるモデルとなる。最終的な出力は\( \mathbf{c}_\tau \)(あるいは\( C \))。

文脈
\( \displaystyle \mathbf{c}_\tau= \sum_t a_{\tau t} \mathbf{v}_t \)
正規化
\( \displaystyle \mathbf{a}_\tau^\top = f_{norm}(\mathbf{s}_\tau^\top) \)
すなわち \( \displaystyle A^\top = f_{norm}(S^\top) \)
類似度(あるいはスコア)
\( \displaystyle s_{\tau t}^\top = f_{sim}(\mathbf{q}_\tau,\mathbf{k}_t) \)
つまり \( \displaystyle \mathbf{s}_\tau^\top = f_{sim}(\mathbf{q_\tau},K) \)
すなわち \( \displaystyle S^\top = f_{sim}(Q,K) \)
 

以上より、Attention のモデルは以下3つの観点から分類できる。

  • \( Q,V,K \)などの分析対象・状態・関係
  • 正規化\( f_{norm} \)の方法
  • 類似度\( f_{sim} \)の方法

context:C

\( C \)
文脈ベクトル\( \mathbf{c}_\tau \) を並べたもの。
\( Q, V, K \)に対する文脈。これが次のモジュールに渡される。
\( Q \)が無い場合、\( C \)を構成するベクトルは1本となる。

value:V

\( V \)
縦ベクトル\( \mathbf{v}_t \) を並べたもの。
これに重み付き係数を掛けると取得すべき文脈\( \mathbf{c}_\tau \)となる。
自然言語処理においては、入力文の個々の単語(とRNN等)から作られた縦ベクトル\( \mathbf{v}_t \)を並べたもの。
出力(output)と呼ばれることもあるが、これをそのまま出力するわけではない。

key:K

\( K \)
縦ベクトル\( \mathbf{k}_t \) を並べたもの。
\( V \)に関する情報を持ち、これを使って類似度を計算する。
\( K=V \)であることも多いが、\( V,K \)それぞれに違う変形が施されていることもある。

また、\( Q \)が存在するときは、\( Q \)との関係を算出する。翻訳器ならば、\( K \)が原文から作った縦ベクトルを並べたもの、\( Q \)が今訳すべき部分の状態である。

\( V=K=Q \)の場合はSelf-Attentionと呼ばれる。

query:Q

\( Q \)
分析の対象。縦ベクトル\( \mathbf{q}_\tau \) を並べたもの。翻訳では、訳出中の内部状態にあたる。また、入力・応答関連のシステムにおては、応答中の内部状態にあたる。

重み:A

\( A \)
\( \mathbf{v}_t \)に対する重みベクトル\( \mathbf{a}_\tau \)を並べたもので、Attention Matrix と呼ばれる。
\( V \)のどのベクトルが\( Q \)のどのベクトルと関連しているかが格納されているため、これを解析することで、何が重視されたかがわかる。

Q,V,Kなどの対象の状態・関係からの分類

※Multi-Head Attention はそのうち書きます。

Source-Target Attention

\( Q \neq V \fallingdotseq K \)の場合。
変化する(あるいは多様な)query:\( \mathbf{q_\tau} \)に対して、value:\( V \)との関連を求めたい場合。
翻訳器などのエンコーダー・デコーダーモデルによく使われる。
例えば、英語を日本語訳する場合、\( V \)を英語原文から作ったベクトル、\( \mathbf{q_\tau} \)を一単語前の日本語を訳出した内部状態にあたる。

Self-Attention

\( Q \fallingdotseq V \fallingdotseq K \)の場合。
自然言語処理ならば、入力された文章中の各単語間の関係の強さを取得したいときに使う。
Transformerで採用されている方式の一つ。

正規化の方法の分類

\( \displaystyle a_{\tau t} = f_{norm}(s_{\tau t}) \)の具体的な方法によって分類できる。


softmax関数
\( \displaystyle a_{\tau t} = \frac{\exp(\displaystyle s_{\tau t})}{\displaystyle \sum_\tau \exp(s_{\tau t})} \)

類似度の方法の分類

\( \displaystyle \mathbf{s}_\tau^\top = f_{sim}(\mathbf{q}_\tau,K) \)あるいは\( \displaystyle S^\top = f_{sim}(Q,K) \)にはいくつかの方式がある。

Dot-Product Attention(内積注意)

\( \displaystyle s_{\tau t} = q_{\tau t} \mathbf{k}_t \)
すなわち
\( \displaystyle \mathbf{s}_\tau^\top = \mathbf{q}_\tau^\top K \)
すなわち
\( \displaystyle S^\top = Q^\top K \)

Scaled Dot-Product Attention(正規化内積注意)

\( \mathbf{k}_t \)の次元を\( d_k \)とするとき、
\( \displaystyle s_{\tau t} = \frac{q_{\tau t} \mathbf{k}_t}{\sqrt{d_k}} \)
すなわち
\( \displaystyle \mathbf{s}_\tau^\top = \frac{ \mathbf{q}_\tau^\top K}{\sqrt{d_k}} \)
すなわち
\( \displaystyle S^\top = \frac{Q^\top K}{\sqrt{d_k}} \)

Dot-Product Attention と softmax 正規化を用いた場合、勾配が小さくなりすぎる問題を回避するため\( \sqrt{d_k} \)で正規化している。
Transformerで採用されている方式。
(横ベクトル表記だと、若干数式に違いがあるので注意。)

general

\( s_{\tau t} = \mathbf{q}_\tau^\top W \mathbf{k}_t \)
あるいは
\( \mathbf{s}_{\tau}^\top = \mathbf{q}_\tau^\top W K \)
あるいは
\( S^\top = Q^\top W K \)

Additive Attention (加法注意)

\( f_{a}() \)を活性化関数としたとき、

\( \displaystyle s_{\tau t} = \mathbf{w}^\top f_{a} ( W_1 \mathbf{q}_{\tau} + W_2 \mathbf{k}_t + \mathbf{b} ) \)

concat

\( f_{a}() \)を活性化関数としたとき、

\( \displaystyle s_{\tau t} = \mathbf{w}^\top f_{a} \left( W \left[ \begin{array}{c} \mathbf{q}_{\tau} \\ \mathbf{k}_t \end{array} \right] + \mathbf{b} \right) \)


\( \displaystyle \mathbf{w} = \left[ \begin{array}{c} \mathbf{w}_1 \\ \mathbf{w}_2 \end{array} \right] , W = \left[ \begin{array}{cc} W_A & W_B \\ W_C & W_D \end{array} \right], \mathbf{b} = \left[ \begin{array}{c} \mathbf{b}_1 \\ \mathbf{b}_2 \end{array} \right] \)とするとき、上式を変形すると、

\( \displaystyle s_{\tau t} = \left[ \begin{array}{cc} \mathbf{w}_1^\top & \mathbf{w}_2^\top \end{array} \right] f_{a} \left( \left[ \begin{array}{cc} W_A & W_B \\ W_C & W_D \end{array} \right] \left[ \begin{array}{c} \mathbf{q}_{\tau} \\ \mathbf{k}_t \end{array} \right] + \left[ \begin{array}{c} \mathbf{b}_1 \\ \mathbf{b}_2 \end{array} \right] \right) \)

\( = \left[ \begin{array}{cc} \mathbf{w}_1^\top & \mathbf{w}_2^\top \end{array} \right] f_{a} \left( \left[ \begin{array}{c} W_A \mathbf{q}_{\tau}+W_B \mathbf{k}_t + \mathbf{b}_1 \\ W_C \mathbf{q}_{\tau}+W_D \mathbf{k}_t + \mathbf{b}_2 \end{array} \right] \right) \)

\( = \left[ \begin{array}{cc} \mathbf{w}_1^\top & \mathbf{w}_2^\top \end{array} \right] \left[ \begin{array}{c} f_a( W_A \mathbf{q}_{\tau}+W_B \mathbf{k}_t + \mathbf{b}_1 ) \\ f_a( W_C \mathbf{q}_{\tau}+W_D \mathbf{k}_t + \mathbf{b}_2 ) \end{array} \right] \)

\( = \mathbf{w}_1^\top f_a( W_A \mathbf{q}_{\tau}+W_B \mathbf{k}_t + \mathbf{b}_1 ) + \mathbf{w}_2^\top f_a( W_C \mathbf{q}_{\tau}+W_D \mathbf{k}_t + \mathbf{b}_2 ) \)

となるため、加法注意(Additive)と似たような働きをすると考えられる。

巻末

履歴

2020 5/25:半分くらい書いた
2020 5/28:大まかなモデルに関しては大体書いたと思う。

コメント

コメントはありません。 Comments/Attention Mechanism

お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White