文章详情广告pc

深度学习中的“注意力机制”

赵清臣(译)
翻译 4275       2018-05-27  

译者的话


注意力机制(Attention),从字面意思来看和人类的注意力机制类似。人类通过快速扫描全局文本,获得需要重点关注的区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。这一机制的存在,极大提高了人类从大量的信息中筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制。深度学习中的注意力机制从本质上讲和人类的选择性机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。目前注意力机制已经被广泛使用在自然语言处理、图像识别及语音识别等各种不同类型的深度学习任务中,是深度学习技术中最值得关注与深入了解的核心技术之一。

摘要

当今主流的序列变换模型都是基于编码器和解码器架构,编解器架构的背后又是依赖于复杂的递归神经网络(RNN)或者卷积神经网络(CNN)。为了获得更好的表现,我们还可以在编解码器架构的基础上,进一步添加注意力机制。不过在本篇论文中,我们摒弃之前的固有思维,不再依赖于递归神经网络和卷积神经网络,转而使用一种更为简单的网络架构来做序列变换,即注意力机制的序列变换器(Transformer)。为了验证模型的有效性,我们在两项机器翻译中做了实证分析,结果显示注意力机制翻译的质量更好,同时由于可以并行的执行而大幅度减少了模型的训练时间。在模型评估中,模型在WMT2014的英德翻译任务中,获得了BLEU 28.4的分,比现有最好的评价得分高出2分。在WMT 2014的英法翻译任务中,模型在8GPU上仅训练了3.5天,就破了所有的单模型序列变换的最佳BLEU得分记录,达到了41.8分,所花费的硬件资源和时间成本为仅为先前最优序列变换模型的一小部分。不仅在上述翻译任务表现良好,模型在大规模数据集和小批量数据集条件下,都能成功地完成英语语义成分解析任务,模型表现出了很好的泛化性。

1、介绍

在序列建模和变换任务中,递归神经网络(RNN)长短时记忆网络(LSTM)以及门递归神经网络(GRNN)都毫无疑问的是现在很多前沿最优深度学习方法的基石,包括语言建模和机器翻译等。由此,很多研究都在尝试拓展递归语言模型和编解码器架构的应用边界。

注意力机制在很多任务中,都已经成为序列建模和变换模型的不可或缺的一部分,也正是因为注意力机制,我们的序列依赖关系建模也就突破了输入和输出序列中距离的限制。然而,在大部分任务中,注意力机制通常和递归神经网络联合起来使用。

在我们的研究中,我们提出了转换器的概念,其本质上是一种模型的结构,该结构可以回避了使用递归的缺陷,而是完全依赖于注意力机制来刻画输入和输出之间的全局依赖性关系。转换器结构极大程度上实现了并行化,在8P100GPU上,经过12小时的训练,就能够达到当前最佳的数据处理性能。

2、背景

为了达到减少序列数据计算量的目标,人们提出了一系列的网络架构,包括扩展的神经GPUByteNetConvS2S。这些网络架构都采用了卷积神经网络作为基本的模块,对所有的输入和输出并行地计算隐藏层的特征表征。在这些模型中,为了关联输入和输出序列中任何两个位置的数据,所需要的运算量和这两个位置的距离正相关。具体来说,对ConvS2S模型来说,这种相关关系为线性关系,而对ByteNet模型来说这种相关关系为对数关系在这种情况下远距离计算序列中的依赖性关系就会变得非常困难在我们提出的转换器结构中,我们对序列中的位置进行注意力加权,然后取均值,因此运算量可以被缩减为固定数不过这种操作的显著弊端在于加权求均值的操作会在一定程度上牺牲运算的精度,需要级联多级注意力机制进行精度补偿。具体细节可以参考第三部分第二小节。

自注意力机制,有时也被称为局部注意力机制或内部注意力机制,该机制通过关联序列中不同的位置来计算序列语义表示。自注意力机制在一系列任务中都表现很好,包括阅读理解、摘要抽取、文本内含理解和任务无关的语句表示等。

端到端的记忆网络是一种基于递归注意力机制的神经网络,而不是基于序列对齐递归。这种网络在简单语言问答和语言建模任务中都表现良好。

