一文看懂推荐系统:物品冷启05:流量调控

一文看懂推荐系统:物品冷启05:流量调控

提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例,讲工业界的推荐系统。
我只讲工业界实际有用的技术。说实话,工业界的技术远远领先学术界,在公开渠道看到的书、论文跟工业界的实践有很大的gap,
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。

王树森娓娓道来**《小红书的推荐系统》**
GitHub资料连接:http://wangshusen.github.io/
B站视频合集:https://space.bilibili.com/1369507485/channel/seriesdetail?sid=2249610

基础知识:
【1】一文看懂推荐系统:概要01:推荐系统的基本概念
【2】一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
【3】一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
【4】一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
【5】一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
【6】一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
【7】一文看懂推荐系统:召回05:矩阵补充、最近邻查找,工业界基本不用了,但是有助于理解双塔模型
【8】一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
【9】一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的
【10】一文看懂推荐系统:召回08:双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新
【11】一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
【12】一文看懂推荐系统:排序01:多目标模型
【13】一文看懂推荐系统:排序02:Multi-gate Mixture-of-Experts (MMoE)
【14】一文看懂推荐系统:排序03:预估分数融合
【15】一文看懂推荐系统:排序04:视频播放建模
【16】一文看懂推荐系统:排序05:排序模型的特征
【17】一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间
【18】一文看懂推荐系统:特征交叉01:Factorized Machine (FM) 因式分解机
【19】一文看懂推荐系统:物品冷启01:优化目标 & 评价指标
【20】一文看懂推荐系统:物品冷启02:简单的召回通道
【21】一文看懂推荐系统:物品冷启03:聚类召回
【22】一文看懂推荐系统:物品冷启04:Look-Alike 召回,Look-Alike人群扩散


提示:文章目录


流量调控:新老笔记怎么分配流量

这节内容是物品冷启动中的流量调控。

做冷启动最重要的抓手有两个,
一个是优化推荐全链路,包括召回和排序,每一个环节都针对新笔记做优化,
让新笔记有足够多的机会走完链路被曝光,还要尽量让新笔记的推荐多的准,不要让用户反感。

另一个抓手是流量调控,也就是流量怎么样,在新笔记和老笔记之间分配。

工业界常见的做法是让流量向新笔记倾斜,帮助新笔记获得更多的曝光机会。

我们来讨论一个问题。为什么要给新笔记流量倾斜?

在这里插入图片描述

扶持新笔记主要有两个目的,第一个目的是促进作者发布,增大内容池
前面我们已经讨论过,新笔记获得的曝光越多,作者的创作积极性就越高,
把流量向新笔记倾斜,可以观测到发布渗透率和人均发布量的提升。

在这里插入图片描述

扶持新笔记的第二个目的是挖掘出优质笔记
假如一篇笔记没有获得几次曝光,即使笔记的质量特别高,系统也没有办法发现这是篇优质笔记。
不会给这篇笔记更多的流量,让它变成热门笔记,
所以我们要保证每篇新笔记在初始的探索阶段,都能获得足够多的曝光,
比如获得100次曝光,如果能体做得好,能更好的挖掘出优质笔记,
那么高热笔记的占比会提高,比如点击1000次以上的笔记占比会更高。

我举个例子,说明工业界大致怎样对新发布的物品做扶持展示。

在这里插入图片描述

推荐系统主要分发年龄小于30天的笔记,
超过30天的笔记,通常不会出现在推荐的结果里,只能通过搜索和其他渠道曝光,
假如采用完全的自然分发,让新老笔记公平竞争,
那么年龄小于24小时的新笔记的曝光机会非常少,只有1/30,

但我们会给新笔记大力度的扶持,让新笔记有足够多的机会曝光。

小红书年龄小于24小时的新笔记的曝光占比具体是多少,我不方便说,
但这个数字远远大于1/30,也就是说新笔记的流量远远大于自然分发的流量。

业界的流量调控技术大致有这几个发展阶段,最原始的流量调控技术是强插

