点击关注上方
“AI深度视线”,并“星标”公号
技术硬文,第一时间送达!
AI视线
来源知乎:咫尺小厘米
https://zhuanlan.zhihu.com/p/153329513
1. self-attention代替了cnn和rnn很厉害
2. 人感觉李宏毅老师的视频也讲得挺清楚的,
https://www.bilibili.com/video/BV1JE411g7XF?p=23
原文链接:https://arxiv.org/abs/1706.03762v5
官方开源代码:https://github.com/tensorflow/tensor2tensor
1. 摘要
The dominant sequence transduction models are based on complex recurrent or convolutional neural networks that include an encoder and a decoder. The best performing models also connect the encoder and decoder through an attention mechanism.
目前占据主导的序列转换模型主要基于复杂的递归或卷积神经网络,包括编码器和解码器。表现最佳的模型还通过注意力机制连接编码器和解码器。
We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train.
我们提出了一种新的简单网络架构,即Transformer,它完全基于注意力机制,没有使用循环或者卷积操作。在两个机器翻译任务上进行的实验表明,这些模型在质量上具有优势,同时具有更高的可并行性,并且所需的训练时间明显更少。
Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles, by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature.
我们的模型在WMT 2014 English-to-German翻译任务上获得了28.4 BLEU,包括集成在内,比现有的最好结果高2 BLEU。在WMT 2014 English-to-French翻译任务上,我们的模型创建了单模型的41.8 BLEU的记录,在八卡GPU训练了3.5天之后,仅有之前最优模型的一小部分训练代价。
We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.
我们展示了Transformer通过将其成功应用于具有大量训练数据和有限训练数据的英语选区解析,将其很好地应用到了其他任务。
2. 引言
和位置
的输入生成一系列隐藏状态
。这种固有的顺序性质阻止了训练内的并行化,这在较长的序列长度上变得至关重要,因为内存限制了样本之间的批处理。最近的工作已经通过分解技巧和条件计算在计算效率上取得了显着提高,同时在有条件的情况下还提高了模型性能。但是,顺序计算的基本约束仍然存在。
3. 背景
减少顺序计算的目标也构成了扩展神经GPU、ByteNet和ConvS2S的基础,它们全部使用卷积神经网络作为基本构建块,可以并行计算所有输入和输出位置的隐藏表示。在这些模型中,关联来自两个任意输入或输出位置的信号所需的操作数在位置之间的距离中增加,对于ConvS2S线性增长,而对于ByteNet则对数增长。这使得学习远处位置之间的依赖性变得更加困难。在Transformer中,此操作被减少为恒定的操作次数,尽管这是由于平均注意力加权位置而导致有效分辨率降低的代价,我们Multi-Head注意力抵消了这种效果。
4. 模型架构
的输入序列映射到连续表示形式
的序列。给定
,则解码器然后一次生成一个元素的符号的输出序列
。在每个步骤中,模型都是自动回归的,在生成下一个时,会将先前生成的符号用作附加输入。

Encoder and Decoder Stacks
个相同层的堆栈组成,每层都有两个子层(如图)。第一个是multi-head self-attention机制,第二个是简单的位置全连接的前馈网络。我们在两个子层中的每个子层周围采用残差连接,然后进行LN。也就是说,每个子层的输出是
,其中
是由子层本身实现的功能。为了有效利用这残差连接,模型中的所有子层以及嵌入层均产生尺寸为
的输出。
Decoder:解码器还由
个相同层的堆栈组成。除了每个编码器层中的两个子层之外,解码器还插入第三子层,该第三子层对编码器堆栈的输出执行multi-head self-attention。与编码器类似,我们在每个子层周围采用残差连接,然后进行LN。我们还修改了解码器堆栈中的self-attention子层,以防止位置出现在后续位置。这种mask,加上输出嵌入被一个位置偏移的事实,确保了对位置i的预测只能依赖于小于i位置的已知输出。
Attention
注意力的功能可以被描述为将query和一组key-value对映射到输出,其中query、key、value和output都是向量。将output计算为value的加权总和,其中分配给每个值的权重是通过query与相应key的compatibility function来计算的。
Scaled Dot-Product Attention
的keys和通道数为
的values。我们计算query和每个key的dot product,除以
,然后再进行softmax获得对values的权重。
。Keys和values也被打包成
和
中。矩阵计算公式为 :
两种主要的attention function是加法注意力和乘法注意力。除了除以
,乘法注意力和我们的算法是相同的。加法注意力使用具有单个隐藏层的前馈网络来计算compatibility function。虽然两者在理论上的复杂度相似,但由于可以使用高度优化的矩阵乘法代码来实现,因此dot-product的注意力在实践中要快得多并且节省空间。
较小的值,这两种机制的执行方式相似,但加法注意力要优于点积注意力,不需要缩放较大的
值。我们怀疑对于较大的
值,dot product会增大幅度,从而将softmax函数推入梯度极小的区域。为抵消这种影响,我们将点积缩放
。关于为什么dot product会变大,我们假定
和
都是独立随机变量,均值为0,方差为1。Dot product,
,其均值为0,方差为
。

