1、推荐系统的基本概念
1.1 用户行为
点击(、有效点击)、阅读(、滑动到底)、点赞、收藏、转发、评论等
小红书推荐系统的转化流程:
1.2 短期消费指标
短期消费指标可以反映用户对推荐是否满意
常见的短期消费指标:
- 点击率 = 点击次数 / 曝光次数:
- 点击率越高说明推荐越精准,给用户推荐了感兴趣的内容
- 但也不能将点击率作为唯一的优化目标,否则骗点击的标题就会泛滥
- 点赞率 = 点赞次数 / 点击次数:
- 收藏率 = 收藏次数 / 点击次数:
- 转发率 =转发次数 / 点击次数:
- 阅读完成率 = 滑动到底次数 / 点击次数 × f(笔记长度):
- 归一化函数 f(·) 和笔记长度有关。因为笔记越长,完成阅读的比例就越低。如果没有归一化函数,对长笔记不公平
这些短期消费指标都是有意义的,但短期消费指标不是衡量推荐系统好坏的根本指标,一味追求这些短期消费指标是不对的
- eg. 如果推荐算法只看用户短期兴趣,推很多用户最近感兴趣的内容,会让这些消费指标上涨,但这样的坏处是会竭泽而渔,用户很快失去兴趣,不再活跃。反过来,如果把多样性做好,尝试一些用户没看过的话题,那么点击率不会上涨,但是会有利于提高用户粘性,留住用户,让用户更活跃
1.3 北极星指标
北极星指标,即最关键的指标,是衡量推荐系统好坏的根本标准
- 北极星指标都是线上指标,只能通过线上实验(小流量 AB 测试)获得,离线实验无法获得这些指标
小红书考察的北极星指标包括三类:
- 用户规模:
- 日活用户数 DAU:同一个用户一天使用 1 次 or 多次小红书都只贡献 1 个 DAU
- 月活用户数 MAU:同一个用户一个月使用 1 次 or 多次小红书都只贡献 1 个 MAU
- 消费:
- 人均使用推荐的时长:
- 人均阅读笔记的数量:
- 发布:
- 发布渗透率:
- 人均发布量:希望推荐系统能激励作者发布,让内容池变大,优质内容池是小红书的核心竞争力。
- 激励发布通常是由冷启动来负责
如果短期指标和北极星指标有冲突,应以北极星指标为准
- eg. 把推荐系统的多样性做好,探索用户的兴趣,使得用户使用的时长增长,但是点击率下跌了,这完全 ok,这样的策略应该上线
1.4 实验流程
- 离线实验:用收集的历史数据做训练和测试
- 优点:做离线实验不需要将算法部署到产品中,没有跟用户实际交互,因此离线实验很容易做,不需要占用系统流量,也不会对系统和用户产生负面影响
- 缺点:离线实验没有线上实验靠谱,像最终判断算法的好坏,还是需要做线上实验
- 离线实验指标:见后续课程
- 小流量上线 AB 测试:将用户随机分为实验组和对照组,实验组用新策略,对照组用旧策略,对比两者的业务指标,判断新策略是否显著优于旧策略
- 上面提到的北极星指标都是线上指标,只能通过线上实验(小流量 AB 测试)获得,离线实验无法获得这些指标
- 其它指标离线若实验能获得,且离线实验指标提升,则需要开 AB 实验进一步验证是否有效
- 全流量上线:如果 AB 测试新策略显著优于旧策略,则加大流量,推全
2、推荐系统的链路
- 召回:(几亿物品 → 几千物品)从物品的数据库中快速取回一些物品
- 用户刷新小红书时,系统会同时调用几十条召回通道,每条召回通道取回几十到几百篇笔记,一共取回几千篇笔记
- 粗排:(几千物品 → 几百物品)用规模比较小的机器学习模型给几千篇笔记逐一打分,按照分数做排序和截断,保留分数最高的几百篇笔记
- 粗排后也会有一些规则来保证进入精排的笔记具有多样性
- 精排:(几百物品 → 几百物品(不做截断))用大规模的深度神经网络给几百篇笔记逐一打分,精排的分数反映出用户对笔记的兴趣,精排之后可以做截断,也可以不做截断,小红书的精排截断不做阶段,所有的几百篇笔记都带着精排分数进入重排
- 重排:(几百物品 → 几十物品)根据精排分数和多样性分数做随机抽样,得到几十篇笔记;然后将相似内容打散;并插入广告和运营内容
2.1 召回
推荐系统一般包含多条召回通道,常见的包括:
- 协同过滤:
- 双塔模型:
- 关注的作者:
- … …
小红书的推荐系统包含几十条召回通道,每条召回通道取回几十到几百篇笔记,一共取回几千篇笔记。推荐系统会融合这些笔记,并做去重和过滤
- 融合:
- 去重:
- 过滤:排除掉用户不喜欢的作者、不喜欢的笔记、不喜欢的话题等
2.2 排序:粗排→精排→重排
排序流程:
- 粗排:用比较简单的模型快速给几千篇笔记打分,保留分数最高的几百篇笔记
- 为什么需要粗排?
- 排序要用机器学习模型预估用户对笔记的兴趣,保留分数最高的笔记,如果直接用一个大规模的神经网络逐一对几千篇笔记打分,花费的代价会很大。为了解决计算量的问题,通常将排序分为粗排和精排两部分,以较好地平衡计算量和准确性
- 当候选物品只有几百个时,才能用大规模神经网络做精排,才能用 DPP 这样的方法做多样性抽样(重排)
- 精排:用一个较大的神经网络给几百篇笔记打分,在小红书这里不用做截断,因此保留全部的几百篇笔记,每篇笔记带有一个精排分数,代表户对笔记的感兴趣程度
- 优点:精排模型比粗排模型大很多,用的特征也更多,因此精排模型的打分更可靠
- 缺点:竞拍模型的计算量很大,因此需要用粗排先做筛选,筛选出较小的候选集交给精排模型
- 重排:重排的结果就是最终展示给用户的物品,比如呈现的是 top 80 的物品,其中包含了笔记和广告。重排的三个目的和流程:
- 先根据多样性做随机抽样,从几百篇笔记中选出几十篇
- 重排主要是考虑多样性
- 多样性抽样的常见方法:MMR、DPP
- 抽样的两个依据:
- 精排分数的大小
- 多样性
- 然后用规则将内容相似的笔记打散,不能将内容过于相似的笔记排在相邻的位置上
- eg. 根据精排分数排在前 5 的笔记都是关于 NBA 的,这样就不太合适,即使用户是个篮球迷,也未必希望看到同质化的内容。如果排第一的是 NBA 的笔记,那么接下来几个位置就不能放 NBA 的内容,相似的笔记会往后挪重排的
- 插入广告、运营推广内容,并根据生态要求调整排序
- eg. 不能连着推很多美女图片
粗排和精排:
- 区别:精排模型更大,用的特征更多
- 模型的输入:
- 用户特征:
- 候选物品特征:
- 统计特征:
- 模型的输出:对一篇笔记的打分。包括点击率、点赞率、收藏率、转发率等,都是神经网络对用户行为的预估,判断用户对某篇笔记是否感兴趣。将点击率、点赞率、收藏率、转发率等多个预估值融合(eg. 加权和)得到最终的分数
- 模型打分决定了笔记会不会展现给用户,以及笔记展示的位置靠前还是靠后