Attention Model 注意力机制

本文是对:https://blog.heuritech.com/2016/01/20/attention-mechanism/ 的翻译。这篇文章对Attention Model原理进行了一个比较清晰的阐述,所以记录一下。由于本人英语能力有限,翻译不周的地方,还请见谅。

在2015年,随着DeepLearning和AI的发展,神经网络中的注意力机制引起了许多研究者的兴趣。这篇博文的目的是从一个高的层次上对注意力机制进行解释,以及详细介绍attention的一些计算步骤。如果你要更多关于attention的公式或例子,文后的参考文献提供了一下,特别注意Cho et al[3]这篇文章。不幸的是,这些模型往往你自己实现不了,仅仅有一些开源的实现。

Attention

神经科学和计算神经科学中的neural processes已经广泛研究了注意力机制[1,2]。视觉注意力机制是一个特别值得研究的方向:许多动物专注于视觉输入的特定部分,去计算适当的反映。这个原理对神经计算有很大的影响,因为我们需要选择最相关的信息,而不是使用所有可用的信息,所有可用信息中有很大一部分与计算神经元反映无关。一个类似于视觉专注于输入的特定部分,也就是注意力机制已经用于深度学习、语音识别、翻译、推理以及视觉识别。

Attention for Image Captioning

我们通过介绍一个例子,去解释注意力机制。这个任务是我们想实现给图片加标题:对于给定的图片,根据图片中的内容给图片配上标题(说明/描述)。一个典型的image captioning系统会对图片进行编码,使用预训练的卷积神经网络产生一个隐状态h。然后,可以使用RNN对这个隐状态h进行解码,生成标题。这种方法已经被不少团队采用,包括[11],如下图所示:

mark

这种方法的问题是:当模型尝试去产生标题的下一个词时,这个词通常是描述图片的一部分。使用整张图片的表示h去调节每个词的生成,不能有效地为图像的不同部分产生不同的单词。这正是注意力机制有用的地方。
使用注意力机制,图片首先被划分成n个部分,然后我们使用CNN计算图像每个部分的表示$h_1,…,h_n$,也就是对n个部分的图像进行编码。当使用RNN产生一个新的词时,注意力机制使得系统只注意图片中相关的几个部分,所以解码仅仅使用了图片的特定的几个部分。如下图所示,我们可以看到标题的每个词都是用图像(白色部分)的一部分产生的。

mark

更多的例子如下图所示,我们可看到图片相关的部分产生标题中划线的单词。

mark

现在我们要解释注意力机制是怎么工作的,文献[3]详细介绍了基于注意力机制的Encoder-Decoder Network的实现。

What is an attention model

在一般情况下,什么是注意力机制?

mark

一个attention model通常包含n个参数$y_1,..,y_n$(在前面的例子中,$y_i$可以是$h_i$) ,和一个上下文c。它返回一个z向量,这个向量可以看成是对$y_i$的总结,关注与上下文c相关联的信息。更正式地说是,它返回的$y_i$的加权算术平均值,并且权重是根据$y_i$与给定上下文c的相关性来选择的。

在上面的例子中,上下文是刚开始产生的句子,$y_i$是图像的每个部分的表示($h_i$),输出是对图像进行一定的过滤(例如:忽略图像中的某些部分)后的表示,通过过滤将当前生成的单词的重点放在感兴趣的部分。
注意力机制有一个有趣的特征:计算出的权重是可访问的并且可以被绘制出来。这正是我们之前展示的图片,如果权重越高,则对应部分的像素越白。

但是,这个黑盒子做了什么?下图能够清晰的表示Attention Model的原理:

mark

可能这个网络图看起来比较复杂,我们一步一步来解释这个图。
首先,我们能够看出 一个输入c,是上下文,$y_i$是我们正在研究的“数据的一部分”。

mark

然后,网络计算$m_1,…,m_n$通过一个tanh层。这意味着我们计算$y_i$和c的一个”聚合”。重要的一点是,每个$m_i$的计算都是在不考虑其他$y_j,j \neq i$的情况下计算出来的。它们是独立计算出来的。

mark

$$m_i = tanh(W_{cm}c+W_{ym}y_i)$$

