多跳式文本阅读理解方法综述

2023-01-18 03:38:02倪艺函兰艳艳程学旗
中文信息学报 2022年11期
关键词:检索文本方法

倪艺函,兰艳艳,庞 亮,程学旗

(1. 中国科学院计算技术研究所 中国科学院网络数据科学与技术重点实验室,北京 100190;2. 中国科学院大学 计算机与控制学院,北京 100049;3. 清华大学 智能产业研究院,北京 100084)

0 引言

文本阅读理解任务是测试计算机自然语言理解能力的经典任务。文本的阅读理解一般以问答形式考察模型的能力,要求模型基于上下文回答问题。注意,本文关注纯文本的阅读理解,知识库相关的问答等不在本文关注范围内。早期的文本阅读理解主要关注简单问题的回答,一般只需要通过问题与文本的语义匹配即可一步得到答案。然而真实的自然语言存在很多更复杂的问题,如多跳问题、数值计算问题等。

本文关注其中的多跳问题,即需要经过多步线索选取和推理才能得到答案的问题。这在生活中广泛存在,如“姚明的妻子是哪里人?”这个问题,要先找到姚明的妻子是叶莉,再找到叶莉是上海人。在方法方面,多跳文本阅读理解对模型提出了更高的要求,旨在测试机器在自然语言上的推理能力。在应用方面,对多跳文本阅读理解的研究有助于构建更先进的问答系统。因此,多跳文本阅读理解的研究是很重要的一个方向。

图1给出了一个例子,需要根据两个段落才能得到答案,问题与第1跳Paragraph A的内容重叠程度较高,而与第2跳Paragraph B的内容相似程度低,需要结合第1跳的内容才能找到第2跳。由此可见,基于文本的多跳问答的核心问题就是如何找到并结合多处线索进行推理,并给出推理过程。而该任务的难点在于: 一是对于多跳线索来说,问题一般只与第一跳文本有直接语义联系,而与后续的线索文本语义差异较大,无法直接通过匹配方法得到,需要推理;二是还需要给出推理过程,即有可解释性,希望模型确实学到如何推理,而不是通过捷径匹配得到答案。

图1 多跳自动问答例子(HotpotQA[1])

然而,现有的简单问题问答模型只能捕捉问题与文本的语义匹配信息,无法解决上述难点,需要针对多跳问答设计可解释的多跳推理模型。于是近年来出现了一些多跳阅读理解模型,根据其推理形式和过程的不同,可分为基于结构化推理的多跳模型、基于线索抽取的多跳模型、基于问题拆分的多跳模型这三类。基于结构化推理的模型又分为基于图神经网络或其他图结构[2-20]、基于推理树或路径[21-25]两种。基于线索抽取可以分为显式抽取、隐式抽取;显式抽取包括迭代[26-33]和非迭代[34-37];隐式抽取[38-51]则包括多轮注意力机制或记忆网络等。基于问题拆分的模型分为显式拆分[52-54]、隐式拆分[55-57]、语义拆分[58-59]。另外也有一些工作分析当前任务是否真的需要多跳推理[60-62],或图结构等技术是否有必要[63-67]。

本文第1节给出自动问答任务以及多跳问答的定义,并介绍相关数据集;第2、3节探讨推理式自动问答现有的研究进展及实验效果分析;第4节探讨未来研究方向;最后第5节进行总结。

1 多跳式文本阅读理解任务简介

1.1 问题描述

在文本阅读理解任务中,给出问题和单篇或多篇文章,要求模型根据文章给出答案。形式化定义,即给定问题q={u1,u2,…,uLq},文章集合P={p1,p2,…,pk},pi={v1,v2,…,vLpi},要求给出答案a={w1,w2,…,wLa}。其中,ui,vi,wi分别表示问题、文章和答案中的一个词。

多跳文本阅读理解任务则需要进行多线索推理。即要回答问题q,需要在文章中进行多次定位,假设我们以句子为单位,记任意句子为si,则要经过s1→s2→…→sn,最终得到答案a。

1.2 相关数据集

1.2.1 多跳文本阅读理解数据集

多跳问答最相关的数据集是HotpotQA,给出多个文章和一个问题,要求给出答案和支持性线索句子(supporting fact)。问题分为桥接(bridge)和比较(comparison)两类。有两种设置,一种是给定两个正确线索所在段落和8个干扰段落,称为distractor设置;另一种是开放领域问答,称为fullwiki设置。QAngaroo[68]先基于知识库构造,问题为(实体-关系-?)三元组,文章是维基百科文档,包括通用领域的WikiHop和专业领域的Medhop。HotpotQA的答案形式是抽取片段,WikiHop则是选项形式,Chen 等[69]还研究了两种形式对问题难度的影响,表明选项形式会容易被利用导致数据偏差。更早的有自动构造的推理数据集bAbI[70]。HybridQA[71]则是结合数据库与文本数据的多跳任务数据集。

ComplexWebQuestions[72]、ComQA[73]等复杂问题数据集与语义解析、知识库关系更密切。复杂问题数据集QASC[74]需要补充信息才能拆分。Break[75]则是收集多个多跳问题数据集的问题构造出的语义解析数据集,将多跳问题转换为文中定义的QDMR这一逻辑形式。还有一些相关的数据集,如NarrativeQA[76]也涉及多跳推理,MultiRC[77]数据集关注更广泛的多段落推理。

相关数据集的详细信息如表1所示。

