背景

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(1)

上一期提到了Seq2Seq模型,其模型是NMT(神经网络翻译)和Chatbot的基础。但是从上一期大家也可以看出来,Seq2Seq模型非常简单、非常直接。就是一个 RNN的Encoder 和 一个RNN的Decoder。 当然其缺陷也是有的。Attention Mechanism是补足其的非常重要的一部分。

今天我们会初步涉及Attention Model。这一整篇,只是想介绍Attention Model是个啥。

Seq2Seq的缺陷

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(2)

上图就是Seq2Seq的大概的框架,其中Encoding部分会输出一个 隐藏状态(Hidden State)或者可以理解成一个向量。 该向量代表了Enocder部分的浓缩。即绿色方块传递到蓝色方块的信息。

而Decoder部分的作用就是将 Hidden State 扩展成我们的目标语句。

我最初看到这个框架的两个主要 疑问是:

  1. Hidden State怎么就能代表 输入语句了呢?
  2. Hidden State怎么就能扩展出一个完整的语句了呢?

关于这两个问题,其实是我最初的思考方向错了。Seq2Seq的encoder部分最初并不能代表输入语句。但是经过大量的训练样本后,就能达到这样的效果。 通过Autoencoder的例子更好理解一些:

下面是一个Autoencoder 的框架图,Autoencoder 也是分为Encoder 和Decoder部分,其与众不同的是 输入值 与 输出值是 同一个值。那么如果按照一个Seq2Seq的模型来理解它的话: Autoencoder 是将一组数据 压缩成二维, 然后再放大回原始纬度。

那么为何二维数据,能代表原始数据的浓缩版呢? 原因很简单,就是训练得来的。当你压缩完,解压完还是你。那么浓缩版就make sense了

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(3)

但是Seq2Seq有一个重大的缺陷,当我们遇到的是一个较长的句子时,我们也可以想象,我们要将一个encoder 传递过来的hidden state “转换”为一段完整的输出文本。其中一个主要原因是Gradient Explosion 或者 Gradient Diminision。


解释下,什么是Hidden State。我又要用到RNN的一个GIF图了。 大家能看到X0 输入最终会有一个输出值,该输出值会进入下一个神经元中。

而每列的输出值,就是该部分的Hidden State。

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(4)


Attention Model初步

Attention Model应该是我自学以来觉得蛮难的一个东西。一个主要原因是我没有找到一个对新手比较友好的资料。最终还是Stanford公开课给力。

还是老规矩,叫什么不重要。我们需要从问题出发,了解该方法解决问题的思路及其解决问题的本质。

那么,从上一部分,我们知道Seq2Seq 最大的问题是,当面对较长的语句,效果就会差很多。

而导致其效果不好的原因是:Encoder部分只传递了最终的Hidden State进入Decoder。说白了就是光用 最后一个hidden state不好使。

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(5)

那么基于该问题,Attention Model的方法也很直接,就是控制使用的hidden state;或者说将注意力集中到对的Hidden State上。

如上图,当我需要输出红色第一个字时,我需要更多得把注意力放在“I” 上面。

换句话说,Attention Model将此问题转化为一个 “连连看” 的问题。如下图,就是将输入文本(横轴)与输出文本(纵轴)的单词进行对齐。当你翻译“I am a student” ------> "我是一个学生" 时, “我”的注意力应该几种在“I” 上面。

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(6)

再换个角度,这就是一个Dynamic Memory Network(中文可能是动态记忆提取?)。 Hidden State 就是我们的memory,而我们提取的方法是动态的。当我输出值是 “我” 的时候,我的Hidden State 提取更多的应该从“I”对应的Hidden State。

当然上面所说的连连看,并不是一一对应的关系。而是一个权重的分配。如下图。

自然语言处理边界在哪里(自然语言处理-第十四期-Attention)(7)

Attention 的效果

Attention Model的效果就是做到动态的记忆提取。 在翻译不同部分时,将注意力放在不同的Hidden State上。

自然比传统Seq2Seq,所有的信息只有一个 输入文本最终的Hidden State

总结下

Attention Model是什么呢?

基础的Seq2Seq Model只使用了 句子结尾的Hidden State。其最大的问题就是,当面对较长句子时,难以从单一Hidden State 推出完整的目标语句。

而Attention Model的思路是,Dynamic Memory 动态的记忆提取。 或者说,将目标语句与输入语句做一个“对应关系”。

Attention Model的效果是什么呢? 可以动态提取Hidden State。 如果能做到对应关系靠谱,那么Attention Model的提升将是显著的。

而其中最重要的是,如何计算出,我们的Attention 应该放在哪些地方。 而这个将在下一期带来。

,