大家好,我是kaiyuan。关于前沿技术在工业界的实践落地应用,我们之前分享过一些文章:

  • 大规模搜索+预训练,百度是如何落地的?

  • KDD'21 | 淘宝搜索中语义向量检索技术

  • 全方位解读 | Facebook的搜索是怎么做的?

  • 深度学习在Airbnb搜索的应用实践

  • 小红书在推荐多样化的实践——SSD

  • KDD'21 | 揭秘Facebook升级版语义搜索技术

今天继续,看看Facebook在KDD'21的工作,从模型到部署介绍了Facebook Marketplace这一电商平台的语义检索系统。

  • Que2Search: Fast and Accurate Query and Document Understanding for Search at Facebook

Que2Search可以认为是Facebook在KDD'20工作Embedding-based Retrieval in Facebook Search的升级版本【Facebook的搜索是怎么做的?】。但是针对『Facebook maketplace』这一特定场景的向量化检索系统,仍然存在以下几点挑战:

  • 商品描述存在噪声:由于商品的属性描述(譬如标题、类别等)是由卖家上传的,会存在较多的拼写错误、属性丢失等;

  • 国际化支持:Facebook Marketplace场景是多国家多语言的,需要模型具备跨语言检索能力;

  • 多模态处理:需要在模型中同时考虑多种模态信息,图片、文本等;

  • 严格的延迟性限制:众所周知线上搜索系统对延迟要求极高,会极大地影响用户体验。尤其是当使用Transformer-based模型时,延迟是一个巨大挑战;

本文接下去会深入细节,一起看看是如何一一解决这些问题的。

1. 模型结构

Que2Search模型结构

整体模型架构如上,还是使用普遍的双塔形式。

1.1  Query Tower

query侧的特征输入有三部分:

  • Query文本的tri-gram表示:通过size=3的滑动窗口,得到tri-gram,过hash函数后得到对应的ID,再经过嵌入后得到每个ID的向量表示,然后对所有向量做sum-pooling;

  • 用户所在国家:ID类特征,也是经过嵌入后表示成向量;

  • Query原始文本:过两层的XLM 编码,取[CLS]对应的向量作为query表示;

1.2  Document Tower

类似的,doc侧的特征输入有五部分:

  • 商品标题:文本类型,使用6层XLM-R编码;

  • 商品描述:文本类型,使用6层XLM-R编码(模型和商品标题的共享);

  • 商品标题的3-gram表示:同query侧处理;

  • 商品描述的3-gram表示:同query侧处理;

  • 图像表示:对于每一个商品,都会附带一些图片,通过预训练模型得到图像表示,然后过MLP和Deep set方法对多个图像表示进行融合得到最终这一路特征表示;

1.3  Late Fusion

late-fusion指的是对上述双塔内的多路输入特征如何进行融合,常见的融合方式有

  • concatenation fusion :将所有路表示拼接起来过MLP得到固定维度的向量表示;

  • simple attention fusion :注意力机制不用多说了

作者通过实验发现简单的注意力形式效果更好,

2. 训练阶段

模型整体如上,引入了更多的特征+更精细的融合方式,再来看看训练过程是如何操作的。

2.1  训练数据

  • 正样本来自用户搜索日志,是一对相关的 <query, document> 对;那在论文业务场景中,如何表示相关呢?作者利用下述条件在日志中进行筛选:

    如果上述四个事件在一定时间内(24小时)发生,则认为是相关的,称为『in-conversation』。PS. 在描述这一部分的时候可以明显感受到作者的"求生欲",感受下:

    We do not have access to message contents and only know that users interacted with the sellers.

    • 用户搜索了一个query

    • 用户点击了query下的某个商品

    • 用户给该商品的卖家发消息

    • 该商品卖家回复消息

  • 负样本来自batch内负采样,也是属于应用很广泛的负样本策略,譬如可以参考我们之前分享的:大规模搜索+预训练,百度是如何落地的?。不过这里对负样本的利用,还是有一点点不同,后面会具体介绍。

batch内负采样

2.2  多阶段训练

模型训练分为两个阶段,

  • 第一阶段:batch内简单负样本训练,即其他record的doc作为当前query的负样本,然后做一个 multi-class cross-entropy。损失函数为:

其中 为温度系数,目的是拉大logits的区分度,使其更sharpen,需要做实验调参确定值。

  • 第二阶段:batch内困难负样本训练,文中称为『课程学习』。使用困难负样本也是比较常见的套路,一般是离线通过各种策略采样得到。不过这里作者还是使用了batch内的数据,具体地,对于每个query   ,选取除对角线外的相似度分数最高的doc作为负样本 ,因为对角线的doc为该query对应的正样本 。于是这样就有了三元组 ,尝试了二分类交叉熵损失和最大间隔损失函数两种方法,发现margin设置为0.1~0.2的margin rank loss表现最好

