attention和self-attention 使用机器翻译任务例子理解两者之间的关系
假设:原文长度n , 输入序列source,输出序列target
query, key, value
target序列中的某个元素query
Source序列是一系列<key,value>数据对
score function
对于一个query , 和所有的key做向量点积 (a.b = |a||b|cosµ) 度量两个词的相似度 ,越相似,点积越大 ——长度为n的list 得分值score[i]
alignment function
SoftMax对所有点积值归一化 i=1..n , ∑prob[i] = 1
generate context vector function
n个prob[i]与n个value[i]一一对应,加权求和
这个query的attention值 == ∑prob[i] *value[i]
score[i] = query * key[i]
prob[i]=softmax(score[i])
attention=∑prob[i]*value[i]