Attention is allyou need
来源 | NIPS 2017 |
主题 | Attention machanisms |
动机 | RNN受到串行限制,训练速度慢,针对长序列效果差 |
方法总结 | 摒弃RNN与CNN的传统架构,使用位置编码(Positional Encoding)给模型中加入时序信息,仅依赖注意力机制(Multi-Head Attention)和编码器-解码器的架构来对序列之间的关系进行建模,使用MLP实现特征向量和语义空间的转换。 |
亮点 | 完全摒弃了之前的传统方式,是一种全新的处理时序信息的架构。允许并行,大大提升了网络训练效率。 |
技术细节 | 编码(Encoder)-解码(Decoder)块、规格化的点积注意力(Scaled Dot-Product Attention)、多头注意力机制、逐位置的前向传递网络、位置编码(Positional Encoding)、Dropout、残差连接 |
主要思想
传统的RNN的性能受到串行训练的限制,尽管有factorization tricks 、conditionalcomputation等方式提升了RNN的性能,但是仍未能解决RNN本质的串行问题。
许多强迫序列建模以及转换任务中都采用了注意力机制,使得序列中依赖关系的建模与其输入、输出之间的位置无关。Transformer则完全摒弃了传统的RNN和CNN架构,仅仅使用注意力机制来对输入和输出之间的依赖关系进行建模。
![](https://i-blog.csdnimg.cn/blog_migrate/c877e547cce98a6ca848ff17cecbebf9.png)
编码器使得输入的特征向量可以通过编码映射,使得中间的输出综合了整个序列的信息(加权综合),解码器再通过自回归的方式综合中间的输出向量以及t时刻之前的输出信息,从而输出下一个字符的概率。
实现细节
编码器:由于有残差网络的shortcut连接,为了方便残差连接,规定输入和输出的维度相同,都为dmodel。
解码器:解码器相较于编码器多了Masked Multi-Head Attention层,由于解码器是自迭代的输出,为了避免t时刻的输出用到了t+1时刻的信息,这里设置了掩码模块。
掩码的具体实现方式是将softmax的输入,Scaled的输出,t时刻以后的向量均赋值一个很大的负数,最终经过Softmax就可以得到接近0的输出,保证了解码器的自回归特性。
![](https://i-blog.csdnimg.cn/blog_migrate/3109e65675b1af2b431a2f1089b84e81.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a7dd7b2e110602c0ca46d27ae30ecfbd.png)
Scaled点积注意力:当key的维度很大时,点积的结果会在数量级上面增大,在softmax后会趋于softmax的饱和区,导致非常小的梯度。因此在Q和K点积后的结果要除以 dk
多头注意力机制:实际上在单注意力机制里面几乎没有什么可以学习的参数,这就大大限制了模型的多模态性能(相当于单通道),为了增加模型的多通道性能,先将原始的Q、K、V全部映射到低微空间后(这个映射函数可学习,不同的映射参数不同,提升了模型的性能),进行注意力点积操作,然后将结果拼接,保持原来的维度,再通过MLP投影到新的语义空间。由于多头注意力机制可以并行,其计算复杂度和单注意力机制差不多。
编码器和解码器的连接处,K和V来自于编码器的输出,此时的输出向量可以看作是各位置的向量对所有输入向量的综合,Q来自于解码器的输出,经过了掩膜处理,再次进行注意力点积相当于对编码器的输出有选择性的挑捡。
position-wiseFeed-Forward Networks : 由于输出向量已经是综合了所有位置的信息的结果,每一个位置的输出向量已经是一个独立的向量,因此这里的MLP是逐位置映射输出向量。隐层的神经元个数dff为2048,第一层实现512-2048的映射,第二层实现2048-512.
Embedding:在学习Embedding的时候,会将向量的每一个值学的较小,为了保证Embedding的结果和PositonalEncoding在同一个量级(俩者要相加),因此对Embedding的结果都乘上 dmodel。
PositionalEncoding:自注意力本质上是没有时序信息的,因此要通过Positional Encoding的技巧给模型中加入时序信息。
Layer Norm:当样本的长度变化较大的时候,BN操作针对每一个特征归一化,产生的全局均值、方差很不稳定。Layer Norm则针对每一个样本进行归一化,相对稳定一些。
模型优势
计算复杂性相对较少。
支持并行。
学习长期依赖的能力强,不被输入和输出之间的绝对距离约束。(矩阵运算可加速)
思考
该模型对序列信息的处理能力很强,计算复杂度较低,能够学出来这么好的效果也需要很多的数据和训练时长,从本质上来说,RNN对序列之间的依赖关系进行了假设,CNN对空间之间的依赖关系也进行了假设,但是Transformer是没有对这些依赖关系进行先验假设,因此Transformer的假设空间更大,学到的能力更强,这也导致Transformer的模型都很大。
Transformer的一个重大意义是它为不同领域之间的技术互用开辟了道路,之前视觉方面就用CNN,自然语言处理就用RNN,但是Transformer在多个领域都可以被使用,且都取得了不错的效果,为不同领域之间的技术互用架起了桥梁。
虽然文章的题目说,只需要Attention,但是显然Transformer还需要位置编码,MLP等许多操作。