一、摘要
作者介绍了引入可能很大的外部存储器的递归注意力模型。这种架构是记忆网络的一种形式,但与之前的不同,它是可以端到端训练的。模型的灵活性使得我们能够将其应用于各种任务,如问答、语言建模。在实验中,作者介绍的多条机制提升了模型效果。
二、介绍
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=i∑pici因为这个函数从输入到输出是端到端的,我们可以很容易地计算梯度和反向传播。 - 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},I≤320,问句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=∑jlj∗Axij,lj是一个列向量: l k j = ( 1 − j / J ) − ( k / d ) ( 1 − 2 j / 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),意味着词的顺序会影响 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 TA和TC都是参数矩阵,随模型一起训练。
- Learning time invariance by injecting random noise: 我们发现添加虚拟记忆有助于规范化 T A T_A TA,因此在训练期间随机添加10%的空记忆。这种方法称为随机噪声。
5.2 实验结果
从实验结果看,作者的最好的MemN2N模型与强监督MemNN模型仍有一定差距,但是又比弱监督模型要好得多。PE表示比BoW表示要好,表明词序信息是很重要的。LS(linear start training)在一定程度上避免了局部最优。RN提升了结果,在小数据集上更加明显。联合训练所有任务也有一定的提升。更重要的是,多跳也提升了性能。
六、总结
在这项工作中,我们展示了一个具有显性记忆和注意力机制的神经网络,可以通过反向传播成功地训练从问答到语言建模的各种任务。与之前的记忆网络相比,这个网络可以端到端进行训练。