在这里插入图片描述

在推荐结果中强插新笔记,让新笔记获得额外的曝光机会。

我听说某些大厂的边缘业务线现在还是在用这种落后的技术【万一插完让用户恶心咋弄呢?比如百度那些广告……】,

提权boost是稍微复杂一点的流量调控技术,
其实也不复杂,就是调权重有点麻烦,
在做排序的时候,给新笔记的分数做boost,
比如加上或者乘以一个系数,这样会让新笔记更占优势,获得更多的曝光机会。
给新笔记齐全,是投入产出比很划算的策略,
实现起来也不难,效果还可以,
像抖音小红书在前期都这么做。

高级点的技术是保量。比如尽量保证每篇新笔记都能在前24小时或者至少100次曝光。
保量的手段也是提前,但是提前的策略更复杂、更精细。

更高级的技术是差异化保量,在笔记刚刚发布的时候,
根据内容质量决定保量的目标是多少次曝光,内容质量高的
保量的目标是给质量高给更多的流量倾斜,

我从新笔记的提权开始讲起,后面的保量也是靠提全来做。

新笔记提权(boost)

这是推荐系统的电路粗排会做截断,从几千物品中选出几百个,
重排的时候会根据精牌分数和多样性做抽样,从几百个物品中选出几十个曝光给用户。

在这里插入图片描述


如果不用规则去干涉,而上新笔记和老笔记自由竞争,那么新笔记的曝光机会是很有限的。

假设推荐系统主要分发年龄小于30页的笔记,
如果纯粹用自然分发,那么曝光的笔记中年龄小于24小时的新笔记应该占1/30。

如果想让新笔记占到更多的曝光?
那么就必须做人为干涉,在哪个环节干涉?

显然是干涉粗排和重排。

这两个环节是漏斗,会过滤掉大量笔记,
干涉的方法就是对新笔记提权,让新笔记比老笔记更有优势,有更多的机会通过漏斗,

我再重复一遍,给新笔记提权的目标就是让新笔记有更多的机会曝光

如果纯粹做自然分发,不去干涉新笔记的权重,
那么24小时以内的新笔记的曝光占比只有1/30。
我们做人为干涉,给新笔记提权,让新笔记的占比增大到一个很大的数值大于1/30,

在这里插入图片描述

粗排和重排环节都是漏斗促排,从几千篇笔记中选出几百篇重排,从几百篇中选出几十篇。
我们要做人为干涉,让新笔记有更多机会。
通过粗排和重排,可以给新笔记的分数乘以一个大于一的系数,
让新笔记更有优势,然后让新笔记和老笔记自由竞争,
谁的分数高,谁就有更大的几率通过漏斗最终获得曝光给新笔记。

在这里插入图片描述

提权比较容易实现,可以用小的投入获得比较好的产出,
在前期没有足够多的人力的情况下,这种方案比较好。

但这种方案有很明显的缺点,这种方案需要人为设置一些提权系数,
把他们乘到排序模型打的分数上,曝光量对集权系数很敏感,
系数大一点,可能会把很多B质量的新笔记排在前面,
系数小一点给新笔记的曝光可能不足,很多新笔记得不到充足的曝光,

这就造成另一个问题,很难精确控制曝光量,
我们需要仔细调参数,但是调的再细也做不到精准控制曝光量,肯定会发生过度曝光和不充分曝光。

新笔记保量

刚才讨论的新笔记齐全,接下来我要介绍新笔记保量

保量是什么意思?

举个例子,对于一篇新笔记,不论笔记质量高低,无论笔记是什么内容,
都尽量保证它在前24小时获得100次曝光。

在这里插入图片描述

最原始的保量方法是在原有提权系数的基础上,再乘以额外的提权系数,
帮助笔记在24小时获得100次曝光。

我们需要差异化对待不同的发布时间,不同曝光次数的笔记。

这里我举了个例子,表中的数字是提权系数,也就是在原有提权的基础上进一步加大权重。

