七、冷启动
✨文章摘要(AI生成)
系统梳理推荐系统物品冷启动:从召回通道改造(双塔、类目/聚类、Look-Alike)到新笔记提权保量与作者/用户双侧 AB 测试。
物品冷启动指的是如何对新发布的物品做分发,比如:
- 小红书上用户新发布的笔记;
- B 站上用户新上传的视频;
- 今日头条上作者新发布的文章。
它们的主要内容都是由用户上传的,故主要研究 UGC(User-Generated Content)的物品冷启动。UGC 比 PGC(主要内容都是由平台采购的,腾讯视频、Netflix)冷启动更难,这是因为 UGC 的新物品数量巨大、内容质量良莠不齐,分发非常困难。
优化目标 & 评价指标
在介绍完冷启动之后,首先要考虑一个问题:为什么要特殊对待新笔记(新物品)?做新物品冷启动主要原因在于:
- 新笔记缺少与用户的交互,导致推荐的难度大、效果差;
- 扶持新发布、低曝光的笔记,可以增强作者发布意愿。
优化冷启动的目标
那么再考虑第二个问题:优化冷启动想要达成什么目标?实际上,工业界是有共识的:
1. 精准推荐:克服冷启的困难,把新笔记推荐给合适的用户,不引起用户反感;
2. 激励发布:流量向低曝光新笔记倾斜,激励作者发布;
3. 挖掘高潜:通过初期小流量的试探,找到高质量的笔记,给予流量倾斜。
评价指标
| 指标类型 | 指标描述 | 基本思想 | 意义 |
|---|---|---|---|
| 作者侧指标 | 发布渗透率、人均发布量 | 1. 发布渗透率 = 当日发布人数_* / 日活人数; 2. 人均发布量 = 当日发布笔记数 / 日活人数。 _*:发布一篇或以上,就算一个发布人数。 | 1. 发布渗透率、人均发布量反映作者的发布积极性; 2. 冷启动的优化效果目标是促进发布,增大内容池; 3. 所以新笔记获得的曝光越多,首次曝光和交互出现得越早,作者发布积极性越高。 |
| 用户侧指标 | 新笔记的消费指标 | 考察新笔记的点击率等指标的话,曝光的基尼系数级数大,少数头部新笔记占据了大部分的曝光。 所以需要区别对待高、低曝光笔记。 | 只考察新笔记的点击率等指标的话,曝光的基尼系数级数大,少数头部新笔记占据了大部分的曝光。 所以需要分别考察高、低曝光笔记。高曝光笔记依靠丰富的交互记录,无需冷启动技术也能做到精确推荐,所以更应该关注低曝光新笔记的冷启动 一方面,新笔记中低曝光笔记数量比高曝光更多 另一方面,低曝光新笔记的交互记录很少,不容易做好推荐,更应设计专门的冷启动技术做处理 |
| 用户侧指标 | 大盘消费指标 | 大盘的消费时长、日活、月活。 | 低曝光笔记缺少用户交互、推荐不准。 一味大力扶持低曝光新笔记虽然可以提升用户发布指标,但也会降低大盘消费指标进而损害用户体验。 故希望在做新的消费实验时候,大盘指标基本持平,确保新策略不会伤害用户体验。 |
| 内容侧指标 | 高热笔记占比 | 小红书的场景下,高热笔记为前 30 天获得 | 高热笔记占比越高,说明冷启动阶段挖掘优质笔记的能力越强。 |
冷启动的优化方向
冷启动需要综合考察作者侧指标、用户侧指标和内容侧指标,而普通笔记的推荐通常只考虑用户侧指标。显然,冷启动的评价体系更为复杂。后续章节将详细介绍冷启动的优化方式,主要包括以下方向:
1. 优化推荐的全链路:包括优化召回和排序,每一个环节都针对新笔记做优化,提升新笔记通过完整链路,进而被曝光的机会。同时尽量准确推荐新笔记,不要引起用户反感
2. 流量调控:流量怎么在新物品、老物品中分配,通常会向新物品倾斜更多流量。
简单的召回通道
召回的依据
在小红书中,新笔记自带图片、文字、地点,并被打上了算法或人工标注的标签。但是缺乏用户点击、点赞等信息,没有笔记 ID embedding,导致了冷启动召回的困难:
- 缺少用户交互,还没学好笔记 ID embedding,导致双塔模型效果不好;(召回和排序中同样存在问题)
- 缺少用户交互,导致 ItemCF 不适用物品冷启动:新笔记交互少,与其他笔记的用户重合度未知,无法计算相似度。
因此诸多召回通道的适用性如下:
| 召回通道 | 物品冷启动适用性 |
|---|---|
| ItemCF 召回 | 不适用 |
| 双塔模型 | 改造后适用 |
| 类目、关键词召回 | 适用 |
| 聚类召回 | 适用 |
| Look-Alike 召回 | 适用 |
| 本节后续主要介绍改进后的双塔模型和类目、关键词用于新物品的冷启动召回 |
改进后的双塔模型
因为没有新笔记 ID embedding,导致双塔模型效果不好。因此对于 ID embedding,有如下改进方法:
- 改进方案一:新笔记使用 default embedding。
(1)物品塔做 ID embedding 时,让所有新笔记共享一个 ID,而不是用自己真正的 ID。共享的 ID 对应的 embedding 向量即是 default embedding,该向量是通过训练学习得到的。
(2)到下次模型训练的时候,新笔记才有自己的 ID embedding 向量。- 改进方案二:利用相似笔记的 embedding 向量。
(1)新笔记发布后,查找内容最相似的高曝笔记;(高曝笔记向量学的好)
(2)把个高曝笔记的 embedding 向量取平均,作为新笔记的 embedding。
在实践中,通常设置多个向量召回池,让新笔记有更多曝光机会:
- 1 小时新笔记;2. 6 小时新笔记;3. 24 小时新笔记;4. 30 天笔记。
以上的召回池共享同一个双塔模型,所以多个召回池不增加训练的代价。
类目、关键词召回
信息流、电商的互联网公司都会维护每一位用户的画像,用户画像中记录了用户信息,包括感兴趣的类目、关键词等,可被用于召回。基于类目的召回基本思想如下:
- 系统维护类目索引(如下图):类目 → 笔记列表(按时间倒排);
- 用类目索引做召回:用户画像 → 类目 → 笔记列表;
- 取回笔记列表上前
篇笔记(即最新的 篇)。
基于关键词的召回与类目召回本质完全相同,仅将以上介绍的思想中类目替换成”关键词“。
但是这种召回通道存在明显的缺点:
- 只对刚刚发布的新笔记有效:
(1)只取回某类目/关键词下最新的篇笔记;
(2)窗口期短,发布几小时之后,就再没有机会被召回。- 弱个性化,不够精准。
虽然这些类目召回存在缺陷,但它仍然比较重要,在于它能立刻为新笔记带来曝光从而提升用户发布笔记的积极性
聚类召回
聚类召回
聚类召回基于笔记的图文内容做推荐,基本思想如下:
如果用户喜欢一篇笔记,那么他会喜欢内容相似的笔记。
- 事先训练一个神经网络,基于笔记的类目和图文内容,把笔记映射到向量;
- 对笔记向量做聚类,划分为 1000 cluster,记录每个 cluster 的中心方向。(k-means 聚类,用余弦相似度)
在新笔记发布后,需要将其添加到对应的聚类索引:
- 一篇新笔记发布之后,用神经网络把它映射到一个特征向量;
- 从 1000 个 cluster 向量中找到最相似的向量,作为新笔记的 cluster;
- 建立聚类索引:cluster → 笔记 ID 列表(按时间倒排)。
之后就可以做线上召回:
- 给定用户 ID,找到他的
交互的笔记列表,把这些笔记作为种子笔记; - 把每篇种子笔记映射到向量,寻找最相似的 cluster;(知道了用户对哪些 cluster 感兴趣)
- 从每个 cluster 的笔记列表中,取回最新的
篇笔记; - 最多取回
篇新笔记
可见,聚类召回与类目、关键词召回有相似的缺点,只对刚刚发布的新笔记有效。
内容相似度模型
前文描述中,聚类召回需要调用一个神经网络,将笔记图文内容映射为向量。如果两篇笔记内容相似,则这两篇笔记应该有较高的余弦相似度。所以,如下搭建神经网络: 
该模型将笔记的图文内容分别通过 CNN 和 BERT 生成向量,拼接后输入全连接层输出笔记内容表征向量,再计算两篇笔记内容向量的余弦相似度。其中 CNN 和 BERT 是预训练好的模型,但全连接层的参数需要通过训练学习。 
该模型的训练方法与双塔模型类似,基本思想:
- 设正样本笔记、种子笔记、负样本笔记通过神经网络得到的向量为
、 、 ; - 鼓励
大于 ; - 实际就是在双塔模型中所描述的 Pairwise 方法,使用 Triplet hinge loss 或者 Triplet logistic loss。
- Triplet hinge loss:$$L(a,b^+,b^-)=max{0,cos(a,b^-)+m-cos(a,b^+)}$$
- Triplet logistic loss:$$L(a,b^+,b_-)=log(1+exp(cos(a,b^-)-cos(a,b^+)))$$

