【论文阅读】Semantic Models for the First-stage Retrieval- A Comprehensive Review

1.前言

2.Abstract

第一阶段:返回候选的文档集合

后续阶段:对候选文章重排序

第一阶段长期以来以 term-based model主导,会出现词汇不匹配问题(比如无法匹配“合适的衣服”与“适合的服装”),导致从一开始就妨碍后续对相关文档的排序。因此长期以来都希望对第一阶段检索构建语义模型,从而有效地达到高找回率。

第一阶段想检索出所有可能相关的文档,因此想要达到高召回率(且高效)。

后续排序就是要提高 precision,尽量把最相关的文档都放在top位置。目前第二阶段(重排序)发展得很快,但很复杂,难以处理大规模输出的查询。

3.Introduction

本文是第一篇关注第一阶段的综述

贡献:

  • 在一个统一的框架下描述了第一阶段检索模型的现状来阐述传统的 term-based 检索,语义检索的早期方法和语义检索的深度学习方法之间的联系
  • 我们提供了一个关于语义检索模型全面的,最新的综述,简要回顾了早期的语义检索模型,并对最近的神经语义检索模型进行了详细的描述
  • 从模型结构角度将神经语义检索模型分成三个范式:稀疏检索方法,密集检索方法和混合检索方法。我们还讨论了模型学习的关键问题,包括损失函数和负抽样策略。
  • 讨论了一些开放性的挑战,建议了未来有潜力的工作方向

4.语义检索模型主要应用(三大应用)

ad-hoc retrieval:用户的查询要求不断变化,数据库相对稳定。主要研究任务包括对大数据库的索引,查询等

routing:用户的查询相对稳定,数据库不断变化。主要任务不是索引,是对用户兴趣的建模

  • ad-hoc(返回一个排序的文档列表):查询和文档长度的不一致,会导致词汇不匹配问题
  • open-domain question answering(返回一段文字):目前一般分为两阶段
    • 一阶段(document retriever):挑选出可能包含答案的文档的小集合
    • 二阶段(document reader):从一阶段返回的集合中选取答案
  • Community-base question answering(CQA):从已经存储的仓库中寻找 question-answer pair,产生答案通常有两种方式
    • 第一种:如果答案存在的话,直接从集合中检索出答案并返回。
      • 问题:需要对问题与答案间的逻辑关系进行建模。
    • 第二种:从集合中复制问题,并返回附带的答案作为结果。
      • 问题:需要捕获word之间的语义相似性,因为一个问题可以有多种表达方式。

5.Background

5.1.Problem Formalization

第一阶段的目标是:从 document 集合中学习一个模型s,给相关的(q,d)高分,给不相关的(q,d)低分。s(q,d)就是一个分数,代表查询与文档间的相似度。

和 re-ranking 阶段不同的是,第一阶段进行检索的语料库可以很大(millions to billions),因此,效率就很关键。

5.2.Indexing Methods

第一阶段需要查询的集合比较大,为了支持存储和文档的快速索引,检索系统需要一个 index 方法。

  • inverted index(倒排索引): 包含字典(所有 terms)和posting list集合。term----posting list
    • 所有文档初始时都是 0 分。然后对 query 中的 term 逐个处理,根据 term 对 query-document 的贡献,将term的posting list中包含的文档进行相应的加分。
    • 不适用作为深度表示方法的 index 方法:深度表示方法中,document用 embedding 表示,会导致文档对很多 term 都有权重,这会导致 term 对应的 posting list 都很长,从而运算变多,效率变低(其中一个原因吧)
  • dense vector index(基于近似最近邻搜索算法):计算 query embedding 和 document embedding 之间的相似度。ANN 在精度上略有损失,但在速度上却有多个数量级的提高。目前通常可以分为四类
    • tree-based,hashing-based,quantization-based,proximity graph approach

5.3.Classical Term-based Retrieval

这些方法以 bag-of-words的假设来表示查询和文档(文本都被表示成词袋,忽略语法甚至词的顺序),表示出的向量的维度通常等于词汇表的大小。查询和文档的表示函数通常不同,但他们都保证稀疏性,以使得能够支持倒排索引的高效利用。

  • vector space model(VSM):query 和 文档都表示成向量,每个维度都代表一个 term 的权重。然后用 cos 算相关度
  • Binary Independence Model(BIM):每个维度是 0 / 1,代表该 term 是否出现
  • Language Model(LM):为每个文档建模,使用文档产生 query 的 P(q|M) 来排序

5.4.Early Methods for Semantic Retrieval

5.4.1.Query Expansion:

通过向查询中添加相关 terms 来提高检索效率的过程,可以弥补查询和文档之间的不匹配。

  • Global methods:通过在搜索的语料库中分析词的同时出现,或者利用外部手工标注的词典来重新订制查询单词
    • 在不同查询上可能不稳定
  • Local methods:通过原始查询检索到的排名高的文档来调整查询(pseudo-relevance feedback—PRF)
    • 可能出现查询漂移问题

5.4.2.Document Expansion:

当更换扩展方法时,需要对文档集进行重新 index,很麻烦。一般 query expansion 更高效一些。

5.4.3.Term Dependency Models

term-based model 独立考虑每个 term,忽略顺序等。Term Dependency model将term的依赖性合并到表达函数中。简单的方法是用短语来扩展词典(eg.将短语也作为表示向量的一个维度)

  • Markov Random Field(MRF):将文档和query中的每个term都分别表示成节点。文档节点和query中term的每个节点的相互连接,term节点间也有一些边(这取决于预先定义的依赖关系),以此来表示相关性。

