End-To-End Memory Networks
-
Abstract
本文引入了一种神经网络,该网络在一个可能很大的外部记忆上具有递归注意模型。该体系结构是记忆网络的一种形式,但与该工作中的模型不同,它是端到端训练的,因此在训练期间需要的监督大大减少,使其更适用于现实环境。它也可以被看作是RNNearch到每个输出码元执行多个计算步骤(跳)的情况的扩展。该模型的灵活性允许我们将其应用于各种任务,如(合成的)问题回答和语言建模。
Approach
模型采用要存储在存储器中的一组离散的输入x1、…、xnx_1、…、x_nx1、…、xn,即查询q,并输出答案a。xix_ixi、q和a中的每一个都包含来自具有V个单词的词典的符号。该模型将所有x写入存储器,直到固定的缓冲区大小,然后找到x和q的连续表示。然后,通过多次跳跃来处理连续表示以输出a。这允许在训练期间通过多次存储器访问将误差信号反向传播回输入。
Single Layer
单个内存跳跃操作
Input memory representation
首先使用嵌入矩阵A∈Rd×VA \in R^{d\times V}A∈Rd×V将每个xix_ixi嵌入到连续空间中来计算维度d的记忆向量mim_imi。整个向量集合{xix_ixi}转换为记忆向量{mim_imi},查询q也通过另一个与A相同维度的嵌入矩阵B获得内部状态uuu。
在嵌入空间中,通过取内积后跟SOftmax来计算uuu与每个存储器mim_imi之间的匹配
pi=SoftmaxuTmip_i=\text{Softmax}{u^Tm_i}pi=SoftmaxuTmiOutput memory representation
每个xix_ixi具有对应的输出向量CiC_iCi(在最简单的情况下由另一个嵌入矩阵C给出)。然后,来自存储器o的响应向量是Ci上的和,由来自输入的概率向量加权:
o=∑ipicio = \sum_ip_ic_io=∑ipiciGenerating the final prediction
在单层情况下,输出向量o和输入嵌入u的和然后通过最终权重矩阵W(大小为V×d)和Softmax来产生预测标签
a∧=Softmax(W(0+u))\overset{\wedge}{a}=\text{Softmax}(W(0+u))a∧=Softmax(W(0+u))
Multiple Layers
就是在第一层上进行堆叠
知乎上有大佬画了记忆网络的图形,比较直观,如下图所示:
启示
- 阅读理解任务可以用这种方法进行堆叠,方法比较简单