End-To-End Memory Networks

2014 年 FaceBook 提出了 Memory Networks (MEMNN),MEMNN 会保存上下文句子的信息,使模型拥有更大的记忆,然后利用类似 Attention 的机制找出最相关的记忆。但是 MEMNN 需要进行很多有监督训练,因此 FaceBook 提出了一种更加完善的端到端 Memory Networks (MemN2N),使其更容易使用并且支持多层结构。

1. 前言

前一篇文章介绍了 ,在 MEMNN 中包含了 I, G, O, R 四个模块,其中模块 I 和 G 负责将句子转成向量并保存到 Memory Slots,模块 O 负责找出相关的 Memory,而模块 R 负责输出预测结果。

MEMNN 的有监督训练包含很多要素,除了最终预测的单词外,还包括了最相关的两个 Memory,因此在实际中训练比较困难。

因此 FaceBook 在 2015 年提出了一种改进版的 Memory Network (MemN2N),对应的论文是《End-To-End Memory Networks》。和之前 MEMNN 不同,MemN2N 采用了端到端的训练方式,减少了监督训练的难度。MemN2N 可以支持多层网络结构,我们首先看一下单层结构的 MemN2N,多层结构只是多个单层结构堆叠形成。

下文中 x1, x2, ..., xn 表示上下文信息 (即背景知识),q 表示一个问题,a 表示答案。

2. Single Layer

End-To-End Memory Networks

单层 MemN2N

上图是 MemN2N 的单层结构,可以看到 MemN2N 包含了两个 Memory Slots,分别是 Input memory (图中蓝色) 和 Output memory (图中黄色)。另外还包含一个 Predict 模块,用来预测答案 a。

Input Memory:对于所有上下文句子 xi,Input Memory 都会使用矩阵 A 计算出对应的句子向量 mi 并保存在 Input Memory 里面。句子向量生成的方法在第 4 节介绍。保存好 memory 后传入问题 q,用矩阵 B 计算出 q 对应的特征向量 u,然后 Input Memory 需要用 attention 机制计算出每一个 memory mi 对应的权重 pi,计算公式如下。

End-To-End Memory Networks

Output Memory:和 Input Memory 一样,Output Memory 会使用矩阵 C 计算出上下文句子 xi 的特征向量 ci,然后根据 Input Memory 得到的权重 pi 将特征向量 ci 加权融合在一起,得到最终的输出特征 o。

End-To-End Memory Networks

Prediction:最终的预测模块,预测前将问题的特征向量 u 和最后输出的特征向量 o 相加,然后传入一个 softmax 层进行预测。

End-To-End Memory Networks

3. Multiple Layers

End-To-End Memory Networks

多层 MemN2N

MemN2N 可以支持多层结构,如上图所示,此时MemN2N 包含多个 Input Memory 和 Output Memory。除了第一层外,其他所有层的输入向量 u(k+1) 都是上一层的输入向量 uk 和输出向量 ok 之和。

End-To-End Memory Networks

在多层结构时 (K 层),每一层的特征矩阵 A1, A2, .., AKC1, C2, .., CK 有不同的设置方法,文章中提到了两种:

AdjacentA(k+1) = C(k), W = C(K), B = A(1)

Layer-wise (RNN-like)A(1) = A(2) = ... = A(K)C(1) = C(2) = ... = C(K)

4. 句子向量计算

给定一个句子 xi,其包含很多的单词 {xi1, xi2, ..., xin},最简单的句子向量计算方法是使用 bag-of-words BoW,直接将句子中所有单词的表征向量求和得到。但是直接使用 BoW 求和没有考虑到单词之间的位置信息和句子之间的位置信息。

因此 MemN2N 提出了第二种计算句子向量的方法,考虑了句子中每一个单词的位置信息,计算方式如下:

End-To-End Memory Networks

公式中 A(xij) 指单词 xij 的表征向量,lj 中的 j 是单词在句子中的位置,lj 是单词位置的表征向量,通过 lj 可以引入单词位置的信息。MemN2N 在此基础上还加上一个 Temporal Encoding,编码句子在所有上下文中的位置信息 T(i),最终的句子向量如下计算:

End-To-End Memory Networks

5. 参考文献

《End-To-End Memory Networks》


分享到:


相關文章: