Semantic Models for the First-stage Retrieval: A Comprehensive Review
今天整理一篇来自TOIS 21’的First-stage Retrieval 第一阶段检索综述的文章。第一阶段检索即是国内一般成为召回的阶段recall stage,也有人称为ranking stage或者search stage,这篇综述文章内统一称为“第一阶段检索”。

  • paper:https://arxiv.org/pdf/2103.04831.pdf
  • code:https://github.com/caiyinqiong/Semantic-Retrieval-Models

现代的信息检索系统一般都采用多阶段的搜索架构来平衡系统对于效率和性能的需求,如上图1所示,文档库–第一阶段检索(召回)–多个重排(包括重排精排混排等)–呈现结果。这里的第一阶段检索的最核心的要求是快速从大规模文档库中返回尽可能少的相关候选文档,然后再交给重排精排来进行更复杂的排序。

由于交给重排阶段的文档相对来说数量少,所以模型可以做的很复杂,现在研究者们的主要精力也都放在如何提升重排精度,模型是做的越来越精巧,越来越大。而这种模型又无法被直接应用于召回去处理具有大量候选文档的高吞吐量查询。相反在第一阶段检索这里的做法,长期以来一直由基于词项的传统模型所主导如BM25(术语匹配+TF-IDF权重)。然而这种基于词项的模型存在一些明显的缺陷:

  • 1)由于词独立性假设,容易遭受Query和Document之间的词汇不匹配问题。特别是遇到短、泛的查询。
  • 2)由于忽略词序信息,无法很好地捕捉文档的连续性语义。特别是多个连续单词表示的概念不能被正确描述,查询和文档之间匹配的连续或有序的更强相关性不能被很好地反映。

由于这些限制,基于词项的检索模型可能会成为整个排序系统的瓶颈,即一些相关文档从一开始就进入不了重排序,更不用说被展示了。为了解决这个问题,一些早期的语义检索模型就开始了改进和优化,主要有以下几种:

  • 查询扩展。为了解决查询query和文档document之间的不匹配问题,查询扩展技术使用从外部资源来扩展原始查询,以丰富查询表示。通过这种扩展之后的查询,在检索过程中可以很自然的考虑到更多的文档,得到更好的召回效果。扩展的方法主要有:全局方法(同义词搜索)和局部方法(伪相关性反馈(PRF),即根据原始查询检索到的排名最高的文档来调整查询,缺点是比较容易出现漂移)。
  • 文档扩展。以查询扩展的方法对语料库中的文档进行扩展(如使用原始文档作为对集合的查询,并选择10个最相关的文档作为原始文档的扩展文档),然后再像以前一样对这些丰富的文档进行倒排索引和多阶段搜索。缺点是每次扩展技术发生变化时,语料库都需要重新索引太麻烦。
  • 词项依赖模型。依赖关系模型试图通过将词依赖关系合并到表示函数中来解决词序的问题。方法主要有如在倒排索引中扩展字典、用马尔可夫随机场(MRF)来构建词依赖关系。虽然这些方法能够捕获语法和语义,但它们的上下文“理解”能力仍然非常有限。
  • 主题模型。关注单词之间的语义关系,通常将单词的共现关系建模,以发现文本中的潜在主题,并通过它们的主题表示来匹配查询和文档。主题建模分非概率主题模型(如LSI,NMF),和概率主题模型(LDA)。缺点是1主题是无监督难受控;2主题可能和文档是异质的(如语言语法不同);3主题模型将文档表示为紧凑的向量,在词级上失去更详细的匹配信号。
  • 翻译模型。主要用来解决词汇表不匹配的问题,统计机器翻译(SMT)通过将查询视为一种语言的文本,学习从查询到相关相关文档的翻译概率来实现IR。此外统计翻译模型也可以被应用于查询扩展。但由于SMT模型的数据稀疏性,模型难以训练。

