大家好,我是kaiyuan。今天一起来看百度KDD2021的一篇工作,关于工业界语义检索召回系统,落地场景非常值得借鉴~

  • Pre-trained Language Model for Web-scale Retrieval in Baidu Search

先简单介绍一下论文要解决的任务,「根据用户搜索的query,从千亿级别的候选池中筛选出一定量的满足用户要求的网页doc」。也可以简单理解为NLP中的文本匹配任务,但是一旦涉及真实数据和工业应用场景,就会复杂很多。

关于信息检索和网页搜索,更详细的可以参考我们之前的综述文章:

  • 微软亚研院 | 智能信息检索综述

先验知识

最近特别有感触,找到问题所在比找到答案更重要。来看看当前网页搜索面临的主要挑战:

  • 「语义匹配」:这无疑是搜索最需要关注和解决的一块。目前query的形式多样化与口语化,像一些传统的靠词之间的硬匹配算法,很容易就错过同义表达;并且,query和doc两者长度另外,除了query和doc这两个客观的实体,更进一步的话还需要考虑用户的偏好,这在电商搜索中尤为重要。

  • 「数据分布」:在搜索中,大多数的query和doc对于搜索引擎来说都是第一次见的,如何让模型很好地解决这种长尾数据。

  • 「工程部署」:召回系统面向的是千亿级别的候选池,如何在保证模型效果的同时兼顾线上效率,毕竟用户体验才是产品的第一位。

长期follow我们内容的同学应该对上述问题都已经有一些个人基础的解法,下面来看看搜索巨头百度是如何做的。另外推荐一些下文所涉及的先验知识:

  • NLP预训练模型

    • 万字梳理!BERT之后,NLP预训练模型发展史

    • NLP预训练家族 | Transformer-XL及其进化XLNet

    • 芝麻街跨界NLP | 预训练模型专辑(三)

    • 芝麻街跨界NLP,没有一个ERNIE是无辜的

    • 详解ERNIE-Baidu进化史及应用场景

  • 信息检索与文本匹配:

    • 基于表征(Representation)的文本匹配、信息检索、向量召回的方法总结

    • 微软亚研院 | 智能信息检索综述

    • 谷歌 ICLR 2020 | 向量化召回也需要『预训练』

    • 谈谈文本匹配和多轮检索

    • 文本匹配开山之作--双塔模型及实战

    • 迈向NLP大师 | 自然语言推理入门

模型细节

任务目标是建模 query-doc之间的 「相关性匹配」(注意与「语义匹配」的区别)

模型骨架是ERNIE,最近出了一波ERNIE-3,不知道有没有更新安排上。双塔是工业届召回的标配,另外顶层交互方式参考了poly-encoder的模式,如下图。训练和预测阶段会有一点不同:

模型的细节参考poly-encoder:

  • 底层quey、doc端ERNIE参数共享

  • 顶层query端:用16个参数向量分别对Encoder的输出序列表示做scaled_dot_product_attention,经过FC转换后产出16个256维的向量表示

  • 顶层title端:直接取Encoder最后的CLS向量,经过FC转换后产出1个256维的向量表示

由于上线性能的要求,计算相关性得分时在模型训练和预测阶段不一样:

  • 训练:query端的16个向量分别与title端的向量做内积,然后对16个内积取max产出最终的score

  • 线上inference:直接将query端16个向量做avg-pooling,这样只需和title-emb做一次内积。既满足了性能的要求,又丰富细化了query的表示。

数据挖掘

数据作为模型的上限,自然是非常重要。搜索系统实际数据来源主要是:

  • 「搜索日志」:大规模自动有标签样本,用户点击作为正样本,未点击的作为负样本;

  • 「人工标注数据」:0-4分档,数量较少,质量较好;正负样本的划分通过pairwise的方式使用;

上述样本作为hard negative,由于召回是从大量不相关doc中找到非常小部分的相关doc(













































),所以还设计了easy negative,即在同一batch中随机sample。最终batch训练正负样本数据如下

训练范式

为了让更多的领域知识融入模型,让模型具有更好的泛化性能,设计了多阶段训练模式。整个训练过程分四步:

  1. 「ERNIE 通用预训练」:单塔,NSP+MLM任务,用于热启动;

  2. 「ERNIE 领域预训练」:数据为一个月的搜索日志,query + title,单塔,输入格式[CLS] QUERY [SEP] TITLE [SEP],仅仅是训练数据与Vanilla ERNIE不同;

  3. 「ERNIE 一次任务微调」:搜索日志,query/title,双塔,任务变成分类任务,即从一系列不相关doc中找到正确的相关doc,进一步贴近最终目标;

  4. 「ERNIE 二次任务微调」:精细人工标注数据,query/title,双塔,任务同第三步。

损失优化

工程部署

向量压缩和量化

简单说,压缩就是把768的ERNIE向量通过FC转成256维度,量化就是把float32的变成int8。

召回框架

  • 离线部分(左侧):计算doc端的embedding,cache保存

  • 在线部分(右侧):分为召回和排序。召回部分又包括传统query特征计算,以及ERNIE-query向量计算。ERNIE-query-emb和ERNIE-doc-emb计算相似度打分,与传统特征一起作为上层排序的特征。注意这里的排序是召回系统内部的排序,不属于搜索大框架下的排序模块,目的是进一步缩小优化召回候选集,模型为RankSVM或GBRank;

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定要备注信息才能通过)

END -

聊一聊大火的对比学习

2021-08-12

百度提前批算法工程师面筋!效率有、高

2021-08-09

Focal Loss --- 从直觉到实现

2021-07-28

动荡下如何自救 | 社招一年收割BATDK算法offer

2021-07-27

大规模搜索+预训练,百度是如何落地的?相关推荐

  1. 笔记:文澜:桥接视觉和语言的大规模多模态预训练 WenLan: Bridging Vision and Language by Large-Scale Multi-Modal Pre-Training

    笔记:WenLan: Bridging Vision and Language by Large-Scale Multi-Modal Pre-Training 笔记:文澜:桥接视觉和语言的大规模的多模 ...

  2. 【论文精度】AutoBERT-Zero (使用NAS搜索预训练语言模型)

    AutoBERT-Zero 论文地址: https://arxiv.org/pdf/2107.07445.pdf Abstract ​ 基于 Transformer 的预训练模型,如 BERT 在很多 ...

  3. 手把手!基于领域预训练和对比学习SimCSE的语义检索(附源码)

    之前看到有同学问,希望看一些偏实践,特别是带源码的那种,安排!今天就手把手带大家完成一个基于领域预训练和对比学习SimCSE的语义检索小系统. 所谓语义检索(也称基于向量的检索),是指检索系统不再拘泥 ...

  4. 推荐系统预训练任务的研究进展

    © 作者|陈昱硕 机构|中国人民大学高瓴人工智能学院硕士 研究方向 | 推荐系统 引言: 最近几年,各种预训练模型在NLP,CV等领域都取得了显著的效果.最近的一些工作也开始在研究如何将预训练与推荐系 ...

  5. ELMo预训练词向量模型

    引言 Word Embedding:词嵌入.最简单的理解就是:将词进行向量化表示,抽象成为数学描述,然后可以进行建模,应用到很多自然语言处理的下游任务中.之前用语言模型做 Word Embedding ...

  6. 让预训练语言模型读懂数字:超对称技术发布 10 亿参数 BigBang Transformer [乾元]金融大规模预训练语言模型

    导读:超对称技术公司发布10亿参数金融预训练语言模型BigBang Transformer[乾元].BBT大模型基于时序-文本跨模态架构,融合训练文本和时序两种模态数据,下游任务准确率较T5同级别模型 ...

  7. 让预训练语言模型读懂数字:超对称技术联合复旦知识工场等发布10亿参数BigBang Transformer[乾元]金融大规模预训练语言模型

    目录 1.通用大模型的缺陷 2.专注于融合训练时序-文本跨模态的预训练模型算法架构 3.学术和工业界覆盖最完整,规模最大的金融投资类数据集 4.创新的预训练方法可大幅提高语言模型准确度:Similar ...

  8. 清华BAAI唐杰团队提出第一个开源的通用大规模预训练文本到视频生成模型CogVideo,含94亿超大参数量!代码即将开源!...

    关注公众号,发现CV技术之美 我爱计算机视觉 专业计算机视觉技术分享平台,"有价值有深度",分享开源技术与最新论文解读,传播视觉技术的业内最佳实践.知乎/微博:我爱计算机视觉,官网 ...

  9. 《预训练周刊》第8期:首个千亿中文大模型「盘古」问世、谷歌等提出视频音频文本转换器VATT...

    No.08 智源社区 预训练组 预 训 练 研究 观点 资源 活动 关于周刊 超大规模预训练模型是当前人工智能领域研究的热点,为了帮助研究与工程人员了解这一领域的进展和资讯,智源社区整理了第8期< ...

最新文章

  1. 计算机的学生该怎么做?
  2. 病例对照研究和队列研究详解
  3. 【Python】用Python实现十大经典排序算法
  4. 5点击换gif_新媒体人,至少要会做这种切换式GIF
  5. Hive中类SQL语言中的where 与having
  6. mysql修改主键为unique_mysql 如何修改、添加、删除表主键及unique约束
  7. Java程序性能优化
  8. 对比修改过的两个BOM表
  9. iOS越狱环境 debugserver 防护
  10. jupyter更改默认浏览器的方法
  11. 华为路由器显示连接到服务器失败怎么办,华为路由器设置好后不能上网怎么办...
  12. 微信小程序: wx:key详解
  13. 怎么压缩图片200k以下?这个压缩工具,3秒无损完成
  14. STM32通过DS18B20读取温度
  15. u大师u盘装系统win7_U盘启动联想ThinkPad E450 20DCA026CD重装win7系统教程分享
  16. 堆栈内存的分析以及作用域的详解
  17. 惠普战66 三代 pro win10下安装ubuntu20.04
  18. 计算机考试考前培训怎么弄,关于2016年下半年全国计算机等级考试考前培训实施方案...
  19. 如何高效的收集视频作业、收集照片作业,安利一款收集工具/小程序
  20. 简述计算机主机硬件安装流程,怎么看电脑配置信息 看电脑配置的方法【图文步骤】...

热门文章

  1. scrm电商后台管理、公司管理、店铺管理、特卖活动、营销活动、订单管理、优惠券管理、商品管理、会员管理、标签管理、会员卡、签到配置、积分、拼团、砍价、快递配置、短信配置、充值、运营活动
  2. 智慧、智能图书馆管理平台系统+web端业务数据管理平台+Axure通用web端高保真交互业务数据管理平台+铭牌管理+设备监控+系统管理+内容管理+机构列表管理+用户权限管理+专题管理+服务包管理
  3. Http Header的Transfer-Encoding
  4. 笔记86 | 视频在ACC起来后会跳进度问题分析
  5. poj 3414 Pots-bfs
  6. css基础内容之background
  7. SpringMVC 入门示例讲解
  8. 【leetcode】Permutations
  9. 按创建日期删除指定日期之前的文件夹及文件夹下的所有子目录
  10. (转载)在IAR及MDK里生成hex及bin文件的标准方法