(转)注意力机制(Attention Mechanism)在自然语言处理中的应用

 

注意力机制(Attention Mechanism)在自然语言处理中的应用

 

 本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html 

    近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展。基于注意力(attention)机制的神经网络成为了最近神经网络研究的一个热点,本人最近也学习了一些基于attention机制的神经网络在自然语言处理(NLP)领域的论文,现在来对attention在NLP中的应用进行一个总结,和大家一起分享。

1 Attention研究进展

    Attention机制最早是在视觉图像领域提出来的,应该是在九几年思想就提出来了,但是真正火起来应该算是google mind团队的这篇论文《Recurrent Models of Visual Attention》[14],他们在RNN模型上使用了attention机制来进行图像分类。随后,Bahdanau等人在论文《Neural Machine Translation by Jointly Learning to Align and Translate》 [1]中,使用类似attention的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是是第一个提出attention机制应用到NLP领域中。接着类似的基于attention机制的RNN模型扩展开始应用到各种NLP任务中。最近,如何在CNN中使用attention机制也成为了大家的研究热点。下图表示了attention研究进展的大概趋势。

2 Recurrent Models of Visual Attention

    在介绍NLP中的Attention之前,我想大致说一下图像中使用attention的思想。就具代表性的这篇论文《Recurrent Models of Visual Attention》 [14],他们研究的动机其实也是受到人类注意力机制的启发。人们在进行观察图像的时候,其实并不是一次就把整幅图像的每个位置像素都看过,大多是根据需求将注意力集中到图像的特定部分。而且人类会根据之前观察的图像学习到未来要观察图像注意力应该集中的位置。下图是这篇论文的核心模型示意图。

    该模型是在传统的RNN上加入了attention机制(即红圈圈出来的部分),通过attention去学习一幅图像要处理的部分,每次当前状态,都会根据前一个状态学习得到的要关注的位置l和当前输入的图像,去处理注意力部分像素,而不是图像的全部像素。这样的好处就是更少的像素需要处理,减少了任务的复杂度。可以看到图像中应用attention和人类的注意力机制是很类似的,接下来我们看看在NLP中使用的attention。

3 Attention-based RNN in NLP

3.1 Neural Machine Translation by Jointly Learning to Align and Translate [1]

    这篇论文算是在NLP中第一个使用attention机制的工作。他们把attention机制用到了神经网络机器翻译(NMT)上,NMT其实就是一个典型的sequence to sequence模型,也就是一个encoder to decoder模型,传统的NMT使用两个RNN,一个RNN对源语言进行编码,将源语言编码到一个固定维度的中间向量,然后在使用一个RNN进行解码翻译到目标语言,传统的模型如下图:

这篇论文提出了基于attention机制的NMT,模型大致如下图:

图中我并没有把解码器中的所有连线画玩,只画了前两个词,后面的词其实都一样。可以看到基于attention的NMT在传统的基础上,它把源语言端的每个词学到的表达(传统的只有最后一个词后学到的表达)和当前要预测翻译的词联系了起来,这样的联系就是通过他们设计的attention进行的,在模型训练好后,根据attention矩阵,我们就可以得到源语言和目标语言的对齐矩阵了。具体论文的attention设计部分如下:

可以看到他们是使用一个感知机公式来将目标语言和源语言的每个词联系了起来,然后通过soft函数将其归一化得到一个概率分布,就是attention矩阵。

从结果来看相比传统的NMT(RNNsearch是attention NMT,RNNenc是传统NMT)效果提升了不少,最大的特点还在于它可以可视化对齐,并且在长句的处理上更有优势。

3.2 Effective Approaches to Attention-based Neural Machine Translation [2]

    这篇论文是继上一篇论文后,一篇很具代表性的论文,他们的工作告诉了大家attention在RNN中可以如何进行扩展,这篇论文对后续各种基于attention的模型在NLP应用起到了很大的促进作用。在论文中他们提出了两种attention机制,一种是全局(global)机制,一种是局部(local)机制。

    首先我们来看看global机制的attention,其实这和上一篇论文提出的attention的思路是一样的,它都是对源语言对所有词进行处理,不同的是在计算attention矩阵值的时候,他提出了几种简单的扩展版本。

 

在他们最后的实验中general的计算方法效果是最好的。

    我们再来看一下他们提出的local版本。主要思路是为了减少attention计算时的耗费,作者在计算attention时并不是去考虑源语言端的所有词,而是根据一个预测函数,先预测当前解码时要对齐的源语言端的位置Pt,然后通过上下文窗口,仅考虑窗口内的词。

里面给出了两种预测方法,local-m和local-p,再计算最后的attention矩阵时,在原来的基础上去乘了一个pt位置相关的高斯分布。作者的实验结果是局部的比全局的attention效果好。

这篇论文最大的贡献我觉得是首先告诉了我们可以如何扩展attention的计算方式,还有就是局部的attention方法。