以上的一些早期方法都可以在一定程度上改进传统的词袋表示,在符号空间中用高维稀疏向量表示文本,以便很容易地与倒排索引集成以支持有效的检索。但这些方法总是依赖手工提取的特征来构建表示函数,只能捕捉较浅的语法和语义信息。因此随着深度学习的火热,一些主要的语义召回技术先后出现,主要可以分为三类。

  • 稀疏检索方法(sparse retrieval methods)。使用上下文语义重新评估词项权重或将文本映射到“隐词项”空间来改进传统的基于词项的方法。一般有两种方法,一是神经加权方案( Neural Weighting Schemes):仍然在符号空间中对查询和文档进行编码,但使用神经模型来改进词加权方案,比如基于局部或全局上下文embedding来直接预测项权重。另一种是稀疏表示学习(Sparse Representation Learning):直接学习查询和文档的潜在空间的稀疏表示,如计算n-gram再转到高维稀疏空间以压缩信息并学习数据的低维流形,代表方法如局部敏感哈希(LSH)。
  • 稠密检索方法(dense retrieval methods)。稠密检索方法采用双编码器结构来独立地学习查询和文档的低维稠密向量表示,旨在捕获输入文本的全局语义。一般的架构如上图2,查询和文档的双编码器架构以学习嵌入,然后计算相似度得到相关性得分。所以重点一般集中在如何设计合理的网络架构,可分为词级(term-level representation learning) 和文档级( document-level representation learning)的做法。区别如下图。

    此处使用的模型从TF-IDF一直到Transformer,BERT多变体等等都可以。在支持在线检索服务的时候,这类方法通常需要借助近似最近邻算法对学习到的表示进行索引和检索。
  • 混合检索方法(hybrid retrieval methods)。混合检索方法为查询和文档定义多个表示函数,同时获取它们的稀疏表示和稠密表示进行相关性计算。主要的考虑来自于:一方面,稀疏检索方法以单词或“潜在单词”为索引单位,通过每个单元之间的硬匹配计算分数,保持了很强的区分能力,因此它们可以识别出精确匹配的信号。另一方面,稠密的检索方法学习连续嵌入来编码更好的语义信息,但详细的低级特征一般不会考虑。因此结合两者的混合模型会比较适合,流程如下图,拿到两者的结果后进行merge再返回给用户。

然后对于神经语义检索模型学习的关键是定义一个好的:损失函数和负采样策略。损失函数一般使用negative log likelihood loss或者hinge loss,当然BPR loss或者InfoNCE在某些任务上也表现很好。而由于模型训练过程中,训练数据集一般只有正例,而负例没有明确的定义,所以负采样策略在检索技术中是十分重要的。一般来说负抽样策略可分为三类:

  • 随机负采样(Random Negative Sampling)。从整个语料库或batch中随机采样。缺点是随机的负样本通常太容易区分,因此挖掘hard样本是很重要的。
  • 静态难样本(Static Hard Negative Sampling)。从trained的检索模型结果中(如BM25)随机采样以获得hard负样本。缺点是这种方法并不是真正的负样本,因为在召回阶段的目标是找到更多的相关文档,如果只使用来自BM25的结果召回的文档会非常相似,测试时会出现严重的不匹配。
  • 动态难样本(Dynamic Hard Negative Sampling)。从检索模型本身预测的排名最高的不相关文档中随机采样。缺点是在大语料库中动态地对所有候选文档进行评分通常是不切实际的。

在实践中,以上几种随机采样方法并不冲突,而是会混合进行使用。