尽管这些方法可以捕获特定的语法和语义,但“理解”能力仍然很有限

5.4.4.Topic Models

表征向量的每个维度代表一个 topic 而不是一个 term,研究 words 之间的潜在语义。通过语义表征来进行 query-document 匹配。

  • 概率方法:通常是生成模型。每个topic被定义为词汇表中 term 的概率分布,每个文档被定义为 topic 的概率分布
  • 非概率方法:通常是矩阵分解方法

应用 topic model 来提升检索通常有两种方式

  • 获得 query 和 文档的 topic space 表示,然后算相似度
  • 将 topic model 和 term-base 方法相结合

单独使用潜在 topic 表示对检索任务来说,通常提升很好。而将 topic model 和 term-based 方法相结合会比较好。可能原因如下:

  • topic model主要是无监督的,学习生成方式的模型,可能学不出对特定检索任务合适的匹配分数
  • word co-occurence patterns 是从文档中学出来的,忽略了查询语言和文档其实有不同的
  • topic model 将文档表示成紧凑向量,失去了 term-level 的细节匹配信息

5.4.5.Translation Models

将文档的表征函数从 term frequency 变成了翻译模型。

统计机器翻译在IR上的应用将 query 看成一种遇见,将文档看成另一种语言。我们需要学习 query 到相关文档的翻译概率。翻译模型会提供一定的语义平滑(适合->合适)

IR中翻译模型与传统翻译模型不同的是,query 和 document 实际上是同一种语言。一个词翻译成它自己的概率(这个词在 query 和 document 中都出现)需要大一些,这代表着特定词项匹配。

这些方法都是利用从集合中提取出的语义资源来提升传统的 BoW 表达的方法,大部分仍然使用在 symbolic space 中的稀疏高维向量。这些方法总是依赖于手工构建的特征来建立表示函数,这会导致只能捕捉到浅层的语法和语义信息。

6.Neural Methods for Semantic Retrieval

深度学习可以表达出复杂的函数,比如将离散的符号(词,短语,句子等)转换成低维密集向量。从模型建构方面,语义检索的深度方法可以分成三类。sparse retrieval方法,dense retrieval方法,hybrid retrieval方法。

6.1.Sparse Retrieval Methods

通常将文档和 query 表示成稀疏向量,只有一小部分维度是有效的。它与人类记忆的本质相联系,并显示出更好的可解释性,并且很容易与现存的倒排索引引擎相结合。主要有两种实现方式:

  • 仍然在符号空间中对查询和文档进行编码,但是应用深度学习模型来优化 term 权重(neural weighting schemes)
  • 直接使用神经网络在隐藏空间中学习查询和文档的稀疏表示

6.1.1.Neural weighting schemes

使用深度学习模型并且保留稀疏的 term-based 检索特点的方法之一是在索引之前对 term 重要性进行重新赋权。最直接的就是设计一个神经模型,在基于语义而不是预先设置的启发函数上预测 term weights,另一种就是使用额外的 terms 来扩充文档,然后使用传统的 term-based 模型来存储和检索扩充后的文档。

  • DeepTR:利用神经 word embedding 来估计 term 重要性。
  • 【71】:TDVs,基于 FastText【26】替换了原始倒排索引表中 IDF 字段
  • Zuccon【242】:在翻译模型中使用 word embedding,使用 word embedding 来估计词之间的翻译概率。这种语言模型查询中词和相关文档中词的语义关系,有助于解决不匹配问题,在文档相似度上产生更准确的估计。

近年来,上下文 word embedding(经常使用预先训练好的语言模型进行学习)在NLP任务上取得成功。与静态 word embedding(Word2Vec,Glove,FastText) 相比,在全局语境下对词汇的语义信息建模。有些工作利用上下文 word embedding 来估计 term 权重

  • DeepCT:将从 BERT 中学到的上下文表达映射成 term 权重,以此替换倒排索引表中原始的 TF 字段

HDCT第一次估计了 passage-level term 权重(使用从BERT中产生的上下文 term 表达)

上面的方法都依赖于神经 embedding(从局部或全局环境中学出的),来直接预测 term 权重。也有一些工作试图通过一个复杂的交互网络,通过评估每个词与整个文档之间的匹配得分来估计词的权重

  • 【156】:将 query term 独立性假设引入三个深度排序模型中(BERT,Duet,Conv-KNRM),可以用查询的 term 分解文档的最终相关性得分

除了清楚地预测 term 权重,另一类方法是使用神经 seq2seq 模型来利用额外 terms 对文档进行扩充。这样的话。一些出类拔萃的 term 权重在倒排索引表中就可以得到提升。其实这种方式与【4.2】说的文档扩展是一个思路,但是使用神经网络来扩展

  • doc2query【164】:基于相关的 query-document 对,训练一个 seq2seq 模型,这个模型对每个文档都产生若干查询语句,然后这些人造的查询语句就被加入到原始文档中,以充当“expanded document”。后面就用常规检索方法,以及BM25

也有将学习 term 权重与文档扩展同时进行的

  • SparTerm:它利用预先训练好的语言模型,将基于频率的BoW表示映射到整个词汇表中稀疏的词重要性分布(将统计数据映射成一种分布),这就可以学习 term 权重并且能够为文档扩展新的 term。同时,还设计了门结构,来控制在整个词汇表尺寸上产生二值,稀疏的信号,以确定最终表达是稀疏的
  • DeepImpact:使用 docTTTTTquery 来丰富文档集合,然后使用上下文语言模型来估计 token 在文档中的语义重要性。这样就能为原始 token 产生单值表示并且在文档中扩展 token

