paper weekly1:DCN for qa

第一次的组内规定每周paper: DYNAMIC COATTENTION NETWORKS FOR QUESTION ANSWERING(https://arxiv.org/abs/1611.01604)

总体而言

总体而言,是一个用于基于文档的问答的模型,允许对问题和文档进行互相依赖的表示,以便用文档的相关部分来回答问题。以下是模型可以生成的结果示例:

什么是阅读理解问题

结合问题和文本段落二者的信息,生成一个关于文本段落各部分的注意力权重,对文本信息进行加权,得到最高权重的部分文本。

详细说明:

DCN是一种端到端的,把问题和文档同时encoder(带coattention),以及确定文档中答案的开始词和结束词的动态定位decoder。

DOCUMENT AND QUESTION ENCODER

假设问题中有n个单词,文档中有m个单词。还向每个向量表达中添加了一个哨兵(sentinel),以告诉模型不加入某些特定的单词。LSTM用于一次处理一个单词,隐藏状态用d或q表示.

提取lstm的每一时刻的隐层得到矩阵作为问题和文档的表示。

为了在文档和问题表示中有一些变化,对问句的表示做一个非线性变换。

模型第一部分是coattention encoder

coattention 机制(见论文Hierarchical Question-Image Co-Attentionfor Visual Question Answering):是一种双向的注意力,不仅要给阅读的文本段落生成一个注意力权重,还要给问句也生成一个注意力权重。

plus,协同注意力可以分为两种方式:

  • rallel Co-Attention:将数据源A和数据源B的信息结合(Bilinear等方式),再基于结合的信息分别对两种数据源生成其对应的Attention。
  • Alternating Co-Attention:先基于数据源A的信息,产生数据源B的Attention,再基于加入Attention之后的数据源B的信息,去生成数据源A的Attention,类似交替使用两次传统的Attention。

其中符号:
A:注意力权重,直接对文档和问句相乘后的矩阵分别按行和按列求Softmax,得到对问句中每个单词的Attention矩阵和文档中每个单词的Attention矩阵

C_Q:将Attention应用到问句中,问题中每个单词的注意力权重表示*文档中的所有单词。

Q__A_D:将Attention应用到文档中

C_Q__A_D:

C_D:引入Co-Attention机制后的文档信息和文本信息的结合,将文档中每个单词的表示保存为QA_D和C_QA_D的总和的最终表示。

coattention encoder的最后步骤是将时间信息与我们刚做出来的注意力内容相结合。把文档信息D和C_D通过双向LSTM在时序上进行融合,双向LSTM每一时刻的隐层(U)作为总的encoder部分最后输出。

结果是矩阵U。(在获取Bi-LSTM的所有输出后,我们已经删除了前哨)。用该矩阵来预测答案在文档的起始位置和终止位置。

模型第二部分Dynamic Pointer Decoder

动态迭代:对于模型输出的结果,不将它作为最终的结果,而是将它继续输入到模型中作为参考,迭代出新一轮的输出,经过多次迭代,直到超过迭代次数阈值。这在文本生成上有很多的应用,诸如唐诗生成等等。对于机器阅读理解,模型最终需要预测阅读文本的哪一个片段(Span)是问句的答案,我们则可以引入动态迭代的思想,先预测一个片段,再将预测输入回模型,反复迭代后,得到最终的预测片段。

迭代:输入:上一次的预测结果和Encoder信息以及历史预测信息,输出:下一次的预测结果

将每一次的预测结果都输入到一个LSTM中去保存该历史预测信息(h矩阵)

开始和结束位置由开始和结束的highway maxout network(HMN)的argmax决定。Maxout networks和highway networks很好用。 maxout和highway networks是具有相同结构但权重不同的网络。(hmn特别的地方是用Skip Connection并且使用Maxout作为激活函数)

可以将maxout网络视为强大的非线性模型,但是权重是ReLU的两倍。通过highway networks连接,能够选择性地控制信息流,能够建立从第一个最大层输出到最后一个最大层的连接。

整个Decoder部分可以概括为用HMN根据历史预测信息、上一次预测情况对每文档中每一个字作为起始位置(或终止位置)进行打分,用LSTM存储历史预测信息,将最后一次迭代得分最高的为最终答案。

训练

损失函数是所有迭代的开始和结束位置的累积交叉熵。一旦开始和结束位置停止更改或设置最大次数(本文中为4),就停止迭代。

最大序列(文档)长度为600(字),模型所有隐层大小(LSTM units、Maxout layers、Linear layers)都设置为200

Dynamic Pointer Decoder的最大迭代次数为4,maxout pool size设置为16.在训练期间,网络中使用了dropout和ADAM优化。

另外:也可以使用一个简单的2层MLP而不是HMN