Inroduction
本文是ACL 2017的一篇文章,用更细粒度的gated-attention对背景文章和问题进行计算。作者是CMU的Graduate Research Assistant: Bhuwan Dhingra。文章的相关工作部分总结的很好,代码实现可以参考[GitHub]。
Background
本文针对的是MRC任务中的Cloze-Style类型,翻译过来是叫完形填空,但是与英语考试不同,这里是指只用一个单词来回答的阅读理解。
我们可以把问题描述为一个三元组(d,q,a):
- d是指背景文章document
- q是指完形填空的问题query
- a是指问题的答案answer
答案是来自构建好的词汇表中的一个词,也就是token。总结一下就是,根据文档-问题对(d,q),从词汇表中找到最合适的词项作为答案a。
Motivation
作者发现,之前的MRC神经网络模型有一个问题——模型会对原文中的某个部分的注意力特别大,以至于对整篇文章的理解不够完整。并且之前的工作把query attention应用到token(Hermann et al., 2015; Chen et al., 2016)和sentence(Weston et al., 2015)两个层次上,本文希望用更细粒度的attention计算方式,获取document和query更多的语义信息。
Contribution
用Bi-GRU获取document和query每一个词项的信息,两部分词项之间两两做元素相乘,这样的操作做K次,到第K层的时候,document的词向量与query的词向量做内积运算,得到最终的向量表示,然后过soft Max层得到词项的概率分布,选document中概率最大的词项作为answer输出。
Model
Overview
输入:document和query分词后的tokens序列
输出:概率最大的answer
Lookup layer
输入:tokens
输出:tokens的向量表示
运算关系:这里就是一个Lookup Table,用全连接训练词向量
Bi-GRU
输入:$X^1$
输出:
- Document每个词项过Bi-GRU后每个隐藏层状态 E
- Query每个词项过Bi-GRU后每个隐藏层状态串起来 q
运算关系:见Bi-GRU结构,不详细介绍。
Gated-Attention
输入:$E^1$,$q^1$
输出:下一层的输入$X^2$
运算关系:$X^2 = E^1 \odot q^1$
K-th layer & soft Max
输入:$E^K$, $q^K$
输出:document中tokens的概率分布$s^K$
运算关系:求soft Max.
得到概率最大的answer最为最终的输出。
Experiment
Datasets
训练集用的CNN/Daily Mail 和 who did what,详情如下:
Results
在CNN/Daily Mail上,效果比BiDAF提升了一个多点,细粒度的gated-attention取得了一些效果,但是在who did what数据集上并未有多大提升。
Analysis
实验部分给出了一些可视化的attention结果:
图中高亮的部分是背景文章针对问题时的最后一层注意力所关注的tokens。
Conclusion
本文提出的Gated Attention用更细粒度的attention计算获得answer的定位,收获了一定的效果,并且使用Multi-Hop的结构,带着问题重读文章K次,增量式地重新得到tokens的表示,可以进一步帮助锁定答案。但是可以看出,在CNN/Daily Mail比在who did what数据集上提升的多,这就跟数据集本身有关了。所有的模型也都是建立在数据集的特点上的,仔细研读数据,研究其语言学的特征也是很重要的一个环节。