6.1.2.Sparse Representation Learning

是用神经网络直接学习 query 和 文档 的稀疏表达。与上面计算权重不同的是,这种方法关注对查询和文档构建稀疏向量。与 topic 模型不同的是,这里使用神经模型,且每个维度没有明确的概念。之后,仍然可以高效地使用倒排索引进行存储和搜索,但是每个单元不是 term,而是 latent word。

【182】使用一个多层的 auto-encoder 来学习文档的分布式表达,这种模型可以捕捉到 document-term 信息,但是不能对查询和文档之间的相关关系进行建模。

【228】提出独立的深度排序模型,对查询和文档学习潜在的稀疏表达。它首先将查询和文档中的每个 n-gram 都映射成低维密集向量,以压缩信息并且学习数据的低维压缩。然后再学习一个函数,将 n-gram 表达转换为高维稀疏向量。最终使用点乘来计算查询与文档的相似度。但是它使用n-gram作为编码单元,只能捕获局部依赖关系,不能动态调整到全局上下文。

6.2.Dense Retrieval Methods

神经检索一个很大的好处就是能从稀疏表达扩展到密集表达,来捕捉输入文本的语义信息。

在这里插入图片描述
f f f 通常是比较简单的相似度函数,来产生最终的相关分数。为了支持在线服务,学习到的密集表达通常使用 ANN 算法来索引和查找。

6.2.1.Term-level Representation Learning

这种方法学习查询和文档 term 级别的细粒度表示,查询和文档被表示成一个序列或者一组 term embedding

在这里插入图片描述

最简单的方法之一是使用 word embedding(已经被证明在后续的重排序阶段对于构建排序模型是有效的)来为查询和文档构建 term-level 表达。

  • 【111】研究是否能够只依赖语义信息(比如用 word embedding 而不是语法表达)来计算短文本间的相似度。他们将 BM25 中的 t f ( q i , d ) tf(q_i,d) tf(qi,d)替换成了 q i q_i qi 与文档中词的 word embedding 之间 cos 相似度的最大值
  • 【155】在一个无标签的大型查询语料上训练了一个 word2vec embedding 模型。但是与只保留输出 lookup table相比,它们同时保留了输入和输出投影,从而允许利用这两个嵌入空间来派生更丰富的分布关系。在排序过程中,他们将查询词映射到输入空间,将文档词映射到输出空间,并通过合计所有查询-文档词对的余弦相似度来计算相关性得分。实验结果表明,与TF-IDF等基于术语的信号相比,DESM可以更好地对商业Web搜索引擎(如Bing)返回的top文档进行重新排序。但是,当在非伸缩设置中检索时,DESM特征非常容易出现假阳性匹配,只能与其他文档排序特征相结合(例如TF-IDF),或用于对较小的候选文档集进行重新排序

近年来,上下文 word embedding和自监督的预训练相结合,彻底改变了自然语言处理领域,并在许多自然语言处理任务上取得了最新的效果。也有一些工作在IR 领域运用上下文 word embedding 来学习查询/文档表示

  • 【237】提出 DC-BERT,在低层采用了双 BERT encoders。一个在线的 BERT 对查询进行一次 encode,一个离线的 BERT 预先 encode 所有文档并且存储所有的 term 表达。然后,将获得的 term 表示送入高层Transformer交互,它由预训练BERT的最后𝑘层初始化。Transformer的层数 K 可以根据模型容量与效率的权衡来进行调节。

  • ColBERT使用廉价但是分厂有效的交互函数(一个 term-based MaxSim)来建模细粒度匹配信号。具体来说,每个查询 term embedding 都通过一个 MaxSim操作来与所有文档 term embedding 进行交互。MaxSim操作符计算最大相似度(例如,余弦相似度或L2距离),并跨查询 term 求和这些操作符的标量输出。在此基础上,可以实现top-𝑘相关文档检索的廉价交互和高效剪枝。效果比得上现存的 BERT-based 模型,并且处理速度和需要的浮点数运算都要更优秀。

在这里插入图片描述

  • COIL:查询 term embedding 只与匹配上的文档的 term embedding 在 MaxSim 算子中进行交互。效果比得上更昂贵,更复杂的 all-to-all 匹配检索(ColBERT)

  • DeFormer【34】和PreTTR:将低层的 BERT 进行分解,使用 question-wide 和 passage-wied self-attentions 来替换 full self-attention。这种方法极大地减少了深层的 Transformer 网络的查询时延。两者的不同之处是,PreTTR模型【141】插入了一个压缩层来匹配注意分数,从而减少了高达95%的存储需求,但不会大幅降低检索性能

在这里插入图片描述

term-level表达的一个自然扩展就是学习 phrase-level 表达。文档最终被表达成一个序列或者一组 embeddings。与此同时,query常常被认为是一个 phrase,被抽象成一个向量,因为其长度通常比较短。然后,相似度函数 f f f 在 query 与文档中所有的 phrase 之间计算匹配分数,聚合这些局部匹配信号来产生最终的相似分数。

  • 【186】提出基于 BiLSTM 学习对 OpenQA任务的 phrase 表达,它带来了显著的可扩展性优势,因为可作为答案的候选短语编码能够在离线状态下提前计算和索引。

  • 随后,【187】和【122】利用 BERT-based encoder 替换了 LSTM-base 结构,并且使用上下文稀疏表示增强了从 BERT 中学出的密集表示,提升每个 phrase embedding 的质量。与文档 encoder 不同的是,query encoder 只产生一个 embedding,用于捕获 query 整个上下文语义信息。实验结果表明,将学习到的密集表示与学习到的上下文稀疏表示相结合的OpenQA模型优于以前的OpenQA模型,包括最近的 BERT-based 模型。

  • 【69】MUPPET模型,检索是通过考虑问题和知识来源中段落的上下文化句子级表示之间的相似性来执行的。给出段落 P P P 的句子级表示 ( s 1 , s 2 . . . s k ) (s_1,s_2...s_k) (s1,s2...sk),问题 Q Q Q 的表示 q q q,问题与段落的相似度计算公式为