Multi-Head Attention
-dimensional keys、valuesh和queries,我们发现线性投影
次,学习不同维度的q、k和v的投影方式是很有益的。然后,在q、k和v的每个这些预计的版本上,我们并行执行attention function,从而产生
维输出值。将它们连接起来并再次投影,得到最终值,如上图所示。

在这项工作中,我们采用
个平行注意力层或head。对于这些中的每一个,我们使用
。由于每个head的维度减小,因此总的计算成本类似于具有全维度的single-head注意力的计算成本。
Applications of Attention in our Model
-
在“编码器-解码器注意”层中,q来自先前的解码器层,而存储k和v来自编码器的输出。这允许解码器中的每个位置都参与输入序列中的所有位置,这模仿了seq2seq模型中的典型编码器-解码器注意力机制; -
编码器包含self-attention层。在Self-attention层中,所有k、v和q都来自同一位置,在这种情况下,是编码器中上一层的输出。编码器中的每个位置都可以覆盖编码器上一层中的所有位置; 类似地,self-attention允许解码器中的每个位置关注直到并包括该位置的解码器中的所有位置。我们需要防止解码器中向左流动信息,以保留自动回归的属性。我们使用带有mask的scaled dot-product attention,从而屏蔽掉一些对应的非法连接。
Position-wise Feed-Forward Networks
除了注意力子层之外,我们的编码器和解码器中的每个层都包含一个完全连接的前馈网络,该网络分别独立地、相同地应用于每个位置。这由两个线性变换组成,两个线性变换之间具有ReLU激活。
虽然线性变换在不同位置上相同,但是它们使用不同的参数。另一种描述方式是两个卷积,其内核大小为1。输入和输出的维数为
,内层的维数为
。
Embeddings and Softmax
的向量。我们还使用通常学习的线性变换和softmax函数将解码器输出转换为预测的下一个短语概率。在我们的模型中,我们在两个嵌入层和pre-softmax线性变换之间共享相同的权重矩阵。在嵌入层中,我们将这些权重乘以
。Positional Encoding
与嵌入的维数相同,因此可以将两者相加。位置编码有很多选择,可以学习或者固定。

可以表示为
的线性函数。
5. Why slef-attention
映射到另一个长度相等的序列
,带有
,例如典型序列转导编码器或解码器中的隐藏层。为了激发我们的self-attention,我们考虑了三个愿望。
个顺序操作。计算复杂度方面,当序列长度
小于表示维数
时,self-attention层比循环层要快,这在机器翻译中由最新模型使用的句子表示形式最常见,例如词段和字节对表示形式。为了提高涉及非常长序列的任务的计算性能,可以将self-attention限制为仅考虑输入序列中以各个输出位置为中心的大小为
的邻域。这会将最大路径长度增加到
。我们计划在以后的工作中进一步研究这种方法。
的单个卷积层无法连接所有成对的输入和输出位置。这样做需要在连续内核的情况下堆叠
个卷积层,在扩张卷积的情况下则需要
,从而增加了网络中任意两个位置之间最长路径的长度。卷积层通常比循环层贵
倍。可分离的卷积,然而,降低复杂度卷积等于self-attention层和逐点前馈层的组合,相当地等于
。然而,即使
,我们在模型中采用的可分离方法的复杂性也是如此。

6. 训练 && 7.实验结果
主要关注transformer的结构设计,略过实验部分。
8.总结
最新人工智能、深度学习、SLAM干货奉上!
本文分享自微信公众号 - AI深度学习视线(AI_DeepSight)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4590228/blog/4410172