4 Attention-based CNN in NLP

    随后基于Attention的RNN模型开始在NLP中广泛应用,不仅仅是序列到序列模型,各种分类问题都可以使用这样的模型。那么在深度学习中与RNN同样流行的卷积神经网络CNN是否也可以使用attention机制呢?《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》 [13]这篇论文就提出了3中在CNN中使用attention的方法,是attention在CNN中较早的探索性工作。

传统的CNN在构建句对模型时如上图,通过每个单通道处理一个句子,然后学习句子表达,最后一起输入到分类器中。这样的模型在输入分类器前句对间是没有相互联系的,作者们就想通过设计attention机制将不同cnn通道的句对联系起来。

    第一种方法ABCNN0-1是在卷积前进行attention,通过attention矩阵计算出相应句对的attention feature map,然后连同原来的feature map一起输入到卷积层。具体的计算方法如下。

    第二种方法ABCNN-2是在池化时进行attention,通过attention对卷积后的表达重新加权,然后再进行池化,原理如下图。

    第三种就是把前两种方法一起用到CNN中,如下图

这篇论文提供了我们在CNN中使用attention的思路。现在也有不少使用基于attention的CNN工作,并取得了不错的效果。

5 总结

    最后进行一下总结。Attention在NLP中其实我觉得可以看成是一种自动加权,它可以把两个你想要联系起来的不同模块,通过加权的形式进行联系。目前主流的计算公式有以下几种:

通过设计一个函数将目标模块mt和源模块ms联系起来,然后通过一个soft函数将其归一化得到概率分布。

    目前Attention在NLP中已经有广泛的应用。它有一个很大的优点就是可以可视化attention矩阵来告诉大家神经网络在进行任务时关注了哪些部分。

    不过在NLP中的attention机制和人类的attention机制还是有所区别,它基本还是需要计算所有要处理的对象,并额外用一个矩阵去存储其权重,其实增加了开销。而不是像人类一样可以忽略不想关注的部分,只去处理关注的部分。

 

参考文献

[1] Bahdanau, D., Cho, K. & Bengio, Y. Neural Machine Translation by Jointly Learning to Align and Translate. Iclr 2015 1–15 (2014).

[2] Luong, M. & Manning, C. D. Effective Approaches to Attention-based Neural Machine Translation. 1412–1421 (2015).

[3] Rush, A. M. & Weston, J. A Neural Attention Model for Abstractive Sentence Summarization. EMNLP (2015).

[4] Allamanis, M., Peng, H. & Sutton, C. A Convolutional Attention Network for Extreme Summarization of Source Code. Arxiv (2016).

[5] Hermann, K. M. et al. Teaching Machines to Read and Comprehend. arXiv 1–13 (2015).

[6] Yin, W., Ebert, S. & Schütze, H. Attention-Based Convolutional Neural Network for Machine Comprehension. 7 (2016).

[7] Kadlec, R., Schmid, M., Bajgar, O. & Kleindienst, J. Text Understanding with the Attention Sum Reader Network. arXiv:1603.01547v1 [cs.CL] (2016).

[8] Dhingra, B., Liu, H., Cohen, W. W. & Salakhutdinov, R. Gated-Attention Readers for Text Comprehension. (2016).

[9] Vinyals, O. et al. Grammar as a Foreign Language. arXiv 1–10 (2015).

[10]    Wang, L., Cao, Z., De Melo, G. & Liu, Z. Relation Classification via Multi-Level Attention CNNs. Acl 1298–1307 (2016).