在这里插入图片描述

在这里插入图片描述

6.2.2.Document-level Representation Learning

文档级别表示学习方法利用密集向量,抽象出查询和文档的语义,来学习一个或多个粗粒度的全局表示。这种方法常常使用一个简单的相似度函数,根据查询 embedding 和文档 embedding 来就算最终相似度分数。

在这里插入图片描述

最初的获得查询 embedding 和文档 embedding 的措施,就是利用一些预先定义的启发式函数,来直接结合他们对应的 word embedding。

  • 【45】第一个提出文档表示模型,Fisher Vector(FV),基于连续的 word embedding。它首先将 word embedding 映射到一个高维空间,然后通过一个 fisher kernel 结构将他们聚合成一个 document-level 表示。尽管FV 模型在点对点检索任务上优于潜在语义索引,但是它的性能并不优于TF-IDF和偏离随机性[7]检索模型等经典IR模型。
  • 【81】提出利用 word embedding 的平均值作为查询或文档表达。实验结果表明,提出的模型比 term-base 模型效果好,这意味着密集检索模型对离散检索模型来说是一种可替代方法。与经典的基于术语的检索模型相比,通过聚集 word embedding 来获得文本表达会失去语义和词的顺序信息。
  • 为了解决这个问题,【120】提出 Paragraph Vector(PV),一个无监督算法,从变长的文本片段中(比如句子,段落,文档)学习定长的表达。【5,6】测试了 PV 表达在 ad-hoc 检索的有效性,但是产生了不稳定的表现且提升很有限。

使用单词/文档 embedding 来获得查询和文档的密集表示的许多尝试,只观察到相对于传统的基于术语的检索模型的适度和局部改进,这表明需要更多ir定制的 embedding 或更强大的表示学习模型。

  • 对于为 IR 定制的 embedding,【5】分析了限制 PV 模型在检索任务上表现的内在问题。然后他们对 PV 模型进行改进。在Robust04和GOV2上的评价结果表明了改进的PV模型的有效性。
  • 随后,Gysel等人[85]提出了Neural Vector Space Model(NVSM),一种无监督的方法,它从头学习单词和文档的潜在表示,用于新闻文章检索。查询通过其组成 word 表达的平均来表示,并映射到文档特征空间。文档与查询的匹配分数通过他们在文档特征空间表达的 cos 相似度来表示。实验表明,NVSM在四个文本检索基准上优于词典检索模型。
  • SAFIR【4】从头开始联合学习词,概念和文档表达。查询语文档间的相似度通过平均他们的 word-concept 表达来计算,然后将其映射到文档空间。最后,匹配分数由查询和文档在文档空间表示的cos相似度来表示。通过对医学文献检索共享测试集的评价,验证了SAFIR在检索相关文献方面的有效性。

除了针对检索目标直接优化词/文档 embedding 外,考虑外部知识资源(语义图、知识本体和知识图)以增强对语义检索的 embedding 学习是另一种有效方式。

  • 【136】利用医学领域的现有知识(单词关系)来约束单词 embedding,使用的原则是相关单词应该具有相似的embedding。所得到的约束词嵌入用于IR任务,显示出优于无监督词嵌入的有效性。

为了获得更强大的第一阶段表示学习方法

  • [87]提出了一种计算高效的自然语言响应建议神经方法。前馈神经网络使用n-gram嵌入特征将消息和建议回复编码为向量,优化后的向量为消息-响应对提供更高的点积值。
  • DPR[10]模型被提出,使用一对 BERT-based encoder 来学习文本块的密集embedding。基于DPR模型的检索器在广泛的OpenQA数据集上的性能优于强大的Lucene BM25系统,有利于端到端QA性能。
  • 与DPR类似,RepBERT[232]模型采用基于BERT的双编码器来获取查询和文档表示,然后将查询和文档表示的内部乘积视为相关性得分。实验结果表明,在MS MARCO文章排序任务中,RepBERT算法优于BM25算法

另一种替代方法是将更复杂的模型(例如,term-level 表示学习方法或以交互为中心的模型)提取到文档级表示学习结构中

  • 【132】ColBERT的表达中提炼出计算相关分数的MaxSim运算符到一个简单的点积,从而支持单步神经网络搜索。他们的关键见解是,在蒸馏过程中,教师模型和学生模型之间的紧密耦合使蒸馏策略更加灵活,并产生更好的学习表示。
  • 【196】利用知识蒸馏将作为教师模型的复杂BERT交叉编码器网络压缩为学生BERT双编码器模型。这提高了以 BERT为基础的双编码器的预测质量,且不影响推理速度。
    在早期的 IR 任务中提出的神经模型中,比如 DSSM【96】,ARC-I【93】,QA_LSTM【198】,它们都基于不同的网络架构(比如全连接,CNN,RNN)来学习高度抽象的文档表达。然后,一个简单的匹配函数(比如 cos,双线性)被用来分析相似度分数。这些模型在一开始提出时常被用于重排序阶段。然而,==因为成对的encoder结构,理论上讲,他们也适用于第一阶段检索。==然而,Guo等人【82】的一项研究表明,在对整个文档进行训练时,DSSM、C-DSSM【189】和ARC-I的表现比仅对标题进行训练时要差。由于这些限制,这些早期神经模型在学术基准上大多数都不能击败无监督的 term-base 的检索基线(如BM25)。这些缺点促进了本调查中讨论的模型的开发,这些模型是专门为检索阶段设计的。

