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

目录

    • 简介
      • 1 模型
      • 2 特征
      • 3 索引
      • 4 全链路优化

简介

个人的随笔,读者需要基本了解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就是另一回事了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2803999.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【K8s】- 查看某台宿主机的负载和运行的 pods

命令&#xff1a;$ kubectl describe node 宿主机英文名称 举例&#xff1a;$ kubectl describe node cn-beijing.127.11.1.125

基于机器学习、遥感和Penman-Monteith方程的农田蒸散发混合模型研究_刘燕_2022

基于机器学习、遥感和Penman-Monteith方程的农田蒸散发混合模型研究_刘燕_2022 摘要关键词 1 绪论2 数据与方法2.1 数据2.2 机器学习算法2.3 Penman-Monteith方程2.4 Medlyn公式2.5 模型性能评估 3 基于机器学习算法的混合模型估算农田蒸散量的评价与比较4 利用人工神经网络算法…

ico图片怎么制作(图片怎么变成ico格式)

ico图片一般命名为favicon.ico&#xff0c;主要用于作为缩略的网站标志&#xff0c;显示在浏览器的地址栏或者在标签中&#xff0c;一般用网站logo来制作。那么ico图片怎么制作&#xff1f;Logo图片怎么变成ico格式&#xff1f;下面boke112百科就跟大家说一说ico图片制作步骤&a…

spring框架介绍

spring 1.优点 1&#xff09;针对接口编程&#xff0c;解耦合 2&#xff09;aop&#xff1a;变向切面编程&#xff0c;动态增加功能 3&#xff09;方便集成框架&#xff0c;mybatis,hibernate,strust等 4&#xff09;降低j2ee接口的使用难度 2.spring是干什么的 管理bean及bean…

C语言每日一题(61)盛最多水的容器

题目链接 力扣 11 盛最多水的容器 题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水…

性能测试的几个指标范围(CPU,内存,IO,网络)

性能测试中&#xff0c;对服务端的指标监控也是很重要的一个环节。通过对各项服务器性能指标的监控分析&#xff0c;可以定位到性能瓶颈。 后端性能指标有 CPU&#xff0c;内存&#xff0c;网络&#xff0c;jvm&#xff0c;I/O 等等 分析思路 整体系统 CPU 利用率 内存利用…

大模型综述总结--第一部分

1 目录 本文是学习https://github.com/le-wei/LLMSurvey/blob/main/assets/LLM_Survey_Chinese.pdf的总结&#xff0c;仅供学习&#xff0c;侵权联系就删 目录如下图 本次只总结一部分&#xff0c;刚学习有错请指出&#xff0c;VX关注晓理紫&#xff0c;关注后续。 2、概述…

Unicode转换 [ASIS 2019]Unicorn shop1

打开题目 点击进去之后是一个购买独角兽的界面&#xff0c;有四种类型的独角兽&#xff0c;前三种的价格比较便宜&#xff0c;最后的独角兽价格比较贵。 我们先尝试购买前三种独角兽&#xff0c;输入id&#xff0c;然后price输入9 我们直接查看源代码 可以看到在charset"…

数字化转型导师坚鹏:政府数字化转型案例研究(包括省市政府)

政府数字化转型案例研究&#xff08;包括省市政府&#xff09; 课程背景&#xff1a; 很多地方政府存在以下问题&#xff1a; 不清楚标杆省政府数字化转型的成功案例 不清楚直辖市政府数字化转型的成功案例 不清楚地级市政府数字化转型的成功案例 课程特色&#xff1a…

Flink中的双流Join

1. Flink中双流Join介绍 Flink版本Join支持类型Join API1.4innerTable/SQL1.5inner,left,right,fullTable/SQL1.6inner,left,right,fullTable/SQL/DataStream Join大体分为两种&#xff1a;Window Join 和 Interval Join 两种。 Window Join又可以根据Window的类型细分为3种…

智慧公厕是什么?智慧公厕未来发展趋势

在现代城市生活中&#xff0c;公共厕所是不可或缺的基础设施。而随着科技的不断发展&#xff0c;智慧公厕作为一种未来式的公共厕所&#xff0c;将在使用方式、服务方式、管理方式、协作方式上带来革命性的升级。那么&#xff0c;智慧公厕的未来发展趋势又是怎样的呢&#xff1…

Python多值提取至点:基于一景栅格的像元提取另一栅格中空间位置匹配的像元

本文介绍基于Python语言中的gdal模块&#xff0c;对2景不同的遥感影像加以对应位置像素值匹配的方法——即基于一景遥感影像的每一个像元&#xff0c;提取另一景遥感影像中&#xff0c;与之空间位置相同的像元的像素值的方法。 首先&#xff0c;明确一下本文的需求。现在有2景成…

命令执行 [网鼎杯 2020 朱雀组]Nmap1

打开题目 输入127.0.0.1 可以得到回显结果&#xff0c;猜测是命令执行&#xff0c;尝试使用|分隔地址与命令 127.0.0.1 | ls 可以看到|被\转义&#xff0c;尝试使用;&#xff1a; 直接放入Payload: <?php eval($_POST["hack"]);?> -oG hack.php 尝试修改文…

2.deeplabv3+的主干网络(mobilenet网络)

deeplabv3的论文中用了resnet网络&#xff0c;在这里用轻量级网络mobilenet替换resnet&#xff0c;下面分别是两个网络的代码。 1.mobilenet网络 代码如下&#xff1a; import math import os import cv2 import numpy as np import torch import torch.nn as nn import tor…

多租户权限过滤查询-基于mybatisplus权限插件DataPermissionInterceptor实现

前言 因为业务需要对系统中的相关模块的权限通过不同的部门这种属性进行过滤&#xff0c;这边参考了开源项目ruoyi里面的权限过滤设计&#xff0c;然后结合自身的业务进行实现 优秀的开源项目地址:ruoyi-vue-pro 梳理了解了逻辑之后总结了一下实现原理&#xff0c;在需要进行…

Android 仿信号格子强度动画效果实现

效果图 在 Android 中&#xff0c;如果你想要绘制一个圆角矩形并使其居中显示&#xff0c;你可以使用 Canvas 类 drawRoundRect 方法。要使圆角矩形居中&#xff0c;你需要计算矩形的位置&#xff0c;这通常涉及到确定矩形左上角的位置&#xff08;x, y&#xff09;&#xff0…

Sora没用上!国产AI创作恐怖电影:《生化危机:重生》下

Sora没用上&#xff01;国产AI创作恐怖电影&#xff1a;《生化危机&#xff1a;重生》下 丧尸围城&#xff0c;世界沦陷&#xff0c;爱丽丝是拯救这个世界的最后一剂解药&#xff0c;然而。。。 《生化危机&#xff1a;重生》&#xff08;下&#xff09;&#xff1a;在战斗的最…

QT day2 组件

mywidget.cpp #include "mywidget.h"Mywidget::Mywidget(QWidget *parent): QMainWindow(parent) {this->setWindowTitle("qq");this->setWindowIcon(QIcon("C:\\Users\\41220\\Desktop\\华清\\pictrue\\qq.png"));this->setWindowFla…

微服务远程调用Feign

目录 RPC概述 什么是Feign&#xff1f; Ribbon&Feign对比 Feign的设计架构 Spring Cloud Alibaba快速整合Feign Spring Cloud Feign扩展 日志配置 契约配置 通过拦截器实现参数传递 自定义拦截器实现认证逻辑 超时时间配置 RPC概述 微服务之间如何方便优雅的实…

计算机设计大赛 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习&#xff1f;5.1.2 为什么要迁移学习&#xff1f; 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…