Free Will

推荐系统 | 概要02:推荐系统的基本概念

推荐系统的链路

推荐系统的链路分为召回、粗排、精排、重排

  • 召回(retrieval):

快速从海量数据中取回几千个用户可能感兴趣的物品。比如小红书有上亿篇笔记,当用户刷新小红书的时候,系统会同时调用几十条召回通道,每条召回通道取回几十到几百篇笔记,一共取回几千篇笔记。做完召回之后,接下来要从几千篇笔记中选出用户最感兴趣的。

  • 粗排:

用小规模的机器学习模型给召回的物品打分,然后做截断,选出分数最高的几百个物品。

  • 精排:

用大规模神经网络给粗排选中的几百个物品打分,可以做截断,也可以不做截断。我们小红书的精排不做其他截断,所有这几百篇笔记都带着精排分数进入重排。

  • 重排:

这里会根据精排分数和多样性分数做随机抽样,得到几十篇笔记,然后把相似内容打散,并且插入广告和运营内容,展示给用户。推荐系统的目标是从物品的数据库中选出几十个物品展示给用户。小红书的场景下,物品就是笔记。

召回

我们一共有几亿篇笔记推荐系统电路上的第一环是召回,就是从笔记数据库中快速取回一些笔记。在实践中,推荐系统有很多条召回通道。常见的包括协同过滤、双塔模型、关注的作者等等。

小红书的推荐系统有几十条召回通道,每条召回通道取回几十到几百篇笔记,这些召回通道一共会返回几千篇笔记,然后推荐系统会融合这些笔记,并且做去重和过滤。过滤的意思是排除掉用户不喜欢的,作者不喜欢的,笔记不喜欢的话题,找回几千篇笔记之后,下一步是做排序。

粗排、精排

排序要用机器学习模型预估用户对笔记的兴趣,保留分数最高的笔记。如果直接用一个大规模的神经网络逐一对千篇笔记打分,花费的代价会很大。为了解决计算量的问题,通常把排序分为粗排和精排这两步。

  • 粗排用比较简单的模型快速给几千篇笔记打分,保留分数最高的几百篇笔记。

  • 精排用一个较大的神经网络给几百篇笔记打分,精排模型比粗排模型大很多,用的特征也更多。

所以精排模型打的分数更可靠,但是精排的计算量很大。这就是为什么我们先用粗排做筛选,然后才用精排,这样做可以比较好的平衡计算量和准确性。

做完粗排和精排得到几百篇笔记,每篇笔记有一个分数,表示用户对笔记的兴趣有多高,可以直接把笔记按照模型打的分数做排序,然后展示给用户。

粗排和精排非常相似,唯一的区别就是精排模型更大,用的特征更多。模型的输入包括用户特征、候选物品的特征,还有统计特征。假如我们想要判断小王同学是否对某篇笔记感兴趣,我们就要把笔记的特征、小王的特征,还有很多统计特征输入神经网络。神经网络会输出很多数值,比如点击率、点赞率、收藏率、转发率,这些数值都是神经网络对用户行为的预估。

这些数值越大,说明用户对笔记越感兴趣,最后把多个预估值做融合,得到最终的分数。比如求加权和,这个分数决定了笔记会不会被展示给用户,以及笔记展示的位置是靠前还是靠后。请注意,这只是对一篇笔记的打分粗排,要对几千篇笔记打分,精排要对几百篇笔记打分。每篇笔记都有多个预估分数,融合成一个分数,作为你这篇笔记排序的依据。

重排

但此时的结果还存在一些不足,需要做一些调整。这一步叫做重排,重排主要是考虑多样性,要根据多样性做随机抽样,从几百篇笔记中选出几十篇,然后还要用规则把内容相似的笔记打散。重排的结果就是最终展示给用户的物品,比如把前80的物品展示给用户,其中包括笔记和广告。

重排最重要的功能是多样性抽样。需要从几百篇笔记中选出几十篇笔记,常见的方法有MMR和DPP,抽样的时候有两个依据,一个依据是精排分数的大小,另一个依据是多样性。做完抽样之后,会用规则打散相似内容。我们不能把内容过于相似的笔记排在相邻的位置上。举个例子,根据精排得到的分数,排前五的笔记全都是NBA的内容,这样就不太合适。即使用户是个篮球迷,他也未必希望看到同质化的内容。如果排第一的是NBA的笔记,那么接下来几个位置就不能放NBA的内容,相似的笔记会往后挪。重排的另一个目的是插入广告和运营,推广的内容还要根据生态的要求调整排序,比如不能连接出很多美女图片。



应统联盟


连接十万名应统专业同学


阿药算法


打通算法面试任督二脉