据我们所知转换器架构是第一个完全依赖于自注意力机制的变换模型该模型可以用于计算输入和输出序列的序列表示而且完全没有使用以往的基于序列对齐的递归神经网络(RNN)和卷积神经网络(CNN)。在本文接下来的部分,我们会先介绍转换器,然后引出自注意力机制,随后讨论该转换器架构相对于其他模型的优势。

3、模型架构


 

3.1、编码器和解码器堆叠

编码器:编码器是由6个完全相同的层堆叠而成,每一层有两个子层。第一个子层是多头自注意力机制(Multi-Head Attention)层,第二个子层是由一个简单的、按逐个位置进行全连接的前向神经网络。在两个子层之间通过残差网络结构进行连接,后接一个层正则化层。可以得出,每一个子层的输出通过公式可以表示为LayerNorm( x+ Sublayer(x)),其中Sublayer(x)函数由各个子层独立实现。为了方便各层之间的残差连接,模型中所有的子层包括嵌入层,都固定输出的维度为512

解码器:解码器也是由6个完全相同的层堆叠而成。除了编码器中介绍过的两个子层之外,解码器还有第三个子层,用于对编码器对的输出实现多头注意力机制。与编码器类似,我们也使用残差架构连接每一个子层,后接一个层正则化层。对于解码器对的自注意力子层(Masked Multi-Head Attention),我们对结构做了改变来防止当前序列的位置信息和后续序列的位置信息混在一起。这样的一个位置掩码操作,再加上原有输出嵌入端对位置信息做偏置,就可以确保对位置i的预测仅依赖于已知的位置i之前的输出,而不会依赖于位置i之后的输出。

3.2 注意力机制

注意力机制本身是一个函数,整体的数据流程图可以参考下图2。该函数实现了从query和一系列键值对(key-value pair)到输出output的映射,其中querykeyvalue都是向量。输出结果output的计算通过对value进行加权求和来得到,而每一个value所对应的权值是由querykey通过一个相容性函数来计算获取。

3.2.1 伸缩点乘注意力机制


3.2.2 多头注意力机制


3.2.3 注意力机制在模型中的使用

我们提出的变换器结构对注意力机制的使用表现在三个方面:

1、在编码器-解码器层,Query来自于前一个解码器层,KeysValues来源于编码器输出。这样使得解码器在解码序列的每一个位置都能够加入输入序列中所有位置的信息。这一做法借鉴了序列建模中经典的编码器-解码器注意力机制。

2、编码器包含了自注意力层。在自注意力层,所有的keysvaluesqueries值都是来自于同一层,在我们的例子中,它们均来自于编码器前一层的输出。编码器序列的每一个位置都能加入编码器前一层的所有位置信息。

3、和编码器的自注意力层类似,解码器的自注意力层,也能够实现在解码序列的每一个位置都能加入解码序列中的所有位置信息。为了获得模型的自回滚能力,我们需要阻止解码器序列流中的左向信息流。具体实现的方法就是通过伸缩点乘注意力层的位置掩码运算,来屏蔽softmax输入层的所有value。从另一个角度来说,也可以认为这些value的数据流连接是不合理的,因此需要被屏蔽。

3.3 逐位前向传播网络

3.4 数据嵌入和softmax操作

3.5 位置编码

由于我们的模型没有使用递归和卷积,因此为了模型能充分利用序列的位置信息,我们必须将序列的相对位置信息或绝对位置信息注入到模型中去。由于位置编码信息和嵌入层的数据维度相同,因此在位置信息注入的具体实现上,我们直接将位置编码信息和编解码器的嵌入层做加法操作。位置编码的方式有很多种,在本论文中,我们使用不同频率的正弦和余弦函数来实现位置编码,用公式表示为:

 

 

我们也尝试使用训练得到的位置嵌入信息,结果发现模型学习到的位置嵌入与上文提到的正余弦方式结果几乎相同(详见表3E行)。我们选择正弦波形式的方法做位置嵌入还因为这种方式能够让我们的模型支持比模型训练阶段所输入的序列长度更长的序列做编解码变换

4、为什么要采用自注意力机制

第一方面的考虑是每一层的计算复杂度,第二方面的考虑是能够并行执行的计算量(该计算量以所需序列运算的最小数量来衡量),第三方面的考虑是网络中长距离依赖的路径长度。

