论文笔记《End to end memory networks》

论文地址
论文代码


这篇论文在简介中说是基于Memory Network而来的。


论文第一部分介绍说这相当于一个连续型的Memory Network(问号脸,后续看)。这个模型的一个特点是end-to-end,可以被训练为从输入一直到输出,比其他的模型更加的方便。不像Memory Network在每一层都需要监督信息。


模型具体操作流程如下图:
论文笔记《End to end memory networks》
在模型训练时输入数据有三部分:一个连续的输入x1,x2,x3…(这部分相当于doc的内容),query q,还有answer a。
先是获取{xi}与query的一个表示(attention),然后这个表示经过多层的hops(多层神经网络),最后得到输出answer a。最后再用pred与a的差值通过方向传播来不断训练模型。


网络分为单层结构和多层结构:

单层网络:

第一步:下图主要介绍了最初对doc({xi})和query的处理步骤,首先还是讲doc和query embedding,然后将他们进行内积运算,再经过softmax层,得到attention表示(这个attention具体含义则是query对于doc中的每个词的注意力分配大小)。
论文笔记《End to end memory networks》
第二步:下图则是由attention得到不同注意下分配下的doc的表示,简单解释就是将归一化后的概率值乘以doc表示,得到query”眼中”的doc表示
论文笔记《End to end memory networks》
第三步:将得到的o(query眼中的doc表示)与query的emb相加后在经过一个softmax层得到answer的pred值(这里我曾今尝试过用o和query的emb表示继续相乘)。
论文笔记《End to end memory networks》

整个模型的结构如下图:左边的是单层结构,右边的是多层(3层)结构的。
论文笔记《End to end memory networks》

多层结构:

如图所示:

1,多层结构的每层的输入U(k+1)=U(k) +o(k),这里面的Uk代表的是第k层的query的emb表示,而ok表示的是第k层的attention后的输出,然后将他们加和得到第k+1层的输入,这里也不一定都要用加和的方式。
2,在顶层,最后一层做预测时,将U(k+1)经过softmax处理后,在进行预测。
论文笔记《End to end memory networks》


模型细节
论文中一般采用 3 跳网络邻接模:,
其中句子 memory 表示有两种方式 :

1,一种是 bag of words 表示出的向量与 embedding 矩阵 A 相乘得到 memory,即
mi=ΣjAxij
其中 ii 表示第 ii 个句子,jj 表示第 jj 个词。
2,另一种是在它们做 element-wise 乘法时,前面乘上一个系数。
mi=Σjlj⋅Axij
这个系数 ljlj 叫做 Position Encoding,它是一个列向量,用如下公式计算
lkj=(1−j/J)−(k/d)(1−2j/J)
其中 JJ 表示句子中词汇数量,dd 表示 embedding 维度。
很多 QA 任务对上下文有要求,本文采用 Temporal Encoding。为了解决这个问题,用如下公式解决
mi=ΣjAxij+TA(i)
其中 TA(i)TA(i) 表示第 ii 行。cici 也同样用 TC(i)TC(i) 加强。
3,在正则化 TATA 时,引入随机噪音效果会比较好。文中在训练时对于 document 额外添加 10%10% 空的 memory。


总结:
本文一个比较大的特点就是,他引入了一个循环attention机制,与一般的memory network实现相比,他不需要在每一层都引入监督信息。
论文笔记《End to end memory networks》

参考地址:https://blog.csdn.net/u014300008/article/details/52794821