S7.物品的冷启动

介绍推荐系统中的物品冷启动问题。
搜广推
王树森
Author

Hahabula

Published

2025-05-05

Modified

2025-05-05

1 冷启动的优化何评价

1.1 物品的冷启动

物品冷启动

针对于新发布的笔记和视频:

  • ⼩红书上⽤⼾新发布的笔记
  • B站上⽤⼾新上传的视频
  • 今⽇头条上作者新发布的⽂章

上述问题讨论的都是UGC(User-Generated Content,用户生成内容)的物品冷启动问题。而与UGC相对的是PGC(Platform Generated Content)的物品冷启动问题。UGC比PGC更容易引起用户的注意,但PGC的物品冷启动问题却更加复杂。

1.2 特殊对待新笔记的原因

新笔记缺少与⽤⼾的交互,导致推荐的难度⼤,效果差扶持新发布、低曝光的笔记有两个⽬的: 1. 可以促进作者发布(否则发出来的新笔记没⼈看,就丧失发布笔记的动⼒),进 ⽽增⼤内容池 2. 挖掘优质笔记,让每篇新笔记都有⾜够曝光

1.3 优化冷启动的目标

  1. 精准推荐:克服冷启的困难,把新笔记推荐给合适⽤⼾,不引起⽤⼾反感
  2. 激励发布:流量向低曝光新笔记倾斜,激励作者发布
  3. 挖掘⾼潜:通过初期⼩流量的试探,给每篇新笔记曝光机会,找到⾼质量的笔记 给予流量倾斜

1.4 冷启动评价指标

1.4.1 作者侧指标

作者侧指标反映作者发布积极性(低曝光新笔记扶持越好,作者侧指标越⾼),分为发布渗透率、⼈均发布量

  1. 发布渗透率(penetration rate)=当⽇发布⼈数/⽇活⼈数,即每天的作者⽐例发布⼀篇或以上,就算(仅有)⼀个发布⼈数

  2. ⼈均发布量=当⽇发布笔记数/⽇活⼈数,即平均每个⼈发多少篇笔记

    ⼈均发布量通常⽐发布渗透率⼤,因为存在⼀些作者⼀天发很多篇笔记新笔记获得的曝光越多,⾸次曝光和交互出现得越早,作者发布积极性越⾼

1.4.2 用户侧指标

⽤⼾侧指标反映推荐是否精准(是否引起反感),它分为新笔记消费指标和⼤盘消费指标。

新笔记消费指标

这之中主要包括新笔记的点击率、交互率。

  1. 问题:曝光的基尼系数很⼤,少数头部新笔记占据了⼤部分的曝光;头部新笔记推的很准,效果也会很好。

  2. 解决方式:

    设置阈值,分别考察⾼曝光、低曝光新笔记

    • ⾼曝光——⽐如>1000次的曝光(这些笔记甚⾄不⽤冷启动也能推的很准)
    • 低曝光——⽐如<1000次的曝光(重点关注)

⼤盘消费指标

这之中主要包括消费时长、日活、月活。

注意

冷启动不是为了优化⼤盘指标变得很好,⽽是保证不要伤害⼤盘指标

大力扶持低曝光笔记的问题

作者侧发布指标变好,⽤⼾侧⼤盘消费指标变差 原因:低曝光笔记缺乏⽤⼾交互,推荐不准;增加这些笔记的推荐,⽤⼾体验会下降

内容侧指标

内容侧指标指的是⾼热笔记占⽐(⼩红书中,⾼热笔记指的是30天点击超过1000的笔 记)⾼热笔记占⽐越⾼,说明冷启阶段挖掘优质笔记的能⼒越强。

1.5 冷启动的优化点

  1. 优化全链路(包括召回和排序,保证低曝光/新发布笔记能正常⾛完链路,且推荐得很准)
  2. 流量调控(流量如何在新物品、⽼物品中分配)

2 冷启动召回的难点

2.1 新笔记冷启动时面临的情况

