[NIPS2017]Attention is all you need

自古美人都是妖i 提交于 2019-12-05 22:23:24

原理源码讲解: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时隐层向量St1_{t-1}, 记作qt1_{t-1}, Q就是多个query组成的矩阵Q
value: seq2seq模型中encode时的隐层向量hi_i,记作vi_i, V是输入序列中n个词的embedding矩阵
key: 对hi_i做了一次先行映射得到的向量, 记作ki_i,K同上
在本文的transformer下,结合文字和图:
(1) encoder self-attention
Q 就是input sequence(w1w_1, w2w_2, …, wiw_i, …, wnw_n)将其映射为word embedding后 (x1x_1, x2x_2, …, xix_i, …, xnx_n),Q= (x1x_1, x2x_2, …, xix_i, …, xnx_n),并且 K=V=Q
(2) decoder self-attention
当t=0时,decoder self-attention的Q是<bos>的embedding, 当t=j时,Q=(E<bos>_{<bos>}, Ey1_{y1}, …, Eyj1_{y_{j-1}}), 其中yj1_{j-1}是t=j-1时刻decoder的输出. K=V=Q
(3) encoder-decoder self-attention
K=V是encoder的输出,将encoder的输出传给decoder, 这一操作使得decoder可以获取输入XX序列的信息, 类似于传统seq2seq中的decoder端的attention. Q是decoder self-attention的输出.
在这里插入图片描述

二: 怎么理解self-attention, 怎么做self-attention,为什么用self-attention?
(1) 在传统的 seq2seq 中的 encoder 阶段,针对输入XX = (x1x_1, x2x_2, …,xix_i, …, xnx_n),经过RNN或LSTM变换后得到序列的隐层状态 HH = (h1h_1, h2h_2, …, hih_i, …, hnh_n),但是此篇文章抛弃了 RNN,encoder 过程就没了 hidden states,那拿什么做 self-attention 呢?input 的 sequence 共有 n 个 word,将每一个 word 映射成 embedding, 就得到 n 个 embedding,可以用 embedding 代替 hidden state 做 self-attention 。所以 Q 就是一个n行dkd_k列的矩阵,这个矩阵就是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), 怎么理解缩放因子1dk\frac{1}{\sqrt{d_k}}
在这里插入图片描述
公式(1)中的softmax(QKTdk\frac{QK^T}{\sqrt{d_k}}) 就是类似aija_{ij}cic_i的计算,Q和K就相当于eije_{ij}计算中的Si1S_{i-1}hjh_j
在这里插入图片描述

在这里插入图片描述
上图中的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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!