其中 <种子笔记,正样本> 二元组中正样本的选取方法如下:
- 人工标注二元组的相似度,选取高相似度的作为正样本;
- 算法自动选正样本:
(1)只用高曝光笔记作为二元组,因为有充足的用户交互信息(便于算法学习选择); (2)要求两篇笔记由相同的二级类目,比如都是“菜谱教程”(过滤完全不相似笔记);
(3)再用 ItemCF 的物品相似度选正样本。
而其中 <种子笔记,负样本> 二元组中负样本的选取规则如下:
从全体笔记中随机选出满足条件的:
- 字数较多(神经网络提取的文本信息有效);
- 笔记质量高,避免图文无关。
Look-Alike 召回
Look-Alike(人群扩散算法)是互联网广告中常用的方法,也可以用在推荐系统中召回低曝光笔记。
互联网广告中的Look-Alike
以 Tesla 为例,它们知道 Telsa Model 3 的典型用户满足这样几个特点:年龄 25-35;本科学历以上;关注科技数码;喜欢苹果电子产品。需要重点在这些人群中投放广告,所以满足这些条件的用户作为种子用户,但是种子用户的数量很少,而潜在的用户受众很多却缺少部分信息无法寻找。因此,通过种子用户进行人群扩散找到与种子用户相似的 Look-Alike 用户。 
Look-Alike 是一个框架,具体做人群扩散的方法很多,主要任务在于如何计算两个用户的相似度:
- UserCF:两个用户有共同的兴趣点;
- Embedding:两个用户向量的余弦相似度较大。
Look-Alike 人群扩散召回
在小红书的应用场景下,Look-Alike 的基本思想如下:
- 点击、点赞、收藏、转发等交互说明用户对笔记可能感兴趣;
- 把有交互的用户作为新笔记的种子用户;
- 用 Look-Alike 在相似用户中扩散。
当用户发布新笔记后:
- 取回有交互用户的特征向量(比如复用双塔模型学到的用户向量),将有交互的用户的向量的平均作为新笔记的特征向量;(与新笔记交互的种子用户很少,因此要充分利用交互信号提升推荐的准确性)
- 每当有用户交互该物品,则更新笔记的特征向量。(小红书做到近线更新(分钟级)特征向量)
在线上召回时:
- 用向量数据库存储新笔记的特征向量;
- 用户刷小红书,就给他做一次推荐;
- 使用双塔模型计算用户的特征向量,以该向量作为 query ,在向量数据库中做最近邻查找(找到与该用户特征向量相似的笔记特征向量(种子用户的平均特征向量)),取回几十篇笔记。
结合前面小节的描述,物品从发布到热门,主要的透出渠道会经历三个阶段:
- 类目召回、聚类召回。它们是基于内容的召回通道,适用于刚刚发布的物品。
- Look-Alike 召回。它适用于有点击,但是点击次数不高的物品。
- 双塔、ItemCF、Swing 等等。它们是基于用户行为的召回通道,适用于点击次数较高的物品。
流量调控
流量调控是冷启动的第二种优化点,也是物品冷启动最重要的一环。它直接控制流量怎么在新笔记、老笔记中分配,直接影响作者发布指标。工业界一般将流量向新笔记倾斜,扶持新笔记的目的在于:
- 促进发布,增大内容池:
(1)新笔记获得的曝光越多,作者创作积极性越高;
(2)反映在发布渗透率、人均发布量上。- 挖掘优质笔记:
(1)做探索,让每篇新笔记都能获得足够曝光;
(2)挖掘的能力反映在高热笔记占比上。
工业界通过流量调控解决新物品冷启动的案例:
- 假设推荐系统只分发年龄小于 30 天的笔记;
- 假设采用自然分发,年龄小于 24 小时的新笔记曝光占比为 1/30;
- 人为干涉扶持新笔记,让新笔记的曝光占比远大于 1/30。
而为了扶持新笔记,业界的流量调控技术发展经历了如下阶段:
- 在推荐结果中强插新笔记;
- 对新笔记的排序分数做提权(boost);
- 通过提权,对新笔记做保量;
- 差异化保量。
如下图所示,回顾推荐系统的链路,粗排和重排环节作为漏斗,会过滤掉大量笔记,因此应该在这两个环节做人为干涉,尽量让新笔记经过漏斗,扶持新笔记有更多曝光机会。 
新笔记提权
提权即给新笔记的分数乘上大于 1 的系数,其优点在于容易实现、投入产出比好,缺点也很明显:
- 曝光量对提权系数很敏感;
- 很难精确控制曝光量,容易过度曝光和不充分曝光。
新笔记保量
保量:不论笔记质量高低,都保证 24 小时获得 100 次曝光。如下图所示,在原有的提权系数基础上,乘以额外的提权的系数。当发布时间越接近 24 小时,而曝光次数与 100 次差的越多,那么乘的额外系数就越大,给笔记更多的曝光机会。 
更先进的动态提权保量,基本思想是以下四个值计算提权系数:
- 目标时间:比如 24 小时;
- 目标曝光:比如 100 次;
- 发布时间:比如笔记已经发布 12 小时;
- 已有曝光:比如笔记已经获得 20 次曝光。
上面的例子中,得到提权系数满足:
实际应用中,保量的难点在于:
- 保量成功率远低于 100% :
(1)很多笔记在 24 小时内达不到 100 次曝光;
(2)召回、排序存在不足;
(3)提权系数调得不好。- 线上环境变化会导致保量失败:
(1)线上环境变换:新增召回通道、升级排序模型、改变重排打散规则等;
(2)线上环境变换后,需要调整提权系数,十分麻烦。
那么为了提升保量的成功率,大幅增加额外系数是否可行?实际上,给新笔记分数 boost 越多,对新笔记的影响是双面的:
- 好处:短期来说,分数提升越多,曝光次数越多,保量成功率提升;
- 坏处:但会将笔记推荐给不太合适(重点是不合适,不是笔记的质量差)的受众:
(1)点击率、点赞率等指标会偏低;
(2)长期会受推荐系统打压,难以成长为热门笔记。
所以,保量的系数调整十分关键。
差异化保量
差异化保量的基本思想在于不同的笔记有不同的保量目标,比如普通笔记保 100 次曝光、内容优质的笔记保 100-500 次曝光,具体的保量目标由算法判定。大致实现如下:
- 基础保量:24 小时 100 次曝光;
- 内容质量:用模型(多模态神经网络)评价内容质量高低,给予额外保量目标,上限是加 200 次曝光;
- 作者质量:根据作者历史上的笔记质量,给予额外保量目标,上限是加 200 次曝光;
- 一篇笔记最少有 100 次保量,最多有 500 次保量。
达到保量目标后,便会停止扶持,自然分发,与老笔记公平竞争。
冷启动的AB测试
冷启动的 AB 测试远比正常推荐系统的麻烦:推荐系统常用的 AB 测试只考察用户侧消费指标,而推荐系统的 AB 测试还需要额外考察作者侧发布指标。后者远比前者复杂,而且所有已知的实验方案都存在缺陷。
- 作者侧发布指标
- 发布渗透率、人均发布量
- 用户侧消费指标
- 对新笔记的点击率、交互率
- (标准AB测试)大盘指标:消费时长、日活、月活
回顾推荐系统中的标准AB测试:假设把用户划分成两组,每组50%,而不对笔记做分组。实验组用户发起推荐请求时,会按照新策略为其作推荐,而用旧策略为对照组用户做推荐。实验过程中对比两组用户消费指标的diff。 
用户侧实验
如下图所示,冷启动的用户侧实验与标准的推荐系统一致,基本思想就是将全部用户划分为对照组和实验组,使用新旧不同策略在全部笔记上做测试,得到新笔记点击率、用户消费时长等指标的 diff。 
但这种 AB 测试存在小缺陷,主要问题在于:
- 限定:保量 100 次曝光;
- 假设:新笔记曝光越多,用户使用 APP 时长越低;(通常来说,新笔记推荐不够准,用户体验不好)
- 新策略:把新笔记排序时的权重增大两倍;
- 结果(只看用户消费指标):
(1)AB 测试的 diff 是负数(实验组不如对照组);
(2)如果推全,diff 会缩小(比如 -2% → -1%)。
这里分析下推全后 diff 会缩小的大致原因:当做测试时,实验组看到更多新笔记导致消费指标变差,对照组看到更少新笔记导致消费指标变好,因此测试时 diff 较大;推全时实际并不会此消彼长,diff 不会下降过多。
作者侧实验
方案一
作者侧的 AB 测试实验并不好做,主要有三种方案、第一种方案:不对用户和老笔记做分组,区分新笔记和老笔记,并将新笔记根据不同策略划分为对照组和实验组。老笔记自然分发不受新旧策略影响,从全量的老笔记中选择用户最喜欢的推荐给用户。而新笔记的不同组都有机会触达所有用户,对比得到新笔记新旧策略的指标 diff 。 
缺点一:新笔记之间会抢流量(严重)
- 设定:新老笔记走各自队列,没有竞争;重排分给新笔记 1/3 流量,分给老笔记 2/3 流量。
- 新策略:把新笔记的权重增大两倍。
- 结果(只看作者发布指标):
(1)AB 测试的 diff 是正数(实验组优于对照组);
(2)如果推全,diff 会消失(比如 2% → 0)。
这里推全后 diff 消失的原因就在于抢流量:分给新笔记的流量是固定的,实验组提高了新笔记的权重,实验组新笔记的曝光得到增加,而对照组的新笔记曝光就会减少,这样两组的发布指标会产生明显的 diff;当推全新策略,就不会出现抢流量的情况,也就不会产生 diff,因为分发给新旧笔记的流量比例固定。
缺点二:新笔记和老笔记抢流量
- 设定:新老笔记自由竞争;
- 新策略:把新笔记排序时的权重增大两倍;
- AB 测试时,50% 新笔记(带策略)跟 100% 老笔记抢流量;
- 推全后,100% 新笔记(带策略)跟 100% 老笔记抢流量;
- 推全前后设定发生了变化,故 AB 测试结果与推全结果有差异(推全之后新笔记更难抢到流量)。
方案二
与方案一的区别在于:将用户侧也分为对照组和实验组,对照组只能看到对照组的新笔记,实验组只能看到实验组的新笔记。 
因此,方案二的改动比方案一的优缺点在于:
- 优点:新笔记的两个桶不抢流量,实验结果更可信;
- 相同问题:新笔记和老笔记抢流量,AB 测试结果与推全结果有差异;
- 缺点:新笔记内容池减小一半,对用户体验造成负面影响。
方案三
作者侧实验的方案三更为极端。它在方案二的基础上,将老笔记也分为对照组和实验组,同样对照组只能看见对照组的新老笔记和用户。这就相当于把小红书分为两个 app 独立测试了,相比于其他方案的测试结果十分准确,指标的变化都是真实有效的。 
但实际上并不可行,把小红书切为两个 app,内容池缩小一半,严重影响用户体验,消费指标一定大跌。为了 AB 测试损害公司业务,这个代价过于庞大。
综上所述,实际上各种 AB 测试的方案都有缺点(哪怕是小红书的方案)。所以一般在设计方案的时候,要关注问题如下:
- 实验组、对照组新笔记会不会抢流量?
- 新笔记、老笔记怎么抢流量?
- 同时隔离笔记、用户,会不会让内容池变小?
- 如果对新笔记做保量,会发生什么?
本章小结
在红书中,主要研究 UGC(User-Generated Content)的物品冷启动,也就是用户新发布笔记的分发曝光。优化冷启动的目的就在于精准推荐、激励发布、挖掘高潜,针对这些目的一般来说要同时考虑作者侧指标、用户侧指标和内容侧指标,能够反映用户的发布意愿、推荐的精准率和是否能挖掘出优质笔记。基于此,冷启动的主要优化包括两种,优化全链路和流量调控。
本章主要介绍了在推荐系统的链路中,针对冷启动的召回优化。第一种是类目召回、聚类召回,它们是基于内容的召回通道,适用于刚刚发布的物品。 类目召回是根据用户画像中感兴趣类目,通过索引找到该类目下的最新笔记进行推荐。显然类目召回只对刚刚发布的新笔记有效,且个性化弱。而聚类召回利用神经网络,将新笔记图文内容映射为向量,再对这些向量做聚类。线上召回的时候将用户交互过的笔记作为种子笔记,寻找与种子笔记最相似的类,将该类索引的最新笔记进行推荐。同样聚类召回也只对刚刚发布的新笔记有效。
第二种是 Look-Alike 召回。它适用于有点击,但是点击次数不高的物品,实际上思想与 UserCF 相似。它的基本思想就是通过寻找与种子人群相似的 Look-Alike 人群,将新笔记扩散推荐给 Look-Alike 人群。值得注意的是在实践中,将有交互的用户的向量的平均作为新笔记的特征向量,每当有用户交互该物品,更新笔记的特征向量。
第三种是双塔、ItemCF、Swing 等等。它们是基于用户行为的召回通道,适用于点击次数较高的物品。不过因为新笔记缺少用户交互和物品 ID embedding,因此标准推荐系统中的双塔、ItemCF无法使用。但是针对冷启动改进的双塔模型行之有效,主要思想就是直到下次训练前,使用 default embedding 或相似笔记的 embedding 来作为新笔记的向量。
然后介绍的是冷启动的流量调控。推荐系统需要扶持新笔记,可以增大内容池、提高用户发布意愿,所以流量调控就是解决流量怎么在新老笔记之间分配的问题。基本的方法就是使用单独的召回通道、在排序阶段提权。提权易于实现、性价比高,但提权系数和曝光量不好确定。因此需要做保量,可以帮助新笔记在前 24 小时获得 100 次曝光。但简单保量的失败率很高,为了成功率直接增大系数也实际不可取,所以要对不同的笔记做**差异化保量。**也就是根据内容质量、作者质量,决定给予不同的保量目标。
最后介绍了冷启动的 AB 测试。因为要同时考虑作者侧和用户侧的指标,冷启动的测试远比标注推荐系统的复杂。在用户侧实验时,与推荐系统一致,对用户划分对照组和实验组分别测试获得新旧策略指标的 diff。但是存在一些瑕疵,导致结果在推全时会缩小。在作者侧实验时,主要有三种方案。第一种不划分老笔记和用户,将新笔记划分对照组和实验组分别测试获得新旧策略指标的 diff。但问题是新笔记之间会抢流量,推全时 diff 会消失;新笔记和老笔记抢流量,测试与推全 diff 差异大。第二种不划分老笔记,对应划分用户和新笔记为对照组和实验组分别测试获得新旧策略指标的 diff。虽然解决了方案一的新笔记之间的抢流量问题,但是是新老笔记抢流量问题仍然存在,且新笔记内容池减小一半,对用户体验造成负面影响。第三种方案则将老笔记也划分,类似于将小红书划分为两个 app 分别测试新旧策略获得 diff。虽然该方案的推全结果准确,但是这种切分方法将内容池缩小一半,严重影响用户体验,危害公司业务。综上所述,实际上冷启动各种 AB 测试的方案都有缺点(哪怕是小红书的方案)。


