Attention And Memory in Deep Learning And NLP

翻译 2016年05月30日 16:02:42

引言

深度学习最近的趋势是Attention Mechanisms(关注度机制)。在这篇综述中,llya Sutskever,这个人现在是OpenAI的研究总监(research director),他说Attention Mechanisms是最激动人心的成果。这听起来很“亦可赛艇”,但是什么是Attention Mechanisms呢?

神经网络中的Attention Mechanisms 大概可以描述成是基于人类的视觉注意力机制而发展来的方法,在人类的视觉系统中,当一个画面有多个模型(物体),人类视觉系统能够很好的注意到这些模型中和其他部分不一样的模型(物体),与此同时忽略一些不是那么引人注意的模型(物体),而且这种视觉关注能够随着时间和物体的变化而调整。

神经网络中的Attention模型有着很长的历史,尤其是在图像识别领域,如[1]和[2]这两个例子。最近Attention Mechanisms已经开始和递归神经网络(Recurrent Neural Network)整合起来,并在NLP领域开始大放异彩,这也是我为什么写这篇博文的原因。

Attention模型能够解决什么问题

为了理解Attemtion模型能够为我们做什么,我们打算使用 神经网络机器翻译(Neural Machine Translation,以下简称NMT)作为例子来阐述Attention模型的作用。传统机器翻译系统一般依赖复杂的基于文本统计特性方法,简而言之,这些系统复杂而且构建这些系统是一项浩繁的工程。NMT则与传统的基于统计的机器翻译方法不一样,在NMT中,我们将一个句子映射成一个固定大小的向量表示,然后基于这些向量来构建我们的翻译系统。通过尝试使用文本的更高层的意义表示形式,而不是使用想n-gram这样的计数方法,NMT系统对于新句子的适用性比很多其他方法都要好。可能更为重要的是,NMT系统更容易建立和训练,系统不依赖任何manual feature engineering。事实上,使用TensorFlow搭建一个简单的NMT系统不超过几百行代码。

大多数的NMT系统是分为如下两步进行的:
1,将原始句子使用RNN映射成向量形式,这一步称之为encode
2,将上一步得到的句子向量使用RNN再次解码成目标语言句子,这一步称之为decode
这里写图片描述
在上面的图中,”Echt”,“Dicke”和“kiste”这几个词语被用来编码,在一个特殊的标志之后(图中没有展出,一般是句子的结尾标志词,如SENTENCE_END_TOKEN之类的,译者注),解码器开始生成目标翻译语言。解码器不断的产生目标翻译词语知道产生了句子的结尾标志词。这里,向量h表示的是编码器内部的状态。

如果你仔细看的话,会发现解码器产生翻译句子完全依赖于编码器的最后一个隐含状态(上图中指的是h3)。这个h3向量必须将原句的所有的信息都要囊括进去,用更书面化的说法,这个向量就是这个句子的embedding向量。事实上,如果你将不同的句子的embedding向量使用PCA或者t-SNE等降维的方法画出来的话,会发现语义相似的句子的embedding一般都很相近,这一点很美妙。

