Transformer(一种网络结构)是谷歌在2017年NIPS发表的论文《Attention is all you need》上提出的。在Transformer提出之前,NLP领域常用RNN型序列网络结构来处理文本数据,另外CNN网络,由于其提取局部信息的强大能力,在NLP领域也一席之地。Transformer是不同于RNN、CNN的网络结构,它完全采用自注意力机制,在Transformer中没有序列形式,而是采用了位置形式来表示文本数据。
参考博客:Transformer原理详解
一 背景介绍
Seq2Seq模型
一种encode-decode模型,常用于机器翻译中。Seq2Seq模型是用序列生成序列的方式,在编码端对原始文本进行编码,在解码端对生成文本进行预测。
dot-product attention
dot-product attention 一般用矩阵运算,Q K V 分别是三个矩阵,均表示一组向量,dot-product attention想做的是如何用V中的向量表示Q,Q一般指的是要表示的目标,K要和Q建立联系,计算相关性,以计算出的相关性为权重,加权叠加矩阵V中的向量。
二 Transformer网络结构
编码端
编码器是由N=6个完全相同的层堆叠而成;
每一层都有两个子层,即multi-head self-attention机制和简单的位置完全连接的前馈网络;
对每个子层都采用了一个残差连接、层标准化。
解码端
解码器由N=6个完全相同的层堆叠而成;
每一层都有三个子层,即multi-head self-attention机制、简单的位置全连接的前馈网络和对解码器堆栈的输出执行multi-head attention;
对每个子层采用一个残差连接、层标准化;
采用mask机制,防止位置关注到后面的位置。即掩码结合将输出嵌入偏移一个位置,确保对位置的预测i只能依赖小于i的已知输出。
Scaled Dot-Product Attention
dot-product attention 一般用矩阵运算,Q K V 分别是三个矩阵,均表示一组向量,Q K V分别由 X i X_i Xi和对应的 W Q W_Q WQ、 W K W_K