2.3  多任务学习

除了上述双塔任务之外,作者还在document tower额外引入了一个任务,document classification。具体地,针对每个doc,选取一系列相关的query。总共保留头部45000的query,然后用doc塔产出的向量做多标签分类

document classification

2.4  多模态融合

一般而言,模态指的是不同类型的数据,譬如文本、图像、视频、语音等等,而常见的融合方式就是Attention。在本文中,模态的概念更加宽泛,作者把不同路的输入认为是不同的模态,同时将 Grandient Blending 梯度融合的形式引入双塔结构。

梯度融合来源于 CVPR 2020 论文What Makes Training Multi- Modal Networks Hard ,具体做法如下:

训练M+1个模型,M是模态的数量,其中M个模型分别用单个模态特征作为输入来训练,1个模型用所有模态特征作为输入来训练。先分别计算每个模型的损失,然后加权融合所有模型的损失,每个损失都有提前设定好的权重系数。目的是让模型即使在模态缺失的时候也具备学习能力,更加鲁棒。

针对Que2Search场景下,步骤为:

  1. 单模态特征训练。因为是双塔,需要"控制变量",及一侧的塔每次只使用一路特征,另一侧塔使用全部特征

  1. 全模态特征训练。

  1. 损失加权融合。

注意,梯度融合只在训练阶段使用,预测时使用全部的模态。

3. 实验&效果

3.1  消融实验

主要是看一下,论文新提出的结构或者特征,是否有作用以及提升有多少。

对比Base选取的是KDD'20提出的wide&deep模型,关于base模型具体可以参考全方位解读 | Facebook的搜索是怎么做的?

in-conversation数据集消融实验

人工标注数据集消融实验

3.2  AB实验

线上AB实验,评价指标是前面提到的『in-conversation』,可以认为是用户的参与度,不用最终的转化率指标有点奇怪。这里还有一点奇怪的是,只使用char tri-gram的模型居然比本文提出的Que2Search效果还好,作者只是一笔带过,没解释原因。

线上AB实验

4. 系统架构


需要注意,这里只是Que2Search的部署架构,完整的产品搜索系统会更复杂。Facebook的论文都会很友好的提供一堆实战经验,这里挑几点介绍,具体的可以阅读原论文第6部分。

  • 用户翻页优化:主要是性能和准召之间的平衡,通过「动态ANN参数」实现。具体地,在用户的第一个request,调整ANN参数更关注延迟,之后的翻页request则调整参数使其更关注准召效果。这样做的好处是,可以避免初次触发时由于模型的延迟过高影响用户体验,文中更是说『没有这项优化,Que2Search根本无法上线』。

  • 召回排序联动:Facebook Marketplace平台搜索排序是个两阶段过程,GBDT + 类DLRM 模型。将Que2Search的余弦相似度打分作为一个特征引入到上述两阶段排序模型中,发现对最终的效果有较大提升。

  • 仅使用召回率远远不够。在搜索召回阶段,理论上通过降低ANN检索的阈值,可以提高召回率(至少不会减少应该正确召回的商品),但是线上指标却降低了。分析后发现是由于『召回排序不一致性』导致的,放开阈值召回增加的噪音样本无法在排序阶段非常好地识别。因此需要更精确的指标来表征召回的结果,或者暴力AB实验拍阈值。

  • 仅保证相关性远远不足

5. 总结

惯例性小结,

  • 语义理解模型:引入了多语言XLM预训练模型、多模态的图像信息、基于Attention和基于梯度的特征融合方式、两阶段式的训练方式,相比于之前KDD'20的工作是花里胡哨了些,但都是一些情理之中,不难想到;

  • 工业场景落地:将Transformer-based模型在大规模系统上落地,同时分享了很多踩坑经验;

  • 线上AB实验,Que2Search一顿操作效果不如只使用tri-gram的模型,就有些奇怪。是query长度普遍较短,tri-gram就够了,更多的只会引入噪声?

  • 将召回模型打分作为一个特征丢给排序,也有比较明显的效果,可以尝试;

  • Facebook Marketplace 作为电商场景的搜索,只考虑商品和query的匹配程度可能不够,系统内还有user用户的作用。当然,有可能这不是Que2Search模型考虑的部分,毕竟有多路召回。

一起交流

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

END -

NLP中的范式迁移

2021-10-18

聊一聊算法工程师复现算法的踩坑总结

2021-10-17

搜索、推荐、广告中的曝光偏差问题

2021-10-12

Don't stop pretraining,继续预训练!

2021-10-10

