关注微信公众号:NLP分享汇。【喜欢的扫波关注,每天都在更新自己之前的积累】
文章链接:https://mp.weixin.qq.com/s/NIENYhe_sYZbQZapaI0_mw
背景:Memory Networks是怎样诞生的?
在处理与过去经验或外部知识来源有关的问题时,记忆是一个至关重要的组成部分。人脑的海马体和计算机的硬盘是人类和计算机读写记忆所依赖的部件。传统的模型很少有内存组件,缺乏知识重用和推理能力。RNN通过时间步迭代传递历史信息,在某种程度上,可以将其视为一个内存模型。然而,LSTM是RNN的一个强大变体,具有长期和短期记忆,但即使是LSTM,其记忆模块也太小,事实没有明确区分,因此无法压缩特定的知识事实并在任务中重用。
一、Weston J, Chopra S, Bordes A (2014) Memory networks
原文链接:https://arxiv.org/pdf/1410.3916
模型结构
Memory Networks是 FaceBook 2014 年的论文首次提出,可以解决传统模型不能有效利用长期记忆进行推理的问题。是一种具有内存组件的模型。正如他们在工作中所描述的,一个内存网络有五个模块:
-
一个内存模块:用来存储记忆事实的表示
-
一个 I 模块:它将输入内存事实映射到嵌入表示;
-
一个 G 模块:它决定内存模块的更新;
-
一个 O 模块:它根据输入表示和存储表示生成输出;
-
一个 R 模块:它根据' O '模块的输出组织最终的响应。
该模型需要对每个模块都有很强的监督信号,因此不适合端到端的培训。
最后,给个例子:
如上图中的例子,上下文句子包括前两行的所有句子,这些句子都保存在 Memory Slots 中。
在回答第一个问题:Where is the milk now?,MEMNN首先要在 Memory 中找到最相关的句子 m1 = "Joe travelled to the office" 。然后根据问题 和 m1 找到下一个相关句子 m2 = "Joe left the milk" ,最后通过模块 R 得到答案 "office"。
二、Sukhbaatar S, Szlam A, Weston J, Fergus R (2015) End-to-end memory networks
原文链接:https://arxiv.org/pdf/1503.08895.pdf%5D.
该文章将Weston之前的工作扩展到端到端存储网络,该网络被普遍接受为易于训练和应用的标准存储网络。
下图为被提出的End-to-end memory networks。该结构由三阶段组成:
-
weight calculation
-
memory selection
-
final prediction
图1 end-to-end memory networks
1、weight calculation
该模型首先使用一个表示模型A将输入内存集{xi}转换为内存表示{mi},然后使用另一个表示模型B将输入查询映射到其embedding空间,得到一个embedding向量u。最终的权重计算公式如下:
2、memory selection
在生成最终预测之前,首先使用另一个表示模型C将输入存储xi编码为embedding向量ci,然后使用上一阶段计算的权重计算{ci}的加权和,从而生成选定的存储向量(memory vector)。如公式22所示,o表示被选定的memory vector。在内存表示中找不到此向量。软存储器的选择有利于梯度计算的可微性,使整个模型端到端的可训练。
3、final prediction
通过将所选内存o和查询u的求和向量映射到概率向量a^中,得到最终的预测。计算公式如下: