Attention Is All You Need

Attention Is All You Need阅读笔记

本文阅读初衷是了解到paddlehub的enire是借鉴了这篇文章的算法。因此决定来看一下这篇经典论文。

摘要

CNN和RNN是现在主流的序列预测模型。这类序列预测模型包含一个编码器和一个解码器。性能最优的模型是通过一个注意力机制连接编码器和解码器的模型。我们在这里提出一个新的模型架构,the Transformer。它依赖于注意力机制,不需要recurrence 和convolutions。在两个机器翻译任务中实验显示:该算法训练耗时更少。

引言

传统的RNN网络,由于前后的依赖性,因此无法实现并行计算。本算法提出的“Transformer”打破了不能并行计算的缺点,从而加快了计算速度。
因此,主要优势就是“并行”。

背景

自注意力机制(Self-attention),有时也叫做内部注意力机制。是一种关注单序列不同位置之间关系的注意力机制。目的是为了计算序列的表示序列。自注意力机制已经被用在阅读理解、内容概述等多任务中。
基于循环注意力机制的端到端记忆网络被证明在简单语言问答和语言建模任务中表现较好。据我们所知,Transformer是第一个完全依靠自注意力机制而没有使用
sequencealigned RNNs 或者 convolution去计算输入输出序列的网络。在下面的章节中,我们将就Transformer在模型方面的优势展开讨论。

Model Architecture

大多数自然语言转换模型都包含一个encoder-decoder结构,模型的输入是一个离散符号序列(symbol)x=(x1,x2,⋯,xn)x=(x1,x2,⋯,xn),encoder负责将它映射成连续值序列z=(z1,z2,⋯,zn)z=(z1,z2,⋯,zn)。而给定zz,decoder负责生成一个输出符号序列y=(y1,y2,⋯,ym)y=(y1,y2,⋯,ym)。模型是自回归的,即之前生成的输出会作为额外的输入,用于生成下一个输出。
然而The Transformer的架构如下图所示。使用的是堆栈式的自注意力机制和point-wise
Attention Is All You Need

3.1 编码解码堆栈

编码器:编码层由六个相同的层堆砌而成。每一个层又包含两个子层(Multi-Head Attention and position wise fully connected feed-forward network).我们使用residual connection来连接每两个子层,紧跟着进行标准化处理。也就是说,每个子层的输出是LayerNorm(x + Sublayer(x)),其中Sublayer(x)是由子层本身实现的功能。 为了促进这些residual connection,模型中的所有子层以及嵌入层均产生尺寸为dmodel = 512的输出。
解码器:解码器同样是由六层组成。不同的是,解码层每层有三个子层。在编码器堆栈的输出上执行multi-head attention。与编码器一样,我们使用残差连接每一个子层,然后进行标准化处理。我们也修改了解码器堆栈的自注意力机制的子层,防止它对后续位置的关注。这种修改,确保预测对位置i的预测只与之前的位置预测有关,与后续的无关。

3.2 注意力机制

注意力机制,可以看作是一个query与一组键值对映射到输出的过程。query\keys\values\output都是向量。output是values的加权和。其中,分配给每个值的权重是通过query和相应key之间的函数计算得到的。

3.2.1 Scaled Dot-Product Attention(点积注意力机制)

Attention Is All You Need