除了学习每个查询和每个文档的单一全局表示之外,另一种更复杂的方法是为查询和文档使用不同的编码器,==文档编码器将内容抽象成多个 embedding,每个 embedding 都捕捉文档的一些方面。与此同时,查询编码器将每个查询都编码成一个单一的 embedding。【97,137,199】==动机就是,文档通常是比较长的,并且有不同的方面,然而查询通常比较短,并且其主题是比较确定的。比如

  • 【137】提出多向量 BERT(ME-BERT)来为查询获得单向量表达,为文档获得一个多向量表达。他们在深度 Transfprmer的顶部表示上下文化的查询/文档序列,然后将单向量查询表示定义为特殊标记【CLS】的上下文embedding,将多向量文档表示定义为文档中 token 的前 m 个上下文向量。最后,相似度分数是每个文档向量与查询向量内积的最大值。实验表明 ME-BERT 模型在开放检索上比其他模型效果都更好
  • 【97】提出 Poly-encoder,一个带有额外学习过的注意力机制来表达更全局特征的结构。候选对象被编码到单个向量 y c a n d i y_{candi} ycandi 中,输入文本通常包含比一个候选对象更多的信息,因此被表示成 m 个向量而不是一个。然后使用候选向量来处理这 m 个向量来获得最终分数。m的值将给推理准确度和推理速度一个均衡。需要注意的是,和传统检索任务中检索文本通常比输入文本更长不同的是,【97】的任务中输入文本比检索文本更长。因此,【97】中的查询编码器实际上采用了多向量表示模型

在这里插入图片描述

6.3.Hybrid Retrieval Methods

稀疏检索方法以词或“潜词”为标引单元,通过各单元之间的硬匹配计算得分,保留了较强的辨别能力。因此,它们可以识别精确匹配的信号,这对检索任务是非常重要的。另一方面,密集检索方法学习连续 embedding 对语义信息和软匹配信号进行编码。但是细节的低层次信息常常被忽略。在稀疏检索方法的保真度和密集检索方法的泛化之间取得平衡的一种自然途径是结合稀疏检索方法和密集检索方法的优点,建立混合检索模型【78,85,115,207】。混合检索方法定义多个表达函数,然后获得查询/文档的稀疏与密集表达。最后,这些表达通过不同的融合方式来计算最终的匹配分数。混合检索方法通常结构如图所示。

在这里插入图片描述

随着 word embedding 技术的发展,对于第一阶段的检索,有许多工作是使用 term-based 模型来开发的。

  • [207]将基于词嵌入的方法与uni-gram语言模型相结合,获得了较好的单语和双语检索效果。然而,在单语检索任务中,单独的基于嵌入的模型并不能优于传统的语言模型。这就是说,神经语义模型的好处在与 term-based 检索方法相结合,而不是替代它时体现得更好。相同的结果在【155,158】中被观测到,直接使用 word embedding 在 non-telescoping setting 上只获得了很差的效果,除非将其与 term-based 特征一起使用(比如 BM25)

  • GLM【73】是一个与传统语言模型相结合的 embedding-based 翻译模型。在来自文档𝑑的查询中观察到术语𝑡的概率由三个部分建模。实证结果表明,GLM比传统语言模型具有更好的性能。

    • 直接的 term 抽样
    • 从文档本身或从集合生成不同的术语𝑡’
    • 将其转换为观察到的查询项𝑡
  • 【180】也提出将基于查询似然的词向量与基于查询似然的标准语言模型相结合,用于文档检索。在标准文本集合上的实验表明,联合相似度度量几乎总是显著优于语言模型相似度度量

此外,根据[85]的实验结果,尽管NVSM模型在某些基准测试上优于基于 term-based 检索模型,但它作为term-based 模型的补充信号更有用。类似的结论可以在【4,136,197】中被找到。

与使用词嵌入构建密集表示,直接使用词频获取 term-based 匹配分数不同,也有一些工作尝试使用简单的神经网络学习稀疏和密集表示,然后根据学习到的表示计算匹配分数

  • 【62】提出 BOW-CNN 结构用于检索在线QA社区网站中的类似问题,如图8所示。它结合了 BOW 表示和一个由CNN生成的分布式向量表达。BOW-CNN模型计算两个部分的相似度分数。针对 BOW 表达的 s b o w ( q 1 , q 2 ) s_{bow}(q_1,q_2) sbow(q1,q2)和针对 CNN 表达的 s c o n v ( q 1 , q 2 ) s_{conv}(q_1,q_2) sconv(q1,q2)。最终,将会结合两个部分分数来得到最终得分。实验结果表明,BOW-CNN比基于bow的TF-IDF等信息检索方法更有效,对于长文本,BOW-CNN比纯CNN更鲁棒。

在这里插入图片描述

  • 【142】提出了一个新的检索文章的方法,训练模型在一个给定的定长向量空间中产生查询和文档表达,并且通过在两种表达直接计算相似度来产生排序分数。不同于其他表示学习方法的是,它将每个查询表示成一个稀疏向量,每个文档表示成一个密集向量。最终,在查询向量和文档向量间使用点积来计算相似度。实验结果表明,所提出的EPIC模型明显优于之前的方法。研究还发现,该方法与目前领先的第一阶段检索方法具有加性。