表1 多跳文本阅读理解数据集信息

1.2.2 其他相关推理问答数据集

还有一些数据集关注的是更复杂的推理或是一些其他的推理任务,但是其中部分涉及多跳推理。DROP[78]是数值计算类的推理问答数据集。多轮对话式问答可以看作是拆解后的多跳问答,如CoQA[79]、QuAC[80]、QBLink[81]等数据集。OpenBookQA[82]、DuoRC[83]等任务数据集主要考察常识推理,但为了考察模型在真实场景下结合常识的推理能力,也涉及多跳推理、多线索推理。当然,多轮对话、常识推理等推理任务是不同于多跳推理的,只是其中一部分有交集和共通之处。这部分数据集具体信息如表2所示。

表2 其他相关推理问答数据集信息

1.2.3 小结

结合上面的介绍可以总结如下:

• HotpotQA和WikiHop数据集是最常用和相关的多跳问答数据集。

• MedHop、ComplexWebQuestions、OpenBookQA、WorldTree这几个数据集规模较小,可能需要补充外部数据集来解决。

• HotpotQA、WikiHop、ComplexWebQuestions都有开放领域的设置,可以作为研究开放领域多跳问答任务的数据集。

• HotpotQA、MultiRC、QASC、OpenBookQA等有线索标注,可用于推理过程的评价。

2 基于非结构化文本的多跳阅读理解模型

为了解决多跳问题,不同方法给出了不同的推理思路。根据推理形式和过程的不同,我们将多跳阅读理解方法归纳为三大类: 基于结构化推理的多跳模型、基于线索抽取的多跳模型、基于问题拆分的多跳模型。基于结构化推理的多跳模型包括基于图神经网络、推理树、路径等结构的模型。基于线索抽取的多跳模型包括显式迭代与非迭代抽取、隐含迭代或非迭代的多线索关注。基于问题拆分的多跳模型包括显式拆分、隐式拆分、结合语义拆分的方法。另外,基于上述几个角度,都有部分相关工作分析当前任务是否真的需要多跳推理,如何在构造数据集时尽量确保需要多跳推理才能回答。

这里的分类依据是推理形式和过程的不同,即结构化推理最终给出的是基于图、树等结构推理出的基于实体、句子、段落等不同层次的推理路径,线索选取给出的是有序或无序的多个段落或句子单位的线索或隐含的线索注意力信息,问题拆分给出的是有序的简单子问题和其答案或隐含的问题注意力信息。另外,几类方法的不同也在于其利用信息的不同,结构化推理利用了基于实体、共现信息、链接等构造的先验知识,线索抽取方法利用的是逐跳上下文语义匹配信息,问题拆分则利用将复杂问题分解得到的信息。

这三大类方法中,结构化推理方法借鉴知识图谱问答,出现较早;线索抽取类方法中,隐含迭代方法在早期涉及推理的问答任务中就较为流行,显式抽取方法借鉴检索或摘要方法,后来才出现;问题拆分类方法中,结合语义拆分分类方法借鉴知识库结构化问答中的语义解析方法,但移植起来差异较大,问题拆分方法则是后来兴起,所以普遍出现较晚。但三类方法之后基本是并列发展的,随着研究深入也出现了结合几类方法的工作。

2.1 基于结构化推理的多跳模型

先基于文本构造图、树等结构,再在该结构上推理,本文把这类方法统称为结构化推理。图神经网络是其中的一大类,因此本文分为图神经网络和其他结构分别介绍。

2.1.1 基于图神经网络

图神经网络对图结构使用一定传播方式学习更新节点表达。多跳问答中,一般从上下文和问题中抽取实体、句子、段落等作为节点构造图,用图神经网络更新表达,模型架构如图2所示,不同深浅的节点表示不同来源,如实体或句子等。

图2 基于图神经网络的多跳问答模型架构

基于图神经网络的方法最初多用于解决WikiHop[68]数据集的任务,基于上下文、问题、答案选项的实体构图,用图神经网络更新表达,给答案选项节点打分得到答案,如MHQA[14],Entity-GCN[5],BAG[18]等方法。MHQA直接从文章中构建图,存在图规模过大和扩展性不够的问题。Entity-GCN则从答案选项出发构图,缩小了规模。但早期方法与问题交互不足,所以BAG加入了注意力机制。

Entity-GCN这种仅从答案候选中抽取实体的方法,虽减少了规模却又少利用了很多关键信息,因此Gated-GRCN[10]结合图方法和路径方法,使用了下文要讲到的路径抽取思路,除了问题和答案外还抽取了推理实体。基于字符串匹配提取实体会遗失一些实体,因此舒冲等[20]采用了基于语法的实体抽取方法,并且加入疑问实体关联实体作为新的节点类型,更好地利用问题信息。

另外,仅基于实体构图的方法过分依赖实体抽取效果,且损失了其他信息,因此HDE[9]构造异质图,节点包括文档节点、答案选项节点、问题和上下文中的实体节点。

与Wikihop相比,对于HotpotQA这种基于纯文本构造的多跳阅读理解,基于图的方法则需要一定改变。CogQA[17]使用增长式的建图方式,从问题出发,每轮选取节点扩展图并更新表达,避免直接基于上下文构图的规模和扩展性问题。DFGN[15]则通过图神经网络更新表达后,将信息回流至上下文表达,再抽取答案,使答案不再局限于实体节点;并且用问题表达构造掩码(mask),每轮根据掩码选择性更新部分节点,达到根据问题动态更新图神经网络的效果。

但上述仅基于实体构图的方法受实体识别效果影响,而且利用的信息不够。因此,HGN[12]设计了层级图,包括实体、句子、段落三种层次的节点,层级图本质上就是异质图。

随着研究的进一步发展,一些工作针对性地解决图神经网络运用到自然语言理解的各种问题。多跳推理中存在信息不足,需要外部知识的情况,所以KGNN[7]结合了知识图谱作为外部知识,提升了多步推理的效果。但直接将文本序列过早地表达为一个节点向量会损失了信息,因此GSN[13]提出了神经网络结构,保留文本序列每个词的向量,即节点表达为矩阵,提出基于序列间的共同注意力机制(co-attention)的传播方式。

除了上面的解决方法,后续有工作直接将图结构嵌入现有的常用模型结构。Transformer-XH[2]修改Transformer结构,使其可以处理有结构的文本,使用图结构,Transformer的注意力机制则相当于传播更新节点表达。SAE[4]也类似地在最后一步抽取句子表达时使用图神经网络,采用了一种混合注意力池化(pooling)的机制。

另外,一些工作关注多跳阅读理解中的线索抽取等子任务。如DGN[11]、DRL-GRC[8]关注线索选取任务。DGN探究句子间、段落间的链接对线索选取的影响,将文档结构化,使用图神经网络获得线索。DRL-GRC则没有使用图神经网络,而是利用强化学习策略,以句子作为节点,确定每一步选择哪个句子连接到图,构造有向图。DDRQA[16]关注检索部分,采用迭代检索框架,核心是每步基于图神经网络GAT重排序,减少检索数量,提升检索质量。

还有一些其他推理任务或相关衍生任务。如PullNet[6]使用图神经网络解决知识库和文本结合的推理问答任务。基于f-GCN的模型[3]用图神经网络解决教科书式问答(Textbook QA),即既有文字又有图片的多模态问答形式。Ma等人[19]则关注与多跳问答相反方向的多跳问题生成任务,用图神经网络从文章和答案生成多跳问题。

表3列举和比较了各个图神经网络方法的详细组成要素。其中GSN重点在序列矩阵表达,在不同数据集上的设置不同,所以不再全部列出。

表3 基于图神经网络的多跳问答模型比较

图神经网络模型的可解释性图神经网络方法通过对文本结构化在文本上构建推理。虽然图结构部分反映了文本推理结构,但早期基于节点打分等方法只能给出图结构。后续工作用一些方法得出最终产生答案的推理路径,如DFGN使用问题掩码,CogQA则本身就采用扩展建图。图3展示了CogQA给出的一个推理路径。

图3 CogQA推理路径的例子图来自CogQA论文[17]

对基于图神经网络的模型的分析虽然很多工作使用图结构来解决多跳问题,但也有工作质疑使用图结构的必要性[66],Shao等分析图的连边、图结构本身到底起了多大作用,并使用两层的Transformer模型超过了图模型方法基线,说明图结构也许不是必须的,在基于微调的方式下,Transformer的自注意力机制也能学到来自图的先验知识。这给未来工作提供了一个指导方向,即如果使用图结构,需要说明使用的必要性。

2.1.2 基于推理树或路径

基于路径的推理模型[21]先根据实体和实体提及(mention)构造候选路径,然后计算路径表达,最后打分选择路径。优点是直接显式得出具体推理路径,缺点依然是依赖实体抽取。EPAr[22]则提出了可解释的三模块系统,模拟人从粗到细的阅读推理行为,先用两跳迭代检索文档初步过滤文档,再层级利用记忆网络迭代检索文档,构建推理树,最后推理树中的每个推理链得到一个答案,再排序筛选。

在2.1.1节介绍的图结构中,一些已经采用了增量扩展模式,如CogQA、DRL-GRC等。但这些工作并没有直接给出路径,Asai 等[24]则在建图的基础上显式地构造路径,检索部分首先用TF-IDF检索和超链接构建文档图结构;然后用RNN逐步选择下一个段落,得到多个候选推理路径序列;最后输入阅读器(Reader)得到答案。ChainEx[25]构造句子推理链来提升多跳问答的效果,不需要线索的监督信号,而是用基于规则的伪推理路径来训练;模型使用两阶段答案模块,先用基于规则的推理路径训练一个抽取器(Extractor),然后对抽出的推理链用基于BERT的问答系统得到答案。

Feng 等人[23]则提出直接从问答对中还原推理链这个新问题。该文给出了一种找出推理链的方法,排序模型和推理模型互相交互协作,还原出有序的段落和连接这些段落的实体。

推理树或路径的可解释性基于推理路径的方法直接构造得到了推理路径。如文献[21]给出基于实体和隐含关系的路径,如图4所示。

图4 直接给出推理路径的例子图来自文献[21]

2.1.3 小结

结构化推理方法试图将文本结构化,再基于已有的结构找到推理路径,从而实现推理,也能展示不同粒度的推理路径。本质上,结构化推理方法是利用了文本的实体、共现、链接引用等先验知识构建结构,提升了模型的推理能力。结构化推理方法解决了简单问答模型只能语义匹配,无法解决多跳推理的问题,用先验的结构促使模型依据结构进行推理。

