0
雷锋网 AI 科技评论按:斯坦福大学 Christopher D. Manning 组的论文《Answering Complex Open-domain Questions Through Iterative Query Generation》(通过迭代生成查询语句回答复杂开放领域问题)近期被 EMNLP-IJCNLP 2019 接收,论文第一作者 Peng Qi 为这个任务以及这篇论文撰写了一篇深入浅出的解读文章。雷锋网 AI 科技评论全文翻译如下。
本文主题:NLP 研究大家庭已经在开放领域问答中取得了很大进步,而这篇论文中提出的系统继续在「基于海量文本回答复杂问题」的情境下带来了改进。作者们展示了一种高效、可解释的方法,能在系统中进行多步推理。
从搜索引擎,一直到自动问答系统,自然语言处理(NLP)系统的发展已经极大地增强了我们获取文本信息的能力,帮我们节省了很多用来记忆和查找的时间精力。今天,每当我们脑海中涌现出问题的时候,我们的第一反应都是去搜索引擎(谷歌、百度、必应)上搜索一下。
有的问题比较简单,比如「中国面积最大省是什么省」,也有一些问题就不那么直白了,比如「第一个发现可以用 GPS 探测地震波的人是谁」,各家搜索引擎都很难直接给出这个问题的答案。这种时候我们需要借助网络上的电子百科全书,比如 Wikipedia,然后就可以看到第一个发现可以用 GPS 探测地震波的人是 美国科学家 Kristine Larson 博士。
如果能让 NLP 系统直接给出这个答案,而不需要我们去知识库中翻文章寻找答案,这个问题就叫做开放领域问答(open-domain QA),这也是 NLP 科研的一个热点任务。
在开始介绍开放领域问答的新方法之前,我们先花一点时间了解一下这个问题的环境设置、挑战,以及为什么现有的系统在回答复杂问题的时候不那么让人满意。
开放领域 vs 封闭领域/内容限定
NLP 研究人员们设计的早期的问答系统,比如 BASEBALL 和 LUNAR,都是高度领域限定的。这两个系统分别可以回答美国在某年的棒球运动员的信息,或者返回地球的登月飞船的信息,但是对所有其它领域的信息都无能为力,因为超出了设计的领域范围。也就是说,这两个系统是封闭领域的。
从此之后,研究人员们开始向开放领域问答的方向进攻。对于开放领域问答,所提出的问题并不局限于预定义好的领域和领域知识。在理想情况下,问答系统要有能力在很大规模的各个领域的文本中进行探索筛选,找到我们所需的答案。
单篇文档开放领域问答,有时候也被称为「阅读理解」,NLP 研究人员们这几年来在这个问题上做出了显著突破。这个问题指,给 NLP 系统指定单篇文档,或者只是一段文字,其中可能含有问题的答案,然后让系统根据这些文本回答问题。这就是以 SQuAD 为代表的许多流行的 NLP 问答数据集的基本格式。在 SQuAD 数据集上训练出的问答系统可以在描述各种不同领域的知识的文本上工作。不过这样的问答系统需要我们首先找到可能含有答案的那篇文档(那段文字),这也就带来了一些限制。
为了解决这个问题,研究人员们开始研究能在大量文本上工作的问答系统。相比于 SQuAD 代表的「从含有答案的一段文本里找到答案」,在大量文本上工作的系统需要在一批文档中进行筛选,最终找到答案;这和我们使用搜索引擎有类似之处。这种任务设置就被成为开放内容开放领域问答(open-context open-domain QA),就比阅读理解有挑战得多。当然了,当你想到了一个问题,却不知道要从哪里寻找答案的时候,开放领域问答也就比阅读理解有用得多。在内容限定的问答之外的新挑战主要在于如何用可拓展的方法把大量文本缩小到一个能够处理的范围,这样我们就可以用现有的阅读理解模型找到那个答案。
开放领域问答系统
受到文本检索会议(TREC)上的系列问答竞赛启发,近几年来研究人员们开始场尝试把具有很大潜力的基于神经网络的问答模型用在开放领域问答任务中。
普林斯顿大学陈丹琦团队首先把传统的搜索引擎和现代的神经问答系统相结合来处理这个问题。他们的开放领域问答方案名为 DrQA(https://arxiv.org/abs/1704.00051),简单但效果出色:给定一个问题,系统会根据问题在文档库中搜索可能包含答案的文档,然后,经过筛选之后数量变少的文档会作为阅读理解系统的输入,由阅读理解系统生成最终的回答。
开放领域问答中大多数的近期研究都依然遵循了这种「检索+阅读理解」两步走的方案,然后会添加一些重新排序、基于神经网络的检索、更好的混合训练等等特性作为改进。
复杂开放领域问题带来的挑战
但其实,所有「检索+阅读理解」两步走的方案都没法很好地处理复杂问题。下面我们通过一个例子来说明这是怎么回事。
假设有一天你突然好奇演《海王》的那个演员还拍了什么电影,但你一下子想不起他的名字了。这时候我们会首先去搜索引擎搜索「海王」或者「海王男主角」,先确认这个人是谁。一般来说在开头的几个搜索结果里我们就能找到他的名字是「Jason Momoa」,然后再搜索这个名字就能找到他还拍了什么电影。
在这个简单的例子里,回答问题所需的关键信息并不都是可以直接从问题里读出来的,也就是说,这其实还是一个知识发现问题。所以这个问题对目前的「检索+阅读理解」模式的开放领域问答系统来说就很难处理,因为答案和问题之间有一些重要的语义信息并不重合。
针对这种问题,一种解决办法是联合训练基于神经网络的信息检索模型和阅读理解模型,让它们能够对查询语句做一些更新,从而找到更多的信息来回答问题。虽然这种方式确实也是有机会带来改进的,但用这样的远距离监督信号做信息检索模型的预训练、让它找到可能含有答案的文档还是很有可能失败,因为问题和我们想要找到的文档之间的语义重合部分还是太少了。从问题直接到答案的端对端训练也消耗资源太多以至于不可行,因为在第一步推理之前就进行查询的话,需要面对巨大的查询空间,即便我们能训练出一个执行这项任务的模型,这个模型也很可能只有极低的计算效率,而且可解释性很差。
所以,我们是否有可能设计一种新的开放领域问答系统,让它既能够处理复杂的多步推理问题,而且还计算高效、可解释呢?斯坦福大学 Christopher D. Manning 组的论文《Answering Complex Open-domain Questions Through Iterative Query Generation》(通过迭代生成查询语句回答复杂开放领域问题,https://nlp.stanford.edu/pubs/qi2019answering.pdf)中就提出了这样一个系统。这篇论文的第一作者就是这篇介绍博客的作者 Peng Qi,论文也已经被 EMNLP-IJCNLP 2019 接收,并在 11 月 6 日进行了口头报告。
要介绍论文中的这个系统,叙述要分为两个部分,首先介绍针对开放领域问答的多步推理问题的总体策略,然后介绍用来评价这个系统的数据集和实验结果。
总体策略
正如上文所说,「检索+阅读理解」模式的系统没法高效地处理复杂需要多步推理的开放领域问题,原因有:1,这些问题需要有多个支撑线索才能回答,2,只根据原来那个问题通常都很难找到所有必须的支撑线索。一个理想的系统应当能够迭代进行「阅读理解找到的信息」以及「寻找更多的支撑线索」这两件事,就像人类一样。
这也就是论文标题中的「iterative query generation」部分的含义,论文中提出的这个开放领域问答系统能够迭代地根据目前检索到的文本内容生成自然语言问题,以及在最终回答问题之前搜索更多的必需信息。这样的设计的好处有:1,可以用不同的问题检索多个不同的支撑线索;2,生成新问题的过程可以借助更早的检索中找到的文档,这样就可以生成无法单独根据最早的问题生成的问题。由于这个系统可以生成自然语言的查询问题,那么它还可以直接在信息检索的步骤中使用现有的信息检索系统,进行高效的检索。除此之外,这个模型的运行方式对人类来说也有更好的可解释性,能够让人类随时进行干预,矫正运行中发生的问题。
比如,如果把英文维基百科作为知识库的话,向系统提问「《Armada》的作者的哪部小说会被 Steven Spielberg 改编为电影」,它的解答过程是这样的:
模型会首先生成一个查询问题,在维基百科中搜索关于小说《Armada》的信息。在「阅读理解」了检索到的文档之后,它会开始尝试寻找 Ernest Cline (这部小说的作者)的更多信息。最后,当系统找到了回答这个问题所需的全部文档之后,它就会把这些检索步骤中找到的排名靠前的文档级联起来,然后把它们输入一个内容限定的问答系统来预测最终的答案。
这种方法的主要挑战在于如何训练一个易于与其它组件合作的查询问题生成器,能借助它生成的问题语句检索到所有所需的信息。这篇论文的主要贡献也就是一种高效地训练查询问题生成器的方法,对于要检索到哪些文档只需要很少的监督信号,而且能在回答复杂的开放领域问题时发挥出优秀的表现。作者们的方法基于一个重要的观察:如果一个问题能根据语料回答,那么其中就会存在一个可以追踪的过程链条(或者图)。换句话说,作者们提出,在寻找支撑线索的过程中的任意时刻,都需要在「已知的」(问题文本、已经找到的线索)和「要找的」(其余的支撑线索)之间存在强语义重叠。
找到回答复杂问题所需的许多支撑线索就好像要在草堆里找到很多根针。因为难,所以不要一个一个地找它们,要找到穿在这些针之间的线,也就是「已知的」和「要找的」之间的强语义重叠。
在一开始,系统问的问题都是关于「已知的」,然后需要找到能组成推理链、回答这些问题的「要找的」文档。根据作者们的观察,至少能找到一篇文档可以和问题之间有强的语义重叠,所以这里的目标就是至少找到一篇这样的可以帮助拓展推理链的文档。在前面的《Armada》的例子里,这篇文档起到帮助作用的文档就可以是《Armada》小说的维基百科页面,其中的语义重叠就是「Armada」这个名字,以及「这是一本小说」。用基于文字的信息检索系统并不难找到这样的文档,只需要确定一个重叠的词句然后搜索它就可以。
在一步信息检索过后,很有可能系统就在许许多多文档里找到了关于《Armada》小说的这个维基百科页面。到了这里,根据「已知的」(「Armada」这个名字和《Armada》小说的维基百科页面)和「要找的」(「Ernest Cline」)之间的语义重叠就可以生成新的查询问题。要找到语义重叠并不难,只需要在「已知的」和「要找的」之间进行最长相同子序列查找就可以。
首先找到推理中的每一步所需的查询问题,然后就可以训练模型来根据每一步中的问题+已经检索到的文档生成新的问题。这样训练出的查询问题生成器就可以用在多步骤的开放领域推理中。这里的查询问题生成任务可以看作是一个内容限定的问答问题,它的本质就是把给定的问题和给定的文档(在上一个步骤中检索到的文档)映射到能根据文档导出的一段文本内容,所以和问答(阅读理解)非常相似。
论文作者们把整个系统称为 GoldEn Retriever,意为「黄金实体检索器」,一方面因为模型检索到的维基百科页面大多数都是关于实体的,同时这也是一个用于检索的模型的很有趣的名字(在英文语境中)。下面的表格中列出了一些样例问题以及用来训练查询问题生成器的不同步骤的查询问题。
在这里,作者指出:
首先不难看到,把语义重叠找到的问题作为查询问题生成器的训练的监督信号,这种做法是可以拓展到任意数目的支撑线索文档中的。而且它也不需要额外的知识来指明是否需要&如何把原本的问题分解成几个子问题。只要在训练的时候已经找到了那个所需的“黄金”支撑线索文档,就可以用这种方式高效、大规模地构建开放领域下的推理链条。
作者们也没有对文档检索的顺序做出任何假设。在开放领域推理的任意一个步骤中,假设可以一次性枚举出所有有关联的、在推理链条里将会检索到的文档,找到这些文档中的语义重叠、生成查询问题、进行搜索,最先、最容易被找到的文档就会是和当前的推理步骤最紧密相关的文档。
作者们用来测试 GoldEn Retriever 表现的数据集是 HotpotQA,这是 Peng Qi 等人发表在 EMNLP 2018 的论文中介绍的一个较新的多跳问答数据集,它是基于英文维基百科,由众包的问题组成的 QA 数据集。具体来说,他们给众包工作者展示两个相关联的维基百科页面中的简介段落,然后让他们写出一些同时需要这两部分信息才能回答的问题。上文中关于《Armada》小说的问题就是来自这个数据集的。为了鼓励以及方便其他研究人员设计具有可解释性的问答系统,作者们也让众包工作者们在段落中高亮标出能支持他们的问题和回答的句子(也就是「支撑线索」),并让问答系统在测试时找出这些线索。
HotpotQA 中包含两种评价设定:一个从少量文档中提取的设定,以及一个开放领域、针对整个维基百科的设定;后一个设定也是作者们主要研究的,就是给定一个问题以后,系统需要从整个维基百科中找到答案。HotpotQA 的一大特色是含有各种不同的推理策略,有一些问题中缺少主体(比如关于《Armada》小说的问题缺少作者的名字),有一些问题是交叉属性(比如问题「什么东西同时有 A 性质和 B 性质」),有一些问题是比较,比较两个实体的同一个属性,等等。
在这个系统上评价问答系统,会考察系统的两个方面:回答的准确率以及可解释性。回答准确率由答案的确切匹配(exact matches,EM)以及一元组 F1 分数评价;可解释性也会计算模型预测的支撑线索和标注出的支撑线索之间重合程度的 EM 和 F1 分数。这两个方面的 EM 和 F1 分数是合并考虑的,也就是鼓励问答系统在「准确」和「可解释」方面都有好的表现。
对于在检索出的文档上做阅读量理解回答问题的模型,作者们选择了一个 BiDAF++ 模型。更多的技术细节可以参见论文。
作者们评价 GoldEn Retriever 的表现也从两个方面出发:它检索到好的支撑线索文档的能力,以及它在问题回答任务中的端到端表现。
在检索文档方面,作者们拿来和 GoldEn Retriever 对比的是只用原本问题做一次检索的「检索+阅读理解」系统。评价方式是,已知有两个段落是含有支撑线索的,然后考察两个系统从文档库中检索出的 10 个段落中包含这两个段落的召回率(recall)。之所以要评价这个方面,是因为即便内容限定阅读理解组件是完美的,这个召回率也决定了整个系统的表现的上限。
要找的这两个段落,段落 1 和问题的关联性较高,两个系统都获得了不错的召回率;而对于联系不那么直接的段落 2,GoldEn Retriever 的召回率足足高了 24%。这意味着,有大概 24% 的问题是「检索+阅读理解」系统找不到支撑线索段落,而 GoldEn Retriever 能够找到的。更深入的分析表明提升主要来自于改进了非对比性问题中的表现(recall 提升了 25%),这类问题并不那么容易回答。
在端到端任务中,作者们把 GoldEn Retriever 和多个「检索+阅读理解」系统进行了对比,其中包括在数据集的开发集(development set)上直接和基线系统比较,以及与公开排行榜上的、在隐藏测试集(hidden test set)上跑出结果的系统对比。
HotpotQA 数据集中自带了一个 IR 信息检索系统,它与 Elasticsearch 共同作为了「检索+阅读理解」的基线系统;Elasticsearch 具有更强的检索能力,但也仅仅把 F1 从 22.75% 提升到 27.11% 而已;公开排行榜上的最好的公开系统有 34.92% 的 F1 分数,这还有很大距离。GoldEn Retriever 把公开排行榜成绩提高到了 39.13% F1,而且考虑到前一个系统使用了强大的 BERT 模型作为组件的话,这个成绩更是十分珍贵。目前开发集上的最好成绩来自 Oracle IR,作者们认为如果他们能继续改进查询问题生成器,让它更好地按照设计预期生成问题的话,表现并不会落后 Oracle IR 太多。
在解释性方面,作者们除了考察了指标分数,也具体观察了 GoldEn Retriever 生成的查询问题。它生成的问题都很好理解,而且还有纠正错误的能力。
作者们已经把下列资源开源在 https://github.com/qipeng/golden-retriever
用于复现测试结果的模型代码以及预训练模型
训练模型使用的「理想的」查询问题,以及从 HotpotQA 修改的训练和开发文件,用于训练 GoldEn Retriever
GoldEn Retriever 预测的查询问题,以及内容限定问答模型的开发/测试集输入
这些资源都是英文的
关于模型的更详细介绍,可以阅读原论文 《Answering Complex Open-domain Questions Through Iterative Query Generation》https://nlp.stanford.edu/pubs/qi2019answering.pdf
关于 EMNLP-IJCNLP 2019 的更多报道欢迎继续关注雷锋网 AI 科技评论。
via http://ai.stanford.edu/blog/answering-complex-questions/,雷锋网 AI 科技评论编译
雷峰网版权文章,未经授权禁止转载。详情见转载须知。