信息检索(49):Learning Passage Impacts for Inverted Indexes

Learning Passage Impacts for Inverted Indexes


发布时间(2021)


标题:倒排索引对于段落学习的影响

摘要

1)语言模型 + 倒排索引
2)改进影响分数建模和词汇不匹配问题
3)为每个文档 token 生成单值表示,估计其重要性
神经信息检索系统通常使用级联管道,其中第一阶段模型检索候选文档集,然后一个或多个后续阶段使用 BERT 等语境语言模型对该集合重新排序。在本文中,我们提出了 DeepImpact,这是一种新的文档术语加权方案,适用于使用标准倒排索引进行有效检索。与现有方法相比,DeepImpact 改进了影响分数建模并解决了词汇不匹配问题。具体来说,DeepImpact 利用 DocT5Query 丰富文档集合,并使用语境语言模型直接估计文档中标记的语义重要性,为每个文档中的每个标记生成一个单值表示。我们的实验表明,DeepImpact 在有效性指标上明显优于之前的第一阶段检索方法,最高可达 17%。 DocT5Query,当部署在重新排名场景中时,可以达到与最先进方法相同的效果,效率提高 5.1 倍

1 引言

1)term impacts
现代搜索引擎采用复杂的机器学习排名函数来检索与查询最相关的文档。 最近,预训练的语境化语言模型(如 BERT [6])的开发带来了令人印象深刻的搜索效果,但代价是查询处理时间昂贵,这使得它们在生产场景中的部署具有挑战性。Nogueira 和 Cho [18] 以及 MacAvaney 等人 [14] 通过微调预训练的 Transformer 网络来区分相关和不相关的查询-文档对,分别展示了 BERT 在段落和文档重新排名任务中的有效性方面的卓越表现。然而,最近的几项研究 [7, 14] 表明,即使只对前 1000 个结果进行重新排名,这也会产生非常高的计算成本。其他研究 [9, 12, 13] 提出了一些计算成本较低但通常会损失一些检索质量的方法。BERT 的 Transformer 编码器由许多神经层组成,这些神经层执行昂贵的处理来计算查询-文档相关性信号。为了解决这个性能瓶颈,已经提出了不同的解决方案,这些解决方案基于 BERT 生成的查询-文档表示的预计算。EPIC [13] 建议在 BERT 之上构建一个新的排名模型,该模型训练在给定的固定长度向量空间中生成查询和文档表示,长度等于词典的大小。文档表示是预先计算的,而查询表示是在检索时计算的,然后通过计算两个表示之间的相似度来获得排名分数。
PreTTR [12] 和 ColBERT [9] 通过实验表明,BERT 大多数层中的查询-文档交互对最终效果影响不大。这导致他们在索引时预先计算文档表示,这些表示在查询处理时仅用于在最后一层计算查询-文档交互。虽然 PreTTR 仍然依赖于基于 BM25 的第一阶段候选生成,但 ColBERT 研究了预先计算的文档表示在索引中的所有文档中识别相关文档的能力。由于文档表示的空间/时间要求,ColBERT 利用应用于密集表示的近似最近邻 (ANN) 搜索作为第一阶段检索系统,然后是精确重新排序阶段,而使用精确最近邻搜索 [23] 的类似方法可以在单个阶段执行处理
遵循不同的范式,Dai 和 Callan [4] 研究了如何使用 BERT 中的上下文词表示来生成更有效的文档词权重,以进行词袋检索。DeepCT [4](用于段落)和 HDCT [5](用于文档)通过将每个词的 BERT 表示投影为单个词权重来估计每个段落/文档中词的上下文特定重要性。然后,这些词权重被转换为词频类整数值,这些整数值可以存储在倒排索引中,以便与经典检索模型一起使用。我们在本研究中解决的 DeepCT 的一个主要限制是,它是作为每个标记的回归任务进行训练的,其中每个词都需要一个基本事实词权重,并且不允许各个影响分数共同适应识别相关文档的下游目标。
通过将新的整数值作为词频存储在倒排索引中,DeepCT 和 HDCT 用额外的文档级上下文信息丰富了文档的词袋表示,从而更准确地匹配查询。使用不同的方法,Nogueira 和 Lin [19] 提出了 DocT5Query,这是一种文档扩展策略,用额外的术语丰富每个文档,从而能够提高文档相对于与其相关的查询的检索效率。DocT5Query 训练一个序列到序列模型来预测可能与给定文档相关的查询,并在索引之前将这些查询附加到文档中。作为扩展文档的另一种方式,最近的 SparTerm [1] 方法预测词汇表中每个术语的重要性分数,并使用门控机制仅保留其中的稀疏子集,使用它们来学习相关和不相关文档的端到端分数。然而,这只会将 DocT5Query 的 MRR@10 从 0.277 增加到 0.279。
我们提出了 DeepImpact,这是一种更有效的方法,用于学习术语-文档对的相关性分数贡献,这些分数也可以存储在经典的倒排索引中。DeepImpact 改进了影响分数建模,并解决了查询和文档之间的词汇不匹配问题 [25]。DeepImpact 不是像 DeepCT 那样学习独立的术语级分数而不考虑文档中的术语共现,也不是像 DocT5Query 那样依赖于不变的 BM25 评分,而是直接优化查询术语影响的总和,以最大化查询的相关和非相关段落之间的分数差异。 换句话说,虽然 DeepCT 学习现有 IR 模型的词频成分,例如 BM25,但在本文中,我们的目标是在段落中出现的所有查询术语中联合学习最终的术语影响。通过这种方式,与单独训练每个影响相比,我们提出的模型可以学习影响之间更丰富的交互模式。为了解决词汇不匹配问题,DeepImpact 利用 DocT5Query 来丰富每篇文档,其中包含可能出现在与该文档相关的查询中的新术语。使用上下文语言模型,它直接估计文档中标记的语义重要性,为每个文档中的每个标记生成一个单值表示,该表示可以存储在倒排索引中以实现高效检索。我们的实验表明,DeepImpact 在 DocT5Query 的有效性指标上明显优于之前的第一阶段检索方法,最高可达 17%。 在重新排名场景中部署时,它达到了与最先进方法相同的有效性,但速度提高了 5.1 倍
综上所述,本文做出了以下贡献:
• 我们提出了 DeepImpact,这是一种更有效的方案,用于联合学习扩展文档上的术语影响。
• 我们在 MS MARCO 段落排名任务上评估了 DeepImpact。我们发现,与之前的第一阶段检索方法相比,DeepImpact 可以提高段落排名的排名效果,并且与基于 ANN 搜索的复杂系统相比具有竞争力,同时计算成本要低得多
• 我们将 DeepImpact 作为重新排名流程中的第一阶段模型进行评估,并表明该流程与强大的基线方法相匹配或优于强大的基线方法,同时效率很高。