升级换代!Facebook全新电商搜索系统Que2Search相关推荐

  1. 电商搜索全链路(PART I)Overview

    大家好,我是kaiyuan.好久没码字了,趁着五一在家整理整理,毕竟北京这疫情哪儿也别想去 虽然我们之前分享过很多 #搜索推荐广告 方面的文章,但是发现很难有一个系统的框架,无法串联成完整的链路.于是 ...

  2. 万字长文解读电商搜索——如何让你买得又快又好

    文章作者:姚凯飞 Club Factory 推荐算法负责人 内容来源:作者授权发布 出品社区:DataFun 注:欢迎转载,转载请注明出处. 一. 概述 一个产品的搜索功能,是用户快速触达所需信息的通 ...

  3. 阿里巴巴电商搜索推荐实时数仓演进之路

    分享嘉宾:张照亮 阿里巴巴 高级技术专家 编辑整理:郑银秋 出品平台:DataFunTalk 导读:今天分享的内容是阿里搜索推荐数据平台研发团队在实时数仓的一些探索,围绕着团队在数仓上基于Flink ...

  4. KDD 2021 | 基于多智能体协同竞价博弈的电商搜索广告多目标竞价优化

    ▐  导读 本文提出了一套多目标协同出价优化框架,即多智能体协同出价博弈(以下简称:MACG).在该合作博弈框架中,通过引入一个全局目标以优化所有广告主的总体利益,鼓励广告主更好的协同,从而间接保护自 ...

  5. 用Elasticsearch构建电商搜索平台(有赞)

    随着互联网数据规模的爆炸式增长,如何从海量的历史,实时数据中快速获取有用的信息,变得越来越有挑战性. 电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据.一般来说 ...

  6. 劈开迷雾,蘑菇街电商搜索架构及搜索排序实现

    劈开迷雾,蘑菇街电商搜索架构及搜索排序实现 前言 蘑菇街的愿景是让一半人类更幸福,而让每位女性用户能便捷的找到心仪的商品则是搜索系统的愿景.作为重要的流量入口,搜索系统一直承担着关键的职责:优化商家流 ...

  7. 《电商后台系统产品逻辑解析》学习笔记

    文是我阅读<电商产品经理宝典:电商后台系统产品逻辑全解析>一书的学习笔记,为后续我司做家居电商后台系统储备相关领域的业务知识. 一.支撑线后台概览 "前端用户的一小步,后台系统的 ...

  8. 跨境电商wms系统功能分析

    跨境电商仓储管理系统WMS是专为海外仓企业开发的一款包含了收发货,库存管理,订单管理,渠道管理,人员管理,财务管理的一款专业的管理软件,系统由客户OMS端和后台企业WMS端组成,系统功能包含一件代发. ...

  9. 电商后台系统产品逻辑全解析

    电商产品经理作者专栏-人人都是产品经理:http://www.woshipm.com/u/85173 目录 第1章 电商模式 第2章 支撑线后台概述 第3章 商品中心 第4章 促销系统 第5章 内容管 ...

最新文章

  1. 谈谈NullableT的类型转换问题
  2. python相关工具
  3. 得到src目录下的properties文件属性
  4. 单元测试之更强大的powermock
  5. 建筑电气工程设计常用图形和文字符号_怎么看懂建筑电气工程图?用最直白方式,教你基础识图!超级详细...
  6. qt使用样式表来设置不规则按钮
  7. SAP License:SAP不便解决的问题之九——客户退货维修
  8. webservice 参数为xml_CXF-web service之集大成者,想要学好web service,必须会
  9. 4 合并grid列_在 Power BI Desktop 中合并数据
  10. Oracle Data Guard的配置
  11. eova常用前端组件介绍
  12. istio 防故障流量控制
  13. <论文阅读> DI-FODO — 3D距离传感器的快速视觉里程计
  14. 高性能Java模板引擎BSL-1.0.1发布
  15. swing-组件tooltip测试及美化
  16. 【应用随机过程】07. 平稳过程
  17. 关于龙卷风你应该知道的五件事
  18. WPF设备无关单位(DIU)
  19. 如何使Android录音实现内录功能
  20. 微信小程序隐藏滚动条

热门文章

  1. SAP License:一句话让你明白FICO
  2. 数据可视化、模板框架、动态控件、可视化大屏、数据原型、监控平台、图表元件库、数据看板、驾驶舱、统计图表、消防、大屏展示、安防、智慧城市、旅游、运输、医疗卫生、贸易、电力、政务、水质、工业园区环境监测
  3. web电商系统、电商平台WEB端交互原型模板、用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务、Axure原型、rp原型、电商原型、商城系统原型
  4. 智慧电商erp通用版管理系统+采购管理+仓库管理+订单管理+财务管理+系统管理+Axure高保真交互ERP通用版电商web端管理系统+全局说明+竞品分析+协同办公
  5. Coding Interview Guide -- 翻转字符串
  6. Nginx-windows
  7. iOS12+Xcode 10 Error: Multiple commands producei
  8. 使用GIT不小心merge后的回滚操作
  9. BZOJ 2820: YY的GCD
  10. 《人月神话》阅读笔记一