王树森推荐系统学习笔记_冷启动
物品冷启动
物品冷启动:评价指标
物品冷启动
- 小红书上用户新发布的笔记。
- B 站上用户新上传的视频。
- 今日头条上作者新发布的文章。
新笔记冷启动
- 新笔记缺少与用户的交互,导致推荐的难度大、效果差。
- 扶持新发布、低曝光的笔记,可以增强作者发布意愿。
优化冷启的目标
-
精准推荐:克服冷启的困难,把新笔记推荐给合适的用户,不引起用户反感。
-
激励发布:流量向低曝光新笔记倾斜,激励作者发布。
-
挖掘高潜:通过初期小流量的试探,找到高质量的笔记,给予流量倾斜。
评价指标
-
作者侧指标:
- 发布渗透率、人均发布量。
-
用户侧指标:
- 新笔记指标:新笔记的点击率、交互率。
- 大盘指标:消费时长、日活、月活。
-
内容侧指标:
- 高热笔记占比。
作者侧指标
发布渗透率(penetration rate)
- 发布渗透率 = 当日发布人数 / 日活人数
- 发布一篇或以上,就算一个发布人数。
- 例:
- 当日发布人数 = 100 万
- 日活人数 = 2000 万
- 发布渗透率 = 100 / 2000 = 5%
人均发布量
- 人均发布量 = 当日发布笔记数 / 日活人数
- 例:
- 每日发布笔记数 = 200 万
- 日活人数 = 2000 万
- 人均发布量 = 200 / 2000 = 0.1
发布渗透率、人均发布量反映出作者的发布积极性。
冷启的重要优化目标是促进发布,增大内容池。
新笔记获得的曝光越多,首次曝光和交互出现得越早,作者发布积极性越高。
用户侧指标
新笔记的消费指标
-
新笔记的点击率、交互率。
- 问题:曝光的基尼系数很大。
- 少数头部新笔记占据了大部分的曝光。
-
分别考察高曝光、低曝光新笔记。
- 高曝光:比如 >1000 次曝光。
- 低曝光:比如 <1000 次曝光。
内容侧指标
高热笔记占比
- 高热笔记:前 30 天获得 1000+ 次点击。
- 高热笔记占比越高,说明冷启阶段挖掘优质笔记的能力越强。
总结
- 作者侧指标:发布渗透率、人均发布量。
- 用户侧指标:新笔记消费指标、大盘消费指标。
- 内容侧指标:高热笔记占比。
冷启动的优化点
- 优化全链路(包括召回和排序)。
- 流量调控(流量怎么在新物品、老物品中分配)。
物品冷启动:简单的召回通道
召回的依据
冷启召回的困难
- 缺少用户交互,还没学好笔记 ID embedding,导致双塔模型效果不好。
- 缺少用户交互,导致 ItemCF 不适用。
双塔模型
ID Embedding
改进方案 1:新笔记使用 default embedding
- 物品塔做 ID embedding 时,让所有新笔记共享一个 ID,而不是用自己真正的 ID。
- Default embedding:共享的 ID 对应的 embedding 向量。
- s到下次模型训练的时候,新笔记才有自己的 ID embedding 向量。
改进方案 2:利用相似笔记 embedding 向量
- 查找 top k 内容最相似的高曝光笔记。
- 把 k 个高曝光笔记的 embedding 向量取平均,作为新笔记的 embedding。
多个向量召回池
-
多个召回池,让新笔记有更多曝光机会。
- 1 小时新笔记,
- 6 小时新笔记,
- 24 小时新笔记,
- 30 天笔记。
-
共享同一个双塔模型,那么多个召回池不增加训练的代价。
类目召回
基于类目的召回
-
系统维护类目索引:
-
用类目索引做召回:
-
取回笔记列表上前 k 篇笔记(即最新的 k 篇)。
基于关键词的召回
-
系统维护关键词索引:
-
根据用户画像上的 关键词 做召回。
缺点
-
缺点 1:只对刚刚发布的新笔记有效。
- 取回某类目 / 关键词下最新的 k 篇笔记。
- 发布几小时之后,就再没有机会被召回。
-
缺点 2:弱个性化,不够精准。
物品冷启动:聚类召回
聚类召回
基本思想
-
如果用户喜欢一篇笔记,那么他会喜欢内容相似的笔记。
-
事先训练一个神经网络,基于笔记的类别和图文内容,把笔记映射到向量。
-
对笔记向量做聚类,划分为 1000 个 ,记录每个 的中心方向。(-means 聚类,用余弦相似度。)
聚类索引
-
一篇新笔记发布之后,用神经网络把它映射到一个特征向量。
-
从 1000 个向量(对应 1000 个 )中找到最相似的向量,作为新笔记的 。
-
索引:
线上召回
-
给定用户 ID,找到他的 last- 交互的笔记列表,把这些笔记作为种子笔记。
-
把每篇种子笔记映射到向量,寻找最相似的 。 (知道了用户对哪些 感兴趣。)
-
从每个 的笔记列表中,取回最新的 篇笔记。
-
最多取回 篇新笔记。
内容相似度模型
训练内容相似度模型
模型的训练
基本想法:鼓励 大于
Triplet hinge loss:
Triplet logistic loss:
<种子笔记,正样本>
方法一:人工标注二元组的相似度
方法二:算法自动选正样本
筛选条件:
-
只用高曝光笔记作为二元组 (因为有充足的用户交互信息)。
-
两篇笔记有相同的二级类别,比如都是 “菜谱教程”。
-
用 ItemCF 的物品相似度选正样本。
<种子笔记,负样本>
- 从全体笔记中随机选出满足条件的:
- 字数较多 (神经网络提取的文本信息有效)。
- 笔记质量高,避免图文无关。
总结
-
基本思想:根据用户的点赞、收藏、转发记录,推荐内容相似的笔记。
-
线下训练:多模态神经网络把图文内容映射到向量。
-
线上服务:
物品冷启动:Look-Alike 人群扩散
Look-Alike 起源于互联网广告
-
如何计算两个用户的相似度?
-
UserCF:两个用户有共同的兴趣点。
-
Embedding:两个用户向量的 较大。
Look-Alike 用于新笔记召回
-
点击、点赞、收藏、转发 —— 用户对笔记可能感兴趣。
-
把有交互的用户作为新笔记的种子用户。
-
用 look-alike 在相似用户中扩散。
-
近线更新特征向量。
-
特征向量是有交互的用户的向量的平均。
-
每当有用户交互该物品,更新笔记的特征向量。
利用双塔模型计算出用户的特征向量,将这个特征向量在向量数据库中做最近邻查找。这个过程就叫做 Look-Alike 召回。
如果种子用户喜欢某篇笔记,那么相似用户也可能喜欢这篇笔记,这叫做 Look-Alike 扩散召回通道。
物品冷启动:流量调控
扶持新笔记的目的
-
目的1:促进发布,增大内容池。
- 新笔记获得的曝光越多,作者创作积极性越高。
- 反映在发布渗透率、人均发布量。
-
目的2:挖掘优质笔记。
- 做探索,让每篇新笔记都能获得足够曝光。
- 挖掘的能力反映在高热笔记占比。
工业界的做法
-
假设推荐系统只分发年龄 <30 天的笔记。
-
假设采用自然分发,新笔记(年龄 <24 小时)的曝光占比为 1/30。
-
扶持新笔记,让新笔记的曝光占比远大于 1/30。
流量调控技术的发展
- 在推荐结果中强插新笔记。
- 对新笔记的排序分数做提权(boost)。
- 通过提权,对新笔记做保量。
- 差异化保量。
新笔记提权(boost)
新笔记提权
-
目标:让新笔记有更多机会曝光。
- 如果做自然分发,24 小时新笔记占比为 1/30。
- 做人为干涉,让新笔记占比大幅提升。
-
干涉粗排、重排环节,给新笔记提权。
-
优点:容易实现,投入产出比好。
-
缺点:
- 曝光量对提权系数很敏感。
- 很难精确控制曝光量,容易过度曝光和不充分曝光。
新笔记保量
-
保量:不论笔记质量高低,都保证 24 小时获得 100 次曝光。
-
在原有提权系数的基础上,乘以额外的提权的系数,例如:
动态提权保量
用下面四个值计算提权系数
- 目标时间:比如 24 小时。
- 目标曝光:比如 100 次。
- 发布时间:比如笔记已经发布 12 小时。
- 已有曝光:比如笔记已经获得 20 次曝光。
计算公式:
保量的难点
保量成功率远低于 100%
- 很多笔记在 24 小时达不到 100 次曝光。
- 召回、排序存在不足。
- 提权系数调得不好。
线上环境变化会导致保量失败
- 线上环境变化:新增召回通道、升级排序模型、改变重排打散规则……
- 应对措施:线上环境变化后,需要调整提权系数。
给新笔记分数 boost 越多,对新笔记越有利?
- 好处:分数提升越多,曝光次数越多。
- 坏处:把笔记推荐给不太合适的受众。
- 提权系数过高,导致预估兴趣分数偏高,会将笔记推荐给不合适的受众
- 点击率、点赞率等指标会偏低。
- 长期会受推荐系统打压,难以成长为热门笔记。
差异化保量
-
保量:不论新笔记质量高低,都做扶持,在前 24 小时给 100 次曝光。
-
差异化保量:不同笔记有不同保量目标,普通笔记保 100 次曝光,内容优质的笔记保 100~500 次曝光。
差异化保量
-
基础保量:24 小时 100 次曝光。
-
内容质量:用模型评价内容质量高低,给予额外保量目标,上限是加 200 次曝光。
-
作者质量:根据作者历史上的笔记质量,给予额外保量目标,上限是加 200 次曝光。
-
一篇笔记最少有 100 次保量,最多有 500 次保量。
总结
-
流量调控:流量怎么在新老笔记之间分配。
-
扶持新笔记:单独的召回通道,在排序阶段提权。
-
保量:帮助新笔记在前 24 小时获得 100 次曝光。
-
差异化保量:根据内容质量、作者质量,决定保量目标。
物品冷启动:AB测试
新笔记冷启的 AB 测试
-
作者侧指标:
- 发布渗透率、人均发布量。
-
用户侧指标:
- 对新笔记的点击率、交互率。
- 大盘指标:消费时长、日活、月活。
用户侧实验
用户侧实验
缺点
-
限定:保量 100 次曝光。
-
假设:新笔记曝光越多,用户使用 APP 时长越低。
-
新策略:把新笔记排序时的权重增大两倍。
-
结果(只看消费指标)
-
AB 测试的 diff 是负数(策略组不如对照组)。
-
如果推全,diff 会缩小(比如 -2% ➝ -1%)。
-
这是因为新笔记采取保量。实验组的新笔记曝光量偏多,对照组偏少。比如有90篇新笔记,每篇保量100次,一共曝光9000次。实验组曝光了6000次,对照组曝光了3000次。试验结束后,原来实验组的 50% 用户曝光了4500次,对照组的 50% 用户也曝光了4500次,因此实验计算的 diff 偏大。
-
作者侧实验
作者侧实验:方案一
缺点:新笔记之间会抢流量
-
设定:
-
新老笔记走各自队列,没有竞争。
-
重排:分给新笔记 1/3 流量,分给老笔记 2/3 流量。
-
-
新策略:把新笔记的权重增大两倍。
-
结果(只看发布指标):
-
AB 测试的 diff 是正数(策略组优于对照组)。
-
如果推全,diff 会消失(比如 2% ➝ 0)。
-
缺点:新笔记和老笔记抢流量
-
设定:新老笔记自由竞争。
-
新策略:把新笔记排序时的权重增大两倍。
-
AB 测试时,50% 新笔记(带策略)跟 100% 老笔记抢流量。
-
推全后,100% 新笔记(带策略)跟 100% 老笔记抢流量。
-
作者侧 AB 测试结果与推全结果有些差异。
作者侧实验:方案二
方案二比方案一的优缺点
-
优点:新笔记的两个桶不抢流量,作者侧实验结果更可信。
-
相同:新笔记和老笔记抢流量,作者侧 AB 测试结果与推全结果有些差异。
-
缺点:新笔记池减小一半,对用户体验造成负面影响。
作者侧实验:方案三
对公司业务造成影响。
总结
-
冷启的 AB 测试需要观测 作者发布指标 和 用户消费指标。
-
各种 AB 测试的方案都有缺陷。(小红书有更好的方案,但也不完美。)
-
设计方案的时候,问自己几个问题:
- 实验组、对照组新笔记会不会抢流量?
- 新笔记、老笔记怎么抢流量?
- 同时隔离笔记、用户,会不会让内容池变小?
- 如果对新笔记做保量,会发生什么?