论文解读:记忆网络(Memory Network)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014248127/article/details/84894739

在了解vqa问题的论文时,发现有很多论文采用了记忆网络的思路,模拟推理过程,这篇文章主要总结关于记忆网络的三篇经典论文,目的是对记忆网络有个认识。分别是:
MEMORY NETWORKS,End-To-End Memory Networks,Ask Me Anything: Dynamic Memory Networks for Natural Language Processing

一,MEMORY NETWORKS

这是Facebook AI在2015年提出来的:MEMORY NETWORKS。论文是第一次提出记忆网络,利用记忆组件保存场景信息,以实现长期记忆的功能。对于很多神经网络模型,RNN,lstm和其变种gru使用了一定的记忆机制,在Memory Networks的作者看来,这些记忆都太小了。这就是这篇文章的目的。
我将从三个部分讲解这篇文章:

  • 记忆网络各个组件的内容
  • 记忆网络在nlp的使用
  • 损失函数

1,记忆网络:

一个记忆网络(memory networks,简称为MemNN),包括了记忆m,还包括以下4个组件I、G、O、R(lstm的三个门,然后m像cell的list):
在这里插入图片描述

  • I: (input feature map):用于将输入转化为网络里内在的向量。(可以利用标准预处理,例如,文本输入的解析,共参考和实体解析。 还可以将输入编码为内部特征表示,例如,从文本转换为稀疏或密集特征向量)
  • G: (generalization):更新记忆。在作者的具体实现里,只是简单地插入记忆数组里。作者考虑了几种新的情况,虽然没有实现,包括了记忆的忘记,记忆的重新组织。(最简单的G形式是将I(x)存储在存储器中的“slot”中)
    在这里插入图片描述
  • O: (output feature map):从记忆里结合输入,把合适的记忆抽取出来,返回一个向量。每次获得一个向量,代表了一次推理过程。
  • R: (response):将该向量转化回所需的格式,比如文字或者answer。

2,记忆网络在nlp的使用:

场景:给一个段落和一个问题,给出回答

  • I: 输入的是一句话,简单地将I转换为一个频率的向量空间模型。

  • m: 记忆卡槽list。

  • G:简单地把读到的对话组里的每一句话的向量空间模型,插到记忆的list里,这里默认记忆插槽比对话组句子还多。

  • O:就是输入一个问题x,将最合适的k个支撑记忆(the supporting memories,在下文的数据集里会举出例子),也就是top-k。做法就是把记忆数组遍历,挑出最大的值。最后,O返回一个长度为k的数组。
    在这里插入图片描述
    在这里插入图片描述

  • R:利用O得到的输出,返回一个词汇w。
    在这里插入图片描述

  • 打分函数:在O和R中的打分函数:
    在这里插入图片描述

3,损失函数

采用margin ranking loss,这个与支持向量机的损失函数类似。(即是选出最合适中间结果,和得到最好的预测输出。)
在这里插入图片描述

4,理解

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

二,End-To-End Memory Networks

这篇文章是上面一篇文章的基础之上提出来的端到端的训练方式。并提出重复的去提取有用的信息,实现多次推理的过程。End-To-End Memory Networks
在这里插入图片描述

1,单次推理:图a

使用输入集合S={x1,x2,…xi,…,xn}S={x1,x2,…xi,…,xn}表示上下文知识,使用输入向量q表示问题,使用输出向量aˆ表示预测答案。记忆网络模型通过对上下文集合S和问题向量q的数学变换,得到对应于问题的答案。

  • Input memory representation:把 词进行embedding,变成向量放入m中。
  • q:对问题q进行同样的embedding
  • 计算u和记忆m的匹配程度。
    在这里插入图片描述
  • 输出o:记忆m的加权和
    在这里插入图片描述
    -用o,以及问题u预测答案:
    在这里插入图片描述

2,多次推理:图b

  • 每次的更新:
    在这里插入图片描述

  • 经过多次推理,计算输出:
    在这里插入图片描述

  • 对于权重参数设置,作者提出两种方案:
    在这里插入图片描述

三,Ask Me Anything: Dynamic Memory Networks for Natural Language Processing

这篇文章是记忆网络的改进版本,提出的DMN网络模型包含输入、问题、情景记忆、回答四个模块,架构图如下所示。模型首先会计算输入和问题的向量表示,然后根据问题触发Attention机制,使用门控的方法选择出跟问题相关的输入。然后情景记忆模块会结合相关的输入和问题进行迭代生成记忆,并且生成一个答案的向量表示。
Ask Me Anything: Dynamic Memory Networks for Natural Language Processing
在这里插入图片描述

在这里插入图片描述

1,Input Module

使用GRU对输入进行编码,(这里论文中有提到GRU和LSTM,说GRU可以达到与LSTM相似的准确度而且参数更少计算更为高效,但都比RNN要好)

  • 对于单个句子:使用GRU中间的state作为输入
  • 对于多个句子:采用GRU在每个句子的最后状态作为输入

2,Question Module

  • 这部分与Input Module一样,就是使用GRU将Question编码成向量。(不同的是,最后只输出最后的隐层向量即可,而不需要像Input模块那样,输入是句子时,会输出句长个向量)。
  • q向量除了用于Attention外,还会作为Memory模块GRU的初始隐层状态。

3,Episodic Memory Module

这部分主要有三部分:注意力机制、记忆更新、多次迭代。

  • Attention Mechanism:注意力机制:这里使用一个门控函数作为Attention。
    输入是本时刻的输入c,前一时刻的记忆m和问题q。首先计算相互之间的相似度作为特征向量传入一个两层的神经网络,最终计算出来的值就是门控函数的值,也就是该输入与问题之间的相似度。(G是得分函数)
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • Memory Update Mechanism:记忆更新:计算出门控函数的值之后,根据其大小对记忆进行更新。更新方法就是GRU算出的记忆乘以门控值,再加上原始记忆乘以1-门控值。
    在这里插入图片描述

在这里插入图片描述

  • Need for Multiple Episodes:每次迭代关注不同的内容,这样传递推导,检索不同的信息。

3,Answer Module

使用GRU最为本模块的模型,根据memory模块最后的输出向量(将其作为初始隐层状态),然后输入使用的是问题和上一时刻的输出值连接起来(每个时刻都是用q向量)。并使用交叉熵损失函数作为loss进行反向传播训练。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u014248127/article/details/84894739