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表示当前这个句子,编码后的句子记作{ si }
2.2 Question Module
对Question的编码也使用GRU, 不过参数与Input Module独立。question就是一个句子,所以question的编码 q 就是最后一个隐含层状态
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)