LoginSignup
1
5

More than 3 years have passed since last update.

Attentionの復習

Posted at

モチベーション

Transformerを学習するにあたりAttentionの知識が必要になったため。

Attentionの種類

①Sorce-Target型
順序の異なる2つの系列を組み合わせる時に使用する。翻訳など。
入力側(日本語)からKeyとValueを出力側(英語)からQueryを作成する。

②Self-Attention型
1つの系列の特徴を抽出するために使用する。
ある単語の特徴をほかの単語によって特徴づけたい時など。
自分自身からQueryとKey(Q=K)、Valueを作成

①Sorce-Target型

翻訳する際にどの単語に注目して翻訳すべきかを判断する。

KeyとValue:翻訳元の特徴をKeyとValueに分けたもの
Key:着目する単語を決めるために使われるベクトル
Value:最終的に利用されるベクトル
Query:どのような特徴を持つ単語に着目すべきか決定するベクトル

QueryとKeyの内積をとることでどのデータに着目すべきかを決定する。
算出した重要度はSoftMaxによりSum=1になるように変換される。

例)日本語を英語に翻訳する場合
Theという単語のQueryと日本語単語のKeyとの内積をとることで、重要度を算出する。
この場合は「ハンバーガー」の重要度が高くなる。
重要度とValueを加算することで、重要度に従った特徴量(ハンバーガーの特徴量)を取り出すことができる。

image.png
image.png

image.png
image.png

問い合わせ(Query)に最も類似するKeyに対応するValueを取得している
Queryの特徴量とベクトルの方向が同じ特徴量の値が大きくなる。そして、対応するValueを取り出している。
image.png

image.png

②Self-Attention型

自分自身を特徴づける。
自分自身からQueryとKey(Q=K)、Valueを作成

「嫌い」という単語は「ない」という単語によって意味合いが変わる単語であるため、「ない」によって特徴づけられる必要がある。
image.png

嫌いのQueryと各単語のKeyとの内積->softmaxで重要度を算出
「嫌い」のQueryを各Keyと内積をとると「ない」の重要度が大きくなり「ない」によって特徴づけられるようになる。
image.png

Multi-Head Attention

Headごとに着目する点を変えることで偏った観点で着目しないようにする。
次元数が512次元あった時にヘッドの数がh=8であれば各ヘッドが担当する次元数は512/h=64次元となる
各ヘッドでAttentionをすることで、異なる位置の部分空間を処理することになる。
あるヘッドではある観点で着目、別のヘッドでは別の観点で注目という風にしている
image.png

各ヘッドで求めた特徴量を最終的に足して最終出力にする。

画像の場合

画像のどの特徴に注目するかを決定している
Query(左上の画素は)どこの画素に注目すべきかをKeyと内積->Softmaxで重要度を算出しValueにけることでどこに注目すべきかを算出する。
image.png
image.png

参考

Attention

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5