Semantic Models for the First-stage Retrieval(检索召回技术综述)相关推荐

  1. 检索召回 技术综述!

    作者 | 上杉翔二 悠闲会 · 信息检索 整理 | NewBeeNLP 今天整理一篇来自TOIS 21'的 First-stage Retrieval 第一阶段检索综述的文章.第一阶段检索即是国内一般 ...

  2. 【搜索排序】召回综述Semantic Models for the First-Stage Retrieval: A Comprehensive Review

    Semantic Models for the First-Stage Retrieval: A Comprehensive Review 文章目录 管道 语义模型 1.召回 形式化 1.0 Inde ...

  3. 论文翻译1-----DSSM:Deep Structured Semantic Models

    说明: 论文全部名称:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data 论文中文全称:使用 ...

  4. DSSMs: Deep Structured Semantic Models

    Attention! 我的Dr.Sure项目正式上线了,主旨在分享学习Tensorflow以及DeepLearning中的一些想法.期间随时更新我的论文心得以及想法. Github地址:https:/ ...

  5. 推荐系统(十七)双塔模型:微软DSSM模型(Deep Structured Semantic Models)

    推荐系统(十七)双塔模型:微软DSSM模型(Deep Structured Semantic Models) 推荐系统系列博客: 推荐系统(一)推荐系统整体概览 推荐系统(二)GBDT+LR模型 推荐 ...

  6. DSSM(DEEP STRUCTURED SEMANTIC MODELS)

    Huang, Po-Sen, et al. "Learning deep structured semantic models for web search using clickthrou ...

  7. Learning Deep Structured Semantic Models for Web Search using Clickthrough Data (DSSM)

    主要研究问题: 给定一个查询(query)和一组文档(document),返回一个排序(ranking),系统根据查询所对应文档的契合度高低排序. 论文主要结构: 一.Abstract 1.基于关键词 ...

  8. Geohash应用——附近乡镇信息挖掘(提升检索召回与准确)

    摘要 Geohash在LBS领域的应用开发很常见,常常应用于查询附近的人或门店等应用程序中.这里不再介绍Geohash的原理,其原理详见:GeoHash核心原理解析. 这里主要讲一个Geohash的另 ...

  9. 【往届已EI检索-IEEE技术支持】第三届-信息技术与计算机应用 多主题征稿!

    关注公众号,发现CV技术之美 第三届信息技术与计算机应用学术会议暨能源区块链分委会论坛(ITCA 2021) 2021年12月10-12日   中国·广州 重要信息 会议官网:itca2021.iae ...

最新文章

  1. dos 下启动mysql时,报服务器找不到错误
  2. 云原生应用程序的架构应该怎么设计?
  3. 插件和代码两种方法搞定WordPress回复邮件通知
  4. 5.计算机发展个人理解-电路终究是电路 软件如何控制硬件 代码如何操作硬件 硬件是怎么执行代码 代码如何执行 软件与硬件如何交互 计算机思维 抽象 封装 规范 屏蔽 协议分层...
  5. 吉大c 语言程序设计奥鹏作业,吉大19秋学期《C语言程序设计》在线作业一【满分答案】...
  6. VT-x,VT-d简介
  7. 自己实现spring核心功能 一
  8. Kubernetes 1.6新特性
  9. ngx_lua模块中的共享内存字典项API
  10. 架构师成长之路:如何提升技术掌控力?
  11. 记一次使用Dapper 进行的数据迁移和清洗工作
  12. django和mysql如何建模_Django中的多个数据库和多个模型
  13. 低代码再掀炒作热潮?
  14. 总结 15/4/23
  15. mysql怎么找出树形的根节点,Oracle 层级语句 树形结构 显示根节点 不显示根节点...
  16. xshell、xftp官方免费版下载
  17. html 设置日期选择器样式,解决Element UI 日期选择器自定义修改多个样式
  18. 不可错过:教你创造一个有前途的迷你产品(下)
  19. 网络工程师中级--上午科目
  20. 香港各个大学计算机类专业

热门文章

  1. html制作星空,HTML5绘制星空
  2. c语言习题-统计指定字符个数
  3. 华中之旅--逃离广州(二)
  4. 应用程序连接不到mysql_Docker无法将应用程序连接到MySQL
  5. 浏览器的渲染原理你了解吗?
  6. 如何通过css强制文字换行
  7. python使用Qt实现GUI编程
  8. Eclipse乱码问题最全解决方案
  9. VMware和Virtual Box虚拟机的区别
  10. SpringMVC学习笔记(一):mvc流程和思路