文献阅读笔记:Answering Complex Open-Domain Questions with Multi-Hop Dense Retrieval

文章提出了一个无需领域专业知识的多跳密集检索方法,该方法在HotpotQA和multi-evidenceFEVER数据集上取得最佳效果。通过递归检索和交互编码,解决了复杂问题答案需从多个文档中聚合的问题,且在推理速度上提高了10倍。
摘要由CSDN通过智能技术生成

Answering Complex Open-Domain Questions with Multi-Hop Dense Retrieval

Facebook AI

摘要

我们提出一种简单有效的多跳密集检索方式来回答开放领域的复杂问题,在两个多跳数据集(HotpotQA和multi-evidence FEVER)上实现了目前最好的效果。与过去的工作对比,我们的方法不需要获取任何专业领域语料库的信息,比如文本交互的超链接或者人工注释的实体标记,可以应用于任何非结构化文本语料库。我们的系统也生成了一个更有效的准确率均衡,与HotpotQA数据集上已发布的最好的准确率相匹配,且在推断时间上快10倍。

1介绍

开放领域的问答是一项有挑战性的任务,一个给定问题的回答需要从大量文档中提取。现有的方式()分两步来解决这个问题。给定一个问题,retriever首先生成一个包含k个候选文档的列表,然后reader从这个集合中提取回答。直到最近,检索模型依然依赖于传统的基于词项的信息检索方式,而不能在简单的匹配之上捕获问题的语义信息,这是这个任务的主要瓶颈。近期在密集检索方式方面的工作用预训练的编码器来将问题和文档映射为一个向量空间内的密集向量表示,这种方式依赖于快速的最大内积搜索来完成检索。这些方式()已经证明了传统信息检索基线上的重大检索提升。

然而,这样的方法依然受限于简单的问题,这个问题的答案在一段文字的整句中就很清楚了。作为对比,复杂问题显然包含来自多个文档的聚合信息,需要逻辑推理或者序列(多跳的)处理来推断回答(图1)。回答这个问题的过程可能是自然顺序生成的,单射的检索方式是不充分的。取而代之的是,在手头已有的信息下,每一步需要交互的方式来递归检索新的信息。多条问答是重要的任务,也是一个活跃的研究领域。()

回答多跳的开放域问题的主要问题在于每一跳搜索空间的增长都是指数级的。最近的研究通过用实体链接或者现有的超连接结构在基本的维基百科语料集上构造一个文档图解决了这个问题()。问题就变成了在这个途中找到最优的路径,这样搜索空间就被每个文章中的超链接数量限制为有界。然而,这种方法可能不能推广到新的实体链接可能表现不佳或者超链接不如维基百科丰富的领域。更重要的,尽管使用了这些数据独立的修剪启发式方法,效率仍然是个问题,最好的模型()需要成百上千地调用大型预训练的模型来生成一个回答。

作为对比,我们提议在多跳设置的基础上使用简单递归框架的密集检索。我们的方法交互地编码问题并且预先检索文档作为一个查询向量,然后使用有效的最大内积方式检索下一个最相关的文档。高质量的密集表示由预训练的编码器生成,我们的研究首先证明了提供足够信息的文档序列回答多跳问题可以被从非结构化文本中精确地找到,而不需要专业领域语料超链接的帮助。当在两个基准数据集上评估时,我们的方式比传统的基于连接的方式获得了极大改善。重要的是,更好的检索结果也造成了新的目前最优的下游结果,且在推理时间上快10倍。

2方法

2.1问题定义

本研究考虑的检索任务可以描述如下(图1)。给定一个多跳问题q和一个大型文本域料集C,检索模型需要检索包含了回答q的充足信息的一系列文章P_seq。时间中,检索返回k个分数最高的序列候选,希望他们中至少有一个有满意的质量。K应该足够小,以便下游模块在合理的时间内处理,同时保持足够的召回。通常,检索也需要足够有效来解决现实世界中包含数百万份文件的语料库。

2.2多跳密集检索

模型

基于多跳检索问题的顺序性本身,我们的系统用一个交互的方式解决了。我们建模了选择一个特定文章序列的可能性,如下:()

t=1时,我们只在原始问题的条件下检索。在每个检索步骤,我们基于之前的结果构造一个新的查询表示,检索用在整个语料库的密集表示中最大内积搜索实现。()

<,>是在查询和文章向量间的内积。h(.)和g(.)是生成密集表示的文章和查询编码器。在时间步t,为了重新形成查询表示来计入之前的检索结果,我们直接拼接了问题和检索文章作为输入给g(.)。注意我们每一个检索步骤的公式与现有的单跳密集检索方式相似(),除此之外我们加入了在之前的检索结果的基础上重新形成查询的过程。没有用问题和文章编码器分离参数的双向编码器结构,我们h(.)和g(.)都用共享的robert编码器。在3.1.3中,我们展示了这个简单的修改产生了可观的改进。

训练和推断

检索模型用同样的方式训练(),每个输入查询(每一步包括一个问题和之前的检索文章)跟一个正例和m个负例成对来在所有文章中近似分类。正例是在时间步t处的最佳注解证据。负例负例是由当前批次(批次内)对应于其他问题的文章和错误的对应文章的硬负例。在我们的实验中,我们从TF-IDF检索文章和他们在维基百科链接的页来获取硬负例。我们注意到对于我们的方法用超链接的网页作为补充的负例既不必要也不关键。事实上如果我们将他们在训练中移除,只能观察到表现效果上非常小的退化。

为了补充批次内的负例,我们使用一个记忆银行(M)机器来更深地增加每个问题中负例的数量。记忆银行存储了大量的密集文章向量。当我们在内存中阻止梯度反向传播时,他的尺寸(M>>批次大小)更少地被显存限制。具体地,在训练后拟合共享编码器后,我们固定一个编码器的副本作为一个新文章的编码器,并通过多个批次收集一系列文章表示作为负例的集合。这个而简单的扩大结果更多地提升了检索结果。

对于推断,我们首先将整个语料集编码为一个文章向量的索引。给定一个问题,我们使用束搜索来获得最优的k个文章候选序列,每一步束搜索的候选由在时间步t最大似然用查询编码器生成。然后所有束有上述讨论的概率公式表示的内积之和来评分。这种推断只依赖于密集文章索引和查询表示,并且不需要带有超链接或者实体链接的具体的图结构。最优的k个序列将会被喂入具体任务的下游模块来产生期望的输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值