[11]    Zhou, P. et al. Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification. Proc. 54th Annu. Meet. Assoc. Comput. Linguist. (Volume 2 Short Pap. 207–212 (2016).

[12]    Yang, Z. et al. Hierarchical Attention Networks for Document Classification. Naacl (2016).

[13] Yin W, Schütze H, Xiang B, et al. Abcnn: Attention-based convolutional neural network for modeling sentence pairs. arXiv preprint arXiv:1512.05193, 2015.

[14] Mnih V, Heess N, Graves A. Recurrent models of visual attention[C]//Advances in Neural Information Processing Systems. 2014: 2204-2212.

 

时间: 2024-11-05 23:35:32

(转)注意力机制(Attention Mechanism)在自然语言处理中的应用的相关文章

(zhuan) 自然语言处理中的Attention Model:是什么及为什么

自然语言处理中的Attention Model:是什么及为什么 2017-07-13 张俊林 待字闺中 要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词.AM模型应该说是过去一年来NLP领域中的重要进展之一,在很多场景被证明有效.听起来AM很高大上,其实它的基本思想是相当直观简洁的.本文作者可以对灯发誓:在你读完这篇啰里啰嗦的文章及其后续文章后,一定可以透彻了解AM到底是什么,以及轻易看懂任何有关论文看上去复杂的数学公

中科院计算所王永庆详解IJCAI 17录用论文:如何用注意力机制RNN进行信息传播建模?|IJCAI 2017

雷锋网AI科技评论:IJCAI 2017即将举行,为此,雷锋网特邀请了部分录用论文作者对自己的作品进行详细解读,以供有兴趣的老师同学们了解作者的研究思路.本文原载于王永庆个人公众号"KingsGarden",授权雷锋网转载,雷锋网(公众号:雷锋网)AI科技评论做了不改变原意的编辑. 另外,雷锋网即将在 8 月 12 日下午举行"GAIR大讲堂CVPR 上海交大专场"分享会,感兴趣的同学赶紧点击此链接了解活动详情. 王永庆,2017年中国科学院计算技术研究所工学博士毕

【资源】用深度学习解决自然语言处理中的7大问题,文本分类、语言建模、机器翻译等

本文讲的是用深度学习解决自然语言处理中的7大问题,文本分类.语言建模.机器翻译等,自然语言处理领域正在从统计学方法转向神经网络方法.在自然语言中,仍然存在许多具有挑战性的问题.但是,深度学习方法在某些特定的语言问题上取得了state-of-the-art的结果.不仅仅是在一些benchmark问题上深度学习模型取得的表现,这是最有趣的:事实上,单个模型可以学习单词的含义和执行语言任务,从而避免需要一套专门的.人工的方法. 这篇文章将介绍深度学习方法正在取得进展的7类有趣的自然语言处理任务. 文本

小米加入 AI 研究大家庭!联合西工大推出基于注意力机制的普通话语音识别算法

雷锋网(公众号:雷锋网) AI 科技评论按:小米近期发布了自己的 AI 音箱,加入了智能家居的战局.正当我们觉得小米会不会只是蹭"人工智能"热点的时候,小米的这篇论文证明了自己真的是把人工智能作为一件严肃的公司业务来做.请允许我们代表人工智能研究大家庭对小米公司表示欢迎,对小米的研究员们致以敬意! 这篇论文是西北工业大学.陕西省语音与图像信息处理重点实验室与小米科技公司的研究员联合研究的成果.该项工作主要针对普通话识别任务,提出了一种基于注意力机制的端到端学习模型. 以下是雷锋网 AI

MapReduce原理及其在自然语言处理中的应用研究

MapReduce原理及其在自然语言处理中的应用研究 亢丽芸 王效岳 白如江 针对目前海量数据处理在处理速度.存储空间.容错性.访问时间等方面存在的问题,对Google MapReduce编程模型的原理.执行流程等进行分析,从MapReduce与索引构建.统计机器翻译.聚类算法.文本分类四个方面,总结MapReduce编程模型在自然语言处理及信息检索等领域的主要应用,以期对MapReduce编程模型原理及其主要应用有一个较全面的认识. MapReduce原理及其在自然语言处理中的应用研究

一篇很好的参考文章:深度学习算法在自然语言处理中的一些心得

更多深度文章,请关注: https://yq.aliyun.com/cloud 作者简介:Frank Chung,HTC Research Engineering Blog编辑,专注于各种计算机技术的研究和探索.个人主页:https://medium.com/@frank_chung 以下为译文: 深度学习逐渐在NLP(自然语言处理)上发挥重要作用. 在此我就NLP问题的一些技术演变做一些简单阐述. N元语法模型 连续文本序列"to be or not to be"可以通过以下方式来建

世界级难题:把不同物品装进箱子,如何使箱子表面积最小?

三维装箱问题是一类经典的组合优化问题,具有巨大的学习研究和实际应用价值.传统的三维装箱问题都是给定了箱子的尺寸并以最小化箱子的使用数量为优化目标,但是在某些实际业务场景中并没有固定尺寸的箱子. 基于此类场景,本文提出了一类新型的三维装箱问题.在本问题中,需要将若干个长方体物体逐个放入一个箱子中(物品的摆放位置不能倾斜),优化目标为最小化能够容纳所有物品的箱子的表面积,因为箱子的表面积与其成本直接正相关.本文证明了此类新问题为NP-hard问题.对于装箱问题,箱子的表面积取决于物品的放入顺序.摆放

2017年ACL的四个NLP深度学习趋势 (二):可解释性和注意力(Interpretability and Attention)

更多深度文章,请关注:https://yq.aliyun.com/cloud 2017年ACL的四个NLP深度学习趋势 (一):语言结构和词汇嵌入(Linguistic Structure and Word Embeddings) 趋势3:可解释性(Interpretability) 我最近一直在思考可解释性,然而我并不孤单,在深度学习实践者中,神经网络的可怕的"黑匣子"质量使他们难以控制,难以调试.然而,从非研究者的角度来看,有一个更重要的理由要求可解释性:信任. 公众,媒体和一些研

用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路.做法和部分实践的经验. 业务问题描述: 淘宝商品的一个典型的例子见下图,图中商品的标题是"夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏".淘宝网后台是通过树形的多层的类目体系管理商品的,覆盖叶子类目数量达上万个,商品量也是10亿量级,我们是任务是根据商品标题预测其所在叶子类目,示例中商品归属的类目为