Attentionのメモ

Attention

  • Attentionは、大きく分けて2種類ある。
  • seq2seqで使用するSource-Target-Attentionと、自分自身に対するSelf-Attention
  • Attentionは、Mapからキーを元に値を選択する処理である。
  • どこに注意すればよいかを、キーから選択させるようにする。
  • よい選択ができるようにMapデータを学習させる。
  • 学習させるためには、勾配計算するため、微分できる必要がある。
  • そのため、単なるMapの選択操作をするのではなく、キーから割合をまとめて、値と掛け合わせて合算する。
  • その結果を元に損失関数で計算し、よい値になるようにMapを調整していく。
  • Mapのキーは、内積計算を行い類似度の高いものを高くする。
  • 類似度が高いものが、結果的に損失関数の評価がよくなるように調整していく。

Selft-Attention

  • Selft-Attentionは、自分自身のシーケンスデータの関連度を取得する。
  • CNN(畳み込みネットワーク)の場合は、フィルタ(カーネル)サイズの範囲で、評価を行う。
  • フィルタサイズが上限となるが、Attentionの場合は、シーケンスデータの全体を評価することができる。
  • CNNの場合、学習はよいフィルタを作りあげることだが、Attentionの場合は、よいMapを作りあげることである。
  • 自然言語処理のAttentionの場合、キーは単語ベクトルとなるため、単語ベクトルの分散表現の類似度が調整される。

参考情報