[论文阅读]《Attention is All You Need》

1. 背景

Attention机制最早在视觉领域提出,2014年Google Mind发表了《Recurrent Models of Visual Attention》,使Attention机制流行起来,这篇论文采用了RNN模型,并加入了Attention机制来进行图像的分类。

2015年,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》中,将attention机制首次应用在nlp领域,其采用Seq2Seq+Attention模型来进行机器翻译,并且得到了效果的提升。

2017 年,Google 机器翻译团队发表的《Attention is All You Need》中,完全抛弃了RNN和CNN等网络结构,而仅仅采用Attention机制来进行机器翻译任务,并且取得了很好的效果,注意力机制也成为了大家近期的研究热点。

2. Transformer

大部分序列处理模型都采用encoder-decoder结构,其中encoder将输入序列( x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn)映射到连续表示 z → = ( z 1 , z 2 , . . . , z n ) \overrightarrow{z}=(z_1,z_2,...,z_n) z =(z1,z2,...,zn),然后decoder生成一个输出序列( y 1 , y 2 , . . . , y m y_1,y_2,...,y_m y1,y2,...,ym),每个时刻输出一个结果。本文提出的Transformer模型整体架构如下。

[论文阅读]《Attention is All You Need》_第1张图片

2.1 Encoder

Encoder模块包含一个自注意力层和一个前馈神经网络层。自注意力层采用多头自注意力机制,前馈神经网络是一个标准的两层神经网络,第一层使用Relu激活函数,第二层无激活。此外,注意力层和前馈神经网络都采用残差连接,并进行批标准化(batchnormalization),进一步增强网络的泛化能力。

Encoder有N=6层,每层包括两个sub-layers:

  1. 第一个sub-layers是multi-head self-attention mechanical,用来计算输入的self-attention。
  2. 第二个sub-layers是简单的全连接网络。

在每个sub-layer都模拟了残差网络,每个sub-layer的输出都是
L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x+Sublayer(x)) LayerNorm(x+Sublayer(x))
其中Sublayer(x) 表示Sub-layer对输入x做的映射,为了确保连接,所有的sub-layers和embedding layer输出的维数都相同 d m o d e l = 512 d_{model}=512 dmodel=512

2.2 Decoder

Decoder模块包含两个自注意力层和一个前馈神经网络,实现译文句子的解码。该模块的第一个注意力层为带屏蔽的多头自注意力层(maskedmuti-headattention),目的是在推导过程中屏蔽未来输入。该模块的第二个注意力层和前馈神经网络与Encoder模块中的结构几乎完全一样,唯一的区别是,Decoder的输入除了包含前一层的输出之外,还增加了Encoder的输出。多个Decoder模块可以叠加,最后一个Decoder的输出经过一个线性变换,并利用softmax函数,得到输出词语的预测概率。

Decoder也是N=6层,每层包括3个sub-layers:

  1. 第一个是Masked multi-head self-attention,也是计算输入的self-attention,但是因为是生成过程,因此在时刻 i i i的时候,大于 i i i的时刻都没有结果,只有小于 i i i的时刻有结果,因此需要做Mask
  2. 第二个sub-layer是全连接网络,与Encoder相同
  3. 第三个sub-layer是对encoder的输入进行attention计算。

同时Decoder中的self-attention层需要进行修改,因为只能获取到当前时刻之前的输入,因此只对时刻 t t t之前的时刻输入进行attention计算,这也称为Mask操作。

2.3 Attention机制

在Transformer中使用的Attention是Scaled Dot-Product Attention, 是归一化的点乘Attention,假设输入的query Q Q Q、key维度为 d k d_k dk,value维度为 d v d_v dv , 计算query和每个key的点乘操作,然后为了防止其结果过大除以 d k \sqrt{d_k} dk ,然后应用Softmax函数计算权重。
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q T K d k ) V Attention(Q,K,V)=softmax(\frac{Q^TK}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk QTK)V