基于图、树、路径的方法思想类似,都是构造结构得到推理路径。不同之处在于路径、树更倾向于从文本中直接推理,而图结构更抽象,更偏向于将上下文结构化。图神经网络方法的优点一是有成熟的图神经网络研究支撑,二是图结构是路径的聚合,易涵盖所有推理可能性;缺点是不够直观。树、路径等方法则相反。

结构化推理类方法的整体缺点之一是,如果基于实体构建,则过于依赖实体抽取效果,且仅基于实体本身就有局限性。仅基于句子、段落则推理路径选取粒度不够细。

2.2 基于线索抽取的多跳模型

遵循多跳推理的过程,每跳迭代抽取一处线索,找答案,以此类推,直至找到最终答案。除了显式抽取,隐式的多轮迭代由于思想类似,因此也归到这一类。部分工作则简化模型,不用迭代逻辑,而是直接检索得到所有线索。

2.2.1 基于显式线索抽取

基于显式迭代线索抽取

迭代抽取线索,即根据问题抽取第一轮线索,然后则根据上轮信息抽下一轮线索,可选的方式是去更新问题或文档编码等信息(图5中虚线所示),直到找到答案。

图5 基于显式迭代线索抽取的多跳问答模型

(1)句子级别的支持性线索抽取

QFE[27]在句子级别抽取线索,在HotpotQA官方给出的模型中直接加句子抽取层,抽取句子后作为特征加到整个上下文中抽取答案。句子抽取层使用摘要常用模型,迭代地抽取句子。AIR[33]关注选项类多跳问答,无需线索的标注,用无监督方法隐含地对齐问题、答案与支持性线索,迭代选句子,每步迭代改写查询,且有停止机制。

(2)段落级别的开放领域迭代检索

MUPPET[29]主要关注开放领域问答,针对段落级别,迭代抽取多段落,再从抽取到的段落中抽取答案。Das等的工作[31]则关注检索器和阅读器的交互,每轮迭代都先检索再阅读。DrKIT[28]将快速检索的方式扩展到复杂问题检索中,提出一个端到端(end-to-end)可微的高效框架,在查询独立方式编码的大规模文本语料上做复杂问答。这三篇文献的特点是文章表达都是独立的,不依赖于查询,于是具有较好的可扩展性。

和上面提到的AIR[33]类似,Golden Retriver[26]也采用修改查询迭代检索方式,每轮训练一个查询生成模型,用于生成每轮的查询。两轮检索得到两个段落,再用答案抽取模型获取答案。

Entity Centric IR[30]和Xiong等[32]则关注找到连接段落的桥接实体(bridge entity),通过迭代得到段落顺序和连接信息。这也获得了推理路径,与上文的推理路径方法有共通之处。如上文提到的EPAr[22]、 CogQA[17]、 DDRQA[16],在进行结构化推理时也结合了迭代检索的框架。

基于显式非迭代线索抽取

一些方法利用各种交互技术实现非迭代线索抽取。AutoROCC[37]先抽句子组合的各种候选,再根据ROCC分数排序。Groeneveld 等[34]进一步质疑了现有复杂技术的必要性,提出了简单的流水线(pipeline)模型QUARK,先独立抽取句子,再用基于BERT的模型获得答案,然后基于答案和句子预测支持性线索,超过了很多使用复杂技术的模型。Multee[36]试把蕴涵模型用到问答中,结合局部(句子级别)和全局(多句文档级别)模块,用预训练蕴涵模型关注相关句子,再聚合句子信息。Semantic-RetrievalMRS[35]关注不同尺度的阅读理解任务,既需要语义检索,下游任务又需要不同粒度层次的阅读理解;构造了语义检索模块、段落和句子级别的模块、下游任务模块,先进行段落检索,再进行句子检索。

根据线索抽取分析多跳模型的推理能力

模型有可能根据数据集里的一些特点作弊,直接匹配答案所在线索,跳过中间步骤。因此一些工作根据模型的线索选取情况评估多跳模型是否真的有推理能力,以及构造难度更大的对抗测试集。这种评估对各类多跳模型都适用。

Jiang 等人的工作[60]观察发现,由于问题与最终一跳文本的重合度高,因此可以跳过中间推理,通过捷径得到答案。于是提出一个不依赖于模型的构造对抗文档的方法,添加一个错误答案文档和一个该文档的中间文档,通过捷径会通向该错误答案,正常推理则会通向正确答案。

Wang等[64]从模型角度分析: 模型是否真的有推理能力?推理链的使用是否真的有帮助?文中使用Single-Oracle(仅给出答案所在文章)、Ordered-Oracle(按序给出每跳文章)、Random(无序给出抽取的文章)三种设置,发现模型有普遍性的弱点。在此基础上提出了一个基于共同匹配(co-matching)的方法,虽然现在的适用范围有限,但是以后可以运用到真实推理中。

Trivedi等[62]则提出非连接推理(disconnected reasoning)概念,并提出了更好的测试多事实推理的方法: 对比支持测试(contrastive support test)。设计了一种自动化的方式产生相应的数据集,可用于测试模型是否做到了多事实推理。

2.2.2 基于隐含多轮迭代或非迭代多线索关注

隐含的迭代线索选取每轮隐含关注不同内容。也有少量工作采用了非迭代的多注意力机制来解决多跳推理问题。根据具体采用模型结构的不同,可以分为下面几个部分来介绍。