我们仍然有顾虑,将一个很长的句子的所有信息都编码成一个单独的向量,并且解码器只用这个唯一的向量来生成目标翻译句子,这一点感觉不是很有道理。假设句子的长度是50,目标翻译句子英语的第一个单词有很大的可能性和原句的第一个词语有关,这也就意味着,解码器需要考虑到50步之前的原句信息,而这个信息需要以某种形式编码在编码器的最后一个向量里面(如上图的h3,译者注). 众所周知,RNN对于学习long term dependency是有问题的,容易产生梯度消失或者梯度爆炸等诸多麻烦。理论上,使用LSTM这种结构可以解决这个问题,但是实践中,对于长句子的学习(long-range-dependencies)仍然问题重重。举个例子,研究发现,将原句的顺序颠倒过来能够对翻译结果产生明显的提升,因为这样做之后,编码器个解码器相关的词语的距离减少了(如,将 “我爱你”–>“I love you”这个编码器-解码器模型变成 “你爱我”–>”I love you” 之后,“我”和 “I”的距离就减少了,具体请看[3],译者注。与之相似,将输入句子重复两次也能够起到优化翻译结果的目的(如 将“我爱你”这个输入变成“我爱你我爱你”,译者注)。

我认为将一个句子的顺序颠倒过来的方法是一个”骇客技术“,虽然它确实在实践中起到了一定的优化作用,但是这个并不是一个解决问题根本的做法。大部分翻译的基准是在法语和德语之间,而这两种语言和英语很相似(甚至中文词语的顺序也和英文类似)。但是在其他的一些语言(比如说日语),其句子的最后一个词语和目标英语句子的第一个词语有很高的相关性,在这种情况下,将句子的顺序颠倒来进行编码显然会使得结果变得更糟。那么有没有替代方案呢,有,那就是Attention Mechanisms

在Attention Mechanisms中,我们不再是将整个句子编码成一个固定长度的向量,而是在生成输出翻译语句的每一步,解码器都关注原句的不同的部分,更加重要的是,我们让这个模型根据现有的输出和原始句子来学习去关注原句的哪些信息。所以,在那些对其的很好的语言中(如英语和德语),解码器可能会更多的关注序列信息(在原句中顺序相似的部分,如“i love you”中的”love”的生成过程中会更加关注“我爱你”的“爱”这个词,译者注)。文献 Neural Machine Translation by Jointly Learning to Align and Translate提出的结构如下所示:
这里写图片描述
上图中,y表示的是解码器生成的翻译后的单词,x表示是原始句子中的单词。上图使用了双向的递归循环网络(bi-RNN),这个并不是很重要,如果你觉得麻烦的话可以直接忽略掉上面的反方向传播的部分。重要的是解码器的每个输出单词y_t现在依赖的是所有输入状态的权重加权,而不仅仅是最后一个状态。图中的a就是定义了对于每一个输出状态,每个输入状态有多少权重的信息需要被考虑到。所以,如果a3,2是一个大的数字,那么这意味着解码器在生成目标语言的第三个词语的时候,更多的关注到了原句的第二个单词的信息。a是已经正则化,其和为1。

Attention 模型的一个有点事,它能够解释并可视化我们的模型。举个例子,通过可视化翻译过程中所关注的权重矩阵a,我们可以理解模型是如何翻译的:
这里写图片描述
上图可以看出,当从法语翻译成英语的过程中,网络模型差不多是关注是和输出句子的位置差不多的输入句子的位置,如 “de”->”of”,但是也有例外,比如”la Syrie”->”Syria”

Attention模型的开销

如果我们进一步看Attention模型的话,我们会发现Attention模型的开销也是比较大的。我们需要计算在所有输入单词和所有输出单词之间的Attention value(也就是关注值),如果输入序列的长度是50,同时翻译成一句50个单词长度的目的语言,那么我们就需要2500个关注值参数,这还不算太糟糕,可是一旦语句变得很长或者是在字符级别的话,那么这个参数数量会急剧上涨,相应的开销也会不断增大

而这一点却又违反我们的常识,人类的关注系统是为了节约计算资源而产生的(比如我们观看滑雪比赛会关注滑雪的人,而忽略很多无关的背景,这节约了我们大脑的处理信息的数量,译者注)。但是在上面的Attention Model中,却没有做到和人类关注系统一样节约计算资源,在上述的模型中,我们在决定关注哪些细节之前,是把所有的记忆信息都计算了一遍。在NMT模型中,也就是每次决定生成的单词需要关注哪些原始句子中的词语的时候,我们是把输入原始句子的每个单词和生成的单词的关注度都计算了一遍。这看起来很浪费资源,而且和人类的做法不一样。事实上,Attention Model感觉更像是记忆遍历,而不是关注。但是不可否定的是,Attention Model变得越来越流行,并且在很多的任务中发挥着重要的作用。

Attention model的一个替代方案是使用增强学习来近似预测需要关注的位置,这听起来和人类的关注系统差不多,而这也在Recurrent Models of Visual Attention应用了。

Attention=(Fuzzy)MEMORY?

Attention Mechanism能够解决的问题是允许模型可以在任意一个时刻回溯到输入序列的所有信息,而不是将所有的信心编码成一个固定长度的向量。正如我上文中写到的,我认为Attention这个词有些用词不当,用另一种方式表达的话,Attention Mechanism就是使网络能够获取到其内部记忆信息,而这些内部记忆信息就是就是编码器的隐含状态。如果以这个视角解释的话,Attention model不是选择哪个去关注,而是从记忆中检索什么信息应该被抽取,但是与一般记忆不同的是,这里的记忆存取机制是软性的,也就是说,这个网络抽取的是所有记忆部分的加权值,而不是一个单个区域的值。使用软性的记忆能够让我们更好的使用BP算法来训练这个端到端的网络(也有些non-fuzzy的方法,其梯度是使用采样的方法获得而不是BP)

Memory Mechanism本身有着很长的历史。标准RNN的隐含状态本身也是一种内部信息,RNN中的梯度消失或者梯度爆炸等信可以使用LSTM等门机制结构来避免。

更加复杂的memory structure的趋势还在继续。端到端记忆网络是的网络在作出一个输出之前能偶多次读取输入序列,同时每一步都更新记忆内容。
神经网络图灵机(Neural Turing Machines)使用和memory Mechanism相似的形式,但是加上了更加复杂的addressing方法,这个类型结合了content-based(如本文中提到的)和location-based的addressing方法,从而使得网络去学习addressing模式,从而编写一些简单的计算机程序,如排序算法。

在将来,我们很可能会看到memory Mechanism和Attention Mechanism将有着清晰的界限和分别,也许在Reinforcement Learning Neural Turing Machines这一文中,我们能够汲取到一点思路

原文出处

ATTENTION AND MEMORY IN DEEP LEARNING AND NLP
译者按:如有不当,请批评指出

参考文献

[1]http://papers.nips.cc/paper/4089-learning-to-combine-foveal-glimpses-with-a-third-order-boltzmann-machine
[2]http://arxiv.org/abs/1109.3737
[3]http://arxiv.org/abs/1409.3215

相关文章推荐

深度学习和自然语言处理中的注意和记忆Attention and Memory in Deep Learning and NLP

A recent trend in Deep Learning are Attention Mechanisms. In an interview, Ilya Sutskever, now the...

以Attention Model为例谈谈两种研究创新模式

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/                                                      author: 张...
  • memray
  • memray
  • 2016年05月19日 10:33
  • 809

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

要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词。AM模型应该说是过去一年来NLP领域中的重要进展之一,在很多场景被证明有...

Attention and Memory in Deep Learning and NLP(深度学习和NLP中的注意和记忆机制) 阅读笔记

什么是Attention Mechanisms(注意机制) 神经网络中的注意机制类似人类的视觉注意机制,人类视觉本质上看图片会聚焦在“高清晰度“的区域,同时也会感知周围“低清晰度”的区域,然...
  • aPYXa
  • aPYXa
  • 2016年07月26日 20:19
  • 1556

ICLR 2017 | Attention 和 Memory Networks

ICLR 2017 | Attention 和 Memory Networks 原创2016-11-09小 S程序媛的日常程序媛的日常 今天分享 ICLR 2017,主题是 Attention ...

深度学习笔记——Attention Model(注意力模型)学习总结

Attention Model(注意力模型)学习总结,包括soft Attention Model,Global Attention Model和Local Attention Model,静态AM,...
  • mpk_no1
  • mpk_no1
  • 2017年08月06日 21:49
  • 4691

深度学习方法(九):自然语言处理中的Attention Model注意力模型

上一篇博文深度学习方法(八):Encoder-Decoder模型,基本Sequence to Sequence模型描述了基本的Encoder-Decoder模型,在作为翻译模型的时候,这种基本的Enc...

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

要是关注深度学习在自然语言处理方面的研究进展,我相信你一定听说过Attention Model(后文有时会简称AM模型)这个词。AM模型应该说是过去一年来NLP领域中的重要进展之一,在很多场景被证明有...
  • jdbc
  • jdbc
  • 2016年01月26日 11:16
  • 2247

nlp中加入attention

http://blog.csdn.net/jteng/article/details/52864401 [1] Wu, Y., Schuster, M., Chen, Z., Le,...

深度学习之二:CNN推导

前面看过了CNN的基本结构,经典的模式如下图:   上图经典的CNN模型主要可以概括为三个部分: convolution层:convolution是将原来的输入向量映射成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Attention And Memory in Deep Learning And NLP
举报原因:
原因补充:

(最多只允许输入30个字)