Attention
queryに対して適当なvalueを返す、dictionaryのようなもの
query: シーケンス
「I / am / a / robot」
value: シーケンス
「私/は/ロボット/です」
切り方は色々ある
基本的な流れ(Sourse-Target-Attention)
queryとmemory(keyとvalueに分けられる)を用意
query: 「I / am / a / robot」をembedding
memory: 「私/は/ロボット/です」をembedding(もしくはqueryと同じものにするとSelf-Attention)
key, valueは、memoryと同じもの OR memoryから変換したもの
queryとkeyをかけ合わせて(concatしてFFNに通す場合は加法注意)、softmax関数にかけて、どのvalueを取ってくるのかという確率ベクトルを出して、valueからその値を取ってくる(ベクトル積で良い)(これを内積注意という)
確率的にvalueから取得できるので、queryの1要素とvalueの複数要素の対応ができる、と思った
参考
https://qiita.com/halhorn/items/c91497522be27bde17ce
http://deeplearning.hatenablog.com/entry/transformer