多轮注意力机制多轮中每步用注意力机制改变文章或问题的表达,输入下一步推理。如图6所示,记第t步的编码表达为ct,词嵌入(embeddings)为E。Bauer等[43]用多注意力机制实现多步推理,其推理层由k个串行推理单元构成,每个单元使用BiDAF[84]注意力机制改变当前输入ct,输入到下一个推理单元。CFC[42]用粗细两种粒度的网络打分,每个网络都使用多步注意力机制,关注文本的不同部分。盛艺暄[40]等综合外部知识和多步注意力机制推理设计阅读理解模型,段艺文等[38]提出使用动态路由网络结合多层注意力机制,李天仙等[39]关注用多跳机制解决中文阅读理解。

图6 隐含多轮注意力迭代

基于Transformer的多注意力机制与上述多轮注意力机制不同,Transformer是基于非迭代多注意力机制的预训练模型。Longformer[47]是应用在长文本场景下的Transformer,利用滑动窗口构造稀疏的注意力矩阵,降低计算复杂度。ETC[46]结合全局本地自注意力机制,并利用对比学习目标,能够处理长的和有结构的文本。

记忆网络记忆网络(Memory Networks)[48]是解决bAbI推理式任务[70]的常用方法,基本思想是每轮记住文章的不同部分,不断更新记忆,包括四个模块: 输入模块、泛化模块、输出模块、响应模块。为了减少监督,实现端到端学习,提出了端到端记忆网络[45]。后续进一步提出动态记忆网络(DMN)[41],输入、记忆、输出都使用RNN,适用于自然语言任务。MAMCN[49]解决长文本依赖问题,基于记忆增强网络(MANN)结构,把记忆部分和模型参数解耦。另外,基于键值对的记忆网络可以辅助显式推理,EPAr[22]就利用了键值对层级记忆网络。

多轮阅读一些工作虽不是典型的多轮注意力机制,但也模拟人类多轮阅读的形式。如ReasoNet[50]和ReasoNet++[44]使用强化学习实现多轮阅读。Ruminating Reader[51]则在BiDAF上增加了一层注意力机制,实现读两遍的效果,并加了Ruminate层来整合信息。

基于隐含多轮迭代模型的分析目前有工作[65]对于记忆网络是否真的具备多步推理能力提出了一些质疑,指出需要额外的监督信息来学习正确推理。Suster等[67]更进一步发现记忆网络甚至不能很好地解决单跳问题,不过该结论只是在通用记忆网络上的发现,在其他基于记忆网络的结构上有待进一步验证。

2.2.3 小结

线索选取方法本质上是通过迭代或者其他交互实现逐跳语义匹配,即迭代线索选取每一轮都利用上一跳的信息实现多跳推理的效果,非迭代线索抽取则利用文本间的交互来利用信息,解决了问题与多跳线索语义差异较大这一挑战。

显式迭代线索选取的优点在于模拟了人的推理思路,而且动态迭代抽取的扩展性好于图方法;局限性在于只能给出句子或段落级别的线索,且多跳问答中的迭代线索选取方法大多在检索步骤,粗粒度地选取段落。显式非迭代线索抽取的优点在于简洁;缺点是不符合推理的步骤,可解释性更差,而且容易学到数据集的偏差信息,而不是真正学会推理。显式线索选取类方法的总体缺点是,只能给出句子或段落粒度的有序线索列表,可解释性比大多数结构化推理方法要差。

隐式线索选取类方法则一般更不关注可解释性,不过一些工作关注对注意力机制权重的可视化,可以大致展示出模型关注了哪部分线索。

2.3 基于问题拆分的多跳模型

2.3.1 基于显式问题拆分

在基于文本的多跳问答中,复杂问题是常见情况,HotpotQA数据集就是如此。如图7所示,复杂问题可拆分为两个简单子问题进行回答。

DecompRC[54]拆分模型把复合问题定义成几种类型,每种类型的问题拆分形式都定义为确定切分点并抽取片段,使用少量人工标注的问题拆分数据作为训练数据,训练BERT[85]加上指针的模型作为拆分模型,答案模型则为基于BERT的答案抽取模型,最后用分类器确定哪种类型的拆分得到的答案最好。UMT[52]则采用无监督方法,构造简单问题语料库,用原问题从中检索两个简单问题来代替拆分,并且再用无监督序列到序列(seq2seq)模型生成子问题。这样得到的子问题是并列的。在使用同个答案流水线模型的情况下,UMT的无监督拆分和使用人工标注数据的DecompRC拆分所得到的回答效果可比较。

TMN[53]则提出了一个跨数据集的通用多跳问答框架,并且给出了具体实现ModuleQA。方法的重点在于问题生成模型,其训练数据获取是一个难点,文中用了SQUAD数据集先训练具体任务的问题生成模型,再用这个模型生成有噪声训练数据,训练最终的问题生成模型。

在2.2.1节中提到的AIR[33]和Golden Retriver[24]在每步改变查询或生成新的查询,也可看作一种显式问题拆分,只是生成的是查询。

显式问题拆分的可解释性拆分后得到的子问题就是推理过程解释,如图7所示。

图7 问题拆分的例子

问题拆分角度的任务与模型分析Min等[61]观察并分类了HotpotQA中的复杂问题,把桥接类分成多跳、冗余线索、弱干扰、非复合类;比较类则分成多跳、基于上下文、单跳。与Jiang等[60]类似,本文也给出了构造对抗文档的方法。弱干扰类的单跳是由于文档区分度不够,所以用单跳模型得分最高的8篇作为干扰文档,加上原有两篇正确文档,重新构成10篇文档;对于通过类型即可判断正确答案的情况,可用一个同类型文档作为干扰文档。结果表明两种方法都有一定效果,但都不够好。

