深刻理解Attention

LawsonAbs的认知与思考,还请各位读者批判阅读。

总结
  • 文章来源:csdn:LawsonAbs
  • 不适合入门选手
  • 因为对Attention(可能也是一切知识)的认知会随着论文的阅读,代码的实践持续改变,所以本文持续更新~

1.Self-Attention

1.1 Q:下面这个图是怎么得到的呢?

深刻理解Attention
上面这个图讲得是:每个单词对其它单词的一个关注度。我们attention之后不是只得到一个向量吗? (左侧这句话是错误的)怎么会有关注度(attention score)呢?仔细读读下面这段话:

As we are encoding the word “it” in encoder #5 (the top encoder in the stack), part of the attention mechanism was focusing on “The Animal”, and baked a part of its representation into the encoding of “it”.

也就是说:it这个单词的 embedding 是结合了Theanimal 等一系列单词的权重得到的embedding。同样,对于单词animal 也会用一系列的加权值来表示它的向量,即对于每个token,都有:
t o k e n = ∑ i = 1 n α i ∗ v i token = \sum_{i=1}^n \alpha_i * v_i token=i=1∑n​αi​∗vi​
对应于下面这张图:
深刻理解Attention向量z1 和向量 z2 不同的原因在于==在计算attention值的时候,采用的不是同一个q。==也就是说,在计算Thinking这个单词用的是 q 1 , k 1 , k 2 , v 1 , v 2 q_1,k_1,k_2,v_1,v_2 q1​,k1​,k2​,v1​,v2​,但是计算Machines 这个单词用的是 q 2 , k 1 , k 2 , v 1 , v 2 q_2,k_1,k_2,v_1,v_2 q2​,k1​,k2​,v1​,v2​ 所以会得到一个不同单词对其它单词的关注度(但是事实证明,attention并不是像作者们说的这么有效,大家听听就好~,有兴趣深究的可以看我的博客:Bert实战二之探索Attention score)。

由上可知,不能单纯的以为attention 只能把一句话编码成一个向量!它还可以self-attention 把句子中的每个token都编码成一个向量。

2. 代码细节

2.1 在 key-value attention 中, 随机生成的 Query, Key 矩阵 在每个批次训练中是否是一致的?也就是说,这两个矩阵是否是全局唯一的?

我觉得是的,因为需要针对这两个也是参数,需要对应训练,如果总是变化,肯定是不可的。

参考资料
上一篇:Transformer模型详解


下一篇:没有Attention的Transformer依然是顶流!!!