文 | 水哥
源 | 知乎

saying

1.AB测试几乎是系统改进的不二法则,算法做AB,开发做AB,产品做AB,运营更要做AB
2.召回有点像一个甩锅侠,我不管我给的准不准,我就管我把潜在的能投的都吃进来就行
3.其他环节想要提升,除了自身确实有改进,也要和精排相似。太超前的改进注定会被精排这个旧势力打压
4.粗排非常容易照本宣科,明明实际结果已经说明不需要粗排。内心的惯性还是让人留着它

前两讲从比较宽的范围讲了一下推荐系统做什么,以及在这个时代背景下的发展历程。从这一讲开始,我们则会逐渐进入技术细节。

从大体上来说,推荐系统需要包含这几种模块:索引/库存池,特征服务,排序模块,线上展示逻辑,日志系统,分析系统。如下图所示:

  • 索引池是对当前所有item的判定,并不是所有item都可以出现在推荐这整个大的逻辑下面。举个例子,广告主的某个计划,只设定了相应的预算,如果预算花完了,或者广告主已经不想投了,那就需要从索引池里面拿掉。另一种情况是可能有多种索引池,广告主不想投放20-30的人群的时候,索引池就等于是其他年龄段的索引池合并起来。

  • 特征服务,用户发生请求(刷新,刚进入app等都会有请求发生)时,算出该用户信息所对应的特征,比如通过他的一些行为判定他的年龄性别等。另一个很重要的则是获取这个用户的一些历史行为。对于item当然也要提取特征,但是图上没有画出来,原因是item的大多数特征都相对固定,而用户的行为特征变化很快,需要专门的服务来处理

  • 排序模块,这就是模型主导的部分了,下面要讲的召回精排粗排都在这里,下一讲要涉及的打压保送策略也包含在内。排序模块的作用就是从很多候选的item中挑出最好的一个或者多个进入到展示逻辑中

  • 展示逻辑,这里有的同学可能会问,知道哪个最好不就直接放出去就好了吗?为啥还要有一个逻辑的区分?其实这里一个主要的点指的是广告和内容的混排,或者是视频和文章的混排。广告和文章,在各自的排序阶段是谁也看不见谁的,也就是说,上面的排序系统是双倍的。当双方都排好之后,需要对广告进行判定,要么是质量很高(预估的ctr,cvr都很高),要么是此刻之前展示的广告比较少,门槛下降了。如果符合这两种情况就可以对广告选择合适的位置投放。

  • 日志系统:记录推送前后系统发生的一切事情。注意在图上有一个日志系统返回排序模块的箭头,这个箭头的含义是,用户的行为要落盘,形成新的训练数据来让排序模块继续训练

  • 分析系统:这个系统依赖于日志,此处主要指AB测试系统。AB测试就是指,把用户随机进行划分,一部分用户应用对照组(A组,也就是原来的系统),另一部分用户应用实验组(B组,也就是我们想添加的改进点)。通过对比AB之间的差异,来展示我们所加的改进点是否有效。所以整个系统的迭代都是严重依赖AB实验的,想一个idea-做线下实验-上AB试试-有效就推广到全量,一般是这么个流程。当然AB实验也不是万能的,这个后面会讲到。另外要注意的是,虽然这里叫做AB测试,但是实际上对照组的用户不是都放在同一个桶里面,实践中往往是AABB实验,即对照组也有多组,实验组也有多组。这么做是为了观察组内的方差和组间的方差,假如两个对照组之间的观看时长差距有3%,对照组和实验组差距只有2%,那我们就无法说明这个实验是有正向的。

上面是对于整个系统框架的梳理,下面我们就细化到排序模块里面,看看具体是如何排序的.

整体上,排序是一个漏斗,如下图所示:

