基于多文档的可解释多跳阅读理解是一个具有挑战性的问题,它要求对多个信息源进行推理,并通过提供支持证据来解释答案预测. 这篇论文提出了一个有效的、可解释的SAE(Select, Answer and Explain, SAE) 系统来解决多文档RC 问题. 这个我们的系统首先过滤掉与答案无关的文件, 从而减少干扰信息的数量. 然后将选定的与答案相关的文档输入到一个模型中, 共同预测答案和支持句子. 该模型在答案预测的词级和支持句子预测的句子级同时优化了多任务学习目标, 并通过注意力机制实现了这两个任务的交互. 通过HotpotQA(一个具有挑战性的多跳RC 数据集) 的评估, 与排行榜上的其他现有系统相比, 提出的SAE 系统在distractorsetting 方面取得了最具竞争力的表现.
HotpotQA是为了提高机器对多个文档进行多跳推理的能力, 最近提出了一些多跳QA 数据集。该数据集想研究者提供多个文档,并要求其提供一个问题、相应的答案和用于获得答案的支持句,如图1所示。数据集具有挑战性, 因为它们要求模型能够在多个文档和强烈干扰下进行多跳推理.HotpotQA 还通过为答案提供支持句子来鼓励可解释的QA 模型, 这些句子通常来自多个文档(如果一个文档包含答案或包含答案支持句子,则称为“黄金文档”)黄金文档注释可以从支持句注释中派生出来。训练样本约为90K,开发样本为7.4K,测试样本为7.4K。与以往的多跳QA数据集不同:
根据这个图,我们来解释一下什么是多跳阅读理解,以上这个栗子的问题为:在电影《吻与说》中扮演柯丽丝·阿彻的女人担任什么政府职务?
文件一,《吻与说》(1945年电影):《吻与说》是一部上映于1945年的美国喜剧电影,由17岁的秀兰·邓波儿饰演科利斯·阿彻。在电影中,两个十几岁的女孩引起了各自父母的关注,当他们开始对男孩感兴趣。父母争吵哪个女孩更坏的影响造成的问题比解决的问题更多。
文件二:秀兰·邓波儿:秀兰·邓波儿·布莱克(1928年4月23日- 2014年2月10日)是美国女演员、歌手、舞蹈家、商人和外交官。1935年至1938年,她还是好莱坞最具票房号召力的童星。成年后,她被任命为美国驻加纳和捷克斯洛伐克大使,还担任过美国宾司司长。
答案: 宾司司长
支持事实:[《吻与说》(1945年电影),0],[《秀兰·邓波儿》,0],[《秀兰·邓波儿》,1]
首先根据问题中电影名字《吻与说》,跳到这个电影的介绍文中,找到扮演科利斯·阿彻的人是秀兰·邓波儿,然后跳到秀兰·邓波儿的介绍文中找到她在政府担任什么职位,由此可以看出答案不是直接在某篇文章中找到的,而是通过文章之间的关联性,从一篇文章跳到另一篇文章中找到答案,这样的便是多跳阅读理解。
为解决多跳多文档的QA 任务, 研究了两个研究方向:
相关论文有:
尽管上述方法取得了成功, 但目前的多跳多文档QA 方法仍存在一些局限性.
很少有人关注答案预测的可解释性, 这一点很重要, 也很有挑战性, 因为在多跳跃多文档的QA 任务中, 支持证据可能分散在很长的上下文或多个文档中(Welbl, Stenetorp, andRiedel 2018). 能够从分散的信息中检索证据, 从而保证QA系统更加实用和智能.
几乎所有现有的方法都直接对所有文档进行操作, 要么是连接它们, 要么是单独处理它们, 而不考虑大多数文档与问题无关或无助于找到答案这一事实. 很少有人尝试设计文档过滤器来删除与答案无关的文档, 并减少需要处理的信息量.准确的文档选择模块还可以在不降低性能的情况下提高QA模型的可伸缩性.
当前用于QA 任务的GNN 应用通常需要实体作为图节点, 通过在节点上传递上下文信息来实现推理. 这只有在预定义的目标实体集可用的情况下才有可能. 否则使用命名实体识别工具提取实体, 会导致图推理中存在冗余和有噪声的实体. 如果答案不是命名实体, 则需要进一步处理以定位最终答案.
该论文的创新点主要是根据以上三个局限性进行了改进:
所提出的SAE 系统的示意图如图2 所示。
数据集数据包括我们假设数据集中的每个例子都包含一个问题和N 个文档; 一组来自不同文档的带标签的支持句子; 答案文本(可以是一段文本的跨度或“Yes/No”).
因为本文要做过滤器来筛选黄金文档和对答案类型分类,但是数据集里没有这两个任务的标签,所以要做一些准备工作。
从答案和支持句子标签中提取黄金文档标签.我们使用 D i D_{i} Di标记文档 i i i:如果 D i D_{i} Di为gold doc,则标记为1,否则标记为0.我们还将答案类型标记为以下注释之一:“Span”、“Y es”和“No”.
该图表示先根据问题和所有文档筛选出与问题相关的前 k k k篇文档,然后对筛选后的得到的黄金文档进行编码,再进行答案预测和支持句子的预测。在预测支持句子的同时对答案类型进行预测。
先来看第一步筛选所有文档,找出黄金文档。
我们的SAE系统首先从给定的N个文档输入中精确地提取黄金文档,我们系统的这一阶段对于减少传递给下游答案预测和解释生成任务的干扰信息至关重要.
输入:问题和若干个文档
对于每个文档,输入为“[CLS]”+问题+“[SEP]”+文档+“[SEP]”
然后通过bert对每个问题/文档进行编码,因为我们要对整个文档进行分类,就提取了代表全局表示的“[CLS]”标记输出作为每个问题/文档对的总结向量.
从bert输出的是每个文档的表示(向量),该向量只包含了各个文档自己的特征,但是文档间都存在一定的关系,所以通过多头自注意机制让文档间的信息得到交互,得到文档间联系与区别的信息,在“CLS”上添加一个多头自我注意(MHSA).MHSA层被定义为:
A t t e n t i o n = s o f t m a x ( Q K T d k ) Attention=softmax(\dfrac{QK^{T}}{\sqrt{d_{k}}}) Attention=softmax(dkQKT)
M u l t i h e a d = C o n c a t ( h e a d i … h e a d n ) Multihead=Concat(head_{i}\dots head_{n}) Multihead=Concat(headi…headn)
h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) head_{i}=Attention(QW_{i}^{Q},KW_{i}^{K},VW_{i}^{V}) headi=Attention(QWiQ,KWiK,VWiV)
其中,Q、K和V是来自文档“CLS”嵌入的线性投影,表示注意查询、关键字和值。
最后模型通过将文档的MHSA输出通过一个双线性层来输出每对文档的概率.
P ( D i , D j ) = s i g m o i d ( t a n h ( M i W i j M j + b i j ) P(D_{i},D_{j})=sigmoid(tanh(M_{i}W^{ij}M_{j}+b_{ij}) P(Di,Dj)=sigmoid(tanh(MiWijMj+bij)
其中 P ( D i , D j ) P(D_{i},D_{j}) P(Di,Dj)表示第 i i i篇文章比 j j j与问题更相关的概率, M i M_{i} Mi表示第 i i i篇文章从多头自注意力机制中输出的表示(向量), M j M_{j} Mj表示第 j j j篇文章从多头自注意力机制中输出的表示(向量)。
输出:两两文档之间的概率值,图中用loss表示.
如图3所示。
因为将该问题从分类问题表述为成对learning-to-rank问题,通过将一个文档与所有其他文档进行比较,该模型能够更好地将一小部分黄金文档与其他分散注意力的文档区分开来。相当于考虑了每篇文档的重要程度。但是我们的标签是针对一篇文档的,而我们的输出是对于两篇文档的关系,所以我们的标签也要进行修改,转化成两篇文档间的关系标签。
标签定义:
我们从答案和支持句子标签中提取黄金文档标签。我们使用 D i D_{i} Di标记文档 i i i:如果 D i D_{i} Di为黄金文档,则标记为 S ( D i ) = 1 S(D_{i})=1 S(Di)=1,否则标记为 S ( D i ) = 0 S(D_{i})=0 S(Di)=0.
接下来对每一对输入的文档打标签:
这个标签表明gold文档的得分将高于非gold文档,就是要找到黄金文档和其它文档的区别;我们会做一个特殊处理对于包含答案片段的文档,给定 S ( D i ) = 2 S(D_{i})=2 S(Di)=2,因为我们认为包含答案的文档比其它的更重要.
损失函数:
L = − ∑ i = 0 n ∑ j = 0 , j ≠ i i l i , j l o g P ( D i , D j ) + ( 1 − l i , j ) l o g ( 1 − P ( D i , D j ) ) L=-\sum\limits_{i=0}^{n}\sum\limits_{j=0,j\ne i}^{i}l_{i,j}logP(D_{i},D_{j})+(1-l_{i,j})log(1-P(D_{i},D_{j})) L=−i=0∑nj=0,j=i∑ili,jlogP(Di,Dj)+(1−li,j)log(1−P(Di,Dj))
n n n表示文档个数, i i i, j j j表示第 i i i, j j j篇文档。 P ( D i , D j ) P(D_{i},D_{j}) P(Di,Dj)表示 D i D_{i} Di比 D j D_{j} Dj更相关的预测概率。
通过上面的损失函数就可以训练好模型,接下来就是预测阶段了。
预测过程:
当我们把新的数据输入到模型中,输出的是每对文档的概率 P ( D i , D j ) P(D_{i},D_{j}) P(Di,Dj),我们需要下面这个公式对所有文档进行一个排序,最后选出Top-k的文档用于后续的模型。
R i = ∑ j n 1 ( P ( D i , D j ) > 0.5 ) R_{i}=\sum\limits_{j}^{n}{}1{}(P(D_{i},D_{j})>0.5) Ri=j∑n1(P(Di,Dj)>0.5)
R i R_{i} Ri表示的是第 i i i文档与问题的相关程度。
例如:
问题:Q;文档:A,B,C
P A , B = 0.2 P_{A,B}=0.2 PA,B=0.2, P A , C = 0.6 P_{A,C}=0.6 PA,C=0.6, P B , C = 0.7 P_{B,C}=0.7 PB,C=0.7, P B , A = 0.8 P_{B,A}=0.8 PB,A=0.8, P C , A = 0.4 P_{C,A}=0.4 PC,A=0.4, P C , B = 0.3 P_{C,B}=0.3 PC,B=0.3
则:
R A = 0 + 1 = 1 R_{A}=0+1=1 RA=0+1=1
R B = 1 + 1 = 2 R_{B}=1+1=2 RB=1+1=2
R C = 0 + 0 = 0 R_{C}=0+0=0 RC=0+0=0
由此可以看出文档与问题相关程度的排序为 B B B, A A A, C C C。如果要选Top-2的话,就选 B B B, A A A。
在后续的阶段,我们会对选出来的文档进行串联,然后再经过BERT,得到上下文编码表示 H H H.
H i = B E R T ( [ C L S ] , [ Q ] , [ S E P ] , [ D T o p − k ] , [ S E P ] ) H^{i}=BERT([CLS],[Q],[SEP],[D_{Top-k}],[SEP]) Hi=BERT([CLS],[Q],[SEP],[DTop−k],[SEP])
D T o p − k D_{Top-k} DTop−k表示连在一起的 k k k篇文档, H i = ( h 0 i , h 1 i , ⋯ , h L − 1 i ) H^{i}={(h_{0} ^{i},h_{1} ^{i},\cdots,h_{L-1} ^{i}}) Hi=(h0i,h1i,⋯,hL−1i)表示第 i i i个数据的黄金文档的编码(矩阵),其中的每个向量表示每个词的编码。 L L L是黄金文档拼起来的文本长度。
不同文档细分的这两类主要是为了能够捕获到跨文档之间的路径信息,确保文档和文档之间能够通过这两类的边进行信息传递。
圆圈表示节点,不同颜色的圆圈表示不同的文档,圈里有横条的是被预测为支持句子的节点,“—”表示同文档,“-----”表示B中的节点关系,“ ⋯ ⋯ \cdots\cdots ⋯⋯"表示A中的节点关系。
句向量的计算:
在支撑事实预测阶段,首先要得到的是句向量,我们按照句号对文章分割.其中,每个句子可以表示为:
S j = H [ j s : j e , : ] ∈ R L j × d S^{j}=H[j^{s}:j^{e},:]\in R^{L^{j}\times d} Sj=H[js:je,:]∈RLj×d
该文章对词向量进行加权求和来表示句向量, L j L^{j} Lj为每个句子的长度。
文章提出了一种混合的注意力机制求权重,在计算句向量的权重的时候,我们不仅仅考虑句子本身的信息,同时也会考虑在答案预测阶段的两个概率分布.
α j = σ ( f a t t ( S j ) + Y ^ [ j s : j e , 0 ] + Y ^ [ j s : j e , 1 ] ) \alpha^{j}=\sigma(f_{att}(S^{j})+\hat{Y}[j^{s}:j^{e},0]+\hat{Y}[j^{s}:j^{e},1]) αj=σ(fatt(Sj)+Y^[js:je,0]+Y^[js:je,1])
S j = ∑ k = 0 L j α k j S j [ k , : ] S^{j}=\sum\limits_{k=0}^{L^{j}}\alpha_{k}^{j}S^{j}[k,:] Sj=k=0∑LjαkjSj[k,:]
( f a t t (f_{att} (fatt表示自我注意力机制求权重, Y ^ [ j s : j e , 0 ] \hat{Y}[j^{s}:j^{e},0] Y^[js:je,0]表示这句话中每个词是开始位置的概率, Y ^ [ j s : j e , 1 ] \hat{Y}[j^{s}:j^{e},1] Y^[js:je,1]表示这句话中每个词是结束位置的概率。
原因是答案里面的信息它一定是支撑的事实,但是支撑的事实不一定包含答案,因此在计算句子当中每个词的权重的时候,我们会把预测阶段的答案的概率分布加入,实现一种混合的注意力机制.使得答案句中的词的权重增加,会使整个句子显得更重要。
更新句向量
接下来,我们提出了基于句子嵌入 S j S^{j} Sj的Multi-relational GNN模型,对预测的黄金文档中所有句子进行多跳推理,以更好的利用复杂的关系信息。
使用句子嵌入 S j S^{j} Sj为初始化图节点,通过以下三个式子更新图节点:
h j k + 1 h_{j}^{k+1} hjk+1表示第 j j j个句向量的第 k + 1 k+1 k+1层更新,它的更新主要来源于上一层节点自身的信息( h j k h_{j}^{k} hjk)和上层邻居节点的信息( u j k u_{j}^{k} ujk);
而邻居节点 u j k u_{j}^{k} ujk主要根据这一层的自身信息( h j k h_{j}^{k} hjk)和与该节点相连的节点( h n k h_{n}^{k} hnk)更新的, N j r N_{j}^{r} Njr表示通过第 r r r种边相连的节点, R R R表示三种边,则 u j k u_{j}^{k} ujk后面的式子表示对每种边与自身节点的节点做简单平均后再求和;
g j k g_{j}^{k} gjk是一个门,用来控制来自自身节点( h j k h_{j}^{k} hjk)和邻居节点 u j k u_{j}^{k} ujk的数量信息,因为作者认为图中不是所有的信息都是有用的,所以对信息进行了控制, g j k g_{j}^{k} gjk是通过多层感知机计算的值在0和1之间的向量。
第 j j j个句向量更新结束后用 h j h_{j} hj表示,接下来会对每个节点进行一个二分类,计算这个节点属于支撑事实的概率,因为数据集当中的问题还包括是否,所以会继续在这个图当中去对答案的类型进行预测。
支持句子预测
( y ) j s p ^ = s i g m o i d ( f s p ( h j ) ) \hat{(y)_{j}^{sp}}=sigmoid(f_{sp(h_{j})}) (y)jsp^=sigmoid(fsp(hj))
( y ) j s p ^ \hat{(y)_{j}^{sp}} (y)jsp^表示第 j j j个句子是支持句子的概率。
答案类型预测
接下来要对答案类型进行分类.分类器是一个三分类,分别是yes,no和span.主要的思想就是对图中的所有节点进行加权,而这个权重来自于 y ^ j s p \hat{y}_{j}^{sp} y^jsp.得到整个图的信息之后,去过一个全连接神经网络,得到答案类型的概率 y ^ a n s \hat{y}^{ans} y^ans.
a = σ ( y ^ s p ) a=\sigma(\hat{y}^{sp}) a=σ(y^sp)
h = ∑ j a j h j h=\sum_{j}a_{j}h_{j} h=∑jajhj
y ^ a n s = f a n s ( h ) \hat{y}^{ans}=f_{ans}(h) y^ans=fans(h)
最后的训练损失是答案跨度预测损失,支持句预测损失和答案类型预测损失之和:
L = γ L s p a n + B C E ( y ^ s p , y s p ) + C E ( y ^ a n s , y a n s ) L=\gamma L^{span}+BCE(\hat{y}^{sp},y^{sp})+CE(\hat{y}^{ans},y^{ans}) L=γLspan+BCE(y^sp,ysp)+CE(y^ans,yans)
式中BCE()为二元交叉熵损失函数;我们在答案跨度损失函数中加入了权重 γ \gamma γ,以考虑不同跨度损失的不同得分。
因为HotpotQA中只提供答案文本,所以我们使用了一个简单的精确匹配策略来查找文档中答案的开始和结束标记,并将其用作答案预测标签。我们还使用sPacy来识别上下文和问题中的命名实体和名词短语。
我们使用训练集中的所有样本来训练文档选择模块。对于多任务学习模块,我们只使用标注的黄金文档来训练模型,并对预测的黄金文档进行评估。在评价过程中,我们只将文档选择模块返回的前2个文档作为答案和支持句子预测模块的输入。如果答案类型预测为“Span”,则使用答案Span输出作为预测答案;否则,根据答案类型预测,预测的答案为“Y es”或“No”。
在表1中,我们展示了不同模型在HotpotQA的验证集和测试集上的性能比较。在验证集上,我们的方法在联EM和F1得分方面比基线模型绝对提高了28 % \% %和2 5 % 5\% 5%。与DFGN模型(Xiao等人2019)和QFE模型(Nishida等人2019)相比,我们的SAE系统在EM和f1评分方面都优于5 % \% %以上。
这里我们还展示了SAE-oracle的结果,这意味着我们直接输入带注释的gold文档来获得答案和支持句子预测。我们使用预测黄金文档的模型和oracle黄金文档之间的差距约为3-4 % \% %,这意味着我们的文档选择模块的有效性。
在测试集中,由于目前HotpotQA排行榜上的大多数提交系统都没有发布,我们只展示与两个已发布模型的比较,以及排行榜上最好的单个模型。与最佳单模型(TAP 2)相比,我们的SAE系统在支持句预测方面表现更好,而在回答跨度预测方面表现较差。
我们首先在表2中展示了消融对文献选择模块的结果。“EMS”和“RecallsS”测量两个金文档的准确性和召回率;“ A c c s p a n Acc_{span} Accspan”测量黄金文档中回答跨度被选择的准确性.通过表2,我们可以看到,更好的文档过滤器总是导致更好的答案和支持句子预测性能。
然后我们在“答案和解释”模块中去除不同的组件,并根据联合EM和F1来衡量模型在这些情况下的性能。从表3可以看出来。
为了更好地了解所提出的SAE系统的性能,在验证集中根据不同的推理类型进行分析。
在“bridge”和“comparison”两种推理类型下,比较SAE和其它两个模型。
我们提出的SAE系统在两种推理类型下都提供了更好的性能。且在“bridge”上改进更大。这证明我们SAE系统更擅长处理“bridge”推理。
我们提出了一种新的有效和可解释的系统来处理多跳的多文档RC问题。我们的系统首先准确地过滤出不相关的文档,然后对答案和支持证据进行联合预测。针对文档过滤模型和回答支持句预测模型的训练,本文提出了一些新的思路。与现有系统相比,我们提出的系统在HotpotQA盲测试集上取得了具有竞争力的结果。