2 深度影响框架

重写 rewrite:添加文档已有术语
注入 inject:添加文档原本没有的术语

文档扩展
在我们的方法中,我们利用 DocT5Query 文档扩展来丰富原始文档集合,使其具有扩展术语。正如 Nogueira 等人 [21] 所指出的,文档扩展可以看作是一种双重方法。通过添加已经是文档一部分的术语,它会重写它们的频率,类似于 DeepCT。此外,它会将原本不属于文档的新术语注入段落中,以解决术语不匹配问题。我们将这两者分别称为重写和注入。表 1 总结了 DocT5Query 应用于 MSMARCO 段落排名集合时的效果,并分离了这两个贡献。虽然单独使用重写比注入实现了更强的 MRR@10,但后者实现了更高的召回率。在这两个指标上,同时使用两者的表现都明显优于其中任何一种。事实上,注入对于捕获额外结果很重要,但需要重写来正确加权注入的术语。然而,重写与 DeepCT 的比较表明,DocT5Query 在确定术语的正确频率和产生的影响分数方面仍然不是最优的。

神经网络架构
图 1 描述了 DeepImpact 的架构。DeepImpact 将原始文档术语(白色)和注入的扩展术语(灰色)输入上下文 LM 编码器,并用 [SEP] 分隔符标记将两者分开。LM 编码器为每个输入标记生成一个嵌入。每个唯一术语的第一次出现都作为影响分数编码器的输入,该编码器是一个具有 ReLU 激活的两层 MLP。这会为文档中的每个唯一术语生成一个单值分数,表示其影响。给定一个查询 𝑞,我们将文档 𝑑 的分数建模为 𝑞 和 𝑑 中术语交集的影响总和。