一开始我们可能有成千上万的item,首先要由召回(也叫触发,recall)来挖掘出原则上任何用户有可能感兴趣的东西。这个环节是入口。有时候,单独的召回可能难以做到照顾所有方面,这个时候就需要多路召回。很好懂,就是多个召回路共同决定进入粗排的候选。比如可以由一个召回专门根据用户过往的兴趣来筛选候选,那可以再加一个召回专门输出近一段时间的热门视频。他们的出发点都不一样,共同组成下一级的输入。粗排(pre-rank)一般接受几千个输入,这时候压力就大大降低了。粗排就可以放一些较为复杂的结构,比如mlp就可以放上去了。粗排的输出一般是小于1000的,那这个压力就更小了,精排(rank)就可以变得很复杂,什么transformer啊放进去也不过分。

因此这几级结构实际上是计算压力从大到小,模型复杂度从小到大的一个过程。正因为如此,他们的角色其实也有差别。

精排-最纯粹

精排是最纯粹的排序,也是最纯粹的机器学习模块。它的目标只有一个,就是根据手头所有的信息输出最准的预测。我们也可以看到,关于精排的文章也是最多的。

研究精排杂七杂八的变量最少(虽然也是最卷的),精排训练所需要的数据本身就是它自己产生的,没有其他环节的影响。精排也是整个环节中的霸主,你在召回上的一个改进点,精排没有get到,那你这个改进点就不能在实际环境中生效。前面的环节想要做出收益,都得精排“施舍”。

召回-入口大开

由于召回所要面对的item量是最大的,因此召回也是时延压力最大的。简单来说,就是要快。意味着他的模型结构最简单,甚至有时候都不是模型,而是规则。

对于召回来说,最经典的模型莫过于双塔(一个mlp输出用户的embedding,一个mlp输出item的embedding,后面详细介绍)。双塔的输出,通常建模在向量的近似搜索里面,可以极大地提升搜索的效率。因此,双塔几乎可以说是为召回而生的。

召回有一个原则是多样化,多个召回路在他们所要涵盖的地方应该有差异。考察方面有差异最好,模型结构有差异次之,如果仅仅有数据差异啥的可能不会有什么效果。

但是召回并不太关心准不准,第一是后面有粗排精排给他兜底,第二是他准了也没用,反正还要看后面的脸色。我们在机器学习中有一类指标叫“召回率”,就是你认为的正样本占所有正样本的比例。这里的召回也有点这个意思,不在乎你犯了多少错,只在乎你把对的放进来没有,因此我们就得到saying 3.

粗排-略显尴尬的定位

相比于召回和精排,粗排是定位比较尴尬的。在有的系统里,粗排可以很丝滑的平衡计算复杂度和候选数量的关系。但是在有的例子中,粗排可能只是精排甚至召回的一个影子。所以,粗排的模型结构大多数情况下都很像精排或者召回。

粗排是一个非常容易照本宣科的地方,因为粗排不是必需的环节。如果你的候选数量非常少,那连召回都不需要了;如果你的精排能吃的下召回的输出,那可以考虑实验对比是不是需要粗排。但是假如不加粗排,总感觉欠缺点什么。有的地方甚至出现过粗排输出候选变少,整个系统反而涨点的情况。像这样的情况出现,就说明整个链路设计存在不合理的地方。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