表中的行表示笔记的年龄列表示当前已经获得的曝光次数。
大致的意思是这样的,24小时获得100次曝光是保量的目标,
比100次曝光差的越多,提权的系数就越大,
争取给笔记更多的曝光机会。

举个例子,等比例来算,12小时应该获得50次曝光,
如果12小时达到50次曝光了,那么提权系数就是一,不给额外的扶持。
假如12小时只获得20次曝光,那么就应该大幅度提权
比如乘以提权系数1.2,

这个表只是为了方便,都是我随便编的,真正做保量的时候,需要仔细调权重才行。

动态提权更牛

动态集权保量是更先进的保量做法,
用四个数字计算出提权系数,

在这里插入图片描述

前两个只是目标时间和目标曝光,比如24小时获得100次曝光,

第三个只是发布时间,比如笔记已经发布了12小时,

第四个只是已有曝光,比如笔记已经获得了20次曝光,

在这个例子中,
如果笔记已经发布了12小时,那么预期应该获得至少50次曝光,
假如12小时才获得了20次曝光,
那么就应该让提权系数变大,有更多的机会被曝光。
可以利用类似上面f这样的函数动态计算提权系数

函数f有两个变量,
一个变量是发布时间除以目标时间,
另一个变量是已有曝光除以目标曝光。

在上面的例子中,发布时间是12小时,目标时间是24小时,两者相除等于0.5,
已有曝光是20,目标曝光是1,把两者相除等于零点二
两个变量,分别是0.5和0.2
用这两个数来确定一个提权系数,第一个数越大,第二个数越小,提权系数就应该越大。
更多的细节我就不方便多说了。

保量看起来简单,只需要把提权系数调好就行了,
但实际操作起来,保量并不容易,成功率远低于100%,

在这里插入图片描述

也就是说很多新笔记加24小时达不到100次。

曝光造成保量失败的原因可能有很多种,
有可能是链路上存在问题,比如新笔记的召回做的不好。
有些类型的新笔记很难被召回,就算提权系数再高,这样的新笔记也很难获得曝光。

也有可能是排序模型的问题,对新笔记的预估做的不准,

还有可能是新笔记提前系数没有调好,导致曝光不足。

即使把链路和提前系数都优化好了,现场环境的变化也会导致保量的失败。

在这里插入图片描述

这件系统总是在不断的升级迭代中,比如添加新的召回通道,比如升级的排序模型。
比如改变了重拍、打散的规则,这些变化都有可能导致保量失败。

现场环境变化之后,往往需要调整提权系数,很麻烦。

我们来思考一个问题,能不能这样做保量?

在这里插入图片描述

我们给所有新笔记一个很大的提权系数,比如四倍,一直给到达成100次曝光为止。

比方说有的笔记20分钟就达到100次曝光,
有的笔记用了十个小时才达到100次曝光,只要一篇新笔记达到曝光,
就不再做提权系数,把它跟老笔记同等对待,
很显然有很大的提权系数系数,保量的成功率会很高。

问题来了,既然这样的保量成功率很高,那为什么不用这种简单的方法,
而是要用更精细、更复杂的计算方法?

不用这种简单粗暴的方法,当然这种方法效果不好。

我们来分析一下,思考一个问题,是不是给新笔记的分数提升越多,对新笔记越有利?

在这里插入图片描述

乍看起来是这么回事,假如把一篇笔记的分数乘以二,笔记的排序位置就会更高,获得更多的曝光。
也就是说,在笔记等级阶段,分数提升越多,对新笔记的曝光次数越有利,
但是过了冷启动阶段之后,之前大力度的扶持可能会起到反作用。

如果不要去人为提升预估分数,那么只有当遇见匹配的受众的时候,预估分数才会高,
笔记才能通过排序的筛选最终曝光给用户。
假如人为大幅提升笔记的分数,那么笔记很容易通过排序的筛选,
哪怕笔记不是用户特别感兴趣的话题,把笔记推荐给不太合适的受众会有什么后果?

