Dynamic Memory Networks & DMN+

  • 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:
Dynamic Memory Networks & DMN+_第1张图片

所以作者提出了DMN来解决这三种问题。DMN的流程如下:

  1. 将输入和问题转换为内部表示
  2. 根据问题迭代地检索相关的facts
  3. 由DMN的memory模块根据facts和问题进行推理,给出相关的信息
  4. 由回答模块将相关信息转化成答案。

2.Dynamic Memory Networks

DMN的总体结构如图:
Dynamic Memory Networks & DMN+_第2张图片

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的输出 st 作为输入,通过attention机制生成对每一个输入fact的门限g,然后根据g计算出情节e,最后把e输入到GRU中生成episodic memory m . 有时候输入一轮{s_t}不能很好的记住所有需要的fact,所以需要迭代多轮。如下图:
Dynamic Memory Networks & DMN+_第3张图片
图中迭代了两轮, 最后生成了两个memory m1 m2

  • attention: 第i轮迭代,t时刻,输入为 ct , 上一轮的记忆为 mi1 , 问题为 q , 则:

    git=G(ct,mi1,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,cq,cm,|cq|,|cm|,cTW(b)q,cTW(b)m]

    可就是说把c,m,q拓展成一个向量,然后使用了两层前馈网络计算门限 g

  • Memory Update: 第i轮迭代,输入为 ct , 个数为 TC 对应的门限为 git ,设 m0=q , 则:

    hit=gitGRU(ct,hit1)+(1git)hit1
    ei=hiTC
    mi=GRU(ei,mi1)

2.4 Answer Module

这个模块仍然要使用GRU, 取最后一个memory 最为GRU的初始值,即 a0=mTM ,则:

yt=softmax(W(a)at)
at=GRU([yt1,q],at1)

3.Experimrnt

所有的实验Adam,L2正则,dropout, 词向量用的是GloVe.

  • QA: bAbI Task
    Dynamic Memory Networks & DMN+_第4张图片
    -Sentiment Analysis: Stanford Sentiment Treebank
    Dynamic Memory Networks & DMN+_第5张图片
  • Part-of-Speech Tagging: WSJ-PTB
    Dynamic Memory Networks & DMN+_第6张图片

此外文中还分析了多轮迭代的重要性,通过多轮迭代性能提升显著,特别是在bAbI问题上,需要找到多个supporting facts的时候。

4.Conclusion

DMN是一个解决多种NLP问题的通用的模型,能够端到端的训练,可以在更多的问题上拓展。


DMN+

DMN+分析了DMN模型的两点缺陷:

  1. GRU只能让当前的句子获得上文信息,而不能获得下文信息
  2. 输入一个个单词到GRU来获得句子的编码,很难刻画相距很远的两个supporting facts之间的关联

因此作者Input Fusion Layer

1. Input Fusion Layer

针对DMN的缺陷,DMN+使用一个sentence reader专门用来将word embedding转化为sentence embedding,同时将GRU改成双向GRU.
如下图:
Dynamic Memory Networks & DMN+_第7张图片

  • sentence reader
    这一步采用了同MemN2N中相同的编码方式:
    ljd=(1jM)(dD)(12jM)
    fi=j=1Miljwij

    其中d是embedding dimension index, D 是embedding dimension, Mi 是第i个句子的单词个数
  • Bi-directional GRU
    Dynamic Memory Networks & DMN+_第8张图片

so, 对于VQA怎么办? 如下图,先使用VGG-19提取图像的特征图,然后把特征图使用激活函数为tanh的线性层映射到同question同一空间的向量,最后使用双向GRU获取f
Dynamic Memory Networks & DMN+_第9张图片

2.Episodic Memory Module

  • gate function g
    Dynamic Memory Networks & DMN+_第10张图片
    这里计算门限 g 的方式只是用了一层前馈网络加上一个softmax层,另外拓展成的向量 zit 与DMN中的z(c,m,q)少了好几项,作者分析说那几项并没什么卵用

  • Attention based GRU
    利用soft attention计算epsodic et=Ni=1gitf ,但是这种方法没有把各输入的位置和顺序的信息加进去,作者提出了Attention based GRU, 把 g 添加到GRU内部。
    正常GRU的计算如下:
    Dynamic Memory Networks & DMN+_第11张图片
    Dynamic Memory Networks & DMN+_第12张图片
    作者把 ui 改为 gi ,则 hi=gih~+(1ui)hi1 ,如图:
    Dynamic Memory Networks & DMN+_第13张图片
    因此,

    hti=AttGRU(fti,ht1i)
    et=htTF

  • Episodic Memory Update

    mt=ReLU(Wt[mt1,et,q]+b)
    这里又是一个跟DMN不一样的地方,DMN更新m疯狂的使用GRU, 这里使用了一层ReLU的前馈网络。
    Dynamic Memory Networks & DMN+_第14张图片

3.Experiment

具体使用的优化方法,参数选取这里就不列出了,见原文。
- bAbI
Dynamic Memory Networks & DMN+_第15张图片
Dynamic Memory Networks & DMN+_第16张图片
然而我不明白的是,为什么在DMN的paper里面QA19的正确率是34.5%,到了这DMN+的论文里QA19成了100%?
- VQA
Dynamic Memory Networks & DMN+_第17张图片

你可能感兴趣的:(论文笔记)