Google 新的黑科技--Attention模型(转发)
前言
今天看到一条微博消息,Google大厂又发布黑科技了,谷歌机器翻译破世界纪录,这不是重点,重点是这次仅用Attention模型,无需CNN和RNN,就问惊不惊喜,意外不意外!
Transformer
这种完全基于注意力机制(Attention)的简单网络架构叫做Transformer。在机器翻译实验表明效果超越了当下所有公开发表的机器翻译模型,包括集成模型。更值得一提的是,该研究没有使用任何循环或卷积神经网络,全部依赖注意力机制。
以前认为最先进的方法
在序列建模和序列转导问题中,比如涉及语言建模和机器翻译的任务,循环神经网络(RNN),尤其是长短时记忆(LSTM)及门循环网络被认为是最先进的方法,研究人员也想方设法拓展循环语言建模和编码器-解码器架构。
RNN 和 CNN 的瓶颈
论文作者以 Extended Neural GPU、ByteNet 和 ConvS2S 为例,这些结构都使用卷积神经网络(CNN)作为基本的模块,并行计算所有输入和输出位置的隐藏表征,从而减少序列计算的计算量。在这些模型中,将来自两个任意输入或输出位置的信号相关联的运算次数会根据位置之间的距离增加而增加,对于 ConvS2S 这种增加是线性的,而对于 ByteNet 则是呈对数增长的。
这让学习距离较远的位置之间的依赖难度增大。在 Transformer 当中,学习位置之间的依赖被减少了,所需的运算次数数量是固定的。
这需要使用自注意力(Self-attention),或内部注意力(intra-attention),这是一种与单个序列中不同位置有关的注意力机制,可以计算出序列的表征。
以往研究表明,自注意力已被成功用于阅读理解、抽象概括等多种任务。
论文摘要
当前主流的序列转导(transduction)模型都是基于编码器-解码器配置中复杂的循环或卷积神经网络。性能最好的模型还通过注意力机制将编码器和解码器连接起来。我们提出了一种简单的网络架构——Transformer,完全基于注意力机制,没有使用任何循环或卷积神经网络。两项机器翻译任务实验表明,这些模型质量更好、可并行化程度更高,并且能大大减少训练时间。
模型架构
- 大多数性能较好的神经序列转导模型都使用了编码器-解码器的结构。Transformer 也借鉴了这一点,并且在编码器-解码器上使用了全连接层。
- 编码器:由 6 个完全相同的层堆叠而成,每个层有 2 个子层。在每个子层后面会跟一个残差连接和层正则化(layer normalization)。第一部分由一个多头(multi-head)自注意力机制,第二部分则是一个位置敏感的全连接前馈网络。
- 解码器:解码器也由 6 个完全相同的层堆叠而成,不同的是这里每层有 3 个子层,第 3 个子层负责处理编码器输出的多头注意力机制。解码器的子层后面也跟了残差连接和层正则化。解码器的自注意力子层也做了相应修改。
(图1)Transformer 的架构示意图
(图2)具体采用的注意力机制。
左边是 Scaled Dot-Roduct Attention,右边是多头注意力(Multi-Head Attention),由几个并行的层组成。
- 在编码器-解码器层当中,query 来自上一个解码层,编码器输出值(value)及 memory key。这样,解码器中所有位置都能照顾到输入序列中的所有位置。
- 编码器含有自注意力层。在自注意力层中,所有的 key、value 和 query 都来自同一个地方,那就是编码器的上一层输出。编码器中的每一个位置都能照顾到编码器上一层中所有的位置。
- 解码器中的自注意力层让解码器中所有位置都能被注意到,包括那个位置本身。