モチベーション
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を加算することで、重要度に従った特徴量(ハンバーガーの特徴量)を取り出すことができる。
問い合わせ(Query)に最も類似するKeyに対応するValueを取得している
Queryの特徴量とベクトルの方向が同じ特徴量の値が大きくなる。そして、対応するValueを取り出している。
②Self-Attention型
自分自身を特徴づける。
自分自身からQueryとKey(Q=K)、Valueを作成
「嫌い」という単語は「ない」という単語によって意味合いが変わる単語であるため、「ない」によって特徴づけられる必要がある。
嫌いのQueryと各単語のKeyとの内積->softmaxで重要度を算出
「嫌い」のQueryを各Keyと内積をとると「ない」の重要度が大きくなり「ない」によって特徴づけられるようになる。
Multi-Head Attention
Headごとに着目する点を変えることで偏った観点で着目しないようにする。
次元数が512次元あった時にヘッドの数がh=8であれば各ヘッドが担当する次元数は512/h=64次元となる
各ヘッドでAttentionをすることで、異なる位置の部分空間を処理することになる。
あるヘッドではある観点で着目、別のヘッドでは別の観点で注目という風にしている
各ヘッドで求めた特徴量を最終的に足して最終出力にする。
画像の場合
画像のどの特徴に注目するかを決定している
Query(左上の画素は)どこの画素に注目すべきかをKeyと内積->Softmaxで重要度を算出しValueにけることでどこに注目すべきかを算出する。