机器学习(ML)(十六) — 推荐系统探析
重排 - 多样性算法(DPP)
行列式点过程(determinantal point process, DPP
)是一种概率模型,最早引入于量子物理学中,用于描述费米子系统的分布。DPP
的核心思想是能够有效地从一个全集中抽取出具有高相关性和多样性的子集,广泛应用于推荐系统、机器学习等领域,DPP
是目前推荐系统重排多样性公认最好的多样性算法。
在2
维空间中,超平行体就是平行四边形。如下图所示,向量[0,1]
,举例这里有一个平行四边形中的点1
。

3维空间的超平行体为平行六面体。如下图所示,向量3
条边,它们唯一确定了一个平行六面体,平行六面体中的点都可以表示为:[0,1]
。

超平行体:一组向量0
)。
平行四边形的面积:

平行六面体的体积:1
,当3
个向量正交时,平行六面体是正方体,此时的体积最大,

这里给定1
,之前说过向量最好用CLIP
学习出的图文内容表征,这些向量都是0~1
之间。如果向量

精排给
行列式点过程(determinantal point process, DPP
)是一种传统的统计机器学习方法:DPP
要求从Hulu
的论文Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity
将DPP
应用在推荐系统,记作:DPP
的公式可以等价于写成:DPP
是个组合优化问题,要求从集合DPP
是不可能的,因为DPP
是一个NP-hard
问题,用集合
求解DPP
的方法:
- 贪心算法求解:
,从集合 中选出一个物品,对于集合 中所有的物品 需要计算这样的行列式( ),算法的难点就在于计算行列式,简单粗暴计算行列式,则计算量非常大。对于单个物品 ,计算 的时间复杂度为 。想要求解上边的公式,需要对集合 中所有物品 求行列式,因此计算行列式的时间复杂度为 ,我们想要从 个物品中选出 个物品,所以要重复求解上面的公式 次,如果暴力计算行列式,那么总的时间复杂度为: ,暴力算法的总时间复杂度为: 。 是计算矩阵 的时间, 是计算行列式的时间。 的量级是几百, 的量级都是几十。系统留给算法的时间也就是 10
毫秒左右,这个算法他慢了。 Hulu
的快速算法:Hulu
的论文设计了一种数值算法,仅需的时间从 个物品中选出 个物品。给定向量 ,需要 计算矩阵 ,因为算法运行过程中,需要不断用到 的子矩阵,还需要 的时间计算所有行列式(利用了 Cholesky
分解)。Hulu
的算法比暴力算法快。矩阵的Cholesky
分解:给定一个对称的矩阵,可以把它分解为 ,其中的 是一个下三角矩阵(对角线以上的元素全都等于 0
),有了Cholesky
分解就可以计算矩阵的行列式,下三角矩阵 的行列式 等于 对角线元素乘积。矩阵 的行列式等于 。基本思想是这样的:已知矩阵 的 Cholesky
分解,给添加一行或者一列不需要重新计算 Cholesky
分解,否则代价很大,给添加一行或者一列, Cholesky
分解的变化非常小,有办法快速算出变化的地方,这样就不用完整算一遍Cholesky
分解,那么就可以快速算出所有的 Cholesky
分解,因此就可以快速算出所有的行列式,这样时间复杂度就很低。
物品冷启动 - 评价指标
什么是物品冷启动?例如小红书上用户新发布的笔记、B
站或YouTube
上用户新上传的视频、今日头条上作者新发布的文章,这些都属于物品冷启动。这里只考虑UGC
(User-Generated Content
)的冷启,内容都是用户自己上传的。与UGC
相对应的PGC
(Plant-Generated Content
),主要内容是像腾讯视频、爱奇艺平台采购的,UGC
比PGC
的冷启更难,这是因为用户自己上传的内容良莠不齐,而且量很大,很难用人工去评判,很难让运营人员去做流量调控。
新物品冷启动:新物品缺少与用户的交互,很难根据用户的行为做推荐,这会导致推荐的难度大、效果差。如果用正常的推荐链路,新物品很难得到曝光。即使得到曝光,效果也不好,消费指标也会很差。特殊对待新物品的另一个原因是促进发布,大量的实验表明,扶持新发布、低曝光的物品,可以增强作者的发布意愿。出现首次曝光的交互越快,有利于作者的积极性,新物品获得的曝光越多,也有利于作者的积极性。
优化冷启的目标:
- 精准推荐:把新物品推荐给合适的用户,不引起用户的反感。
- 激励发布:流量向新物品低曝光倾斜,激励作者发布,丰富内容池。
- 挖掘高潜:通过初期小流量的试探,找到高质量的物品,给与流量倾斜。
冷启动评价指标:作者侧指标:发布渗透率(penetration rate
)、人均发布量;用户侧指标:新物品的点击率、交互率、消费时长、日活、月活;内容侧指标:高热物品占比。penetration rate
)、人均发布量这两个指标反映出了作者的发布积极性。物品冷启动的优化包括:优化全链路(包括召回和排序);流量调控(流量怎样在新物品、老物品中分配)。
物品冷启动 - 简单召回通道
物品召回的依据包括:自带文字、图片、地点,算法或人工标注的标签,用户点击、点赞等信息,但是新物品缺少用户点击、点赞等信息。用户对物品的点击、点赞等统计数据可以反映出物品的质量,以及什么样的用户会喜欢这个物品,这对精准推荐的帮助会很大。可惜新物品没有这些信息,而且ItemCF、UserCF
需要知道之类的召回通道需要知道物品跟哪些用户有些交互。如果一个物品还没有跟用户交互,就走不了ItemCF
这种召回通道,物品冷启动缺少的另外一个关键信息是物品ID Embedding
,召回和排序模型都有Embedding
层,把每个物品ID
映射到一个向量,这个向量是从用户跟物品的交互行为中学习出来的,物品冷启的时候这个向量是刚刚初始化的,还没有用反向传播更新,也就是说,新物品的ID Embedding
啥都不是,反映不出物品的特点,缺少这个特征会是召回和排序很不准。
冷启动改造双塔模型:物品ID是物品塔中最重要的特征,每个物品都有一个ID Embedding
向量,需要从用户和物品的交互中学习,可是新物品还没有跟用户交互过,所以它的ID Embedding
向量还没有背学好,如果用双塔模型直接做新物品的召回,效果会不太好。介绍一下,改造ID Embedding
的2
种方案:
- 方案一:新物品使用
default embedding
,也就是说,物品塔做ID Embedding
的时候,让所有新物品共享一个ID
,而不是用自己真正的ID
。新物品发布之后,到下次模型训练的时候,新物品才具有自己ID Embedding
向量。 - 方案二:利用相似物品的
ID Embedding
向量,当新物品发布之后,查找Top-K
内容最相似(图片、文字)的高爆物品,把个高爆物品的 ID Embedding
向量取平均,作为新物品的ID Embedding
。之所以选择高曝光的物品,通常是因为高曝光的物品的ID Embedding
通常学的比较好。
在实践中,通常会用多个向量召回池,用多个召回池可以让新物品有更多的曝光机会,所有这些召回池会共享一个双塔模型,那么多个召回池不增加训练模型的代价。基于类目的召回通道:一般推荐系统会维护一份从类目->物品的索引,索引上的key是类目,比如美食、旅游、摄影等。每个类目后边是一个物品的列表,按发布时间倒排,最新发布的物品排在最前面。系统要维护这样一个类目索引,系统用类目索引做召回:用户画像-> 类目-> 物品列表。取回物品列表上前
物品冷启动 - 聚类召回
聚类召回的思想:如果用户喜欢一个物品,那么他会喜欢内容相似的物品。事先训练一个神经网络,基于物品的类目和图文内容,把物品映射到向量,向量的相似度就是物品内容的相似度。对物品向量做聚类,划分为1000
个cluster
,记录每个cluster
的中心方向(k-means
聚类,用余弦相似度)。聚类召回通道有一个索引,当新物品发布的时候,新物品就会上聚类索引,当一个物品发布之后,用神经网络把它映射到特征向量,然后把这个向量跟1000
个向量(对应1000
个cluster
)做比较,找到最相似的向量,作为新物品的cluster
。到这一步,新物品绑定了一个cluster
,把新物品的ID
添加到聚合索引上,聚合索引是:cluster
-> 物品ID
列表(按发布时间倒排),最新的物品排在最前面。有了索引,就可以在线上做召回,当用户发起推荐请求,系统就会根据的他的ID,找到他的last-n
交互的物品列表,把这些物品作为种子物品,去召回相似的物品。用神经网络把每个种子物品映射到向量,然后跟1000
个中心向量作比较。寻找最相似的cluster
(知道了用户对哪些cluster
感兴趣),最后从每个cluster
的物品列表中,取回最新的
聚类召回需要调用一个神经网络,把物品图文内容映射到一个向量,如果两个物品的内容比较相似,那么两个物品的向量具有较大的余弦相似度,训练方式与三塔模型相似,把正样本物品、种子物品、负样本物品输入3个神经网络,神经网络包含CNN
+ BERT
+ 全连接层,这3
个神经网络的参数是相同的,神经网络分别输出3
个向量,记作Triplet Hinge Loss
:Triplet Hinge Loss
会鼓励种子物品与正样本物品的相似度尽量大,种子物品与负样本物品的相似度尽量小。这是Triplet Logistics Loss
:ItemCF
的物品相似度选择正样本。负样本物品选取:从全体物品中随机选出满足条件的就可以了。聚类召回模型的训练,如下图所示:

