《A Multi-answer Multi-task Framework for Real-world Machine Reading Comprehension》
这篇文章是发表在2018年EMNLP上的,在微软发布的MS MARCO数据集和百度的DuReader上得到了SOTA效果。
分以下四部分介绍:
- Motivation
- Model
- Experiment
- Discussion
1、Motivation
- 在真实世界当中问题不仅仅是比较简单的单一的,可能还会涉及到推理,流程以及意见。这种情况下对于一个问题就可能有多个答案是等效的。文章提出了针对多个答案提出了多个不同的loss function。(也算是首次针对多个答案提出的想法)
- 而且文章信息比较丰富,每一个答案在文章当中可能会重复出现。因此如果只预测一个块的话是有问题的。文章提出了minimum risk training方法来解决。
2、Model
2.1 overview
输入:
- 先对文档进行预处理,然后将抽取的多篇文档内容进行连接,得到文档输入表示。
- 问题
输出:
- 抽取的答案块
2.2 Passage Extraction
先前的方法是为每一个文档去选择一个段落,用了一个简单的启发式规则,训练了一个段落排序模型。但是有可能答案是来自多个段落的。
该论文表示:把文档的标题抽取出来。对每一篇文档的每一个段落计算和问题的bleu-4值,选出Top k的得分的段落并且是首先出现的文章中的。然后将这一段和下一段作为文章的主体,并且把接下来的段落的第1句话也抽取出来。每一篇文章都经过这样的处理,然后将所有的信息连接得到抽取的文档。
2.3 Representation of Word
对于问题的表示,我们将词向量和词性标注向量结合。对于文档的表示,我们增加一个额外的二元特征,如果文档中的词出现在问题里,标签为1,否则为0。
2.4 Encoding Layer
2.5 Match Layer
通过使用BiDAF模型,得到双向的上下文表示向量:
然后再通过一个双向LSTM 去获得最后包含问题信息的文章的表示:
2.6 Multi-answer multi-task loss function
2.6.1 Answer prediction with multi-answer
用文章的表示通过指针网络去预测答案的边界。
先前的方法就是从候选答案里挑出只计算一个参考和预测之间的loss,
而这里作者提出了三种方式计算多个参考答案和预测间的loss。
A表示候选答案的个数。
2.6.2 Passage selection with multi-answer
对文章的表示做一个attention pooling,然后对每一篇文章去计算一个匹配得分g,这里有一点类似snet,在预测答案的时候是对所有的文章做了一个连接。然而在做passage selection之时,是对每一篇文章去算一个打分。(比如连接的文章是由5篇文章组成,那么就会产生5个打分)
snet里面用的是softmax函数,作者在这里用的是sigmoid激活函数。因为多个文档可能都会包含正确答案,并不是只有一个文档包含正确答案,所以使用sigmoid感觉更好。
最后在计算损失的时候,我们是对k篇文档计算,如果这篇文档包含正确答案,那么它的标签
y
k
y_k
yk为1,否则为0。
2.6.3 Joint training
L
a
p
L_{ap}
Lap 表示的是前面三者损失函数的平均
2.7 Minimum Risk Training
这个方法之前是在机器翻译被广泛应用,通过直接优化评价指标,而不是最大化log似然。目标是要去最小化对应后验概率的期望损失:
Δ是一个函数,表明预测结果和真实标签之间的差异,直接用rouge指标。
使用这种方法是为了解决答案可能在文章当中会出现多次。(并不知道为什么能解决)
在机器翻译里面,计算对应后验概率分布的期望指标是非常复杂的,因此采样的方法会经常被运用。然而在我们的块抽取模型当中,我们使用所有的块,而不是采样。MRT loss定义为:
最终,we minimize the linear combination of MLE and MRT loss:
3、Experiment
1、图1展示了passage extr action的结果,还有丰富特征表达的结果。这个模型作为single answer baseline,为了和下面我们的多答案损失计算进行对比实验。
2、三种loss的方式,都比单模型的效果要好,说明了我们在loss上面的改进是有效的。
和一些模型的比较:
3、最后,我们对只有一个参考答案和有多个参考答案的数据去进行了实验(图2是在整个数据集上进行实验)。发现在多答案模型上,即使是针对单个参考答案效果也有所提升。
4、Discussion
优点:
- 这篇文章的改进点相比s net在 passage selection方面,把softmax function改成了二分类激活函数。
- 另外在对多个答案上的一个loss的计算进行了改进,提出了三种新的方式。
- 加入了新的loss fun——MRT
缺点:
- 在预测的时候就产生了一个答案。但是在一些情况下,是有必要去找到所有可能的答案。(比如观点型)