Seq2Seq中的Attention机制

Bahdanau D , Cho K , Bengio Y . Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014.

1、什么是Attention机制

注意力,即重点关注某一局部信息。比如一张大合照,我们肯定是首先关注照片中的人而不是背景的花花草草。再比如在进行句子的情感识别的时候,我们通常需要关注某几个关键词,以及词语间的前后文关系,“快乐”,“悲伤”,“愤怒”,等等。因此:

  • 注意力机制可以决定输入的哪一部分更值得关注;
  • 注意力可以只提取出关键特征

2、为什么要引入Attention机制?

根据通用近似定理,前馈网络和循环网络都有很强的能力。但为什么还要引入注意力机制呢?

  • 计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。
  • 优化算法的限制:虽然局部连接、权重共享以及pooling等优化操作可以让神经网络变得简单一些,有效缓解模型复杂度和表达能力之间的矛盾;但是,如循环神经网络中的长距离以来问题,信息“记忆”能力并不高。可以借助人脑处理信息过载的方式,例如Attention机制可以提高神经网络处理信息的能力 [1]

3、Attention的实现原理[2]

3.1 权重

实现Attention的原理其实很简单,只需要对输入加上权重就好,如Fig.1所示,这有点像Photoshop中的蒙版,白色的表示模型需要着重关注的对象,黑色的区域可以暂时不需要关注,因为它对我们的目标没有帮助。


Fig.1 Attention

以Seq2Seq模型为例,如下图所示。Seq2Seq的Encoder的最后一个状态的输出是Decoder的初始隐藏状态输入。我们计算Decoder的初始隐藏状态与Encoder的每一个状态的输出的相关性,结果记作,命名为权重,越大,相关性也就越大,反之相关性越小,记作:

Fig.2 Seq2Seq

因为有 个隐藏状态,所以共有 个 ,所有 均为0到1之间的数据,且 。

原论文中是根据如下计算的,具体请参考Fig.3:

  1. 将和拼接为一个长向量;
  2. 将拼接后的向量与权值相乘并经过激活函数tanh
  3. 将激活函数的输出与相乘,得到一个数
  4. 将所有计算得到的经softmax函数映射到0-1之间且和为1。
Fig.3 alpha的计算过程

除此之外,还有另一种计算方法,如下所示,计算步骤如Fig.4所示:

  1. 分别将和作线性映射
  2. 将线性映射之后的向量作内积
  3. Softmax归一化


    Fig.4 alpha的计算过程

3.2 加权平均

计算得到每一个隐藏层状态的权重后,与每一个状态值相乘再相加,得到新的向量Context vector :

若没有attention,Decoder的第一个时刻的计算方式为:将Encoder的最后一个状态输出和Decoder的第一个输入拼接。而现在有了attention,将权重与每一个隐藏状态相乘再相加得到了新的向量,新的向量中包含整个时间序列的所有信息,所以就解决了遗忘的问题,将、和一起运算就得到了Decoder的第一个状态输出,其计算方式如Fig.5所示。

Fig.5

和刚刚一样,将 与Encoder的所有状态 对比,计算每一个状态所占权重 。虽然它们都是,但与刚刚的已经不是同一个,因为刚刚的是和计算得到的,而现在是。也就是说,该步计算的是Encoder的隐藏状态与Decoder的第一个状态 的相关性。

计算完后我们同样得到了Encoder隐藏状态的加权平均。

Fig.6

依次重复,我们可以得到加入了attention的Decoder的隐藏状态的输出,如Fig.7所示。


Fig.7

综上,在熟悉了如何引入attention机制之后我们来回顾一下attention是如何让模型只关注部分区域的。如Fig.8所示,这是一个Seq2Seq机器翻译模型,Decoder在翻译第一个单词的时候会回顾Encoder的所有inputs,但并不是所有的inputs都对翻译第一个单词有用,如图中所示,线越粗表明该单词对翻译结果的影响越大,可以看出,翻译I'的时候,第一个输入the对结果影响很大,agreementsigned次之,所以我们只需attention这几个单词即可。同理,翻译第二个单词accord同样要回去再看下整句话,发现只有agreement对最终的结果有影响,所以只需attentionagreement即可。

Fig.8 How attention works

参考:


  1. 目前主流的attention方法都有哪些 ↩

  2. Attention注意力机制 ↩

你可能感兴趣的:(Seq2Seq中的Attention机制)