召回 粗排 精排,如何各司其职?相关推荐

  1. 召回粗排精排-级联漏斗(下)

    文 | 水哥 源 | 知乎 saying 召回区分主路和旁路,主路的作用是个性化+向上管理,而旁路的作用是查缺补漏. 推荐系统的前几个操作可能就决定了整个系统的走向,在初期一定要三思而后行. 做自媒体 ...

  2. 召回粗排精排-级联漏斗(上)

    文 | 水哥 源 | 知乎 saying 1. 把点击多的item曝光提升是推荐模型的基本能力,也是基本要求.后验不好的曝光提高也可能是好模型,后验好的曝光不提高,可以开除推荐模型了 2. 在起量阶段 ...

  3. 全链路总结!推荐算法召回-粗排-精排

    作者 | Salon sai  整理 | NewBeeNLP https://zhuanlan.zhihu.com/p/463021052 大家好,这里是NewBeeNLP.现在的推荐系统都是一个很大 ...

  4. 知识蒸馏怎么用?召回-粗排篇

    作者 | Chilia 哥伦比亚大学 nlp搜索推荐 整理 | NewBeeNLP 之前我们讲过了知识蒸馏在精排中的应用:知识蒸馏在推荐精排中的应用与实践 其实,知识蒸馏在召回-粗排-精排这三个模块都 ...

  5. 一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的

    一文看懂推荐系统:召回07:双塔模型--正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的 提示:最近系统性地学习推荐系统的课程.我们以小红书的场景为例,讲工业界的推荐 ...

  6. 简单复读机LR如何成为推荐系统精排之锋?

    文 | 水哥 源 | 知乎 saying 1. 众所周知, 人类(划掉)推荐的本质是复读机 2. 精排之锋,粗排之柔,召回之厚 3. 在推荐里谈"过拟合"很容易给我们造成心理上的松 ...

  7. 推荐系统[四]:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相关评价指标,超详细知识指南。

    搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...

  8. 推荐系统遇上深度学习(一三七)-[阿里]广告精排和创意优选联合优化

    今天分享的是阿里在SIGIR2022中稿的一篇短文,主要关注点在于对广告推荐链路中精排阶段和创意优选阶段的优化,一起来看一下. 1.背景 广告系统中,创意(如标题和图片)包含了丰富的产品信息,能够帮助 ...

  9. Path-Ranking:KBQA中path生成、召回、粗排与精排

    路径生成:通过实体链接获取到了问题中的实体,路径生成则是从实体出发,遍历KG,生成所有可能的答案路径,在过程中对路径进行剪枝. 1.路径召回 路径召回策略分为单实体和多实体两种情况.其中,多实体优先, ...

最新文章

  1. diy手工制作泡沫小球_废物利用手工DIY教程。一次性筷子变废为宝,手工制作木屋模型...
  2. 使用jmeter测试工具完成文件的上传
  3. 损失函数梯度对比-均方差和交叉熵
  4. 有趣的图说 HashMap,普通人也能看懂
  5. socket编程实例_NIO之网络编程源码阅读
  6. layui select监听选中的值 二级联动
  7. CSS 设置背景颜色透明,文字不透明
  8. mariaDB安装完成后设置root密码等初始化操作
  9. 机器人操作系统——ROS,Robot Operating System
  10. 学习笔记:SSH端口转发的三种方式
  11. 云服务器运维管理面板有哪些?
  12. 度中心性(degree)、接近中心性(closeness)和中介中心性(betweenness)的理解
  13. 图解CSS3 读书笔记——边框
  14. android华为怎么截屏快捷键,华为P9/P9Plus怎么截图 快捷键截图方法介绍
  15. WinCC 高速数据采集的实现
  16. 用这个方法1分钟能批量下载上百张图片,亲测有效速度快
  17. 雷电三接口有什么用_三坐标为什么用汽浮轴承?
  18. 【 2021 MathorCup杯大数据挑战赛 A题 二手车估价】初赛复赛总结、方案代码及论文
  19. 017 | JavaWeb企业进销存管理系统源码附带毕业设计论文 | 大学生毕业设计 | 极致技术工厂
  20. 前端进击的巨人(二):栈、堆、队列、内存空间

热门文章

  1. 【GIT 基础篇六】分支管理(创建与合并)
  2. Orchard商城模块(Commerce)设计与后台部分
  3. Simple IOCP Server代码解读
  4. 关于如何在BCB中使用CodeGuard
  5. 突然发现被点名(理想恋人游戏)
  6. Linus 在圣诞节想提前放假做了这些解释,哈哈哈
  7. create_proc_read_entry中函数的说名
  8. STM32f103——ILI9341
  9. cx_Oracle安装出现的问题
  10. Datawhale-零基础入门NLP-新闻文本分类Task05