EBR开山之作:Embedding-based Retrieval in Facebook Search

简介

个人的随笔,读者需要基本了解IR领域的基本知识和概念,本文主要记录了我觉得该工作一些重要的点。和大家共勉。

1 模型

在这里插入图片描述

标准的双塔结构

1.1 损失函数

搜索相关性以pair-wise的形式进行建模,选择的是Triple loss形式:

loss = max(0, sim(u, x_pos) - sim(u, x_neg) + M)

1.2 正负样本选择

结论:

【正样本】点击样本>展现样本

这里衡量的是对模型影响力

【负样本】随机负采样>曝光未点击

召回阶段固然曝光未点击一定是负样本,但是召回的最重要任务是保证分布接近线上的样本分布,所以要让模型“见见世面”,故负采样更重要。

  • hard negative mining

随机负采样会导致样本学习过于简单,虽然这样对模型是有正向影响的,不过需要套让模型感受到世界的参差。

作者提出两种

online:在线一般是batch内其他用户的正例当作负例池随机采,本文提到选相似度最高的作为hard样本,同时强调了最多不能超过两个hard样本。

offline:考虑到在线batch的容量太小,在离线阶段可以从全量池子里选择。做法是对每个query的Top-k结果利用hard selection strategy找到hard样本,并重复上述过程。作者提到要从101-500个中进行采集,太靠前也许根本不是负例。另外还有两个经验性的结论:(1)easy: hard = 100: 1 (2)先训练easy再训练hard 效果< 先训练hard再训练easy

  • hard positive mining

作者认为用户点击没有点击但是也可以被认为是正样本,做法是从日志中发掘潜在的正样本,例如可能top1-10就是潜在正样本了

1.3 模型融合

在这里插入图片描述

2 特征

文本特征:

word n-gram和character n-gram,character级别更好,也是因为character词表更小,训练也更充分,也更容易泛化,本文提到在character基础上增加word表征能提升效果。

location features:位置编码已经被证明非常有效和必要,其中注意doc和query端都要增加这个特征。

social embedding features:

通过单独的嵌入模型学习社交表征emd作为特征,构建方法很多,比如deepwalk。

3 索引

本文主要提到了比如ivf、PQ等关键词,这里简单介绍一下,Int8/float/PQ是常见的量化方法,主要目的是降低内存带宽和存储空间;而IVF/BF/HNSW则是检索算法,目的是提高检索的速度和精度。我们当然是希望存储小精度高,但这往往是相反的,所以根据自己候选量+精度对推荐效果的影响权衡一下,本文也提到了一些trick,比如聚簇个数、product quantization算法选择等问题,这种serving效果在大厂里工程团队基本都定制优化了,大致了解一下即可。

本文提过但是容易被忽略的一个点在于,全量候选构建索引是非常耗存储和费时的,所以facebook在构建索引的时候,只选择了月活用户、近期/热门的item,即部分query不会触发EBR,推荐场景同理,根据自己的召回目标搞合适的候选往往对于部分分层有奇效。

4 全链路优化

召回的优化方向只有保证全链路的一致性才能发挥最大的作用。

这里有两个小的方案,当然还有很多更优秀的工作有待挖掘和学习:

  1. 将embedding作为排序模型的特征。如果不太了解思想的可以读一下《Deep Match to Rank Model for Personalized Click-Through Rate Prediction》,简单来讲就是给排序模型透穿召回信息,同理给召回透传排序的信息提升排出率也是常规操作。至于这里具体是怎么做的没有太详细的讲,常见的问题比如end2end还是拆开、多目标排序怎么搞、多路召回怎么透传都可以根据自己的系统架构设计。
  2. 训练数据反馈循环。 向量表征一般召回率不错但是精度一般, 为了提高精度,本文搞了一个人工评分反馈流程, 记录结果并后将这些结果发送给运营标记是否相关,在原本的基础上叠加这些人工评分数据来重新训练相关性模型。这个也很好理解,相当于补充了一些更准的训练数据,当然现实里有没有这么多人力去搞,推荐问题有没有搜索相关性这么好定义label就是另一回事了
  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值