的特征维度是768,那么输入就是(L, 768),每一行就是一个字,像这样:
乘以上面三种操作就得到了Q/K/V,(L, 768)*(768,768) = (L,768),维度其实没变,即此刻的Q/K/...K矩阵乘,(L, 768)*(L, 768)的转置=(L,L),看图:
首先用Q的第一行,即“我”字的768特征和K中“我”字的768为特征点乘求和,得到输出(0,0)位置的数值,这个数值就代表了“我想吃酸菜鱼...简单来说,Q来自于句A,K、V来自于句B即可~
注意,K/V中,如果同时替换任意两个字的位置,对最终的结果是不会有影响的,至于为什么,可以自己在草稿纸上画一画矩阵乘;也就是说注意力机制是没有位置信息的,...好了,所谓查询,就是你要拿着这个Decoder中的H(t-1)去和Encoder中各个时刻的隐状态H(1), H(2), ... , H(T)去比,也就是二者计算相似度(对应于文献中的各种energy函数...还是它最好能配合Decoder动态调整自己,来使Target中的某些token与Source中的真正“有决定意义”的token关联起来好呢?
这就是为什么会有Attention机制的原因。