Attention

はじめに

今回は、翻訳モデルであるEncoder-Decoderの中で使われるAttentionメカニズムについて解説したい。LSTMなどの詳細についてここでは言及しない。

Encoder-Decoderモデル

Encoder-Decoderモデルとは、入力系列を出力系列に変換するモデルである。その構造を以下に示す。

入力系列をx=(x_1,\cdots,x_M)、出力系列をy=(y_1,\cdots,y_N)とした。それぞれの末尾に系列の終了を表すeosを追加してある。橙色の矩形がLSTMを表し、EncoderとDecoderの役割を果たしている。EncoderとDecoderは図の赤矢印のみで接続しており、Encoder側の情報は全てこの矢印一本に集約していることになる。

Attentionメカニズム

出力系列のひとつを予測する際、入力系列の各要素に重み付けを行い、これらも予測に利用する仕組みがAttentionである。

ここで

(1)    \begin{eqnarray*} \alpha_n(m)&=&\frac{\exp{(t_n^T s_m)}}{\sum_{j=1}^M\exp{(t_n^T s_j)}} \\ c_n&=&\sum_{m=1}^M\alpha_n(m)\;s_m \end{eqnarray*}

である。上図内のc_nが予測に利用されるメカニズムがAttentionである。t_n,s_mはベクトル(\mathbb{R}^d)なので、指数関数の肩に乗る量は内積であることに注意する(Tは転置を表す)。この式の意味を明確にするため、式(1)を行列で表示する。C^T=(c_1,\cdots,c_N),T^T=(t_1,\cdots,t_N),S^T=(s_1,\cdots,s_M)とし、さらにF_{nm}=\alpha_n(m)と書くことにすれば

(2)    \begin{eqnarray*} F&=&TS^T \\ C&=&{\rm Softmax}(F)S \end{eqnarray*}

と書くことができる。図で示すと以下のようになる。


例えば、Decoder側の要素t_nに注目する。このベクトルとEncoder側のベクトルs_1,\cdots,s_Mとが個々に内積を取ることになり、出力は図に示したようにM次元のベクトルになる。s_mとの相関が強ければm番目の要素が大きくなる。これにSoftmaxを施してSとかけ算を行えば、入力側の要素のうち、t_nとの相関が強い要素s_mにかかる重みが大きくなる。つまり、Attentionとは、出力系列の要素と強く相関する入力系列の要素を抽出する仕組みである。

まとめ

今回はAttentionの意味を明確に示した。Attentionは最近の深層学習の研究においてかなり重要なメカニズムとなっている。

Kumada Seiya

Kumada Seiya

仕事であろうとなかろうと勉強し続ける、その結果”中身”を知ったエンジニアになれる

最近の記事

  • 関連記事
  • おすすめ記事
  • 特集記事

アーカイブ

カテゴリー

PAGE TOP