Press "Enter" to skip to content

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

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本文是针对信息检索方法第一阶段的综述论文阅读
因为是综述文章,因此还在持续阅读中
第一遍阅读很多地方还不是很了解,后续会复读,对内容做进一步解释
原文链接: Semantic Models for the First-Stage Retrieval: A Comprehensive Review | ACM Transactions on Information Systems

Abstract

 

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

 

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

 

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

 

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

 

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

 

Introduction

 

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

 

贡献:

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

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

 

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

 

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

ad-hoc(返回一个排序的文档列表):查询和文档长度的不一致,会导致词汇不匹配问题
open-domain question answering(返回一段文字):目前一般分为两阶段

一阶段(document retriever):挑选出可能包含答案的文档的小集合
二阶段(document reader):从一阶段返回的集合中选取答案

Community-base question answering(CQA):从已经存储的仓库中寻找 question-answer pair,产生答案通常有两种方式

第一种:如果答案存在的话,直接从集合中检索出答案并返回。

问题:需要对问题与答案间的逻辑关系进行建模。

第二种:从集合中复制问题,并返回附带的答案作为结果。

问题:需要捕获word之间的语义相似性,因为一个问题可以有多种表达方式。

Background

 

Problem Formalization

 

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

 

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

 

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

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) 来排序

Early Methods for Semantic Retrieval

 

Query Expansion:

 

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

Global methods:通过在搜索的语料库中分析词的同时出现,或者利用外部手工标注的词典来重新订制查询单词

在不同查询上可能不稳定

Local methods:通过原始查询检索到的排名高的文档来调整查询(pseudo-relevance feedback—PRF)

可能出现查询漂移问题

Document Expansion:

 

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

 

Term Dependency Models

 

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

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

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

 

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 的细节匹配信息

Translation Models

 

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

 

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

 

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

 

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

 

Neural Methods for Semantic Retrieval

 

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

 

Sparse Retrieval Methods

 

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

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

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

Sparse Representation Learning

 

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

 

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

 

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

 

Dense Retrieval Methods

 

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

 

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

 

Term-level Representation Learning

 

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

 

 

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

【111】研究是否能够只依赖语义信息(比如用 word embedding 而不是语法表达)来计算短文本间的相似度。他们将 BM25 中的 t f ( q i , d ) tf(q_i,d) t f ( q i ​ , d ) 替换成了 q i q_i q i ​ 与文档中词的 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) ( s 1 ​ , s 2 ​ … s k ​ ) ,问题 Q Q Q 的表示 q q q ,问题与段落的相似度计算公式为

 

 

 

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运算符到一个简单的点积,从而支持单步神经网络搜索。他们的关键见解是,在蒸馏过程中,教师模型和学生模型之间的紧密耦合使蒸馏策略更加灵活,并产生更好的学习表示。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。