物品冷启动 - Look-Alike 召回
Look-Alike
是互联网广告中常用的一种方法,这种方法也可以应用在推荐系统中,特别是召回低曝光笔记。假设有一个广告主向精准的给100
万受众用户投放广告,假设广告主是特斯拉,他们知道特斯拉Model 3
的典型用户是这样的:年龄在25~35
岁,都是年轻人、受过良好教育,学历至少是本科、特斯拉车主大多关注科技数码,而且普遍喜欢苹果电子科技产品。把符合全部条件的用户圈出来,重点在这个人群中投放广告。满足所有条件的受众被称为种子用户,这样的用户数量不会很多,可能有几万人。但是潜在的符合条件的用户会很多,但是缺少他们的部分信息,很难找到他们。比方说多数的用户不填写自己的学历和年龄,广告主想给100
万用户投放广告,现在才圈出几万人,那么如何发现潜在的100
万用户呢?这就用到了Look-Alike
人群扩散,寻找跟种子用户相似的用户,把找到的用户称为Look-Alike
用户。通过这种方式可以利用几万个种子用户找到几十万个Look-Alike
用户。那么如何定义两个用户的相似度?例如UserCF
,以两个用户的共同兴趣点来衡量两个用户的相似度,若两个用户同时对相同的物品感兴趣,说明两个用户的相似度比较大。还有一种方法,使用两个用户的ID Embedding
向量,如果两个用户相似,那么两个用户ID Embedding
向量夹角的余弦值就比较大。如果用户有点击、点赞、收藏和转发的行为,说明用户对物品可能感兴趣。把有交互(点击、点赞、收藏和转发)的用户做为新物品的种子用户,如果一个用户跟种子用户相似,那么他也可能对这个新物品感兴趣,可以把新物品推荐给他。这种方法就叫做Look-Alike
人群扩散。根据种子用户找出兴趣相似的更多用户,把新物品从种子用户扩散到Look-Alike
用户。
Look-Alike
召回:当发布一个新物品,系统会把新物品推荐给很多用户,少数用户会对物品感兴趣,会点击、点赞、收藏和转发。把这些用户称作种子用户,系统对新物品的推荐通常不太准,有交互行为的用户数量比较少,一旦有交互行为,就要充分利用好它,让推荐变得更准。取回每个种子用户的Embedding
向量,可以复用双塔模型取到的用户向量,然后取这些用户向量的均值,得到另一个向量,把得到的这个向量作为新物品的表征。这个向量是要做近线更新的。近线的意思是不用实时更新,能做到分钟级的更新就可以了。
物品冷启动 - 流量调控
为什么要给新物品流量倾斜呢?复制新物品主要有两个目的:1、促进发布,增大内容池;2、挖掘出优质物品。流量调控:流量怎样在新、老物品之间分配。流量调控技术包括:
- 在推荐结果中强插新物品。
- 对新物品的排序分数做提权(
boost
),干涉粗排、重排环节,给新物品提权,缺点:曝光量对提权系数很敏感,很难精确控制曝光量,容易过度曝光和不充分曝光。 - 通过提权,对新物品做保量,对一个新物品,不论物品的质量高低,保证24小时获得
100
次曝光,在原有提权系数的基础上,再乘以额外的提权系数,动态提权保量:,缺点:保量的成功率远低于 100%
。 - 差异化保量,不同的物品有不同的保量目标,根据物品的内容质量、作者质量来决定保量目标。
物品冷启动 - AB测试
我们要做新物品冷启动,既要看作者侧指标,也要看用户侧指标和发布侧指标(发布渗透率、人均发布量),这些指标可以反映出作者的发布意愿。如果冷启动做得好,可以激励作者,让渗透率和发布量增长。用AB
测试考察发布侧指标是困难的。AB
测试还要考察用户侧指标(新物品的点击率、交互率),如果冷启动的推荐做的越精准,用户对推荐的新物品越感兴趣,那么新物品的点击率和交互率也就越高。除此之外,还要看大盘的消费指标(消费时长、日活、月活)。标准的AB
测试,通常只做用户侧指标,实验比较好做,而冷启的AB
测试要测试很多指标。推荐系统标准的AB
测试,把用户随机分成两组:实验组和对照组,给实验组用户做推荐,从全量的物品池中选出最合适的物品,当实验组用户发起推荐请求之后,会用新的策略。给对照组用户做推荐,也是从全量的物品池中选取合适的物品,如果一个用户是对照组的,给他做推荐的时候,用旧的策略,在实验的过程中对比两组用户的用户侧指标的差异。比如考察用户消费推荐内容的时长,发现实验组比对照组高了1%
,冷启的AB
测试,要测两类指标,一类是用户侧的消费指标,另一类是作者侧的发布指标。先来看用户侧实验,比如考察策略对新物品点击率的影响、用户消费时长的影响,但这种AB
测试的设计有不足之处,这样做的缺点:这样实验组的用户可以看到更多的新物品,消费指标变差。对照组的用户看到的新物品更少,消费指标会变好。这就导致两组观测到的差异很大,但推全之后,但消费指标并没有太大的的跌幅。作者侧的实验:方案一是将新物品分成实验组和对照组,实验组使用新策略,对照组使用旧策略。老物品使用的是自然分发,不受新旧策略的影响。从全量的老物品中选出用户最喜欢的推荐给用户,实验组和对照组的新物品有机会触达全体用户。缺点是新物品之间会抢流量,新、老物品之间会抢流量。方案二是用户侧被分成了两组:实验组和对照组,实验组的用户只能看到实验组的新物品,对照组的用户只能看到对照组的新物品。这样做的目的是避免两组之间抢流量,因此方案二比方案一更可信。方案二的缺点是物品池减少了,用户可能看不到最合适的物品,影响大盘指标。做新物品冷启动至少有两个目标:激励作者发布和增进用户满意度。
评价指标优化 - 概述
对于常见的推荐系统来说日活用户数(DAU
)和留存是最核心的指标。目前工业界常用LT7
和LT30
来衡量留存,假设某个用户今天登录了APP
,未来7
天(4
天登录了APP
,那么该用户今天(LT7
等于4
。显然有LT
,LT
的增长通常意味着用户体验的提升(除非LT
增长且DAU
下降)。还有用户使用的时长、总阅读数(即总点击数)、总曝光数。这些指标的重要性低于日活用户数(DAU
)和留存,用户使用时长增长,LT
也会增长;用户使用时长增长,阅读数、曝光数可能会下降。
评价指标优化 - 召回
推荐系统有几十条召回通道,它们的召回总量是固定的(例如5000
),总量越大,指标越好,粗排计算量也越大。双塔模型和Item-To-Item
是最重要的两类召回模型,占据召回的大部分配额。还有很多小众的模型,它们占据的配额都比较少,在召回总量不变的前提下,添加某些召回模型可以提升核心指标。可以有很多内容池,同一个模型可以用于多个内容池,得到多个召回通道。
改进召回的模型包括双塔模型、Item-To-Item
、其它模型:
- 双塔模型:1、优化正、负样本,简单正样本:有点击的(用户,物品)二元组;简单负样本:随机组合的(用户,物品)二元组;困难负样本:排序靠后的(用户,物品)二元组。2、改进神经网络结构,双塔模型有用户塔和物品塔两个神经网络(全连接网络),它们分别把用户特征、物品特征作为输入,各自输出一个向量作为用户、物品的表征。可以用更高级的神经网络代替全连接网络。在用户塔中使用用户行为序列(
last-n
)也可以让双塔模型的效果更好。标准的双塔模型也叫但向量模型,两个塔各输出一个向量,根据向量相似度做分类,能够让模型区分正、负样本。这里使用多向量代替单向量模型,物品塔跟单向量模型没有区别,物品塔只输出一个向量作为物品的表征,这里的用户塔输出很多个向量,用户塔输出的每一个向量都和物品塔输出的向量形状相同,可以计算它们的内积或者余弦相似度,用这两个向量的相似度来最为一个目标(点击率、点赞率、收藏率、转发率)的预估。如果要预估10
个目标,那么用户塔要输出10
个向量,但是物品塔只输出一个向量,用户塔的10
个向量分别跟物品塔的一个向量去计算相似度,作为对10
个目标的预估。3、改进模型的训练方法,训练双塔模型最基本的方法是二分类,让模型学会区分正样本和负样本,训练的方法可以进一步改进,结合二分类、batch
内负采样(需要做纠偏)。使用自监督学习,让冷门物品的embedding
学得更好。 Item-To-Item
模型:是一大类模型的总称,基于相似物品做召回,常见的用法是U2I2I
(user-> item -> item
),假设用户喜欢物品 (用户历史上交互过的物品),寻找 的相似物品 ,即 I2I
。最后将推荐给用户 。计算物品的相似度有两种方法:1、基于用户兴趣的相似度来计算(ItemCF及其变体);2、基于物品的向量表征,计算向量的相似度(双塔模型、图神经网络计算物品的向量特征)。 - 其它模型:
U2UI
(user -> user -> item
)模型,已知用户和 相似,且 喜欢物品 ,那么给用户 推荐物品 。 U2A2I
(user -> author -> item
)模型,已知用户喜欢作者 ,且 发布物品 ,那么给用户 推荐物品 。 U2A2A2I
(user -> author -> author -> item
)模型,已知用户喜欢作者 ,且 与 相似, 发布物品 ,那么给用户 推荐物品 。还有一些小众的召回模型,比如 PDN
、Deep Retrieval
、SINE
、M2GRL
等模型。
在召回总量不变的前提下,仔细调整各召回通道的配额,可以提高核心指标(可以让各用户群体用不同的配额)。
评价指标优化 - 排序
推荐系统的精排模型,如下图所示,最下面是模型的输入,分为离散特征和连续特征,把离散特征输入到神经网络,神经网络用embedding
层把离散特征映射成数值向量,把得到的数值向量全都拼接起来得到一个几千维的向量,再经过几个全连接层得到上面的绿色向量,大小是几百维。连续特征输入到另一个全连接网络,全连接网络的输出是上面蓝色的向量。把绿色和蓝色的向量做concatenation
,作为更上层网络的输入,下面这两个神经网络叫做基座,把原始特征映射到数值向量,绿色和蓝色的向量做concatenation
之后,同时输入到多个全连接网络,这些全连接网络通常只有2
层,这些神将网络的输出都是介于0~1
之间的数值,作为各种目标的预估(不如预估点击率、预估点赞率、预估收藏率、预估转发率)。精排模型的基座和上面的多目标预估都有可以改进的点。
- 基座:基座的输入包括离散特征和连续特征,基座的输出是一个向量,也就是绿色和蓝色的向量做
concatenation
,这个向量作为多目标预估的输入。基座改进方法:1、基座加宽加深、计算量更大,预测更准确。2、做自动的特征交叉,比如bilinear
、LHUC
等。3、特征工程,比如添加统计特征、多模态内容特征。 - 多目标预估:基于基座输出的向量,同时预估点击率等多个目标。多目标预估改进:1、增加新的预估目标,并把预估结果加入融合公式。2、使用
MMoE、PLE
等结构可能有效,也可能无效。3、纠正position bias
可能有效,也可能无效。
粗排模型的打分量比精排大10
倍,因此粗排模型必须计算够快。粗排模型可以使用多向量双塔模型,同事预估点击率等多个目标,也可以使用更复杂一些的模型,比如三塔模型效果好,但工程实现难度较大。除了改进粗排的模型结构,还可以粗精排一致性建模来提升指标。原理是蒸馏精排模型训练粗排模型,让粗排和精排的分数趋于一致。1、pointwise
蒸馏,设pairwise
、listwise
蒸馏,给定learning to rank(LTR)
训练粗排模型,让粗排拟合物品的序(而非值),粗精排一致性建模可以提升核心指标。
改进用户行为序列建模:1、增加序列长度,这样让预测更准确,但是会增加计算成本和推理时间,具体难点还是在于工程架构。2、筛选的方法,目的是降低序列长度,比如用类目、物品向量表征聚类。例如离线用多模态神经网络提取物品内容特征,将物品表征维向量;离线将物品向量聚为1000
类,每个物品有一个聚类序号。聚类通常用层次聚类,在线上做排序的时候,用户行为序列中有70
,对70
的物品,这样做筛选,只有几千个物品被保留了下来。线上同时有好几种方法在筛选,取筛选结果的并集。可能还需要作进一步筛选,让物品数量再降低一个数量级,然后再输入到注意力层。3、对用户行为序列中的物品,使用ID
以外的一些特征。
现在使用用户行为序列建模都是沿着SIM
的方向在发展,让原始的序列尽量长,然后做筛选降低序列长度,最后将筛选结果输入DIN
,对物品向量做加权平均。
线上有1
个是holdout
,1
个是推全的模型,
老汤模型的产生?用每天新产生的数据对模型做1 epoch
训练。久而久之,老模型训练的非常好,很难被超过。对模型做改进之后,重新训练,很难追上老模型。这样会产生一些问题:如何快速判断新模型结构是否优于老模型?如何更快追平、超过线上的老模型?对于新、老模型结构,都随机初始化模型全连接层,Embedding
层可以是随机初始化的,也可以是复用老模型训练好的参数。这样处理全连接层和Embedding
层,新、老模型的区别只是模型结构而已,老模型并没有训练更久的优势,新、老模型可以公平对比。用Embedding
层,避免随机初始化Embedding
层(Embedding
层是对用户、物品特点的“记忆”,比全连接层学得慢)。用老模型做teacher
,蒸馏新模型(用户真实行为
评价指标优化 - 多样性
提升推荐系统的多样性包括:提升排序的多样性、召回的多样性、兴趣探索。排序的多样性分为精排、粗排多样性。
- 精排阶段:要结合兴趣分数和多样性分数对物品
排序,物品 的兴趣分数,记作 ,它是对点击率等多个目标的融合。物品 的多样性分数,记作 ,即物品 与已经选中物品的差异。把兴趣分数 与多样性分数 相加,根据这个加和( )对物品做排序。这个排序决定了用户最终看到的结果,推荐系统通常使用 MMR
、DPP
等方法计算多样性分数,计算多样性的时候,精排使用滑动窗口,粗排不使用滑动窗口。精排决定最终的曝光,曝光页面上邻近的物品相似度应该小,所以计算精排多样性需要使用滑动窗口;粗排要考虑整体的多样性,而非一个滑动窗口内的多样性,所以粗排不使用滑动窗口。除了多样性分数,精排还使用打散策略来增加多样性,以类目为例,当前选中的物品,之后的 5
个位置不允许跟的二级类目相同。 - 粗排阶段:粗排给
5000
个物品打分,选出500
个物品送入精排,提升粗排、精排多样性都可以提升推荐系统核心指标,先根据粗排模型预估的分数,对 5000
个物品排序,选出分数最高的200
个物品送入精排,然后对每个物品计算兴趣分数 和多样性分数 ,表示物品 与 200
个物品的差异,差异越大,多样性分数就越大,结合兴趣分数和多样性分数,对剩余 4800
个物品做排序,选出分数最高的300
个物品进入精排。这300
个物品即是用户感兴趣的,也是与已经选中的200
个物品有较大的差异,保证了多样性。 - 召回阶段:双塔模型中,用户塔将用户特征作为输入,输出用户的向量表征;然后做
ANN
检索,召回向量相似度高的物品。在线上做召回的时候(在计算出用户向量之后,在做ANN
检索之前),往用户向量中添加随机噪声。用户的兴趣越窄,就越需要提升多样性,添加的噪声也就越强。往用户向量中添加噪声,会让召回变得不准,单添加噪声提升了多样线,并提升了推荐系统的核心指标。用户最近交互过的个物品(用户行为序列)是用户塔的输入,保留最近的 个物品( ),从剩余的 个物品随机抽样 个物品( )。可以均匀抽样,也可以用非均匀抽样让类目平衡。将得到的 个物品作为用户行为序列,而不是用全部 个物品。抽样用户行为序列,注入了随机性,召回结果更加多样化;这样 可以非常大,能够捕捉到用户很久之前的兴趣。 - 兴趣探索:保留少部分的流量(流量的
1%
)给非个性化的推荐。
评价指标优化 - 特殊人群
为什么要特殊对待特殊人群?因为新用户、低活用户的行为很少,个性化推荐不准确;新用户、低活用户容易流失,要想办法促使他们留存。特殊用户的行为不同于主流用户,基于全体用户行为训练出的模型在特殊用户人群上有偏。针对特殊人群涨指标的方法包括:
- 构造特殊内容池,用于特殊用户人群的召回。构造内容池的方法:1、根据物品获得的交互次数、交互率选择优质物品;2、做因果推断,判断物品对人群留存率的贡献,根据贡献值选择物品。通常使用双塔模型从特殊内容池中做召回。
- 使用特殊的排序策略,保护特殊用户。排序策略包括:1、排除低质量物品;2、差异化融分公式。
- 使用特殊的排序模型,消除模型预估的偏差。差异化的排序模型包括:1、大模型 + 小模型;2、融合多个
experts
,类似于MMoE
;3、大模型预估之后,使用小模型做校准。
评价指标优化 - 交互行为
交互行为包括:点击、点赞、收藏、转发、关注、评论…,主要是将模型预估的交互率进行排序,模型将交互行为当做预估的目标,输出介于0~1
之间的数值。将预估的点击率、交互率做融合作为排序的依据。对于一位用户,他关注的作者越多,平台对他的吸引力也就越强。把用户的留存率(
UGC
平台将作者发布量、发布率作为核心指标,希望作者多发布。作者发布的物品被平台推送给用户,会产生点赞、评论、关注等交互,交互可以提升作者发布的积极性。作者的粉丝数量越少,则每增加一个粉丝对发布积极性的提升越大。用排序策略帮助低粉新作者涨粉。某作者
显示关注关系:用户U2A2I
召回,可以提升推荐系统的核心指标。
- 关注:留存价值(让新用户关注更多作者,提升新用户留存);发布价值(帮助新作者获得更多粉丝,提升作者的发布积极性);利用隐式关注关系做召回。
- 转发:判断哪些用户是站外
KOL
,利用他们转发的价值,吸引站外的流量。 - 评论:发布价值(促使新物品获得评论,提升作者发布积极性);留存价值(给喜欢讨论的用户创造更多留评论的机会);鼓励高质量评论的用户多留评论。