@songying
2019-03-18T16:07:34.000000Z
字数 2098
阅读 1427
阅读理解-蛮荒时代
仓库实现:
https://github.com/jojonki/CNN-Daily-Mail-Reading-Comprehension-Task -- keras
数据集: CNN/Daily Mail, 提出了Standford Reader
该模型是 Attentive Reader 延伸, 但在 Attention 的部分又有所不同。
首先,模型通过 双向LSTM 分别对Passage 与 Query 进行Embedding, 对于 Passage, 我们获得一个词的上下文信息矩阵: ; 而对于 Query, 我们获得一个句子级别的向量表示: 。
接下来,我们需要计算 Passage 中每个词与 Query的相关度, 然后获得最终输出到output layer 的输出表示:
最后,我们将 o 输入到 output layer, 然后进行预测:
很明显,该模型更加干净,简洁,且获得的效果是要比 Attentive Reader 好 8-10% 个点的。 我们来简单介绍一下二者的不同:
其中,第一点是性能获得很大提升的关键因素,而第2,3点的目的更多的是将模型简化。
目前,该模型只有 Theano 的实现,如果后续有时间的话,我会尝试用TensorFlow 重写一下,先立一个 Flag。
我们的模型基于 attentive reader 模型,模型架构如下图所示:
首先,我们对passage和query进行encoding,通过一个enbedding矩阵 将每个单词转化为一个d维的向量。我们获得了 和 。
然后,我们用一个浅层的双层的RNN,RNN单元个数为
我们得到
在双向RNN中,我们采用GRU作为RNN单元。
在此步中,目的是为了比较 question embedding 和 所有的contextual embeddings,然后挑选与question相关的信息。
我们需要计算, 表示的就是注意力的值,其中 取决于 与问题q的相关程度。
o 表示的是带有注意力机制的向量