Attention Mechanism のバックアップ差分(No.20)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
CENTER:|>|BGCOLOR(#ACFA58):CENTER:Attention Mechanism|
|BGCOLOR(#E0F2F7):CENTER:カテゴリ|[[Category/Info]]|
|BGCOLOR(#E0F2F7):CENTER:状態|''&color(Red){執筆中};''|

#CONTENTS

// ''[[概要>#Overview]]''
// **隣接地域 [#ContiguousRegion]
// ''[[安全情報>#SafetyInformation]]''
// ''[[行政区画>#AdministrativeDivision]]''
// ''[[地域名>#Regions]]''
// **ランドマーク・施設・集落・小地名等 [#Landmark]
// ''[[事項>#Events]]''
// **資料 [#Sources]
// ''[[リンク>#ExternalLink]]''
// ''[[その他>#Others]]''


**概要 [#Overview]
 Attention Mechanism (注意機構)は、データのどこに注目するかを利用した機械学習のモデル。[[RNN>Recurrent Neural Network]]には、離れた位置の情報が反映されにくいという弱点があり、これを解決するために[[RNN>Recurrent Neural Network]]に付け加えられる形で登場した。~
 注意点を示すという性質から、自然言語処理だけでなく画像処理などにも使われる。また、[[RNN>Recurrent Neural Network]]を利用せず、Attention Mechanism を主とした機械学習モデル (Transformer) が発明され、高性能な自然言語処理([[BEAT>Bidirectional Encoder Representations from Transformers]]等)の基礎となった。
**モデル(大まかな機構) [#bcc831c3]


:文脈|&mathjax{\displaystyle \mathbf{c}_\tau= \sum_t a_{\tau t} \mathbf{v}_t = \mathbf{a}_\tau^\top V};
つまり &mathjax{\displaystyle C=  A^\top V};
:正規化|&mathjax{\displaystyle \mathbf{a}_\tau^\top = f_{norm}(\mathbf{s}_\tau^\top)};
つまり&mathjax{\displaystyle A^\top = f_{norm}(S^\top)};
または &mathjax{\displaystyle a_{\tau t} = f_{norm}(s_{\tau t})};
:類似度|&mathjax{\displaystyle \mathbf{s}_\tau^\top = f_{sim}(\mathbf{q_\tau},K)};
つまり &mathjax{\displaystyle S^\top = f_{sim}(Q,K)};
 ~

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

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

----
:&mathjax{K};|key。縦ベクトル&mathjax{\mathbf{k}_t}; を並べたもの。
これを使って分析の対象&mathjax{Q};との関係を算出する。翻訳器ならば、&mathjax{K};が原文から作った縦ベクトルを並べたもの、&mathjax{Q};が今訳すべき部分の状態である。
&mathjax{V=K};の場合が多い。
また、&mathjax{V=K=Q};の場合はSelf-Attentionと呼ばれる。

----
:&mathjax{C};|context。
文脈ベクトル&mathjax{\mathbf{c}_\tau}; を並べたもの。
&mathjax{Q, V, K};に対する文脈。これが次のモジュールに渡される。

----
:&mathjax{A};|&mathjax{\mathbf{v}_t};対する重みベクトル&mathjax{\mathbf{a}_\tau};を並べたもの。

 
----
以上より、Attention のモデルは以下3つの観点から分類できる。~
-&mathjax{Q,V,K};などの分析対象・状態・関係
-正規化&mathjax{f_{norm}};の方法
-類似度&mathjax{f_{sim}};の方法
**Q,V,Kなどの対象の状態・関係からの分類 [#kb9f5032]
:Source-Target Attention|&mathjax{Q \neq V=K};の場合。

:Self-Attention|&mathjax{Q=V=K};の場合。
自然言語処理ならば、各単語間の関係の強さを取得したいときに使う。

:Multi-Head Attention|複数のAttentionを用意する。同じ単語でも位置によって関係性が異なる場合などに使う。

**正規化の方法の分類 [#lcf99c64]
&mathjax{\displaystyle \mathbf{a}_\tau = f_{norm}(\mathbf{h}_\tau)};の具体的な方法によって分類できる。
----
:softmax関数|&mathjax{\displaystyle \mathbf{a}_\tau = \frac{\exp(\displaystyle \mathbf{h}_\tau)}{\displaystyle \sum_\tau \exp(\mathbf{e}_\tau)}};
**類似度の方法の分類 [#rfcf1f23]
&mathjax{\displaystyle \mathbf{s}_\tau^\top = f_{sim}(\mathbf{q}_\tau,K)};あるいは&mathjax{\displaystyle S^\top = f_{sim}(Q,K)};にはいくつかの方式がある。

***Dot-Product Attention(内積注意) [#t1850acf]
&mathjax{\displaystyle s_{\tau t} = q_{\tau t} \mathbf{k}_t};
すなわち
&mathjax{\displaystyle \mathbf{s}_\tau^\top = \mathbf{q}_\tau^\top K};
すなわち
&mathjax{\displaystyle S^\top = Q^\top K};


***Scaled Dot-Product Attention(正規化内積注意) [#s7c94e3c]
&mathjax{\mathbf{k}_t};の次元を&mathjax{d_k};とするとき、
&mathjax{\displaystyle s_{\tau t} = \frac{q_{\tau t} \mathbf{k}_t}{\sqrt{d_k}}};
すなわち
&mathjax{\displaystyle \mathbf{s}_\tau^\top = \frac{ \mathbf{q}_\tau^\top K}{\sqrt{d_k}} };
すなわち
&mathjax{\displaystyle S^\top = \frac{Q^\top K}{\sqrt{d_k}} };

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

***general [#yd6f9817]
&mathjax{s_{\tau t} = \mathbf{q}_\tau^\top W \mathbf{k}_t };
あるいは
&mathjax{\mathbf{s}_{\tau}^\top = \mathbf{q}_\tau^\top W K };
あるいは
&mathjax{S^\top = Q^\top W K };


***additive attention (加法注意) [#pa5e338b]
***Additive Attention (加法注意) [#pa5e338b]
&mathjax{f_{a}()};を活性化関数としたとき、~

&mathjax{\displaystyle \displaystyle s_{\tau t} = \mathbf{w} f_{a} ( W_1 \mathbf{q}_{\tau} +  W_2 \mathbf{k}_t + \mathbf{b} )};~
&mathjax{\displaystyle s_{\tau t} = \mathbf{w}^\top f_{a} ( W_1 \mathbf{q}_{\tau} +  W_2 \mathbf{k}_t + \mathbf{b} )};~
***concat [#e6cbd822]
&mathjax{f_{a}()};を活性化関数としたとき、~

&mathjax{\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) };~

----
&mathjax{\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]};とするとき、上式を変形すると、~

&mathjax{\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) };~

&mathjax{= \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) };~

&mathjax{= \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]   };~

&mathjax{= \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)と似たような働きをすると考えられる。
**リンク [#ExternalLink]

-[[Neural Machine Translation by Jointly Learning to Align and Translate&BR;Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio&BR;Submitted on 1 Sep 2014 (v1), last revised 19 May 2016 (this version, v7):https://arxiv.org/abs/1409.0473]]
-[[Attention Is All You Need&BR; (Vaswani et al, 2017):https://arxiv.org/abs/1706.03762]]
-[[論文解説 Attention Is All You Need (Transformer)&BR;ディープラーニングブログ| 2017-12-21:http://deeplearning.hatenablog.com/entry/transformer]]
-[[自然言語処理における、Attentionの耐えられない短さ&BR;Qiita:https://qiita.com/icoxfog417/items/f170666d81f773e4b1a7]]
-[[深層学習界の大前提Transformerの論文解説!&BR;Qiita:https://qiita.com/omiita/items/07e69aef6c156d23c538]]
-[[ざっくり理解する分散表現, Attention, Self Attention, Transformer&BR;Qiita:https://qiita.com/norihitoishida/items/2fead107792b504eaccf]]
-[[作って理解する Transformer / Attention&BR;Qiita|@halhorn|2018年12月05日に更新:https://qiita.com/halhorn/items/c91497522be27bde17ce]]
-[[Attentionで拡張されたRecurrent Neural Networks&BR;DeepAge:https://deepage.net/deep_learning/2017/03/03/attention-augmented-recurrent-neural-networks.html]]
-[[自然言語処理の巨獣「Transformer」のSelf-Attention Layer紹介&BR;Neil Wu|Oct 7, 2019 · 10 min read:https://medium.com/lsc-psd/%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E3%81%AE%E5%B7%A8%E7%8D%A3-transformer-%E3%81%AEself-attention-layer%E7%B4%B9%E4%BB%8B-a04dc999efc5]]
-[[Effective Approaches to Attention-based Neural Machine Translation&BR;Submitted on 17 Aug 2015 (v1), last revised 20 Sep 2015 (this version, v5)&BR;Minh-Thang Luong, Hieu Pham, Christopher D. Manning:https://arxiv.org/abs/1508.04025]]
**巻末 [#k8686439]
***履歴 [#d6235c4c]
2020 5/25:半分くらい書いた
***コメント [#ga1736e6]
#pcomment