End-To-End Memory Networks【论文笔记】

一、摘要

  作者介绍了引入可能很大的外部存储器的递归注意力模型。这种架构是记忆网络的一种形式,但与之前的不同,它是可以端到端训练的。模型的灵活性使得我们能够将其应用于各种任务,如问答、语言建模。在实验中,作者介绍的多条机制提升了模型效果。

二、介绍

  AI研究的两个巨大挑战就是:1.搭建一个模型,可以在回答问题或完成任务的时候进行多条计算;2.在序列数据中捕捉长距离依赖关系。
  最近使用显式存储和注意力机制的计算模型开始活跃起来了,操作这样的存储器提供了解决这两个挑战的方法。存储器具有联系的表示,可以进行读写操作,以及其他模型定义的操作。
  在本篇论文中,作者提出了一种新颖的RNN架构,在输出最终的符号之前,从外部存储器读取多次。作者提出的模型可以视为是之前记忆网络的连续形式。之前的记忆网络无法端到端训练。

三、方法

  我们的模型将一组离散的输入x1,...,xnx_1,...,x_nx1​,...,xn​存储到记忆中,给定查询q,输出答案a。每一个xi,q,ax_i,q,axi​,q,a都包含来自V个词的词典的符号,模型将所有x写入到记忆中知道固定的缓冲区大小,然后找到x和q的连续表示。这个连续表示通过多跳(multiple hops) 处理输出答案a。这允许在训练期间通过多次存储器访问将误差信号反向传播回输入。

3.1 Single Layer

  首先介绍模型只有一层的情况,只实现了一个hop的操作,之后我们可以堆叠实现多跳。

  • Input memory representation: 给定存储在记忆的输入集x1,...,xix_1,...,x_ix1​,...,xi​,整个集合{xi}\{x_i\}{xi​}会转换为d维的记忆向量{mi}\{m_i\}{mi​},通过将xix_ixi​编码在一个连续的向量中间中,最简单的方式就是使用一个矩阵A(d×V)(d\times V)(d×V)。查询q也通过类似的方式(矩阵B)转换为内部状态u。在向量空间中,我们通过内积计算u和mim_imi​的匹配程度:
    pi=Softmax(uTmi)p_i=Softmax(u^Tm_i)pi​=Softmax(uTmi​)
  • Output memory representation: 每个xix_ixi​会有一个相对应的输出向量cic_ici​(矩阵C),回复向量o就可以通过加权得到:
    o=ipicio=\sum_ip_ic_io=i∑​pi​ci​因为这个函数从输入到输出是端到端的,我们可以很容易地计算梯度和反向传播。
  • Generating the final prediction: 在单层的情况中,输出向量o和输入向量u相加之后乘以矩阵W(V×d)(V\times d)(V×d)经过softmax生成最终的标签:
    a^=Softmax(W(o+u))\hat a=Softmax(W(o+u))a^=Softmax(W(o+u))
    End-To-End Memory Networks【论文笔记】

3.2 Multiple Layer

  接下来介绍下多跳的实现过程。

  • 第k+1层的输入是第k层的输出oko^kok和输入uku^kuk的和(当然还有其它组合方式):uk+1=uk+oku^{k+1}=u^k+o^kuk+1=uk+ok
  • 每一层都有自己的参数矩阵Ak,CkA^k,C^kAk,Ck来编码输入{xi}\{x_i\}{xi​}。 然而,为了减少参数的数量和便于训练,我们会限制参数矩阵。
  • 在网络的顶层,参数矩阵W也会和最顶层的记忆层的输入uKu^KuK和输出oKo^KoK相结合。
    a^=Softmax(Wuk+1)=Softmax(W(oK+uK))\hat a=Softmax(Wu^{k+1})=Softmax(W(o^K+u^K))a^=Softmax(Wuk+1)=Softmax(W(oK+uK))
    我们在模型中探索了两种权重方案:
  • 1.Adjacent下层的输出向量是上层的输入向量,Ak+1=CkA^{k+1}=C^kAk+1=Ck。同时约束答案预测矩阵与最终的输出矩阵相同,即WT=CKW^T=C^KWT=CK,第一层的问题矩阵与输入矩阵相同,即B=A1B=A^1B=A1。
  • 2.Layer-wise (RNN-like) 不同层的输入输出矩阵都是相等的,A1=A2=...=AK,C1=C2=...=CKA^1=A^2=...=A^K,C^1=C^2=...=C^KA1=A2=...=AK,C1=C2=...=CK。我们发现在不同跳之间对u的更新添加一个线性映射是有效果的,uK+1=HuK+oku^{K+1}=Hu^K+o^kuK+1=HuK+ok。
    如果我们使用第二种权重方案,我们的模型就可以视为传统的RNN,将RNN的输出分为内部的输出和外部的输出。内部输出相对应于存储器,外部输出相对应于预测标签。从RNN的角度来说,u是隐藏层状态,模型使用矩阵A生成内部输出p,然后与矩阵C加权求和,更新隐藏层状态。不像标准的RNN,我们明确地对K跳期间存储在存储器中的输出进行调节,并且我们keep outputs soft,而不是对它们进行采样。