Tang 等的工作[63]则评价基于拆分的这些复杂问题系统能否回答简单的单跳问题,结果发现很多模型并不能回答简单问题,说明这些模型的推理能力有问题。基于这个发现,该文提出了一个新的模型,把问题分类成简单问题和复杂问题,对两类问题分别训练模型获取答案。

2.3.2 基于隐式问题拆分

自组装神经模块网络(Self-Assembling Neural Modular Network)[56]将神经模块化网络(NMN)用在多跳问答中,共4个模块,用Controler确定如何组装模块,每轮输出当前的子问题向量,用于下一轮输入,即每轮关注问题的不同部分。MAN(Multihop Attention Networks)[55]针对问题和答案匹配的任务,每轮关注问题的不同部分,通过注意力机制改变问题的表达向量oq和答案向量oa。LQR-net[57]则是针对多跳问答任务,每轮用改写模块改写问题表达,阅读模块阅读,最后一轮回答问题。隐含问题拆分和第2.2.2节的隐含线索选取思路逻辑基本一致,如上面介绍的MAN是每轮改变问题向量,上一节介绍的多轮注意力机制则是大多是改变上下文表达。这里根据方法侧重点的不同进行了分类。

2.3.3 结合逻辑形式的语义拆分

BREAK[75]提出问题理解任务,定义逻辑形式QDMR(Question Decomposition Meaning Representation),将原问题拆成多个步骤,搜集了多个数据集的复杂问题,众包标注得到数据集BREAK。设计模型展示了利用QDMR可以提高多跳问答的效果,并构造QDMR 解析器解决生成QDMR的语义解析任务。NLProlog[59]则将逻辑规则和自然语言结合,设计了一个神经符号化的(Neural-Symbolic)模型,根据Prolog逻辑语言提出NLProlog。Gupta等[58]和上节中提到的自组装神经模块网络一样,也使用了神经模块化网络。但后者固定几种模块组合,隐含地解析问题;本文将问题显式转换成说明模块组合方式的逻辑形式,用序列到序列(Seq2Seq)模型学习。

2.3.4 小结

本质上,问题拆分类方法是利用对问题的拆解,实现多推理过程步骤拆解,而对问题的拆解利用了语法、标注、外部数据、上下文等信息。

显式问题拆分的优点是可解释性较好,在拆分有较好可读性的情况下,推理过程是最符合人类习惯的;受数据集偏差影响也小,模型的鲁棒性较强。但缺点是较难解决隐含多跳等问题;且目前模型效果大部分不如其他类别的推理模型。

隐含多轮迭代大多是早期推理常用方法,并不能显式给出推理路径。记忆网络、Transformer是后续工作可以挖掘和改进的地方。

结合逻辑形式的语义解析能更细粒度地对问题进行解析,与基于知识图谱的多跳推理有一定联系。问题是在文本场景中并不能像知识图谱场景中那样直接查询得到答案,还需要更多研究。

2.4 三类方法之间的联系

从上文可以看到,三类方法间有很多联系。

结构化推理与迭代线索: 迭代线索仅有顺序结构这一种结构的推理链,与推理路径方法类似,只是推理链的粒度不同。

迭代线索选取与问题拆分: 拆分是通过子问题将推理分成多步,也是一种迭代寻找线索的方法。

隐含多轮注意力与隐含问题拆分: 方法的思路逻辑一致,前者侧重上下文表达等信息的变化,后者侧重问题表达的变化。

总的来说,结构化推理方法和拆分方法大部分可解释性较好;线索选取方法可解释性一般。随着研究的深入,一些工作综合了几类方法的优点。

3 实验结果与分析

上文介绍的这些工作各自都在不同数据集上进行对比,对比也不完全,为了得到一个相对完整的实验对比,分析各种方法的优缺点,我们采用最常用的两个多跳问答数据集WikiHop和HotpotQA,做了综合的实验对比和分析。

3.1 主要实验结果

HotpotQA[1]数据集答案用精确匹配(EM)和词匹配的F1值评价。支持性线索也用EM和F1评价。表4和表5分别展示了主要方法在distractor和 fullwiki上的效果,大部分是实验结果较完整且已经发表或公开论文和代码的模型。部分结果来自论文,部分由本文实现,为了与下节具体分析保持一致,两者有差异时,未经特殊说明都选用本文复现结果,不过差异很小,只有SAE模型本文使用RoBERTa,原文使用BERT uncased,导致复现结果好于论文结果约2%。Asai 等[24]的模型没有名称,本文将其命名为LearnPath。LongFormer[47]和ETC[46]验证集结果有缺失,但测试集结果完整,不影响整体比较。DecompRC和UMT只针对多跳问题的回答,没有线索选取的结果。资源所限,本文复现UMT时简化了设置,效果略差于原文结果 80.1+0.2,但差异不大。

表4 HotpotQA distractor设置实验结果

表5 HotpotQA fullwiki设置实验结果

从表4可见,在distractor设置下,简单模型效果较差,证实了需要多跳模型。结合图等结构的模型整体效果最好,问题拆分类方法次之,线索抽取方法较差,但基于Transformer的隐含方法效果较好。基于图方法则是因为随着不断发展效果越来越好。显式线索抽取对于distractor下的句子检索缺少效果较好的方法;隐式方法中,由于Transformer的多注意力机制可以看作没有先验知识的图结构学习,所以效果较好。问题拆分方法中,UMT拆分通过多跳模型召回信息,所以能和图结构方法可比较。

