论文阅读:记忆网络《Memory Network》


摘要

Memory Networks(记忆网络) 通过结合 长时记忆模块 和 推断模块 来进行推理。长时记忆模块可以进行读写,目的是用来预测。我们在问答(QA)的背景下研究这些模型,其中长时记忆模块有效地充当(动态)知识库,并且输出是文本响应。 我们根据大规模QA任务以及由模拟世界生成的较小但更复杂的toy task对它们进行评估。 在后者中,我们通过链接多个支持语句来回答需要理解动词意图的问题,从而展示了这种模型的推理能力。

引入

现有的大多数机器学习模型,比如RNN,记忆能力太弱,往往无法解决长期记忆的问题。记忆网络的提出就是为了解决这个问题。这是Facebook AI在2015年提出来的:MEMORY NETWORKS。论文提出记忆网络,利用记忆组件保存场景信息,以实现长期记忆的功能。

记忆网络结构

在这里插入图片描述
记忆网络相对于其他模型不同的实现是:增加一个m模块。m是一个对象数组,文章叫成slot(插槽)。记忆一个事实(一般是对话组里的一句话),就把它“插”到记忆(数组)里。

一个记忆网络(memory networks,简称为MemNN),包括了上述的记忆m,还包括以下4个组件I、G、O、R。

I : 即input,输入特征映射,把输入转变成内部的特征表示
G : 即generalization,在新的输入来时更新旧的内存。更新记忆在作者的具体实现里,只是简单地插入记忆数组里。作者考虑了几种新的情况:包括了记忆的忘记,记忆的重新组织,但是没有实现。
O : 即output,输出特征映射。从记忆里结合输入,把合适的记忆抽取出来,返回一个向量。每次获得一个向量,代表了一次推理过程。
R : 即response,回馈结果, 把输出转化为想要的格式,比如文本或者动作Action。对于R来说,最简单的是,直接返回o的第一个支撑记忆,也就是一句话。当然作者,打算弄复杂点,返回一个词汇w。

计算步骤如下:
在这里插入图片描述
以上1-4的过程在 训练和测试 的时候差不多,但是测试的时候 I G O R 没有更新。

为文本实现的记忆网络

1. 基本模型

根据论文中的介绍,这个模型可以写成如下:
在这里插入图片描述
这里打分函数的设置如下:
在这里插入图片描述
其中,U是一个权重矩阵,维度为n*D。D是输入向量的维度(特征数),n是嵌入的维度,n是一个超参数。 Ф Ф 是把原始文本转换到D为特征空间的函数。作者使用 D = 3 l e n W D=3*lenW 的维度。这里考虑了3倍向量空间模型长度,一份是给了 ϕ y \phi_y ,一份是给了x是输入的问题时的 ϕ x \phi_x ,一份是给了x是支撑记忆时的 ϕ x \phi_x ,三份直接连接在一起就可以了。
在这里插入图片描述
训练过程:使用margin ranking loss和sgd,在SVM和TransE里已经见识过了,就不赘述,复制公式如下:
在这里插入图片描述
f ¯ f ¯ f¯′ 分别是第一和第二个支撑记忆, r ¯ r¯′ 是正确答案。(即是选出最合适中间结果,和得到最好的预测输出。)对的,读者也发现了,MemNN是一个监督学习的算法。(以后很多记忆模型,改成了弱监督了,以N2N为代表)注意,这里有两个监督的部分,一个是支撑记忆,一个是正确答案。

  • 记忆网络是一个组件形式的模型,每个模型相互对立又相互影响。每个组件没有固定的模型,可以是传统的模型,也可以是神经网络。
  • 论文的缺陷没有思想端到端的训练,端到端的训练将在下面介绍。

2. 基本模型的改进

1、输入是连续的词汇。使用RNN之类的产生一些词序列,作者加了一层,叫做segment。

2、在G的时候,我们是简单把原向量“插进”记忆数组里,如果是把向量“hash”进去呢?

3、考虑写入的时间。由于下面的代码使用了这个情况,在这里就多讲述。作者针对这种情况的方法是增加了3个维度的,D=3*lenW+3。加上存在一个输入 x x ,一个记忆 y y 和另一个记忆 y y′ 如图:
在这里插入图片描述
这里3个维度分别代表:x is older than y,x is older than y′, y older than y′,这里xyy’可以是问句也可以是陈述句。
  在训练之前三个维度都为0。训练的时候,对于三种情况,如果都符合,则都赋予1。特别的,如果x是问句时,则前两个维度都置为0,因为问句一定是最新的。
这时O的公式改变了,(R仍然不变,见上文):
在这里插入图片描述
训练过程的cost变为如下。能看出这里分为两部分,加部分和减部分:
在这里插入图片描述
在这里插入图片描述

增加这三个维度,使得记忆模型可以知道记忆的相对写入时间,也就知道对话的顺序(order)。当然,如果对话里自身就包括了时间词或者时间状态,则也不一定需要这三个维度。
  4、如果有未登录词汇呢?For example, the first time the word “Boromir” appears in Lord of The Rings。作者把D增加到了5lenW。
  5、更精确的匹配。作者把D增加到了8
lenW。

实验

代码来源:https://github.com/npow/MemNN(万分感谢作者)
     https://github.com/wuxiyu/MemNN(另一个作者的folk,添加了注释和数据集)

结论

本文介绍了记忆网络。未来的工作应该进一步开发用于文本的MemNN,并在较难的QA和开放域机器理解任务上对其进行评估。例如,还应尝试进行需要多跳推理的大规模QA任务。还可以构建更复杂的模拟数据以弥合该差距,例如,需要共指,涉及更多的动词和名词,具有更多结构的句子以及需要更多时间和因果关系的理解。为了处理这些任务,还应探索更复杂的架构,例如,通过G使用更复杂的内存管理和更复杂的句子表示形式。弱监督的设置也非常重要,应加以探索,因为许多数据集仅以问题答案对的形式进行监督,并不像我们在此使用的那样支持事实。最后,我们认为这类模型比我们在此详述的一个特定变体要丰富得多,并且我们目前仅探索了存储器网络的一个特定变体。内存网络也应应用于其他文本任务和其他领域,例如视觉。

我的参考博文

  1. https://blog.csdn.net/u014248127/article/details/84894739
  2. https://blog.csdn.net/u011274209/article/details/53384232
  3. https://blog.csdn.net/guotong1988/article/details/54883129
发布了21 篇原创文章 · 获赞 3 · 访问量 625

猜你喜欢

转载自blog.csdn.net/qq_38293297/article/details/104497455