Slide 1

Slide 1 text

Attention 2022-06-11 立岩斉明

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Attention > 翻訳タスクの場合は word embedding も機械学習によってその変換規則が獲得される。いくつか種 類があるが、大抵のword embedding は意味が近い単語を、ベクトル空間の中 で近くに分布するような変換規則を行う。 → 一般的に、単語a の埋め込みベクトル と単語b の埋め込みベクトル が類 似しているならばその内積 は大きく、そうでないならば小さくなる z ​ a z ​ b ⟨v ​ , v ​ ⟩ a n 1 1: これは多少乱暴な言い方で、なぜなら内積は二つのベクトルの方向とその大きさ( ノルム) によって値が決まるから( すなわちベ クトル空間上で近くになくても、どちらかのベクトルノルムが大きければ内積は大きくなり得る。。。) 。しかし、少なくとも その正負をみれば大雑把に類似しているか否かの判定はできる( はず) 。 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Transformer

Slide 10

Slide 10 text

Transormer Multi-Head Attention はSelf-Attention を拡張したもの Add & Norm 層では残差接続(Residual connection) が行われる 左半分がEncoder/ 右半分がDecoder 10

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

最終層 それぞれのベクトルの次元を埋 め込み次元から語彙数次元まで 拡げる 例えば、x[i][j] を文頭からi 番目 の単語がID j である確率 とみ なして学習することができる 12