然后,我们计算每个weight使用softmax。softmax,就像他的名字一样,它的行为和argmax比较像,但是稍有不同。$argmax(x_1,…,x_n)=(0,..,0,1,0,..,0)$,在输出中只有一个1,告诉我们那个是最大值。但是,softmax的定义为:$softmax(x_1,…,x_n)=(\frac {e^{x_i}}{\sum_j e^{x_j}})_i$。如果其中有一个$x_i$比其他的都大,$softmax(x_1,…,x_n)将会非常接近argmax(x_1,…,x_n)$。
mark

$$s_i 正比于 exp(w_m, m_i)\\\ \sum_i s_i=1$$
这里的$s_i$是通过softmax进行归一化后的值。因此,softmax可以被认为是“相关性”最大值的变量,根据上下文。
输出$z$是所有$y_i$的算术平均,每个权重值表示$y_i,..,y_n$和上下文c的相关性。

mark

$$z = \sum_i s_iy_i$$

An other computation of “relevance”

上面介绍的attention model是可以进行修改的。首先,tanh层可以被其他网络或函数代替。重要的是这个网络或函数可以综合c和$y_i$。比如可以只使用点乘操作计算c和$y_i$的内积,如下图所示:

mark

这个版本的比较容易理解。上面介绍的Attention是softly-choosing与上下文最相关的变量($y_i$)。据我们所知,这两种系统似乎都能产生类似的结果。
另外一个比较重要的改进是hard attention。

Soft Attention and Hard Attention

上面我们描述的机制称为Soft Attention,因为它是一个完全可微的确定性机制,可以插入到现有的系统中,梯度通过注意力机制进行传播,同时它们通过网络的其余部分进行传播。
Hard Attention是一个随机过程:系统不使用所有隐藏状态作为解码的输入,而是以概率$s_i$对隐藏状态$y_i$进行采样。为了进行梯度传播,使用蒙特卡洛方法进行抽样估计梯度。

mark

这两个系统都有自己的优缺点,但是研究的趋势是集中于Soft Attention,因为梯度可以直接计算,并不是通过随机过程来估计的。

Return to the image captioning

现在,我们来理解一下image captioning 系统是怎样工作的。

mark

从上面的图我们可以看到image captioning的典型模型,但是添加了一个新的关于attention model的层。当我们想要预测标题的下一个单词时,发生了什么?如果我们要预测第i个词,LSTM的隐藏状态是$h_i$。我们选择图像相关的部分通过把$h_i$作为上下文。然后,attention model的输出是$z_i$,这是被过滤的图像的表示,只有图像的相关部分被保留,用作LSTM的输入。然后,LSTM预测一个下一个词,并返回一个隐藏状态$h_{i+1}$。

Learning to Align in Machine Translation

Bahdanau, et al[5]中的工作提出了一个神经翻译模型将句子从一种语言翻译成另一种语言,并引入注意力机制。在解释注意力机制之前,vanillan神经网络翻译模型使用了编码-解码(Encoder-Decoder)框架。编码器使用循环神经网络(RNN,通常GRU或LSTM)将用英语表示的句子进行编码,并产生隐藏状态h。这个隐藏状态h用于解码器RNN产生正确的法语的句子。

mark

编码器不产生与整个句子对应的单个隐藏状态,而是产生与一个词对应的隐藏状态$h_j$。每当解码器RNN产生一个单词时,取决于每个隐藏状态作为输入的贡献,通常是一个单独的参数(参见下图)。这个贡献参数使用Softmax进行计算:这意味着attention weights $a_j$在$\sum a_j=1$的约束下进行计算并且所有的隐藏状态$h_j$给解码器贡献的权重为$a_j$。
在我们的例子中,注意力机制是完全可微的,不需要额外的监督,它只是添加在现有的编码-解码框架的顶部。
这个过程可以看做是对齐,因为网络通常在每次生成输出词时都会学习集中于单个输入词。这就意味着大多数的注意力权重是0(黑),而一个单一的被激活(白色)。下面的图像显示了翻译过程中的注意权重,它揭示了对齐方式,并使解释网络所学的内容成为可能(这通常是RNNs的问题!)。

mark

Attention without Recurrent Neural Networks

