本文是Google 机器翻译团队在2017 年发表,提出了一个新的简单的网络模型——Transformer。该模型基于纯注意力机制(Attention mechanisms),完全抛弃了RNN和CNN网络结构,在机器翻译任务上取得了很好的效果。
目录
3.2.1 Scaled Dot-Product Attention
3.2.3 Applications of Attention in our Model
3.3 Position-wise Feed-Forward Networks
1 引言
RNN是一个序列模型,为了保持ht-1到ht的时序信息,难以实现并行计算,当ht不那么大的时候早期的信息容易丢失。
Attention可以对序列模型中的依赖关系进行建模,通常情况下与RNN一起使用。
本文,提出了可以避免递归的Transformer模型,它完全依赖于一个注意机制来表达输入和输出之间的全局依赖关系。Transformer允许更多的并行化,在8个 P100 GPUs上经过短短12个小时的训练后,可以使翻译质量更上台阶。
2 背景
CNN可以并行计算,但为了表示2个输入或输出之间的联系,就需要通过叠加卷积层,层数也是随着2个之间的距离呈线性增加。
Self-attention是一种表示单个序列不同位置关系的注意力机制,可以用来计算序列表示。
端到端记忆网络基于循环注意机制,而不是序列对齐递归,并已被证明在简单语言问题回答和语言建模任务上表现良好。
Transformer是第一个完全依赖于Self-attention来计算其输入和输出的表示的转导模型,而不使用序列对齐的RNN或CNN。
3 模型架构
大多数神经序列模型都具有编码器-解码器结构。在这里,编码器将一个符号表示的输入序列(x1,...,xn)映射到一个连续表示的序列z=(z1,...,zn)。给定z,解码器一次生成一个元素符号的输出序列(y1,...,ym),每个时刻输出一个结果。在每一步,模型是自回归,在生成下一个时使用之前生成的符号作为额外的输入。Transformer遵循这种整体架构,对编码器和解码器使用堆叠的自注意层和点积的完全连接层,如图1,左边为编码器,右边为解码器。
3.1编码器和解码器的堆栈
编码器:
Encoder有N=6层,每层包括两个sub-layers: