DMN出自论文Ask Me Anything: Dynamic Memory Networks for Natural Language Processing(2015-06),这个模型用于Question Answering并且可以拓展到情感分析和词性标注。正如Introduce中所提到的,很多NLP问题都可以看作QA问题,比如机器翻译、命名实体标注、文本分类问题如情感分析、共指消解(coreference resolution)等。
-
DMN+出自论文Dynamic Memory Networks for Visual and Textual Question Answering(2016-03),它对DMN做了修改,称为DMN+,提高了在bAbI上的结果,并应用在了Visual Question Answer上
DMN
1.Introduction
如上文所说,很多NLP问题可以视为QA问题,作者给出了一个例子,同时包含QA, Sentiment Analysis和Part-of-speech tags:
所以作者提出了DMN来解决这三种问题。DMN的流程如下:
- 将输入和问题转换为内部表示
- 根据问题迭代地检索相关的facts
- 由DMN的memory模块根据facts和问题进行推理,给出相关的信息
- 由回答模块将相关信息转化成答案。
2.Dynamic Memory Networks
DMN的总体结构如图:
2.1 Input Module
输入模块通过GRU来编码句子。GRU的输入是word embedding vectors. 对于一个多句子的文本,在每个句子末尾加上一个分隔符(End-of-Sentence),当输入是EOS,取此时的隐含层状态h表示当前这个句子,编码后的句子记作{
2.2 Question Module
对Question的编码也使用GRU, 不过参数与Input Module独立。question就是一个句子,所以question的编码
2.3 Episodic Memory
这个模块将Input Module的输出
图中迭代了两轮, 最后生成了两个memory
-
attention: 第i轮迭代,t时刻,输入为
ct , 上一轮的记忆为mi−1 , 问题为q , 则:其中:git=G(ct,mi−1,q) G(c,m,q)=σ(W(2)tanh(W(1)z(c,m,q)+b(1))+b(2)) z(c,m,q)=[c,m,q,c∘q,c∘m,|c−q|,|c−m|,cTW(b)q,cTW(b)m]
可就是说把c,m,q拓展成一个向量,然后使用了两层前馈网络计算门限g -
Memory Update: 第i轮迭代,输入为
ct , 个数为TC 对应的门限为git ,设m0=q , 则:hit=gitGRU(ct,hit−1)+(1−git)hit−1 ei=hiTC mi=GRU(ei,mi−1)
2.4 Answer Module
这个模块仍然要使用GRU, 取最后一个memory 最为GRU的初始值,即
3.Experimrnt
所有的实验Adam,L2正则,dropout, 词向量用的是GloVe.
-
QA: bAbI Task
-Sentiment Analysis: Stanford Sentiment Treebank -
Part-of-Speech Tagging: WSJ-PTB
此外文中还分析了多轮迭代的重要性,通过多轮迭代性能提升显著,特别是在bAbI问题上,需要找到多个supporting facts的时候。
4.Conclusion
DMN是一个解决多种NLP问题的通用的模型,能够端到端的训练,可以在更多的问题上拓展。
DMN+
DMN+分析了DMN模型的两点缺陷:
- GRU只能让当前的句子获得上文信息,而不能获得下文信息
- 输入一个个单词到GRU来获得句子的编码,很难刻画相距很远的两个supporting facts之间的关联
因此作者Input Fusion Layer
1. Input Fusion Layer
针对DMN的缺陷,DMN+使用一个sentence reader专门用来将word embedding转化为sentence embedding,同时将GRU改成双向GRU.
如下图:
-
sentence reader
这一步采用了同MemN2N中相同的编码方式:ljd=(1−jM)−(dD)(1−2jM) fi=∑j=1Milj∘wij
其中d是embedding dimension index, D 是embedding dimension,Mi 是第i个句子的单词个数 -
Bi-directional GRU
so, 对于VQA怎么办? 如下图,先使用VGG-19提取图像的特征图,然后把特征图使用**函数为tanh的线性层映射到同question同一空间的向量,最后使用双向GRU获取f
2.Episodic Memory Module
gate function
g
这里计算门限g 的方式只是用了一层前馈网络加上一个softmax层,另外拓展成的向量zit 与DMN中的z(c,m,q)少了好几项,作者分析说那几项并没什么卵用-
Attention based GRU
利用soft attention计算epsodicet=∑Ni=1gitf ,但是这种方法没有把各输入的位置和顺序的信息加进去,作者提出了Attention based GRU, 把g 添加到GRU内部。
正常GRU的计算如下:
作者把ui 改为gi ,则hi=gi∘h~+(1−ui)∘hi−1 ,如图:
因此,hti=AttGRU(fti,ht−1i) et=htTF -
Episodic Memory Update
这里又是一个跟DMN不一样的地方,DMN更新m疯狂的使用GRU, 这里使用了一层ReLU的前馈网络。mt=ReLU(Wt[mt−1,et,q]+b)
3.Experiment
具体使用的优化方法,参数选取这里就不列出了,见原文。
- bAbI
然而我不明白的是,为什么在DMN的paper里面QA19的正确率是34.5%,到了这DMN+的论文里QA19成了100%?
- VQA