从表5可见,fullwiki设置下,结构化推理方法最好,线索抽取次之,问题拆分类方法最差。结构化推理方法依然表现强势,且随着研究发展不断提升。线索抽取类方法主要就是针对多跳检索而发展的,所以对开放领域多跳问答有显著提升。问题拆分类方法没有特别关注开放领域检索,只使用简单的检索方法,所以效果较差。

WikiHop[68]数据集分为unmasked和masked两个版本,masked版本是为了验证模型是从上下文而不是根据答案本身特性得到答案,把任意候选答案表达用100个不同的占位符替换得到的。表6展示了各个模型在WikiHop上的结果。基于Trasnformer的模型ETC-large的效果最好,这也与前文的分析一致,基于Trasnformer的模型的效果能超过有先验知识的结构化推理。另外基于图和推理路径的模型也有较好效果。

表6 WikiHop实验结果

另外,WikiHop上人类表现为74.1,模型已经超过人类表现。Hotpot上在1 000条数据中测试的人类表现在Ans/Sup/Joint上F1值分别为91.4/90.4/82.55,模型效果与人类表现相比暂时还有距离。推测原因是WikiHop是从知识图谱结构抽取出的数据集,问题是三元组形式,对人类来说不自然且噪声大,对模型反而较为工整;而HotpotQA纯自然语言的形式对人类而言更加友好,对模型而言则没有结构,难度更大。

3.2 模型解决不同类型问题的效果比较

多跳问题有不同的推理类型。我们想要知道,不同方法分别擅长什么问题?在什么问题上表现不好?HotpotQA中将多跳问题分为桥接和比类两大类,本节就针对这两类进行对比分析。

表7和表8分别给出了主要方法在HotpotQA的distractor和fullwiki两种设置下两类问题的效果,其中Br是桥接类的简写,Cp是比较类的简写。我们主要以F1值为参考,EM值作为辅助参考。

表7 HotpotQA distractor下不同推理类型的实验结果

表8 HotpotQA fullwiki下不同推理类型的实验结果

如表7所示,在distractor设置下,传统方法、线索抽取、问题拆分在桥接类上的效果通常都好于比较类,图方法则可均衡解决两类问题。这是因为桥接类问题只是在单跳基础上增加了难度,用简单问答模型可部分解决,用线索选取模型逐条匹配也能较好解决。而比较类问题需要多跳模型针对性解决,基于实体的图方法适合比较类问题,在比较类上的EM值甚至比桥接类更好。

但是如表8所示,对于fullwiki设置,传统方法、问题拆分、非迭代检索在桥接类上的效果差于比较类,而结构化方法依然效果较均衡,迭代检索在桥接类上好于比较类。这是因为桥接类问题的检索难度更大,因此影响了最终答案效果。一些结构化推理方法和迭代检索方法则由于设计了针对性的多跳检索方式,使得桥接类在开放领域下也有较好效果。

3.3 开放领域多跳问答的检索质量评价

上节提到,开放领域多跳问答中,检索质量是限制最终回答效果的一个关键步骤。如表9所示,在HotpotQA数据集的fullwiki设置下,我们比较现有方法常用的几种检索模型,分两类,一类是基于TF-IDF或神经网络重排序的方法,另一类是针对性的几种多跳检索方法。评价指标为答案召回率(Answer Recall,AR)、段落召回率(Paragraph recall,PR)、段落精确匹配(PEM)、问答精确匹配(EM)。

表9 HotpotQA数据集检索效果评价

结果可见,仅基于TF-IDF的检索效果最差,加入BERT等神经网络重排序模型后检索效果有一定提升,其中两跳又好于一跳。而针对多跳的工作能进一步大幅提升检索效果。

3.4 可解释性的评价

除了对答案和支持性线索的评价,一些工作还给出了对推理过程的评价,例如对推理路径、问题拆分的评价,作为模型可解释性的评价方式。

3.4.1 对推理路径的评价

DFGN[15]能够得到基于实体的推理路径,并用ESP (Entity-level Support) 分数评价。路径是实体序列,支持性线索句子作为标准答案,如果句子中的至少一个实体被路径访问过,那么称这个句子被命中(hit)。对m个句子,如果都命中,则ESP EM为1;如果h个命中,则ESP Recall为h/m。路径分数是注意力和掩码分数相乘,取top-k路径,结果如表10所示。

表10 ESP分数对推理链的评价 (单位: %)

DRL-GRC[8]则给出了以句子为单位的推理链,简单评价了推理链中是否包含答案,实验表明该文方法包含答案的比例达到72.12%。Feng等人[23]关注从问答对中恢复推理链的工作,使用HotpotQA中标注的两个真实段落评价。

3.4.2 对问题拆分的评价

推理路径的评价还可以直接基于HotpotQA数据集中标注的支持性线索,而问题拆分的评价则完全缺少监督数据。现有工作采用标注、规则等方式来解决这个问题。

DecompRC[54]使用标注的100条左右数据的准确度(Accuracy)和F1,但是样本量太少,仅能作为一个参考性指标。

UMT[52]用了GPT-2语言模型[89]、是否形式完整、编辑距离、长度比例4个启发性指标,大多只是关注子问题本身是否是正常的语句,以及对原问题信息的覆盖程度。结果如表11所示,其中UnSeq2Seq即UMT的拆分模型所用方法。