到现在为止,我们仅介绍了注意力机制在编码-解码框架下的工作。但是,当输入的顺序无关紧要时,可以考虑独立的隐藏状态$h_j$。这个在Raffel et Al[10]中进行了介绍,这里attention model是一个前向全连接的网络。同样的应用是Mermory Networks[6](参见下一节)。

From Attention to Memory Addressing

NIPS 2015会议上提出了一个非常有趣的工作叫做 RAM for Reasoning、Attention and Memory。它的工作包含Attention,但是也包括Memory Networks[6],Neural Turing Machines[7]或 Differentiable Stack RNNS[8]以及其他的工作。这些模型都有共同之处,它们使用一种外部存储器的形式,这种存储器可以被读取(最终写入)。
比较和解释这些模型是超出了这个本文的范围, 但注意机制和记忆之间的联系是有趣的。例如,在Memory Networks中,我们认为外部存储器-一组事实或句子$x_i$和一个输入q。网络学习对记忆的寻址,这意味着选择哪个事实$x_i$去关注来产生答案。这对应了一个attention model在外部存储器上。In Memory Networks, the only difference is that the soft selection of the facts (blue Embedding A in the image below) is decorrelated from the weighted sum of the embeddings of the facts (pink embedding C in the image).(PS:实在读不懂了)。在Neural Turing Machine中,使用了一个Soft Attention机制。这些模型将会是下个博文讨论的对象。
mark

Final Word

注意力机制和其他完全可微寻址记忆系统是目前许多研究人员广泛研究而的热点。尽管它们仍然年轻, 在现实世界系统中没有实现, 但它们表明,它们可以处理在编码-解码框架下以前遗留的许多问题,它们可以被用来击败最先进的系统。
在Heuritech,几个月前,我们对注意力机制产生了兴趣,组织了一个小组,去实现带注意力机制的编码-解码器。虽然我们还没有在生产中使用注意机制,但我们设想它在高级文本理解中有一个重要的作用, 在某些推理是必要的, 以类似的方式,Hermann et al[9]中的工作和此类似。
在另一个单独的博客帖子中,我将详细阐述我们在研讨会上所学到的内容以及在RAM研讨会上提出的最新进展。
Léonard Blier et Charles Ollion

Acknowledgments

在此感谢Mickael Eickenberg 和 Olivier Grisel的有益的讨论。

Bibliography

[1] Itti, Laurent, Christof Koch, and Ernst Niebur. « A model of saliency-based visual attention for rapid scene analysis. » IEEE Transactions on Pattern Analysis & Machine Intelligence 11 (1998): 1254-1259.

[2] Desimone, Robert, and John Duncan. « Neural mechanisms of selective visual attention. » Annual review of neuroscience 18.1 (1995): 193-222.

[3] Cho, Kyunghyun, Aaron Courville, and Yoshua Bengio. « Describing Multimedia Content using Attention-based Encoder–Decoder Networks. » arXiv preprint arXiv:1507.01053 (2015)

[4] Xu, Kelvin, et al. « Show, attend and tell: Neural image caption generation with visual attention. » arXiv preprint arXiv:1502.03044 (2015).

[5] Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. « Neural machine translation by jointly learning to align and translate. » arXiv preprint arXiv:1409.0473 (2014).

[6] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. « End-to-end memory networks. » Advances in Neural Information Processing Systems. (2015).

[7] Graves, Alex, Greg Wayne, and Ivo Danihelka. « Neural Turing Machines. » arXiv preprint arXiv:1410.5401 (2014).

[8] Joulin, Armand, and Tomas Mikolov. « Inferring Algorithmic Patterns with Stack-Augmented Recurrent Nets. » arXiv preprint arXiv:1503.01007 (2015).

[9] Hermann, Karl Moritz, et al. « Teaching machines to read and comprehend. » Advances in Neural Information Processing Systems. 2015.

[10] Raffel, Colin, and Daniel PW Ellis. « Feed-Forward Networks with Attention Can Solve Some Long-Term Memory Problems. » arXiv preprint arXiv:1512.08756 (2015).

[11] Vinyals, Oriol, et al. « Show and tell: A neural image caption generator. » arXiv preprint arXiv:1411.4555 (2014).

坚持原创技术分享,您的支持将鼓励我继续创作!