原理源码讲解:https://www.jiqizhixin.com/articles/2018-11-06-10
https://nlp.seas.harvard.edu/2018/04/03/attention.html
这篇文章是火遍全宇宙,关于网上的解读也非常多,将自己看完后的一点小想法也总结一下。
看完一遍之后,有很多疑问,我是针对每个疑问都了解清楚后才算明白了这篇文章,可能写的不到位,只是总结下,下次忘记了便于翻查。
一:Q,K, V 到底是什么?
在传统的seq2seq框架下:
query: seq2seq模型中decode时隐层向量S, 记作q, Q就是多个query组成的矩阵Q
value: seq2seq模型中encode时的隐层向量h,记作v, V是输入序列中n个词的embedding矩阵
key: 对h做了一次先行映射得到的向量, 记作k,K同上
在本文的transformer下,结合文字和图:
(1) encoder self-attention
Q 就是input sequence(, , …, , …, )将其映射为word embedding后 (, , …, , …, ),Q= (, , …, , …, ),并且 K=V=Q
(2) decoder self-attention
当t=0时,decoder self-attention的Q是<bos>的embedding, 当t=j时,Q=(E, E, …, E), 其中y是t=j-1时刻decoder的输出. K=V=Q
(3) encoder-decoder self-attention
K=V是encoder的输出,将encoder的输出传给decoder, 这一操作使得decoder可以获取输入序列的信息, 类似于传统seq2seq中的decoder端的attention. Q是decoder self-attention的输出.
二: 怎么理解self-attention, 怎么做self-attention,为什么用self-attention?
(1) 在传统的 seq2seq 中的 encoder 阶段,针对输入 = (, , …,, …, ),经过RNN或LSTM变换后得到序列的隐层状态 = (, , …, , …, ),但是此篇文章抛弃了 RNN,encoder 过程就没了 hidden states,那拿什么做 self-attention 呢?input 的 sequence 共有 n 个 word,将每一个 word 映射成 embedding, 就得到 n 个 embedding,可以用 embedding 代替 hidden state 做 self-attention 。所以 Q 就是一个n行列的矩阵,这个矩阵就是n个词的embedding,并且Q=K=V。那么为什么管Q 就是query呢?就是每次用一个词的embedding,去计算其与剩下的(n-1)个词的 embedding 的 match 程度(也就是 attention 的大小,这就是self-attention的意思了。
针对n个词,一共要做n轮这样的操作:
(2)首先将query 和每个key进行相似度计算得到权重,常用的相似度函数有点积拼接,感知机等
然后使用一个softmax函数对这些权重归一化,最后权重与相应的键值value进行加权求和得到attention后的context
(3) 句子中的每个词都要和该句子中的所有词进行attention计算,目的是学习句子内部的词以来关系,捕获句子的内部结构。
三:怎么理解 decoder self-attention中的Masked Multi-Head Attention
四:如何理解公式(1), 怎么理解缩放因子?
公式(1)中的softmax() 就是类似和的计算,Q和K就相当于计算中的和:
上图中的Q换成q, K换成k
参考文献:
源码解读:https://blog.csdn.net/mijiaoxiaosan/article/details/74909076
https://blog.csdn.net/yiyele/article/details/81913031
https://blog.csdn.net/qq_41058526/article/details/80783925?utm_source=blogxgwz0
https://blog.csdn.net/hpulfc/article/details/83310089
https://zhuanlan.zhihu.com/p/38485843
https://blog.csdn.net/lqfarmer/article/details/73521811
http://www.sohu.com/a/215705742_500659
https://www.jianshu.com/p/3f2d4bc126e6
来源:CSDN
作者:小妖精Fsky
链接:https://blog.csdn.net/u014221266/article/details/83415489