表11 UMT中对子问题的监督评价

问题的语义拆分方面,则有全面的Break数据集[75],构造了一个复杂问题的语义解析数据集,并给出了基于序列的、基于图的几种评价指标。

3.5 小结

综合本章的实验分析,可以总结得到如下结论:

(1) 基于结构化推理的方法整体效果最好;线索抽取方法侧重于多跳检索步骤;问题拆解方法的解释性较好,但效果一般,需要结合其他模型技巧才能进一步提升。

(2) 在distractor设置下,各类方法通常在桥接类上的效果好于比较类,说明比较类问题更为特殊;但fullwiki设置下则相反,是因为桥接类问题的检索难度更大。

(3) 在fullwiki设置下,检索质量很重要,最新的一些多跳检索方法显著好于普通的检索方法。

(4) 推理过程的生成和评价可以认为是多跳问答的中间任务,由于缺少完善的标注数据和指标定义,现有一些工作尝试设计了一些评价方式。

4 未来研究方向

4.1 更符合真实场景的任务形式设计

目前对多跳文本阅读理解的任务设计还不够成熟。WikiHop数据集基于知识库构造,问题是元组。HotpotQA数据集基于纯自然语言文本构造,但由于构造方式是根据答案提问,所以该数据集的一些多跳问题不是很自然流畅,不能很好体现真实的多跳问题。

另外,大多数问题只有两跳,可扩展性不足。例如,数据集HotpotQA在构造时就是基于两跳推理,而且还存在伪多跳的情况,所以需要思考如何设计更有挑战性的任务数据集。

4.2 数据集偏差与模型鲁棒性研究

上文提到的一些问题不是真正的多跳问题。有相关工作对此提出了对抗文档构造的方法,但大多针对某种特定的情况,而且实验效果一般。因此,如何在构造数据集时保证问题难度,有待进一步研究。从模型角度来看,任务数据集的对抗文档构造也涉及模型鲁棒性的检验和提升。

4.3 可解释性相关的中间和衍生任务

前文提到,可解释性要求模型能给出中间推理过程,而现有数据集或缺少中间推理过程的监督信号,或标注粒度不够细。因此相关的中间任务值得关注,如3.4.1节提到的推理路径还原和引言部分提到的问题拆分。一方面是数据集如何提供更准确的推理路径监督数据;另一方面是自动评价指标的设计。中间推理过程效果越好,答案是否一定越好?也是需要关注的问题。另一个可能的方向是衍生任务,如Ma等[16]提出了多跳问题生成任务,是多跳问答的逆向任务,该任务的解决同样需要对中间推理过程的刻画。

4.4 开放领域多跳问答的多跳检索技术

由于多跳问题与文本之间有语义差异的特点,需要引入多跳检索技巧,3.3节提到目前一些工作已经有部分涉及,但这个领域还有待深入探索。AIR在句子上采用的高级迭代选取方法[33]也可以扩展到检索步骤。也有工作[30, 35]在未来工作中提出可以考虑检索模型和阅读模型联合训练、交互信息,能够缓解检索部分缺少监督信号的问题,减少累积的信息损失。

4.5 多跳阅读理解与其他自然语言领域的联系

一些自然语言任务与多跳阅读理解有一定联系,可借鉴其相关方法。

相关推理任务数值推理、逻辑推理等。

文本摘要多跳问答中多线索的查找可以看作是基于问题的摘要,可借鉴摘要方法。

知识图谱多跳问答虽然知识图谱上的方法移植到阅读理解上有差异,但也有不少联系,例如,Yang等[90]使用强化学习端到端地学习问题拆分和答案选择,可以运用到多跳阅读理解的许多流水线模型上。

其他一些多跳自然语言理解任务,如文本蕴涵、常识推理以及视觉问答(VQA)、开放信息抽取、句子简化等领域的方法都值得借鉴。

5 结束语

文本阅读理解作为自然语言经典任务,有多种任务形式。其中,针对较为复杂的多跳问题,本文介绍了多跳文本阅读理解的相关工作。多跳文本阅读理解关注推理能力,现有方法也致力于解决这种结合多线索的推理,并解释推理过程。我们将现有方法分为基于结构化推理的多跳模型、基于线索抽取的多跳模型、基于问题拆分的多跳模型这三类,并且讨论了这些方法的优缺点和适用的场景。总结起来,结构化推理方法相对整体效果最好,在不同类型的问题上效果均衡;线索抽取方法主要适用于多跳检索部分;问题解拆分方法解释性较好,但效果有待进一步提升。另外,多跳检索和中间推理过程的评价也是多跳问答中的重要挑战。目前,多跳文本阅读理解任务已有一定进展,也还存在一些不足和未解决问题,还需要进一步研究,也可以借鉴其他任务,相信未来会有长足的发展。

猜你喜欢
检索文本方法
在808DA上文本显示的改善
2019年第4-6期便捷检索目录
基于doc2vec和TF-IDF的相似文本识别
电子制作(2018年18期)2018-11-14 01:48:06
可能是方法不对
专利检索中“语义”的表现
专利代理(2016年1期)2016-05-17 06:14:36
用对方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
文本之中·文本之外·文本之上——童话故事《坐井观天》的教学隐喻
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕鱼
如何快速走进文本
语文知识(2014年1期)2014-02-28 21:59:13