长距离依赖是许多序列变换任务中最大的挑战。影响模型对长距离依赖学习能力的关键因素信号前向传播和反向传播的路径长度必须要在整个网络中广播。输入和输出序列中任意两个位置之间的路径越短,对长距离依赖的学习就越容易。因此我们分别用自注意力机制层、递归神经网络层和卷积神经网络层所构成的三种不同的网络,比较三种网络对任意两个输入和输出序列所支持的最大路径长度。

作为附带的好处,自注意力层能够生成更多的可解释模型。我们深入研究了模型中的注意力分布,并在附录中对一些案例做了演示和讨论分析。结果表明,在单点注意力机制下,模型就能够清晰的学会处理一些任务;在多点注意力前提下,模型甚至能够理解句子的句法和语义结构信息。

5、训练

这一部分主要讨论模型的训练过程。

5.1 训练数据及批量化

我们选择WMT2014英德数据集作为我们的训练数据集进行训练,该数据集包含450万条英德双语句子。句子采用双字节编码,源句和目标句共享大约37000个字符表。对于英法双语数据,我们使用了更加庞大的数据集——WMT 2014英法数据集,该数据集包含3600万条句子,分词之后大约有32000个词汇。长度大致相同的句子,组合在一起形成句子对。每一批训练的数据都是一个句子对集合,大约包含25000个源语言字符和25000个目标语言字符。

5.2 硬件和训练安排

我们的模型训练任务放在一台拥有8NVIDIA P100 GPU的机器上进行。基准模型使用的超参数和本论文中提到的超参数完全相同,每一个训练步骤大约花费0.4秒的时间。我们的基准模型训练了100,000步,用时12小时。对于我们更大规模的模型(具体细节参见表3的最后一行),每一步耗时1.0秒。大模型一共训练了300,000步,耗时3.5天。

5.3 优化器

5.4 正则化

6、结果展示

6.1 机器翻译

WMT 2014英德翻译任务中,大型的变换器模型(即表2中的Transformer(big))比之前最好的模型(包括一些组合模型)表现还要好,BLEU得分高出两分,并建立了该任务BLEU得分的新记录28.4分。该模型的详细参数配置信息可以参见表3的最后一行。训练在8P100GPU上,总共耗时约3.5天。即便是我们的基准模型,其表现也超出了之前公布的所有模型包括组合模型,其花费的算力成本仅为之前模型的一部分。

2总结了我们的试验结果,并且把我们的模型和其他文献中的模型对比了翻译的质量和花费的训练成本。我们根据对训练时间、GPU使用的数量和每一个GPU所能支持的持续单精度浮点数运算能力的估算,把三者相乘得到的结果作为模型训练阶段浮点运算操作的总数。

6.2 模型的变体

为了评价模型不同部分的重要性程度,我们对基准模型做了多种形式的变换,然后在开发集上,评估英德翻译任务中的性能变化。和之前一样,我们这里也使用了束搜索的概念,但是这里不再对checkpoint文件做平均来获取模型。结果展现在表3中。

在表3的第A行,我们改变了注意力的个数,以及注意力函数中keyvalue的维度,而保持计算运算量和3.2.2部分一样为常数。从表中可以看出,使用单个注意力函数相比于基准模型,只造成了BLEU 0.9分的损失,但是以PPL衡量的翻译质量却下降了很多。

6.3 英语语义解析

为了评价转换器模型能否泛化到其他的一些自然语言处理任务中,我们在英语语义解析任务上继续做试验。这项任务的挑战在于:输出序列有较强的语法结构约束,而且比输入的序列更长。即便是基于RNN的序列到序列的变换模型,在较小的数据输入条件,也不能超越当前最优结果(具体可以参见文献37)。

 


结果如表4所示,尽管没有面向任务的调优,我们的模型仍然表现的非常好,除了递归神经网络语法模型(Recurrent Neural Network Grammar)之外,我们的模型表现超越了之前公布的所有模型。

RNN序列变换模型相比,即便在WSJ只有4万条训练句子的前提下,我们的变换器模型仍然超越了BerkleyParser。

7、结论

在本篇论文中,我们提出了变换器模型,这也是迄今为止第一个仅仅依赖于注意力机制,而把大多数编码器-解码器结构中的递归层全部替换为多头注意力函数的序列变换器模型。