四、相关工作

  最近有研究者探索了使用RNN或基于LSTM的模型捕获序列内长期结构的方法。这些模型中的记忆是网络的状态,它在很长的时间尺度上是潜在的并且不稳定。基于LSTM的模型通过本地存储器单元来解决这个问题,该存储器单元锁定了过去的网络状态。通过实验,这相对于RNN是由提升的。我们的模型与这些模型的不同之处在于它使用全局内存,具有共享读写功能。然而,对于分层权重方案,我们的模型可以被视为RNN的一种形式,其仅在固定数量的时间步长(对应于跳数)之后产生输出,其中间步骤涉及存储器更新内部状态的输入/输出操作。

五、问答实验

  在问答任务上进行实验,一个给定的问答任务包含一系列事实,紧跟着一个问题,问题的答案是一个单词。共有20种不同类型的任务可以探索不同形式的推理和演绎。
End-To-End Memory Networks【论文笔记】
  对每个问题,只有一部分的事实才包含答案需要的信息,而另一部分事实是无关的。在之前的记忆网络中,这种信息是明确指示给模型的,而本文的工作不再提供该信息,因此本文的网络是可以端到端训练的。因此,模型必须在训练和测试时间推断出哪些句子是相关的,哪些不是。
  对于20个QA任务之一,我们给定了一些问题,每个问题包含I个句子{xi},I320\{x_i\},I\leq320{xi​},I≤320,问句q,答案a。句子i的第j个词xijx_{ij}xij​,用长为V的0-1编码表示(词汇大小V=177),同样用0-1编码来表示问题q和答案a。使用两种版本的数据集,每个任务1000个问题和每个任务10000个问题。

5.1模型细节

  除非另有说明,所有实验都使用K=3跳,Adjacent权重方案。

  • Sentence Representation: 在实验中,我们探索了两种不同的句子表示方法。第一种是BoW,将句子xi={xi1,xi2,...,xin}x_i=\{x_{i1},x_{i2},...,x_{in}\}xi​={xi1​,xi2​,...,xin​}的每个单词进行编码然后求和:mi=jAxij,ci=jCxijm_i=\sum_jAx_{ij},c_i=\sum_jCx_{ij}mi​=∑j​Axij​,ci​=∑j​Cxij​,问题也通过BoW编码为输入向量u:u=jBqju=\sum_jBq_ju=∑j​Bqj​,这种表示有个缺点就是它无法捕捉词序的信息,这种信息在一些任务上是很重要的。
    因此在第二种表示方法中考虑了词的位置信息。mi=jljAxijljm_i=\sum_jl_j*Ax_{ij},l_jmi​=∑j​lj​∗Axij​,lj​是一个列向量:lkj=(1j/J)(k/d)(12j/J)l_{kj}=(1-j/J)-(k/d)(1-2j/J)lkj​=(1−j/J)−(k/d)(1−2j/J),J是句子的单词数,d是词向量维度。这种表示称之为Position encoding(PE),意味着词的顺序会影响mim_imi​。将这种表示用于问题、记忆输入输出。
  • Temporal Encoding: 很多QA任务需要关注时间上下文的信息,比如第一个例子,模型需要知道Sam在厨房后去了卧室。为了让模型关注到这些信息,我们修改了记忆向量mi=jAxij+TA(i)m_i=\sum_jAx_{ij}+T_A(i)mi​=∑j​Axij​+TA​(i),其中TA(i)T_A(i)TA​(i)是TAT_ATA​矩阵的第i行,编码了时序信息。输出向量也作了同样方式的修改:ci=jCxij+TC(i)c_i=\sum_jCx_{ij}+T_C(i)ci​=∑j​Cxij​+TC​(i)。TATCT_A和T_CTA​和TC​都是参数矩阵,随模型一起训练。
  • Learning time invariance by injecting random noise: 我们发现添加虚拟记忆有助于规范化TAT_ATA​,因此在训练期间随机添加10%的空记忆。这种方法称为随机噪声。

5.2 实验结果

  从实验结果看,作者的最好的MemN2N模型与强监督MemNN模型仍有一定差距,但是又比弱监督模型要好得多。PE表示比BoW表示要好,表明词序信息是很重要的。LS(linear start training)在一定程度上避免了局部最优。RN提升了结果,在小数据集上更加明显。联合训练所有任务也有一定的提升。更重要的是,多跳也提升了性能。
End-To-End Memory Networks【论文笔记】

六、总结

  在这项工作中,我们展示了一个具有显性记忆和注意力机制的神经网络,可以通过反向传播成功地训练从问答到语言建模的各种任务。与之前的记忆网络相比,这个网络可以端到端进行训练。

上一篇:「Computer Vision」Note on Double Attention Networks


下一篇:你绝对值得一看的经典教材!神经网络和深度学习(迈克尔·尼尔逊)