对于新笔记⽽⾔:笔记含有图⽚、⽂字、地点等信息,以及算法或⼈⼯标注的标签 但没有⽤⼾点击、点赞等信息,且没有笔记ID embedding(笔记ID embedding需要通过⽤⼾和笔记交互来学习,但⽤⼾和新笔记缺乏这个过程,因此这个向量是初始化的,还没有经过反向传播来更新,所以新笔记的IDembedding啥也不是,反映不出笔记特点)

2.2 冷启动召回的困难

缺少⽤⼾交互,还没学好ID embedding,导致: 1. 双塔模型效果不好 2. ItemCF不适⽤

ItemCF不适⽤的原因:新物品未和⽤⼾进⾏交互,⽆法判断和旧物品的相似度

3 冷启动召回的改进

  1. 双塔模型召回
  2. 类目、关键词召回
  3. 聚类召回
  4. Look-ALIke召回

3.1 双塔模型的改进

3.1.1 新笔记使用default embedding

物品塔做ID embedding时,让所有新笔记共享⼀个ID,⽽不是⽤⾃⼰真正的ID Default embedding:共享的ID对应的embedding向量(它是学出来的,不是直接初始化的)

新笔记发出后,逐渐会有点击和交互,当到下次模型训练的时候,新笔记才有⾃⼰的ID embedding向量。

3.1.2 利用相似笔记embedding向量(平均)

查找topk内容最相似的⾼曝光笔记(每个笔记的图⽚、⽂字、类⽬通过多模态神经⽹络得到向量,查找最相似的k个向量),然后将这k个⾼曝笔记的embedding向量取平均,作为新笔记的embedding(⾼曝笔记的embedding通常学得很好)

3.1.3 多个向量召回池

采⽤多召回池(如1⼩时新笔记、6⼩时新笔记、24⼩时新笔记、30天笔记等),让新笔记有更多曝光机会。

这些召回池共享同⼀个双塔模型,不增加训练代价

3.2 类目、关键词召回

3.2.1 类目召回

系统维护类⽬索引:类⽬⟶笔记列表(按时间倒排)

⽤类⽬索引做召回:⽤⼾画像⟶感兴趣的类⽬⟶笔记列表。然后取回笔记列表上前k篇笔记(即取回对应类⽬最新的k篇)

3.2.2 关键词召回

系统维护关键词索引:关键词⟶笔记列表(按时间倒排)

根据⽤⼾画像上的关键词做召回,取回最新的k篇笔记

3.2.3 两种召回的缺点

  1. 只对刚刚发布的新笔记有效(笔记发布⼏⼩时后就再也没有机会被召回)
  2. 弱个性化,不够精准(依据类⽬、关键词做召回太宽泛了,不具体)

3.3 聚类召回

3.3.1 基本思想

如果⽤⼾喜欢⼀篇笔记,那么他会喜欢内容相似的笔记。

3.3.2 线下训练

事先训练⼀个神经⽹络,基于笔记的类⽬和图⽂内容,把笔记映射到向量

对笔记向量做聚类,划分为1000cluster,记录每个cluster的中⼼⽅向(k-means聚类,⽤余弦相似度)

3.3.3 聚类索引

步骤:

  1. ⼀篇新笔记发布之后,根据它的图⽂内容,⽤神经⽹络把它映射到⼀个特征向量
  2. 然后从1000个向量(对应1000个cluster)中找到最相似的向量,作为新笔记的cluster

索引:cluster⟶笔记ID列表(按时间倒排),线上召回时选择列表前⼏篇笔记

3.3.4 线上召回

  1. 给定⽤⼾ID,找到他的last-n交互的笔记列表,把这些笔记作为种⼦笔记
  2. 把每篇种⼦笔记映射到向量,寻找最相似的n个cluster(知道⽤⼾对哪些cluster感兴趣)
  3. 从每个cluster的笔记列表中,取回最新的m篇笔记,因此最多取回mn篇新笔记线上召回的缺点:和类⽬、关键词召回类似,都只对刚刚发布的新笔记有效

3.3.5 内容相似度模型

需要分别提取两篇笔记(实际是⼀篇笔记和⼀个cluster)的图⽂特征,再考虑它们的余弦相似度。

其中:

  • CNN和BERT模型是预训练好的,可以固定它的参数,也可以做fine-tune
  • 全连接层需要进⾏训练