对于翻译任务,变换器模型相比于递归神经网络和卷积神经网络有着极快的训练速度。在WMT 2014的英德翻译任务中和WMT 2014的英法翻译任务中,我们都达到了前所未有的表现。在前面提高的任务中,我们最好的变换器模型甚至都超越了所有公布的组合模型。

基于这样的结果,我们对基于注意力机制的模型的前景非常看好,并打算将它应用于其他自然语言处理任务中。我们计划把变换器模型扩展到一些处理输入输出时态方面的问题中去,而不再仅局限于文本。此外,我们也计划探究局部受限的注意力机制来高效处理大规模的输入和输出,如图像、音频和视频。探索生成非序列化输出也是我们的目标之一。

训练和评估模型的代码参考:https://github.com/tensorflow/tensor2tensor

致谢:我们感谢Nal Kalchbrenner Stephan Gouws他们在实验中给出的一些富有成效的建议指导和鼓励对我们无比重要

参考文献

[1] Jimmy Lei Ba, Jamie Ryan Kiros, and Geoffrey E Hinton. Layer normalization. arXiv preprint arXiv:1607.06450, 2016.

[2] Dzmitry Bahdanau, Kyunghyun Cho, and Yoshua Bengio. Neural machine translation by jointly learning to align and translate. CoRR, abs/1409.0473, 2014.

[3] Denny Britz, Anna Goldie, Minh-Thang Luong, and Quoc V. Le. Massive exploration of neural machine translation architectures. CoRR, abs/1703.03906, 2017.

[4] Jianpeng Cheng, Li Dong, and Mirella Lapata. Long short-term memory-networks for machine reading. arXiv preprint arXiv:1601.06733, 2016.

[5] Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre, Fethi Bougares, Holger Schwenk, and Yoshua Bengio. Learning phrase representations using rnn  encoder-decoder for statistical machine translation. CoRR, abs/1406.1078, 2014.

[6] Francois Chollet. Xception: Deep learning with depthwise separable convolutions. arXiv preprint arXiv:1610.02357, 2016.

[7] Junyoung Chung, Çaglar Gülçehre, Kyunghyun Cho, and Yoshua Bengio. Empirical evaluation of gated recurrent neural networks on sequence modeling. CoRR, abs/1412.3555, 2014.

[8] Chris Dyer, Adhiguna Kuncoro, Miguel Ballesteros, and Noah A. Smith. Recurrent neural network grammars. In Proc. of NAACL, 2016.

[9] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N. Dauphin. Convolutional sequence to sequence learning. arXiv preprint arXiv:1705.03122v2, 2017.

[10] Alex Graves. Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850, 2013.

[11] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 770–778, 2016.

[12] Sepp Hochreiter, Yoshua Bengio, Paolo Frasconi, and Jürgen Schmidhuber. Gradient flow in recurrent nets: the difficulty of learning long-term dependencies, 2001.

[13] Sepp Hochreiter and Jürgen Schmidhuber. Long short-term memory. Neural computation, 9(8):1735–1780, 1997.

[14] Zhongqiang Huang and Mary Harper. Self-training PCFG grammars with latent annotations across languages. In Proceedings of the 2009 Conference on Empirical Methods in Natural Language Processing, pages 832–841. ACL, August 2009.

[15] Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu. Exploring the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.

[16] Łukasz Kaiser and Samy Bengio. Can active memory replace attention? In Advances in Neural Information Processing Systems, (NIPS), 2016.

[17] Łukasz Kaiser and Ilya Sutskever. Neural GPUs learn algorithms. In International Conference on Learning Representations (ICLR), 2016.

[18] Nal Kalchbrenner, Lasse Espeholt, Karen Simonyan, Aaron van den Oord, Alex Graves, and Koray Kavukcuoglu. Neural machine translation in linear time. arXiv preprint arXiv:1610.10099v2, 2017.

[19] Yoon Kim, Carl Denton, Luong Hoang, and Alexander M. Rush. Structured attention networks. In International Conference on Learning Representations, 2017.

[20] Diederik Kingma and Jimmy Ba. Adam: A method for stochastic optimization. In ICLR, 2015.