2.4 Positional Embedding

Transformer本质上是一个自编码器,不能利用词语之间的顺序信息,所以引入位置嵌入向量(positional Embedding)来表示词语的位置。它是为了解释输入序列中单词顺序而存在的,维度和embedding的维度一致。这个向量决定了当前词的位置,或者说是在一个句子中不同的词之间的距离。其中position embedding计算公式如下
P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d m o d e l ) P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos,2i)}=sin(pos/10000^{2i/d_{model}}) \\ PE_{(pos,2i+1)}=cos(pos/10000^{2i/d_{model}}) PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)
其中pos表示位置index,i表示每个值的index。

3. NLP领域应用

在Transformer出现之前,添加了注意力的递归神经网络(如GRU和LSTM)赋予了大多数最先进的语言模型。然而,在RNNs中,信息流需要从上一个隐藏状态依次处理到下一个状态,这就导致训练过程难以加速和并行化,从而阻碍了RNNs处理较长序列或构建较大模型的潜力。2017年,Vaswani等人提出了Transformer,这是一种完全建立在多头自关注机制和前馈神经网络上的新型编码器-解码器架构,旨在解决seq-to-seq自然语言任务(如机器翻译),并轻松获取全局依赖性。Transformer的成功表明,单单利用注意力机制就可以达到与注意力RNN相当的性能。此外,Transformer的架构有利于大规模并行计算,可以在更大的数据集上进行训练,从而导致自然语言处理的大型预训练模型(PTM)的爆发。

生物NLP领域,基于Transformer的模型已经优于许多传统的生物医学方法。BioBERT使用Transformer架构进行生物医学文本挖掘任务;SciBERT通过对114M科学文章进行Transformer训练开发,覆盖生物医学和计算机科学领域,旨在更精确地执行与科学领域相关的NLP任务;Huang等提出ClinicalBERT利用Transformer开发和评估临床笔记的连续表示,他们的研究还有一个副产物,ClinicalBERT的注意力图可以用来解释预测结果,从而发现不同医疗内容之间的高质量联系。

多模态任务中,由于Transformer在基于文本的NLP任务上的成功,许多研究致力于开发Transformer处理多模态任务(如视频-文本、图像-文本和音频-文本)的潜力。VideoBERT使用基于CNN的模块对视频进行预处理以获得表征标记,在此基础上训练Transformer编码器学习视频-文本表征,用于下游任务,如视频字幕。VisualBERT和VL-BERT提出了单流统一的Transformer来捕捉视觉元素和图像-文本关系,用于下游任务,如视觉问题回答(VQA)和视觉常识推理(VCR)。

此外,一些研究如SpeechBERT探讨了用Transformer编码器对音频和文本对进行编码,以处理语音答题(SQA)等自动文本任务的可能性。

4. 优点

  1. 相较于RNN必须按时间顺序进行计算,Transformer并行处理机制的显著好处便在于更高的计算效率,可以通过并行计算来大大加快训练速度,从而能在更大的数据集上进行训练。
  2. Transformer模型具有良好的可扩展性和伸缩性
  3. Transformer的特征抽取能力比RNN系列的模型要好。
  4. Transformer的设计最大的带来性能提升的关键是将任意两个单词的距离变成1,这对解决NLP中棘手的长期依赖问题是非常有效的。

5. 缺点

  1. Transformer模型缺乏归纳偏置能力,例如并不具备CNN那样的平移不变性和局部性,因此在数据不足时不能很好的泛化到该任务上。
  2. 抛弃RNN和CNN使模型丧失了捕捉局部特征的能力,RNN + CNN + Transformer的结合可能会带来更好的效果。
  3. Transformer失去的位置信息其实在NLP中非常重要,而论文中在特征向量中加入Position Embedding也只是一个权宜之计,并没有改变Transformer结构上的固有缺陷。

你可能感兴趣的:(论文笔记,自然语言处理,nlp,自然语言处理,attention)