随着更强大的预训练神经网络的兴起,一个很自然的方法就是将他们与 term-based 模型相结合来提升第一阶段检索。

  • 【187】提出了用于OpenQA检索阶段的DenSPI。DenseSPI模型为每个短语单元构造密集-稀疏表示。密集向量被表示为指向短语的开始和结束的基于bert的 token 表示指针,负责根据上下文对短语的句法或语义信息进行编码。稀疏嵌入对每个短语使用基于2-gram的tf-idf,能够很好地编码精确的词汇信息
  • 【122】提出基于BERT学习每个短语的上下文稀疏表示,以取代DenSPI中基于词频的稀疏编码【187】。该方法利用调整的自注意间接学习 n-gram 词汇空间中的稀疏向量,通过上下文化稀疏表示增强每个短语嵌入的质量。实验结果表明,使用学习到的上下文稀疏表示增强DenSPI的OpenQA模型优于之前的OpenQA模型,包括最近的基于bert的 pipeline 模型,推理时间提高了两个数量级。
  • 【137】提出利用一个可训练的权重 λ \lambda λ 来线性结合 term-based 系统(BM25-uni)和 neural-based 系统(dual-encoder,多向量模型)的分数,权重在开发集上调优,在保持可扩展性的同时产生强大的性能
  • 【78】提出 CLEAR 模型,使用一个 BERT-based 模型来补充 term-based 模型。实验结果表明,从CLEAR中不进行重新排序的检索已经几乎与BERT重新排序 pipeline 一样准确。
  • 【115】提出了一种通用的混合文档检索方法,该方法利用了语义模型(BERT)和词汇检索模型(BM25)。本文进行了深入的实证分析,证实了混合模型的有效性并且揭示了词汇和语义模型的互补性质。

6.4.Model Learning

像上面说的,神经语义检索模型总是在网络架构中定义三个函数。这些函数通常使用深度学习方法从数据中学得。在这里,我们讨论了学习神经语义检索模型的关键主题,包括损失函数和负采样策略。

6.4.1.Loss Functions

我们回顾了神经语义检索模型采用的主要训练目标。理想情况下,在训练损失最小化之后,文档之间的所有偏好关系都应该得到满足,模型将为每个查询生成最优结果列表。这使得训练目标在许多基于相关文档排名来评估效果的任务中是有效的。

在实践中,最常用的损失函数是抽样交叉熵损失,也称为负对数似然损失:

在这里插入图片描述

  • q q q 代表查询, d + d^+ d+ q q q 的一个相关文档, D − D^- D q q q 的不相关文档集合

另一种常用的损失函数是 hing loss:

在这里插入图片描述

  • n 是不相关文档集合中文档的数量,m 是 margin,通常设置为 1

事实上,负对数似然损失和 hinge loss 也被使用不同的名称广泛应用于许多其他任务中

  • 对比表征学习中的InfoNCE loss【41,201】和在推荐系统中的贝叶斯个性化排名(BPR)损失【175】。

这些损失函数及其变种在其他领域已经得到了很好的研究,包括极端多类别分类[15,24,174]、表示学习[41,201]、深度度量学习[194,209,210]等。这些领域的研究进展可能为神经语义检索中的损失设计提供一些启示。

  • 【210】表明,softmax对数似然损失实际上是 hinge loss 的平滑版本
  • 此外,一些研究表明,还可以将 hinge loss 中的 margin 概念引入到softmax交叉熵损失中,以提高在人脸识别和人员再识别等任务中的性能[194,209]。
  • 此外,不同领域的研究[41,210,220]均证实,将ℓ2正则化(时用余弦作为评分函数𝑓)与温度一起应用于最终表示,可以使学习具有鲁棒性,并提高性能

另一条研究路线关注在 采样softmax交叉熵损失【42,101】中的 bias。

  • NLP上的工作【24,101】通常集中在full softmax的无偏估计上
  • 【42】专注于纠正与 ground truth 标签相同的假阴性样本带来的 bias。需要注意的是,这些结论需要在第一阶段检索任务下被再次检验。

6.4.2.Negative Sampling Strategies

在上面两个损失函数中,负样本是输入的一个重要部分。然而,在第一阶段检索模型的学习过程中,往往是训练数据集中只有正例,而负例没有显式标记。事实上,负例的采样策略是神经语义检索模型中的一个重要课题,因为它直接决定了学习到的检索模型的质量。