[21] Oleksii Kuchaiev and Boris Ginsburg. Factorization tricks for LSTM networks. arXiv preprint arXiv:1703.10722, 2017.

[22] Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, and Yoshua Bengio. A structured self-attentive sentence embedding. arXiv preprint arXiv:1703.03130, 2017.

[23] Minh-Thang Luong, Quoc V. Le, Ilya Sutskever, Oriol Vinyals, and Lukasz Kaiser. Multi-task sequence to sequence learning. arXiv preprint arXiv:1511.06114, 2015.

[24] Minh-Thang Luong, Hieu Pham, and Christopher D Manning. Effective approaches to attentionbased neural machine translation. arXiv preprint arXiv:1508.04025, 2015.

[25] Mitchell P Marcus, Mary Ann Marcinkiewicz, and Beatrice Santorini. Building a large annotated corpus of english: The penn treebank. Computational linguistics, 19(2):313–330, 1993.

[26] David McClosky, Eugene Charniak, and Mark Johnson. Effective self-training for parsing. In Proceedings of the Human Language Technology Conference of the NAACL, Main Conference, pages 152–159. ACL, June 2006.

[27] Ankur Parikh, Oscar Täckström, Dipanjan Das, and Jakob Uszkoreit. A decomposable attention model. In Empirical Methods in Natural Language Processing, 2016.

[28] Romain Paulus, Caiming Xiong, and Richard Socher. A deep reinforced model for abstractive summarization. arXiv preprint arXiv:1705.04304, 2017.

[29] Slav Petrov, Leon Barrett, Romain Thibaux, and Dan Klein. Learning accurate, compact, and interpretable tree annotation. In Proceedings of the 21st International Conference on Computational Linguistics and 44th Annual Meeting of the ACL, pages 433–440. ACL, July 2006.

[30] Ofir Press and Lior Wolf. Using the output embedding to improve language models. arXiv preprint arXiv:1608.05859, 2016.

[31] Rico Sennrich, Barry Haddow, and Alexandra Birch. Neural machine translation of rare words with subword units. arXiv preprint arXiv:1508.07909, 2015.

[32] Noam Shazeer, Azalia Mirhoseini, Krzysztof Maziarz, Andy Davis, Quoc Le, Geoffrey Hinton, and Jeff Dean. Outrageously large neural networks: The sparsely-gated mixture-of-experts layer. arXiv preprint arXiv:1701.06538, 2017.

[33] Nitish Srivastava, Geoffrey E Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. Dropout: a simple way to prevent neural networks from overfitting. Journal of Machine Learning Research, 15(1):1929–1958, 2014.

[34] Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, and Rob Fergus. End-to-end memory networks. In C. Cortes, N. D. Lawrence, D. D. Lee, M. Sugiyama, and R. Garnett, editors, Advances in Neural Information Processing Systems 28, pages 2440–2448. Curran Associates, Inc., 2015.

[35] Ilya Sutskever, Oriol Vinyals, and Quoc VV Le. Sequence to sequence learning with neural networks. In Advances in Neural Information Processing Systems, pages 3104–3112, 2014.

[36] Christian Szegedy, Vincent Vanhoucke, Sergey Ioffe, Jonathon Shlens, and Zbigniew Wojna. Rethinking the inception architecture for computer vision. CoRR, abs/1512.00567, 2015.

[37] Vinyals & Kaiser, Koo, Petrov, Sutskever, and Hinton. Grammar as a foreign language. In Advances in Neural Information Processing Systems, 2015.

[38] Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, et al. Google’s neural machine translation system: Bridging the gap between human and machine translation. arXiv preprint arXiv:1609.08144, 2016.

[39] Jie Zhou, Ying Cao, Xuguang Wang, Peng Li, and Wei Xu. Deep recurrent models with fast-forward connections for neural machine translation. CoRR, abs/1606.04199, 2016.

[40] Muhua Zhu, Yue Zhang, Wenliang Chen, Min Zhang, and Jingbo Zhu. Fast and accurate shift-reduce constituent parsing. In Proceedings of the 51st Annual Meeting of the ACL (Volume 1: Long Papers), pages 434–443. ACL, August 2013.

恒生技术之眼原创文章,未经授权禁止转载。详情见转载须知

联系我们

恒 生 技 术 之 眼