网络训练
我们使用从官方 MS-MARCO 训练数据集中采样的三元组来训练我们的模型,每个样本由一个查询、一个相关段落和一个假定的不相关段落组成。
我们使用讨论过的 DocT5Query 扩展每个段落。该模型将每个文档转换为分数列表,这些分数对应于与查询匹配的文档术语。然后将这些分数相加,获得累积的查询文档分数。 对于每个三元组,计算相应两个文档的两个分数。通过对文档分数进行成对 softmax 交叉熵损失来优化模型。我们使用 BERT-base 作为上下文 LM。我们将最大序列长度设置为 160 个标记。 使用 Adam 优化器,损失通过整个 DeepImpact 神经模型反向传播,学习率为 3 × 10−6。 我们使用 32 个三元组的批次并进行 100,000 次迭代训练。

影响分数计算
在训练阶段之后,DeepImpact 可以利用学习到的术语加权方案离线预测文档中每个标记的语义重要性。 每个文档都表示为术语-分数对的列表,这些对被转换为倒排索引。然后可以使用高效的查询处理策略搜索索引。我们使用三位数的精度推断分数,并且不执行任何缩放。

量化和查询处理
我们预测了实值的文档术语影响分数,但由于每个帖子存储一个浮点值会大大增加倒排索引的空间需求,因此我们决定以量化形式存储影响。量化影响分数属于 [1, 2 𝑏 − 1] 的范围,其中 𝑏 是用于存储每个值的位数。我们使用线性量化对 𝑏 = 8 进行了实验,没有发现相对于原始分数的精度有任何损失。由于我们以相同的方式量化了索引中的所有分数,因此要在查询处理时计算查询文档分数,我们只需将与查询匹配的文档术语的所有量化分数相加即可

3 实验结果

第一阶段检索实验:
1)BM25 比较
2)DeepCT 比较
3)BM25 + DocT5query 比较
4)DeepImpact(本文)
补充:deepct+doct5query没有比较,因为需要重新训练deepct

在本节中,我们使用标准测试集合和查询日志来分析所提出方法的性能。

硬件
为了评估延迟,我们使用一台机器的单核,该机器具有四个 Intel Xeon Platinum 8268 CPU 和 369 GB RAM,运行 Linux 4.18。要运行 ColBERT,需要 GPU,我们使用了具有 48GB 内存的 NVIDIA RTX8000。

数据集和查询日志
我们在 MSMARCO 段落排名 [17] 数据集上进行了实验。
为了评估查询处理的有效性和效率,我们使用 MSMARCO Dev Queries 1 与现有方法进行了比较,并在 TREC 深度学习段落排名轨道上的 TREC 2019 [3] 和 TREC 2020 [2] 查询上测试了所有方法。

基线
我们进行了两组不同的实验。我们的初步实验旨在比较 DeepImpact 作为第一阶段排序器的性能,处理倒排索引上的查询,但没有复杂的重新排序。在这个实验中,我们将我们提出的 DeepImpact 与未修改集合上的经典 BM25 相关性模型以及处理倒排索引的最新解决方案(即 DeepCT 和 BM25)在使用 DocT5Query 扩展的集合上进行比较。我们不会在使用 DocT5Query 扩展的集合上与 DeepCT 进行比较,因为这将涉及从头开始训练新的 DeepCT 模型来学习如何权衡扩展的文档。
我们的第二组实验在重新排序设置中比较了 DeepImpact。首先,使用 EPIC 和 ColBERT 对 DeepImpact 检索的前 1000 个文档进行重新排序,并与 ColBERT 端到端 (E2E) 进行比较,其中使用 ANN 搜索生成候选。最后,当将 ColBERT 在几个第一阶段截止点应用于不同的候选生成方法时,我们研究了第一阶段召回率和重新排序阶段 MRR@10。

实现
我们使用 Anserini [24] 生成集合的倒排索引。然后,我们使用 CIFF 通用索引文件格式 [10] 导出 Anserini 索引,并使用 MaxScore 查询处理算法 [22] 通过 PISA [16] 对其进行处理。我们使用 Anserini 提供的 BM25 评分方法。对于 DeepCT,我们使用了 Mackenzie 等人提供的源代码和数据2 [15]。对于 DocT5Query,我们使用在线可用的预测查询3,对语料库中的每个段落使用 40 个连接预测,这是 Nogueira 和 Lin [19] 推荐的。我们使用 OpenNIR [11] 中的 EPIC 实现和官方预训练模型4。我们使用 Khattab 和 Zaharia [9] 提供的 ColBERT 实现5,经过 200k 次迭代训练。DeepImpact 的训练和索引任务均用 Python 实现。量化步骤之后,文档直接由 PISA 索引。 所有基线的查询处理效率均使用 PISA 进行测量。查询处理使用 MaxScore 来检索前 1000 个文档。我们的源代码是公开的。6

