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

一、摘要

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

二、介绍

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

三、方法

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

3.1 Single Layer

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

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

3.2 Multiple Layer

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

  • 第k+1层的输入是第k层的输出 o k o^k ok和输入 u k u^k uk的和(当然还有其它组合方式): u k + 1 = u k + o k u^{k+1}=u^k+o^k uk+1=uk+ok
  • 每一层都有自己的参数矩阵 A k , C k A^k,C^k Ak,Ck来编码输入 { x i } \{x_i\} {xi}。 然而,为了减少参数的数量和便于训练,我们会限制参数矩阵。
  • 在网络的顶层,参数矩阵W也会和最顶层的记忆层的输入 u K u^K uK和输出 o K o^K oK相结合。
    a ^ = S o f t m a x ( W u k + 1 ) = S o f t m a x ( W ( o K + u K ) ) \hat a=Softmax(Wu^{k+1})=Softmax(W(o^K+u^K)) a^=Softmax(Wuk+1)=Softmax(W(oK+uK))
    我们在模型中探索了两种权重方案:
  • 1.Adjacent下层的输出向量是上层的输入向量, A k + 1 = C k A^{k+1}=C^k Ak+1=Ck。同时约束答案预测矩阵与最终的输出矩阵相同,即 W T = C K W^T=C^K WT=CK,第一层的问题矩阵与输入矩阵相同,即 B = A 1 B=A^1 B=A1
  • 2.Layer-wise (RNN-like) 不同层的输入输出矩阵都是相等的, A 1 = A 2 = . . . = A K , C 1 = C 2 = . . . = C K A^1=A^2=...=A^K,C^1=C^2=...=C^K A1=A2=...=AK,C1=C2=...=CK。我们发现在不同跳之间对u的更新添加一个线性映射是有效果的, u K + 1 = H u K + o k u^{K+1}=Hu^K+o^k 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个句子 { x i } , I ≤ 320 \{x_i\},I\leq320 {xi},I320,问句q,答案a。句子i的第j个词 x i j x_{ij} xij,用长为V的0-1编码表示(词汇大小V=177),同样用0-1编码来表示问题q和答案a。使用两种版本的数据集,每个任务1000个问题和每个任务10000个问题。

5.1模型细节

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

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

5.2 实验结果

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

六、总结

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值