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

Attention

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 Attention

attentionについて

Avatar for Nariaki Tateiwa

Nariaki Tateiwa

June 11, 2022
Tweet

More Decks by Nariaki Tateiwa

Other Decks in Science

Transcript

  1. 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
  2. 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
  3. 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
  4. Attention > 翻訳タスクの場合は word embedding も機械学習によってその変換規則が獲得される。いくつか種 類があるが、大抵のword embedding は意味が近い単語を、ベクトル空間の中 で近くに分布するような変換規則を行う。

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