指标
为了衡量有效性,我们使用每个查询集的官方指标,即 MSMARCO 查询的平均倒数排名 (MRR@10),以及 TREC 查询的标准化折扣累积增益 (NDCG@10) 和平均准确率 (M​​AP),遵循 [8]。我们还报告了第一阶段的召回率和重新排序阶段在不同截止值下的 MRR@10。最后,我们计算每个查询处理策略的平均响应时间 (MRT),以毫秒为单位。我们进行 Bonferroni 校正的成对 t 检验,并报告 𝑝 < 0.05 的显著性。

总体比较
我们的第一个实验旨在展示 DeepImpact 与之前的工作相比在早期阶段取得的有效性改进。结果如表 2 所示,显示了 MS MARCO 上三个查询日志的有效性和效率。我们检索每个查询的前 1000 个文档(不重新排序),并报告 NDCG@10、MRR@10 和 MAP 以及 MRT 的值。
DeepImpact 的表现明显优于所有方法,并且在 MSMARCO Dev Queries 的所有有效性指标上都显著优于其他策略。对于 TREC 2019 和 TREC 2020 查询,DeepImpact 始终优于竞争对手,在某些情况下,NDCG@10 和 MAP 的统计意义显著。后两个查询轨迹的统计意义受到查询数量相对较少的限制
我们还发现 DeepImpact 的平均响应时间超过了其他方法报告的时间。我们将其归因于查询处理策略:BM25 诱导的分数分布(用于 BM25、DeepCT 和 DocT5Query)被 MaxScore 算法更有效地利用,而 DeepImpact 学习了新的分数,MaxScore 无法有效地利用其分布。我们使用未优化的析取查询处理进行了额外的实验,由于篇幅限制,省略了这些实验。这些实验表明 DeepImpact 的速度与其他方法一致。优化 DeepImpact 的查询处理速度是一个有趣的开放问题,有待未来研究。

重排序评估
表 3 显示了使用两个复杂的重新排序器 EPIC 和 ColBERT 对 DeepImpact 生成的前 1000 个候选进行重新排序的效果。作为比较,该表还显示了 ColBERT 在采用 ANN 搜索作为第一阶段检索机制进行端到端使用时获得的性能。在所有查询集上,DeepImpact 后跟 ColBERT 重新排序器获得的有效性值都高于 ColBERT E2E。 此外,DeepImpact + ColBERT 相对于 ColBERT E2E 的加速比为 4.4 × −5.1 倍。

第一阶段截止评估
DeepImpact 能够实现比所有比较方法显著更高的召回率(截止值为 1000 时只有一个例外)。具体来说,表 4 表明,截止值越小,与其他方法的差距越大,这降低了重新排序的成本,因此可以使用更复杂的成对排序模型,例如 DuoBERT [20]。在重新排序中,DeepImpact 在截止值为 10 时优于所有其他方法。此外,它在除 1000 之外的所有截止值上都优于 DeepCT,并且与 DocT5Query 相当。

结论

进一步工作:
1)放宽匹配条件
2)使用更复杂技术改进术语扩展
3)impact score的分布是如何影响查询处理算法的如maxscore
在本文中,我们介绍了 DeepImpact,这是一种新的第一阶段检索方法,它利用传统倒排索引和上下文语言模型的组合来实现高效检索。 通过估计语义重要性,DeepImpact 为文档集合的每个标记生成单值影响分数。我们的结果表明,DeepImpact 的表现优于每个基于倒排索引的基线,在某些情况下甚至可以与更复杂的神经检索方法(如 ColBERT)的有效性相媲美。此外,当使用 ColBERT 而不是近似最近邻对 DeepImpact 检索到的候选词进行重新排序时,我们发现查询处理延迟显著减少,整个流程的有效性略有提高。未来的工作将侧重于进一步增强底层模型。首先,我们想尝试在查询文档术语之间使用更宽松的匹配条件,而不是精确匹配。其次,我们相信我们可以通过更复杂的技术来进一步改进术语扩展。最后,我们计划研究改变影响分数的分布如何影响 MaxScore 等查询处理算法,以及如何解决这个问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值