论文中心思想:提出了一种只使用注意力机制的模型,模型中没有结合任何RNN或CNN,通过encoder--decoder的模型实现出了一种强力有效的模型。
引言与背景
在注意力机制诞生后,诞生了多种改进的模型,但是这些模型一般都是把注意力机制与循环神经网络结合(包括一些改良的,如LSTM),但是这些模型有个弊端,就是并行计算能力不强,为解决这一些问题,论文提出了一种仅基于注意力机制的模型,具有强大的并行计算性以及效果很好。
模型结构
总的模型结构为encoder-decoder,在编码器中,把符号表示的输入序列映射为连续的表示,得到了z之后,解码器生成符号输出序列,一次一个地生成。
模型结构图:
编码解码器:
Encoder:编码器由6层一样的层组成,每一层有两个子层。第一层是一个多头自注意力机制,另一层是一个简单的全连接前馈网络。在标准化层之后,这两层各自都采用一个残差连接,每一个子层的输出是,其中是子层本身实现的函数。为了优化这些残差裂解,模型中的所有子层以及嵌入层都生成维度512的输出。
Decoder:解码器也是6层一样的层组成的,出来2个在每个编码器中的子层,第三个是在编码器输出后面的一个多头自注意力层。与编码器类似,每一个子层标准化后都用一个残差连接包围。还有一个为了保证序列信息的掩盖层。
注意力
一个注意力函数其实就是把一个query,一个key-value的集合(关于query,key,value可以看这篇论文:Key-Value Memory Networks for Directly Reading Documents)映射成一个输出,其中query,key,value,output都是向量。输出其实是values的加权求和,其中分配给每个值的权重通过一个相关函数计算query与当前key的相关程度。
缩放点乘积注意力
输入包括:querie和key都是维,value为维,
计算query和所有key的点积后,除以(为了防止梯度消失),以及用一个softmax函数得到全美一个value的权重。
事实上,计算的时候通过矩阵实现并行计算。
使用点成的原因是因为可以通过一些高效的优化手法提升速度。
多头注意力
其实就是把多个自注意力连起来
同时,通过减低维度来减少总就算消耗。
全连接前馈网络
Transformer中所有全连接网络都是一样的,由两个线性转换和中间一个RELU函数组成 。
位置编码
因为模型没有使用卷积或者循环结构,为了使用到序列中的顺序信息,必须增加相对或绝对位置信息。为此论文加入了位置编码在编码器和解码器的下方。
其中,pos是位置,i是维度
沃·夏澈德 发布了54 篇原创文章 · 获赞 36 · 访问量 4万+ 私信 关注