模型训练

目标:种子笔记何正样本笔记相似度高,和负样本笔记相似度低。

\[ \text{Triplet hinge Loss}=max(0,m+\cos(a,b^-)-\cos(a,b^+)) \]

\[ \text{Triplet logistic Loss}=\log(1+\exp(\cos(a,b^-)-\cos(a,b^+))) \]

方式:通过最小化损失函数得到神经网络

正负样本选取

  1. <种⼦笔记,正样本>

    • ⽅法:
      • ⽅法⼀:⼈⼯标注⼆元组的相似度(代价太⼤)
      • ⽅法⼆:算法⾃动选正样本
    • 筛选条件:
      • 只⽤⾼曝光笔记作为⼆元组(有充⾜的⽤⼾交互信息)
      • 两篇笔记有相同的⼆级类⽬(如都是“菜谱教程ˮ)
      • ⽤ItemCF的物品相似度选正样本
  2. <种⼦笔记,负样本>

    ⽅法:从全体笔记中随机选出满⾜条件的

    • 字数较多(神经⽹络提取的⽂本信息有效)
    • 笔记质量⾼,避免图⽂⽆关

3.4 Look-Alike人群扩散召回

  1. Look-Alike:寻找和种子用户相似的Look-Alike用户
  2. 如何计算两个用户的相似度:
    • UerCF:两个用户有共同的兴趣点
    • 用户ID embedding:两个用户向量的余弦相似度较大

3.4.1 Look-Alike用于新笔记召回

思想

点击、点赞、收藏、转发——⽤⼾对笔记可能感兴趣,把和新笔记有交互的⽤⼾作为新笔记的种⼦⽤⼾,若⼀个⽤⼾可能和种⼦⽤⼾相似,那么就⽤Look-Alike在相似⽤⼾中扩散。

具体方式

  1. 得到的新笔记特征向量是有交互⽤⼾的向量的平均。
  2. 每当有⽤⼾交互该物品,则更新笔记的特征向量(近线更新,即有新⽤⼾交互该物品后⼏分钟后做到更新)

  1. 然后将新笔记特征向量存在向量数据库中,⽤⼾利⽤双塔模型得到⽤⼾特征的向量,将其作为query在数据库中做最近邻查找,得到⼏⼗个向量,通过向量反推新笔记,得到几十篇新笔记(实际是在考虑和⽤⼾最相似的⼀批种⼦⽤⼾)

总结

Look-Alike是利⽤⽤⼾与新笔记对应种⼦⽤⼾之间的相似度,给⽤⼾推送相应新笔记

4 冷启动的流量调控

4.1 扶持新笔记的做法

  • 假设推荐系统只分发年龄<30天的笔记
  • 假设采⽤⾃然分发,新笔记(年龄<24⼩时)的曝光占⽐为1/30
  • 扶持新笔记,让新笔记的曝光占⽐远⼤于1/30

4.2 流量调控技术

  1. 在推荐结果中强插新笔记
  2. 对新笔记的排序分数做提权(boost)
  3. 通过提权,对新笔记做保量(保证新笔记的曝光达到⼀定数量)
  4. 差异化保量

4.2.1 新笔记提权

  1. 目的:做人为干涉,提升新笔记的曝光度
  2. 干涉环节
    • 粗排
    • 重排
  3. 干涉方式:对新笔记提权,让其占比和分数大幅提升。
  4. 特点
    • 优点:容易实现,投⼊产出⽐好
    • 缺点:曝光量对提权系数很敏感,因此很难精确控制曝光量,容易过度曝光和不充分曝光

4.2.2 新笔记保量

  1. 做法:不论笔记质量⾼低,都保证前24⼩时获得100次曝光
  2. 方式:在原有提权系数的基础上,乘以额外的提权系数,如下图

  1. 提权系数的计算:
    • ⽬标时间:如24个⼩时
    • ⽬标曝光:如100次
    • 发布时间:如笔记已经发布12个⼩时
    • 已有曝光:如笔记已经获得20次曝光
    • 计算公式:

\[ \text{提权系数} = f(\frac{\text{发布时间}}{\text{⽬标时间}},\frac{\text{已有曝光}}{\text{⽬标曝光}})=f(0.5, 0.2) \]

  1. 保量难点
    1. 保量成功率远低于100%
      • 很多笔记24⼩时达不到100次曝光
      • 召回、排序存在不⾜
      • 提权系数调的不好
    2. 线上环境变化导致保量失败
      • 线上环境变化:新增召回通道,升级排序模型,改变重排打散规则……
      • 线上环境变化后需要调整提权系数
给新笔记分数boost越多,是否对新笔记越有利?
  1. 好处:分数提升越多,曝光次数越多
  2. 坏处:把笔记推荐给不太合适的受众,导致点击率、点赞率等指标会偏低,从⽽⻓期受推荐系统打压,难以成⻓为热⻔笔记。

所以简单粗暴的给新笔记提权(如直接提权4倍使其快速达到100次曝光),效果并不好(揠苗助长

4.2.3 差异化保量

  1. 内容:不同笔记有不同保量⽬标,普通笔记保100次曝光,内容优质的笔记保100-500次曝光
  2. 做法:
  • 基础保量:24⼩时100次曝光
  • 内容质量:根据模型评价的内容质量⾼低,给予额外保量⽬标,上限是加200次曝光
  • 作者质量:根据作者历史上的笔记质量,给予额外保量⽬标,上限是加200次曝光

由此可得,⼀篇笔记最少100次保量,最多有500次保量

5 冷启动的AB测试

冷启动的AB测试:需要关注⽤⼾侧消费指标作者侧发布指标

通常做法:实验组⽤新策略,对照组⽤旧策略,观测两组⽤⼾消费指标的diff

Figure 1

5.1 用户侧实验

采⽤上图 Figure 1 的实验⽅法,考察新笔记CTR和⽤⼾消费时⻓的diff

  1. 用户侧实验的缺点
    • 限定:保量100次曝光
    • 假设:新笔记曝光越多,⽤⼾使⽤app时⻓越低(说明新笔记曝光不精准,影响⽤⼾体验)
    • 新策略:把新笔记排序时的权重增⼤两倍
    • 结果(只看⽤⼾消费指标):消费指标会变差,AB测试的diff是负数,即实验组不如对照组

如果推全,diff会缩小。

  1. diff缩小的原因:推全会⾯向更多的⽤⼾群体,新笔记曝光更有可能获得⽤⼾的点击、点赞、收藏等

5.2 作者侧实验

5.2.1 方案一

  1. 缺点一:新笔记之间会抢流量

    • 设定:新⽼笔记⾛各⾃队列,没有竞争,设定重排分给新笔记1/3流量,分给⽼笔记2/3流量
    • 新策略:把新笔记的权重增⼤两倍
    • 结果(只看作者发布指标):AB测试的diff是正数(实验组优于对照组)

    实验组提权的新笔记会抢⾛对照组的曝光,导致实验组会涨,对照组会跌

如果推全,diff会消失(⽐如2%变为0)(推全后,新笔记只和新笔记竞争,权重*2后还是公平竞争,和原先没区别,不会改变发布侧指标

  1. 缺点二:新笔记抢老笔记的流量
    • 设定:新⽼笔记⾃由竞争
    • 新策略:把新笔记排序时的权重增⼤两倍
    • 结果:AB测试中1个新笔记(50%)抢2个⽼笔记(100%)流量,推全后1个

新笔记(100%)抢1个⽼笔记(100%)流量,推全后抢流量更难,diff会减⼩甚⾄消失。

5.2.2 方案二

  1. 优势:这种⽅案避免了新笔记之间抢流量的问题,原理上能保证推全后还是AB测试的diff,实验结果更可信
  2. 缺点:
    • 新笔记会和⽼笔记抢流量(和⽅案⼀相同)
    • 内容池减少:新笔记内容池减少⼀半,需要从差⼀点的笔记中选⼀半补上来,影响⽤⼾体验,消费指标下降

5.2.3 方案三

这种⽅式就像把⼩红书切成两个app,内容池减少⼀半,消费指标⼀定会⼤跌

Back to top