负采样是许多任务学习中常见的基本问题,在这些任务中,只有明确存在的正样本,如推荐系统[60,220,225,226

,236],图挖掘[9,195,222],自监督表示学习[27,37,41,86,238]。本文主要介绍了第一阶段检索领域的研究进展。神经语义检索模型构造负样本的机制不同。但通常情况下,负采样策略可以分为三类:

  • 随机负采样:从整个语料集或 batch 中随机采样。需要注意的是,如果使用 batch 作为随机负样本的源头,batch size就变得重要。
    • [123]建议使用大 batch size,因为这会使训练任务更加困难,更接近于检索器在测试时观察到的结果。然而,batch size 通常受限于计算资源而不能设置得太大。
    • 为了解决这个问题,【86】提出通过维护一个数据样本队列(当前 mini-batch 的编码表示被加入队列,最老的被退出队列)来提供负样本,从而将 mini-batch 的大小与抽样的负样本解耦。这样,在无监督视觉表征学习中,他们可以使用非常大的 size (例如,65,536)作为负样本。然而,随机负采样通常是训练神经语义检索模型的次优方法。由于这些随机的负样本通常太容易被区分,模型很难专注于提高顶级排名的性能。这个问题在实际应用中会导致严重的性能下降。为了使模型更好地区分相似的结果,可以使用嵌入空间中更接近正例的样本作为训练的难分负样本(hard negatives)。因此,挖掘难分负样本来优化检索效果是一个需要被解决的关键问题
  • 静态难分负采样:从一个传统检索器预先检索的 top 文档中随机采样。最近的研究发现,包含BM25负样本有助于训练收敛,为表示学习提供更强的对比[110,137]。用预检索方法获取难分负样本具有较高的计算效率。然而,静态方法得到的难分负样本并不是真正的难分。直观地看,在有效的神经检索模型空间中,接近相关文档的难分样本应该不同于 term-based 检索模型,因为神经语义检索模型的目标是找到 term-based 模型所检索到的文档之外的文档。如果使用来自BM25的负样本,在训练模型时使用的负样本和测试时见到的之间会有很严重的不匹配
  • 动态难区分采样:从模型自身预测的 top 不相关文档中随机采样。直觉上,根据当前的语义检索模型动态进行负采样,例如使用与当前模型预测的相关性分数成比例的分布,应该是产生信息性负样本的非常有前途的选择[166,195]。这样,神经语义检索模型可以利用错分的负样本(将不相关文档预测了高相关分数)进行优化。但是,在一个非常大的语料库中对所有候选文档进行动态评分通常是不切实际的。因此,实际上,定期刷新索引并检索排名靠前的文档作为难区分样本是一种更实际的折衷选择[61,78,95,216]。例如,【216】中的难分样本挖掘提高了 BERT-based siamese 结构从而在文档检索上稳定超过了 term-based 方法。它也令人信服地超越了并行神经语义检索模型在OpenQA基准上的段落检索。

需要注意的是,上述的负采样策略并不相互排斥。实际上,随机抽样易区分和难区分样本总是同时使用。比如,反直觉研究【95】显示,单纯使用难区分负样本训练的模型不能优于使用随机负样本训练的模型。这个假设是,在训练数据中简单区分负样本仍然是必要的,因为检索模型是在一个由各种难度级别的数据混合组成的输入空间上操作,集合中的大多数文档都是完全不匹配查询的容易情况。如果所有的负样本都很难区分,将改变训练数据对真实检索任务的代表性,这可能会对学习嵌入施加严重的 bias。

总结:神经语义检索方法使用深度学习技术学习表示函数(即𝜙和𝜓)和评分函数(𝑓)。为了支持快速检索,通常使用独立的网络学习文档表示,并使用精致的结构预先计算和存储。根据表征的计算和存储方式,我们将神经语义检索方法归纳为三种范式:稀疏检索方法,密集检索方法,混合检索方法。

  • ==稀疏检索方法侧重于改进经典的 term-based 方法,该方法是学习用上下文语义重新计算术语的权重,或者将文本映射到“潜词”空间。==实验结果表明,稀疏检索方法确实可以提高第一阶段检索的性能,并且易于与现有的倒排索引进行有效的集成检索。此外,这些方法通常表现出良好的可解释性,因为表示的每个维度都对应一个具体的 token 或一个潜在的词。
  • 密集检索方法采用双编码器架构学习查询和文档的独立低维密集向量,旨在捕获输入文本的全局语义。为了支持在线服务,学习到的密集表示通常通过近似最近邻(ANN)算法进行索引和搜索。这些方法在MS MARCO和TREC CAR等多种基准上均显示出良好的效果,引起了越来越多研究者的关注。
  • 混合检索方法为查询和文档定义多个表示函数,然后同时获取它们的稀疏表示和密集表示进行匹配。它们能够在稀疏检索方法的精确度和密集检索方法的泛化之间取得平衡。因此,混合检索方法在实际应用中表现出较好的检索性能,但对空间占用和检索复杂度要求较高

在神经语义检索模型学习中,负采样策略对学习高质量的检索模型起着决定性作用。目前,已经有一些工作在探索更好的负采样方法,但如何挖掘负文档以实现高效有效的模型学习仍然是一个有待解决的问题

7.Challenges and Future Directions

在本节中,我们将讨论与第一阶段检索的语义模型相关的一些开放挑战和几个未来的方向。这些问题有些是重要的,但在该领域还没有得到很好的解决,而有些是非常有前途的未来研究方向。

7.1.Pre-training Objectives for the Retrieval Stage

从2018年开始,随着BERT[55]和GPT等大型预训练模型的出现,不同的NLP任务取得了快速进展[172]。他们在大规模的语料库和通用建模任务上进行了预先训练,这样知识就可以转移到各种下游任务中。有了这个有趣的特性,人们可以期待在IR任务中重复这些成功。

一些研究者[35,84,123]探索了双编码器体系结构的检索阶段预训练模型。

  • 【123】提出用反完形填空(ICT)任务来预训练双塔(使用query tower 和 item tower 分别得到查询和 item的向量表示) Transformer encoder 模型以替代在 OpenQA 任务中段落检索阶段的 BM25 模型。其优点是可以与 reader 一起训练检索器。然而,预训练模型在SQuAD数据集上的性能并没有超过BM25,这可能是因为微调只在查询塔上执行。
  • 【35】提出了 Body First Selection(BFS)and Wiki Link Prediction(WLP)任务,学习多种预训练任务如何帮助大规模检索问题(比如,OpenQA的段落检索)。实验结果表明,正确设计段落级预训练任务,包括ICT、BFS和WLP,双塔 Transformer 编码器模型能够比广泛使用的BM25算法提升很多。
  • 【139, 140】提出使用 Representative Words Prediction(ROP)任务Laura预训练 ad-hoc 检索,能够在没进行预训练或者使用其他预训练方法的 baseline 上提升很多。但由于他们的实验是在重排序阶段下进行的,因此ROP任务是否适用于检索阶段还需要重新检验。

