Attention Mechanism のバックアップ(No.20)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Attention Mechanism へ行く。
- 1 (2020-05-21 (木) 02:09:18)
- 2 (2020-05-22 (金) 22:13:10)
- 3 (2020-05-22 (金) 23:56:43)
- 4 (2020-05-25 (月) 02:50:17)
- 5 (2020-05-25 (月) 15:42:21)
- 6 (2020-05-25 (月) 17:07:05)
- 7 (2020-05-25 (月) 19:56:32)
- 8 (2020-05-25 (月) 20:56:46)
- 9 (2020-05-25 (月) 23:17:22)
- 10 (2020-05-26 (火) 00:21:59)
- 11 (2020-05-26 (火) 01:24:01)
- 12 (2020-05-26 (火) 02:27:50)
- 13 (2020-05-26 (火) 16:31:30)
- 14 (2020-05-27 (水) 00:21:37)
- 15 (2020-05-27 (水) 03:06:06)
- 16 (2020-05-27 (水) 04:16:08)
- 17 (2020-05-27 (水) 05:52:17)
- 18 (2020-05-27 (水) 12:56:46)
- 19 (2020-05-27 (水) 14:16:54)
- 20 (2020-05-28 (木) 04:05:08)
- 21 (2020-05-28 (木) 13:46:26)
- 22 (2020-05-28 (木) 14:59:22)
- 23 (2020-05-29 (金) 15:01:07)
- 24 (2020-05-29 (金) 17:51:35)
- 25 (2020-05-29 (金) 19:39:06)
- 26 (2020-06-22 (月) 22:54:25)
- 27 (2020-06-24 (水) 18:18:32)
Attention Mechanism | |
カテゴリ | Category/Info |
状態 | 執筆中 |
CONTENTS
概要
Attention Mechanism (注意機構)は、データのどこに注目するかを利用した機械学習のモデル。RNNには、離れた位置の情報が反映されにくいという弱点があり、これを解決するためにRNNに付け加えられる形で登場した。
注意点を示すという性質から、自然言語処理だけでなく画像処理などにも使われる。また、RNNを利用せず、Attention Mechanism を主とした機械学習モデル (Transformer) が発明され、高性能な自然言語処理(BEAT等)の基礎となった。
モデル(大まかな機構)
- 文脈
- \( \displaystyle \mathbf{c}_\tau= \sum_t a_{\tau t} \mathbf{v}_t = \mathbf{a}_\tau^\top V \)
つまり \( \displaystyle C= A^\top V \) - 正規化
- \( \displaystyle \mathbf{a}_\tau^\top = f_{norm}(\mathbf{s}_\tau^\top) \)
つまり\( \displaystyle A^\top = f_{norm}(S^\top) \)
または \( \displaystyle a_{\tau t} = f_{norm}(s_{\tau t}) \) - 類似度
- \( \displaystyle \mathbf{s}_\tau^\top = f_{sim}(\mathbf{q_\tau},K) \)
つまり \( \displaystyle S^\top = f_{sim}(Q,K) \)
- \( Q \)
- 分析の対象(query)。縦ベクトル\( \mathbf{q}_\tau \) を並べたもの。翻訳では、訳出中の内部状態にあたる。また、入力・応答関連のシステムにおては、応答中の内部状態にあたる。
- \( V \)
- value。縦ベクトル\( \mathbf{v}_t \) を並べたもの。
これに重み付き係数を掛けると取得すべき文脈\( \mathbf{c}_\tau \)となる。
自然言語処理においては、入力文の個々の単語(とRNN等)から作られた縦ベクトル\( \mathbf{v}_t \)を並べたもの。
出力(output)と呼ばれることもあるが、これをそのまま出力するわけではない。
- \( K \)
- key。縦ベクトル\( \mathbf{k}_t \) を並べたもの。
これを使って分析の対象\( Q \)との関係を算出する。翻訳器ならば、\( K \)が原文から作った縦ベクトルを並べたもの、\( Q \)が今訳すべき部分の状態である。
\( V=K \)の場合が多い。
また、\( V=K=Q \)の場合はSelf-Attentionと呼ばれる。
- \( C \)
- context。
文脈ベクトル\( \mathbf{c}_\tau \) を並べたもの。
\( Q, V, K \)に対する文脈。これが次のモジュールに渡される。
- \( A \)
- \( \mathbf{v}_t \)対する重みベクトル\( \mathbf{a}_\tau \)を並べたもの。
以上より、Attention のモデルは以下3つの観点から分類できる。
- \( Q,V,K \)などの分析対象・状態・関係
- 正規化\( f_{norm} \)の方法
- 類似度\( f_{sim} \)の方法
Q,V,Kなどの対象の状態・関係からの分類
- Source-Target Attention
- \( Q \neq V=K \)の場合。
- Self-Attention
- \( Q=V=K \)の場合。
自然言語処理ならば、各単語間の関係の強さを取得したいときに使う。
- Multi-Head Attention
- 複数のAttentionを用意する。同じ単語でも位置によって関係性が異なる場合などに使う。
正規化の方法の分類
\( \displaystyle \mathbf{a}_\tau = f_{norm}(\mathbf{h}_\tau) \)の具体的な方法によって分類できる。
- softmax関数
- \( \displaystyle \mathbf{a}_\tau = \frac{\exp(\displaystyle \mathbf{h}_\tau)}{\displaystyle \sum_\tau \exp(\mathbf{e}_\tau)} \)
類似度の方法の分類
\( \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)と似たような働きをすると考えられる。
リンク
- Neural Machine Translation by Jointly Learning to Align and Translate
Dzmitry Bahdanau, Kyunghyun Cho, Yoshua Bengio
Submitted on 1 Sep 2014 (v1), last revised 19 May 2016 (this version, v7) - Attention Is All You Need
(Vaswani et al, 2017) - 論文解説 Attention Is All You Need (Transformer)
ディープラーニングブログ| 2017-12-21 - 自然言語処理における、Attentionの耐えられない短さ
Qiita - 深層学習界の大前提Transformerの論文解説!
Qiita - ざっくり理解する分散表現, Attention, Self Attention, Transformer
Qiita - 作って理解する Transformer / Attention
Qiita|@halhorn|2018年12月05日に更新 - Attentionで拡張されたRecurrent Neural Networks
DeepAge - 自然言語処理の巨獣「Transformer」のSelf-Attention Layer紹介
Neil Wu|Oct 7, 2019 · 10 min read - Effective Approaches to Attention-based Neural Machine Translation
Submitted on 17 Aug 2015 (v1), last revised 20 Sep 2015 (this version, v5)
Minh-Thang Luong, Hieu Pham, Christopher D. Manning
巻末
履歴
2020 5/25:半分くらい書いた
pcomment
コメントはありません。 Comments/Attention Mechanism