很显然,如果用户不太感兴趣,那么就不会点击,不会点赞,
这样会对点击率、点赞率等指标造成负面的影响。

给笔记分数提升的越狠,**越会让笔记展示给不合适的受众,**对点击率点赞率越不利。
如果点击率、点赞率之类的数值比较低,那么笔记会长期受推荐系统的打压,曝光会很少,
本来有潜力热门的物品最终没有成长起来,

回到上面的问题,是不是给新笔记分数提升的越多对新笔记越有利?

答案是否定的

所以很粗暴的给新笔记提全对新笔记并不好,这也就是为什么做保量的时候要很仔细的调提权的系数。

差异化保量

前面我介绍了保量的方法和难点,接下来介绍差异化保量。

简单的保量是这么做的,不论新笔记质量高低都会扶持,目标是在前24小时给100次曝光,

差异化保量有所区别

不同的笔记有不同的保量目标,比如普通笔记保100次曝光,优质内容的笔记保100到500次曝光
具体的保量目标由算法判定,

在这里插入图片描述

差异化保量大致是这么做的,每篇笔记都有一个基础保量,比如24小时保100次曝光,

差异化保量的依据是笔记内容质量和作者质量【这时候体现质量和美学质量评价的好处了】

对于内容质量,我们可以用多模态神经网络判定图文视频的质量高低。
在新笔记发布的时候,根据模型的预测给新笔记额外的保量,比方说最多给200次额外的保量。

在这里插入图片描述

差异化保量的另一个依据是作者质量
如果一个作者以前发布的笔记质量普遍比较高,那么他发的新笔记也大概率质量比较高,
应该给予额外的保量目标,比如最多增加200次额外的保量,
如果这这样做差异化保量,那么一篇新笔记,在前24小时至少保100次曝光,最多保500次曝光,
达到保量目标之后就会停止扶持,让新笔记自然分发,跟老笔记公平竞争。

总结一下这节的内容,

在这里插入图片描述

流量调控的意思是用策略决定流量如何在新老笔记之间分配。
这节通用的做法是扶持新笔记,这样可以促进作者发布。

扶持新笔记的抓手主要有两个,
一个是给新笔记增加单独的召回通道,
另一个抓手是在排序阶段提权,

也就是这节的内容
保量是业界做的一个比较先进的做法,
比方说帮助新笔记在前24小时获得100次曝光,
想要达到保量目标并不容易,保量的成功率达不到100%。

比标准保量更高级的做法是差异化保量,
就是根据笔记的内容质量、作者质量,给每篇笔记单独定一个保量目标。

差异化保量有助于扶持高质量的新笔记,对整个生态是有益的。

这节介绍的动态提权,保量和差异化保量算不上业界的顶尖技术,但也算是比较先进的技术。

技术很好的大厂,核心部门才能做到,
非核心部门或者是二线互联网公司是做不到的。

我刚加入小红书的时候,小红书也做不到,
做保量的坑很多,但还是值得尝试。

根据业界的经验,如果能把保量的基础做好,对发布的指标会有非常大的提升。

最后我多说一句,我在课程里面讲的数据全都是我随便编的,为了教学方便,这些不是小红书的真实数据,大家不要当真。


总结

提示:如何系统地学习推荐系统,本系列文章可以帮到你

(1)找工作投简历的话,你要将招聘单位的岗位需求和你的研究方向和工作内容对应起来,这样才能契合公司招聘需求,否则它直接把简历给你挂了
(2)你到底是要进公司做推荐系统方向?还是纯cv方向?还是NLP方向?还是语音方向?还是深度学习机器学习技术中台?还是硬件?还是前端开发?后端开发?测试开发?产品?人力?行政?这些你不可能啥都会,你需要找准一个方向,自己有积累,才能去投递,否则面试官跟你聊什么呢?
(3)今日推荐系统学习经验:这节介绍的动态提权,保量和差异化保量算不上业界的顶尖技术,但也算是比较先进的技术。根据业界的经验,如果能把保量的基础做好,对发布的指标会有非常大的提升。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340