综上所述,针对第一阶段检索任务设计大型预训练模型的工作很少。众所周知,第一阶段的检索主要关注的是尽可能多地召回潜在相关文档的能力。因此,在检索相关文档时考虑检索需求和建模任务依赖的特征将是为检索阶段设计新的训练前目标的重要元素。此外,利用跨模态数据(如图像)增强语言理解也是预训练研究的一个有前途的方向。

7.2.More Effective Learning Strategies

对于信息检索任务,基准数据集的构建通常依赖于一个池化过程,以召回一个文档子集供专家判断。这种标记过程会导致众所周知的偏差问题,即数据集只包含部分积极的文档,而其余未标记的文档通常被认为同样不相关。为了解决偏差问题,需要设计智能学习策略来实现有效和高效的模型训练。

  • 【42】开发了一个去偏对比目标,即使在不知道真实标签的情况下,也可以纠正相同标签数据点的抽样。此外,像上面说过的,难区分负样本也能提升模型在相似样本间的辨别能力。然而,难区分负样本挖掘策略还没有得到充分的探索。
    • 其中最先进的方法之一是【216】提出的异步ANCE训练,定期将 ANN 索引更新,并将 top-ranked 文档采样为负样本。虽然ANCE在有效性方面具有竞争力,但定期刷新索引会大大增加模型训练成本。
    • 此外,有研究认为,同时学习难区分负样本和易区分负样本的语义检索模型会更有效【231】。因此,在挖掘难区分负样本的同时,对训练样本的位置和顺序的安排也值得探索,因为负样本文件往往表现出不同程度的困难。

我们相信学习更复杂的训练策略是有趣,有价值的(比如 curriculum learning【18】),为第一阶段检索的模型优化提供帮助。此外,由于需要大量的人工劳动,因此对IR的有监督数据往往是稀缺的。此外,监管数据集容易出现长尾、稀疏等问题。因此弱监督或者无监督(比如对比学习)是很有前途的研究方向。【50】提出了基于内容的弱监督策略,利用文档内部结构来挖掘训练标签。

7.3.Benchmark Testbed for Efficiency Comparison

多阶段检索范式旨在平衡检索任务的有效性和效率,其中第一阶段检索注重效率(时间),重排序阶段更注重有效性(精确度)。但是,除非与相应的有效性度量相结合,否则单独的效率度量是没有意义的。理想情况下,在不同的效果临界值处的效率指标应该在排行榜上报告。此外,由于定制的硬件,如gpu或tpu,对深度模型的计算时间有很大的影响,而且第一阶段检索模型的响应时间对约束也非常敏感,例如缓存文件系统上的数据的局部性,因此希望在相同的条件下比较不同的模型。然而,与计算机视觉(CV)领域相比,IR领域对模型效率比较的公平条件还没有得到充分重视和研究。医学计算机视觉社区已经认识到需要关注运行时间方面的考虑,医学图像分析基准测试VISCERAL[104]包括在相同硬件上对参与者解决方案运行时间度量。此外,CV任务,如目标检测和跟踪,通常需要实时结果[94]。对于IR任务,【92】提出了一种初步解决方案,通过引入基于docker的完整检索系统提交,使运行时间指标的比较变得可行,所以所有的系统都能通过第三方平台在相同的硬件上得到比较。

7.4.Advanced Indexing Schemes

在IR任务中,索引策略在确定大规模文档的组织和检索方式方面起着重要作用。特别是,大多数密集检索方法,学习查询和文档的密集表示,依靠 ANN 算法对在线服务进行高效的向量搜索[32,112]。

现有的密集检索方法往往将表示学习和索引建立拆分成两个步骤。这种模式在实际场景中有一些缺点。

  • 首先,索引过程不能从监督信息中获益,因为它使用任务无关函数来构建索引
  • 此外,表示和索引是分开获得的,因此可能不是最佳兼容

这些问题都导致检索性能严重下降。事实上,已经有研究[227,233]在图像检索和推荐领域探索编码器和索引的联合训练。在信息检索方面,第一阶段检索模型与索引方法的联合学习方案设计尚处于起步阶段,我们相信这将是一个有趣而有前途的方向。

另一方面,如何设计更好的ANN算法来管理大规模文档并支持高效、精确的检索是另一个重要的方向。与暴力搜索相比,ANN 的本质是牺牲部分精度来获得更高的检索效率。从提高检索效率的原则出发,一般有两种 ANN 算法。

  • 一种是非穷尽 ANN 搜索[22,144]
  • 另一种是向量压缩方法[79,99,102]

然而,每种方法都有其局限性或不足之处,其中非穷举方法索引的 size 较大,压缩方法性能次优。

因此,随着密集检索方法的蓬勃发展,开发更先进的 ANN 算法,以达到更好的效率和效果之间的平衡是很迫切的。

8.Conclusion

本研究的目的是总结语义检索模型的研究现状,分析现有的方法,并为未来的发展提供一些见解。它包括对早期语义检索方法的简要回顾,对最近的神经语义检索方法和它们之间的联系的详细描述。特别地,我们关注了神经语义检索方法,并从稀疏检索方法、密集检索方法和混合检索方法三个主要范式对其进行了综述。我们还涉及了神经语义检索模型学习的关键主题,如损失函数和负采样策略。此外,我们还讨论了未来研究的几个重要挑战和有前途的方向。我们期待着在这些问题上与社区合作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长命百岁️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值