End2End

1、文章来源

本文是Facebook的研究工作,发表在NIPS2015上。

2、要解决的问题及已有方法

文章认为,智能模型的关键在以下两点:

  • 在完成任务或者回答问题的时候如何执行多步的计算;
  • 如何描述序列中的长时依赖。

已有的工作:

  • memory network,不连续,无法端到端的训练因此无法用于很多实际任务中。而且该模型需要数据集中具有更多的信息。
  • RNNSearch,产生一个输出的时候没有进行多步计算(hop),而本文实验表明,多步计算对于取得良好效果很关键。而且,长时依赖用RNN的状态表示,是不可见和不稳定的。再有就是,RNNSearch使用的注意力机制用于整句话中,而本文的memory可以用于更大的范围
  • 神经图灵机NTM,相对于NTM,本文的模型更简单,不需要锐化等操作,而且在实验方面,本文进行的是文本推理任务,而NTM进行了复制、排序等任务。

本文提出了一个类似于《Memory Networks》的网络,但是能够端到端的训练,可以看做是RNNsearch的扩展。

3、提出的解决方法

接受输入(这些输入存储到memory中),问题,产生答案

单层模型(描述了该模型的工作原理):

  • 首先计算输入的向量表示:把转化为d维向量表示,把问题转化为d维向量表示。(最简单的方式)可以利用两个embedding矩阵A和B。文章中的实验部分包含对句子表示计算方式的进一步阐述。
  • 使用内积计算u和每个的相似度。这里的结果p表征了一种类似于注意力的权重。
  • 利用另一个embedding矩阵C,把转化为输出向量,计算从memory得到的输入向量o:
  • 进而,使用o和u通过softmax得到最终的结果:

整个模型如下图所示。其中参数矩阵A、B、C、W通过SGD算法最小化进行学习。

多层模型如上图右边所示,其中,

而且每一层都有对应的A、C矩阵。这些权重的取值,论文中探究了两种:

  • adjacent:也就是,,
  • layer-wise:,,

在layer-wise的权值关系下,这个模型可以认为是RNN的一种扩展,但是每次产生输入中引入的计算步更多。

4、对该方法的实验评估

上面的模型还有一点没有具体讲,就是句子表示的产生方式(如何用向量表示句子):

  • BOW即词袋模型的表示方式:把每个单词的表示加在一起,比如:,这样做的缺点是无法获得词序信息。
  • PE即词序编码的表示方式:首先产生一个向量表示第j个单词的位置信息,其中。将此信息用于句子表示的计算中,比如:

此外,在memory中有时还需要进行时序推理,因此增加了对m的时序编码:

,其中是矩阵的第i行,该矩阵用来编码时序信息。

上述的模型在文章中叫做MemN2N。在《Towards AI-complete question answering:A set of prerequisite toy tasks. 》这篇2015年论文的数据集上进行了QA实验。并和LSTM、MemNN等模型在上述数据集上进行了比较。其错误率低于除了强监督式学习的MemNN之外的其他baseline。

此外,MemN2N还在语言模型任务上同RNN、LSTM、SCRN在PTB和Text8数据集上进行了对比。PPL指标超过了这些模型。

这些实验说明,本文提出的可以使用反向传播进行端到端训练的包含memory的网络可行而且具有不错的性能。不足之处在于,同MemNN这种强监督式学习的模型相比,性能还有所不如。