Attention Is All You Need
动机:
传统的RNN难于并行,而最近流行的attention往往会利用RNN。为了解决无法并行训练问题,google提出了self-attention,完全摒弃了RNN单元,从而做到并行训练。
网络结构:
编码器:
由N个解码器层堆叠而成
每个解码器由两个子层连接结构组成
第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接
第二个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接
解码器:
由N个解码器层堆叠而成
每个解码器由三个子层连接结构组成
第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接
第二个子层连接结构包括一个多头注意力子层和规范化层以及一个残差连接
第三个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接
输入:
首先通过Word2Vec等词嵌入方法将输入语料转化成特征向量,论文中使用的词嵌入的维度为dmodel=512。
为了应用词序信息,在词向量中加入了位置编码。文中使用的是sin,cos编码方法,具体公式如下:
其中 pos 是位置,i 是维度。
Self-Attention:
计算Self-Attention, 我们需要针对每一个输入词向量,分别生成三个向量:Q、K和V
除以√dk是为了把注意力矩阵变成标准正态分布,使得Softmax归一化之后的结果更加稳定,以便反向传播的时候获取平衡的梯度。
Multi-Head Attention:
在Transformer中,实际使用的是多头注意力multi-head attention,其实就是同样的计算步骤基于不同的WK,WQ,WV 矩阵进行多次,这些矩阵都是进行随机初始化生成的。Transformer使用八个注意力头,即有八组不同的WK,WQ,WV 矩阵,最后每一个原始词向量都有8个不同的向量表示,将其拼接到一起,再乘以一个权重矩阵WO 进行融合,得到自注意力层最后的输出。
总结:
这篇论文是机器翻译方面的文章,但是,这是transformer的开山之作,主要解决了传统RNN不能并行的问题。通过这篇论文的阅读,主要了解了transformer的结构,以及其中注意力机制及注意力的计算方法,Q/K/V怎么来的,如何用来计算Attention。