Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Attention

 Attention

attentionについて

Nariaki Tateiwa

June 11, 2022
Tweet

More Decks by Nariaki Tateiwa

Other Decks in Science

Transcript

  1. Attention 2022-06-11 立岩斉明

  2. Attention " 複数の要素からなる集合に対し、今持っている関心(query) に応じた重要度に 従って、各要素を重み付けすること。" [1, Chapter7.2] 。 集合とは、( ある規則からなる)"

    もの" の無順序なあつまり。 2
  3. Attention > 具体的な計算方法 目標 : 特徴の集合 からquery の関連度が高い特徴量を算出する 特徴 とquery

    の関連度を、ある関数 を用いて と表す。( 関 数 は と の関連度が高いほど正に大きい値を取るような関数であれば何で も良い) そして、 と正規化する 。このとき をquery と関連の高い特徴量とみなし、これを出力する。 {z ​ } i z ​ i q r r ​ = i r(z ​ , q) i r z ​ i q (a ​ , ..., a ​ ) = 1 N softmax(r ​ , ..., r ​ ) 1 N 1 F = a ​ z ​ ∑ i i 1: softmax によって と変換される。このとき かつ をみたす。また のとき で あり変換前の大小関係を保つ。 a ​ = i r ​ /( e ) i ∑ r ​ i a ​ = ∑ i 1 a ​ ≥ i 0 r ​ ≥ i r ​ j a ​ ≥ i a ​ j 3
  4. Attention > 具体的な計算方法 は とquery の関連度が高いほど大きいはずなので にはquery との関連度が高い特徴量 が色濃く反映される。 →

    これを用いてquery に必要な処理を行う( モデルの入力にするとか) と精度が 良くなることが期待される! a ​ i z ​ i F = a ​ z ​ ∑ i i z ​ i 特徴量 をsource, query をtarget と呼び、上記の計算手続きをsource-to-target attention と呼ぶ。特にsource とtarget が同じ 場合はself-attention と呼ぶ。 z ​ i 4
  5. Attention > 翻訳タスクの場合は 特徴量 は文章内の単語の特徴ベクトルの集合として扱われる。文章をモ デルに入力する場合は一般的に最小単位( トークン; token) に分割する tokenize

    とtoken をベクトルに変換するword embedding という前処理が行わ れる。 " 雨が降る。" → [" 雨", " が", " 降る", " 。"] → = [0, 1, 3], # 雨 = [3, 4, -1], # が = [1, 0, -4], # 降る = [-3, 2, 1], # 。 {z ​ } i z ​ 0 z ​ 1 z ​ 2 z ​ 3 5
  6. Attention > 翻訳タスクの場合は word embedding も機械学習によってその変換規則が獲得される。いくつか種 類があるが、大抵のword embedding は意味が近い単語を、ベクトル空間の中 で近くに分布するような変換規則を行う。

    → 一般的に、単語a の埋め込みベクトル と単語b の埋め込みベクトル が類 似しているならばその内積 は大きく、そうでないならば小さくなる z ​ a z ​ b ⟨v ​ , v ​ ⟩ a n 1 1: これは多少乱暴な言い方で、なぜなら内積は二つのベクトルの方向とその大きさ( ノルム) によって値が決まるから( すなわちベ クトル空間上で近くになくても、どちらかのベクトルノルムが大きければ内積は大きくなり得る。。。) 。しかし、少なくとも その正負をみれば大雑把に類似しているか否かの判定はできる( はず) 。 6
  7. Attention > 翻訳タスクの場合は 特徴 とクエリ をどちらも、文頭から 番目の単語の特徴ベクトル( 次元) と する。(

    すなわち ) また、関連度関数 を内積 とする 。ここで 。 するとquery に対する特徴量は これはTransformer の文脈でscaled dot-product attention と呼ばれる。 z ​ i q ​ i i n z ​ = i q ​ i r(z ​ , q ​ ) i j ⟨z ​ , q ​ ⟩/d i j 1 d = ​ n q ​ j F ​ = j a ​ z ​ = ∑ i i softmax( ​ )Z d q ​ Z j T 2 1: つまりこれはi 番目の単語とj 番目の単語の類似度を計算している 2: は列 ベクトルを行方向にまとめた行列 Z z ​ i 7
  8. Attention > Key-Value 型 Transformer の場合はさらに関連度計算用のベクトル(key) と最終的に足し合 わせる用のベクトル(value) を分けて考える。 を文頭から

    番目の単語 の特徴ベクトル( 次元) とする。 ここでのkey-value の名称について一考。 マップ構造(python のdict やc++ のmap など) ではkey に対応するvalue を取り出 すが、それと同様にquery に対する重要度をkey で計算し、その重みに応じた 対応するvalue で特徴量を算出する? 感じ。 k ​ , q ​ , v ​ i i i i n F ​ = j softmax( ​ )V d q ​ K j T 8
  9. Transformer

  10. Transormer Multi-Head Attention はSelf-Attention を拡張したもの Add & Norm 層では残差接続(Residual connection)

    が行われる 左半分がEncoder/ 右半分がDecoder 10
  11. Scaled dot-product attention 入力トークンをembeding でベクトル化し たものをx として、 として を計算。 ここで

    は学習させるパラ メタ。 Q ← xW Q K ← xW K V ← xW V F = softmax( ​ )V d Q K T W , W , W Q K V 11
  12. 最終層 それぞれのベクトルの次元を埋 め込み次元から語彙数次元まで 拡げる 例えば、x[i][j] を文頭からi 番目 の単語がID j である確率 とみ

    なして学習することができる 12