一、摘要
作者介绍了引入可能很大的外部存储器的递归注意力模型。这种架构是记忆网络的一种形式,但与之前的不同,它是可以端到端训练的。模型的灵活性使得我们能够将其应用于各种任务,如问答、语言建模。在实验中,作者介绍的多条机制提升了模型效果。
二、介绍
AI研究的两个巨大挑战就是:1.搭建一个模型,可以在回答问题或完成任务的时候进行多条计算;2.在序列数据中捕捉长距离依赖关系。
最近使用显式存储和注意力机制的计算模型开始活跃起来了,操作这样的存储器提供了解决这两个挑战的方法。存储器具有联系的表示,可以进行读写操作,以及其他模型定义的操作。
在本篇论文中,作者提出了一种新颖的RNN架构,在输出最终的符号之前,从外部存储器读取多次。作者提出的模型可以视为是之前记忆网络的连续形式。之前的记忆网络无法端到端训练。
三、方法
我们的模型将一组离散的输入x1,...,xn存储到记忆中,给定查询q,输出答案a。每一个xi,q,a都包含来自V个词的词典的符号,模型将所有x写入到记忆中知道固定的缓冲区大小,然后找到x和q的连续表示。这个连续表示通过多跳(multiple hops) 处理输出答案a。这允许在训练期间通过多次存储器访问将误差信号反向传播回输入。
3.1 Single Layer
首先介绍模型只有一层的情况,只实现了一个hop的操作,之后我们可以堆叠实现多跳。
-
Input memory representation: 给定存储在记忆的输入集x1,...,xi,整个集合{xi}会转换为d维的记忆向量{mi},通过将xi编码在一个连续的向量中间中,最简单的方式就是使用一个矩阵A(d×V)。查询q也通过类似的方式(矩阵B)转换为内部状态u。在向量空间中,我们通过内积计算u和mi的匹配程度:
pi=Softmax(uTmi) -
Output memory representation: 每个xi会有一个相对应的输出向量ci(矩阵C),回复向量o就可以通过加权得到:
o=i∑pici因为这个函数从输入到输出是端到端的,我们可以很容易地计算梯度和反向传播。 -
Generating the final prediction: 在单层的情况中,输出向量o和输入向量u相加之后乘以矩阵W(V×d)经过softmax生成最终的标签:
a^=Softmax(W(o+u))
3.2 Multiple Layer
接下来介绍下多跳的实现过程。
- 第k+1层的输入是第k层的输出ok和输入uk的和(当然还有其它组合方式):uk+1=uk+ok
- 每一层都有自己的参数矩阵Ak,Ck来编码输入{xi}。 然而,为了减少参数的数量和便于训练,我们会限制参数矩阵。
- 在网络的顶层,参数矩阵W也会和最顶层的记忆层的输入uK和输出oK相结合。
a^=Softmax(Wuk+1)=Softmax(W(oK+uK))
我们在模型中探索了两种权重方案: - 1.Adjacent下层的输出向量是上层的输入向量,Ak+1=Ck。同时约束答案预测矩阵与最终的输出矩阵相同,即WT=CK,第一层的问题矩阵与输入矩阵相同,即B=A1。
- 2.Layer-wise (RNN-like) 不同层的输入输出矩阵都是相等的,A1=A2=...=AK,C1=C2=...=CK。我们发现在不同跳之间对u的更新添加一个线性映射是有效果的,uK+1=HuK+ok。
如果我们使用第二种权重方案,我们的模型就可以视为传统的RNN,将RNN的输出分为内部的输出和外部的输出。内部输出相对应于存储器,外部输出相对应于预测标签。从RNN的角度来说,u是隐藏层状态,模型使用矩阵A生成内部输出p,然后与矩阵C加权求和,更新隐藏层状态。不像标准的RNN,我们明确地对K跳期间存储在存储器中的输出进行调节,并且我们keep outputs soft,而不是对它们进行采样。
四、相关工作
最近有研究者探索了使用RNN或基于LSTM的模型捕获序列内长期结构的方法。这些模型中的记忆是网络的状态,它在很长的时间尺度上是潜在的并且不稳定。基于LSTM的模型通过本地存储器单元来解决这个问题,该存储器单元锁定了过去的网络状态。通过实验,这相对于RNN是由提升的。我们的模型与这些模型的不同之处在于它使用全局内存,具有共享读写功能。然而,对于分层权重方案,我们的模型可以被视为RNN的一种形式,其仅在固定数量的时间步长(对应于跳数)之后产生输出,其中间步骤涉及存储器更新内部状态的输入/输出操作。
五、问答实验
在问答任务上进行实验,一个给定的问答任务包含一系列事实,紧跟着一个问题,问题的答案是一个单词。共有20种不同类型的任务可以探索不同形式的推理和演绎。
对每个问题,只有一部分的事实才包含答案需要的信息,而另一部分事实是无关的。在之前的记忆网络中,这种信息是明确指示给模型的,而本文的工作不再提供该信息,因此本文的网络是可以端到端训练的。因此,模型必须在训练和测试时间推断出哪些句子是相关的,哪些不是。
对于20个QA任务之一,我们给定了一些问题,每个问题包含I个句子{xi},I≤320,问句q,答案a。句子i的第j个词xij,用长为V的0-1编码表示(词汇大小V=177),同样用0-1编码来表示问题q和答案a。使用两种版本的数据集,每个任务1000个问题和每个任务10000个问题。
5.1模型细节
除非另有说明,所有实验都使用K=3跳,Adjacent权重方案。
-
Sentence Representation: 在实验中,我们探索了两种不同的句子表示方法。第一种是BoW,将句子xi={xi1,xi2,...,xin}的每个单词进行编码然后求和:mi=∑jAxij,ci=∑jCxij,问题也通过BoW编码为输入向量u:u=∑jBqj,这种表示有个缺点就是它无法捕捉词序的信息,这种信息在一些任务上是很重要的。
因此在第二种表示方法中考虑了词的位置信息。mi=∑jlj∗Axij,lj是一个列向量:lkj=(1−j/J)−(k/d)(1−2j/J),J是句子的单词数,d是词向量维度。这种表示称之为Position encoding(PE),意味着词的顺序会影响mi。将这种表示用于问题、记忆输入输出。 - Temporal Encoding: 很多QA任务需要关注时间上下文的信息,比如第一个例子,模型需要知道Sam在厨房后去了卧室。为了让模型关注到这些信息,我们修改了记忆向量mi=∑jAxij+TA(i),其中TA(i)是TA矩阵的第i行,编码了时序信息。输出向量也作了同样方式的修改:ci=∑jCxij+TC(i)。TA和TC都是参数矩阵,随模型一起训练。
- Learning time invariance by injecting random noise: 我们发现添加虚拟记忆有助于规范化TA,因此在训练期间随机添加10%的空记忆。这种方法称为随机噪声。
5.2 实验结果
从实验结果看,作者的最好的MemN2N模型与强监督MemNN模型仍有一定差距,但是又比弱监督模型要好得多。PE表示比BoW表示要好,表明词序信息是很重要的。LS(linear start training)在一定程度上避免了局部最优。RN提升了结果,在小数据集上更加明显。联合训练所有任务也有一定的提升。更重要的是,多跳也提升了性能。
六、总结
在这项工作中,我们展示了一个具有显性记忆和注意力机制的神经网络,可以通过反向传播成功地训练从问答到语言建模的各种任务。与之前的记忆网络相比,这个网络可以端到端进行训练。