推荐系统 推荐算法 排序

推荐系统

推荐系统 推荐算法 (小红书为例) 笔记 1

推荐系统 推荐算法 (小红书为例) 笔记 2

推荐一篇文章:推荐系统中的排序学习-卢明冬


标题结构

一、二、三、四、…

1、2、3、4、…

(1) (2) (3) (4)、…

黑体字


一、多目标模型

1、排序的依据

  • 排序模型预估点击率、点赞率、收藏率、 转发率等多种分数。
  • 融合这些预估分数。(比如加权和。)
  • 根据融合的分数做排序、截断。

2、多目标模型

需得到分数的预估值:(精排模型)

推荐系统 推荐算法 排序_第1张图片

(1) 训练:

  • 总的损失函数:在这里插入图片描述

  • 对损失函数求梯度,做梯度下降更新参数。

推荐系统 推荐算法 排序_第2张图片

每一个任务都是二元分类,使用交叉熵损失函数,p1越接近y1,损失函数就越小。

αi是根据实际情况调节的。

(2) 样本选择

  • 困难:类别不平衡

    • 每100次曝光,约有10次点击、90次无点击

    • 每100次点击,约有10次收藏、90次无收藏

  • 解决⽅案:负样本降采样(down-sampling)

    • 保留⼀⼩部分负样本。

    • 让正负样本数量平衡,节约计算

3、 预估值校准

  • 正样本、负样本数量为 n+n-
  • 对负样本做降采样,抛弃⼀部分负样本(让正负样本的差距不太悬殊)
  • 使⽤ α·n- 个负样本,α ∈ (0, 1) 是采样率 (用来减少负样本数量)
  • 由于负样本变少,预估点击率⼤于真实点击率

真实点击率:
在这里插入图片描述

预估点击率:
在这里插入图片描述

由上面的公式可以得到校准公式:

推荐系统 推荐算法 排序_第3张图片

二、 Multi-gate Mixture-of-Experts (MMoE)

将特征向量输入到三个神经网络,三个神经网络参数不同。
将特征向量输入到另外一个神经网络,在之后加一个softmax激活函数,输出一个三维向量。
其中piqi都是权重,用于之后的加权平均。

推荐系统 推荐算法 排序_第4张图片

下面是更上层:

用加权平均去评估某个业务指标

推荐系统 推荐算法 排序_第5张图片

1、极化现象

softmax激活函数会发生极化。

极化: Softmax输出值⼀个接近1,其余接近0 。例如<0,0,1><0,1,0>。那就以为这第一个专家神经网络dead。

解决极化现象:

在训练时,对 softmax 的输出使⽤ dropout

  • Softmax 输出的 n个数值被 mask 的概率都是 10%
  • 每个“专家”被随机丢弃的概率都是 10%

三、预估分数的融合

p_click,p_like,p_collect,p_time 为点击,点赞,收藏,预估短视频观看时长的概率。

1、 简单的加权和

在这里插入图片描述

2、 点击率乘以其他项的加权和

推荐系统 推荐算法 排序_第6张图片

p_clickp_like的乘积是有意义的。

3、国外某App的融分公式

在这里插入图片描述

超参数α1α2需要手动调

4、国内某App的融分公式

  • 根据预估时长p_time,对n篇候选视频做排序

  • 如果某视频排名第r_time,则它得分:推荐系统 推荐算法 排序_第7张图片

  • 对点击、点赞、转发、评论等预估分数做类似处理

  • 最终融合分数:推荐系统 推荐算法 排序_第8张图片

5、某电商的融分公式

  • 电商的转化流程 : 曝光—>点击—>加购物车(p_cart)—>付款
  • 模型预估: p_click、p_cart、p_pay
  • 最终融合分数:在这里插入图片描述

四:视频播放建模

视频排序的依据还有播放时长和完播

  • 每个全连接层表示一个目标(比如点赞率等),最右边对应播放时长,做SIGMOD变换得到p
  • y是自己定义的,t表示用户实际观看时长。
  • 用交叉熵作为损失函数,最小化交叉熵会让p接近y。
  • 如果 p = y,那么 exp(z) = t。那么可以用exp(z)作为播放时长的预估
    推荐系统 推荐算法 排序_第9张图片

1、视频播放时长建模

  • 把最后⼀个全连接层的输出记作 z。设 p=sigmoid(z) 。(z是个实数,可以是正数,可以是负数)

  • 实际观测的播放时长记作 t。(如果没有点击,则 t = 0)(t被记录在训练数据中)

  • 做训练:最⼩化交叉熵损失 :
    推荐系统 推荐算法 排序_第10张图片

  • 做推理:把 exp (z)作为播放时长的预估

  • exp (z)作为融分公式中的⼀项 (会影响到视频的排序)

2、视频完播(预估)

(1) 回归方法

  • 例:视频长度10分钟,实际播放 4 分钟,则实际播放 率为 y=0.4
  • 让预估播放率 p 拟合 y:(y基于0到1之间)
    在这里插入图片描述
  • 线上预估完播率,模型输出 p = 0.73,意思是预计播放 73% 。(反映出用户的兴趣)

(2) 二元分类方法

  • 定义完播指标,⽐如完播80% 。(自义定时长)
  • 例:视频长度10分钟,播放>8分钟作为正样本,播放 <8分钟作为负样本。
  • 做⼆元分类训练模型:播放>80% vs 播放<80%
  • 线上预估完播率,模型输出 p = 0.73,意思是 ℙ(播放 > 80%) = 0.73 (完播概率为0.73)

对于时间很短的视频,完播率很高,反之比较低。(横坐标表示视频时长,纵坐标表示完播率)
用函数f来拟合万博率,需要对完播率进行调整。
推荐系统 推荐算法 排序_第11张图片

  • 线上预估完播率,然后做调整:在这里插入图片描述

  • p_finish作为融分公式中的⼀项

五、排序模型的特征

排序需要用到的特征:

  1. ⽤户画像特征。
  2. 笔记画像特征。
  3. ⽤户统计特征。
  4. 笔记统计特征。
  5. 场景特征。

1、用户画像

  • ⽤户 ID (在召回、排序中做 embedding)
  • ⼈⼝统计学属性:性别、年龄
  • 账号信息:新⽼、活跃度
  • 感兴趣的类⽬、关键词、品牌

模型需要为新老,活跃不活跃的用户做优化。

2、物品画像

  • 物品 ID(在召回、排序中做 embedding)
  • 发布时间(或者年龄)
  • GeoHash(经纬度编码),所在城市
  • 标题、类⽬、关键词、品牌······
  • 字数、图⽚数、视频清晰度、标签数······(反映笔记质量,与笔记的点击量相关)
  • 内容信息量、图⽚美学······(算法打分,是先用人工标注的数据训练CV和NLP模型,当新笔记发布时,使用模型进行打分)

3、用户统计特征

  • ⽤户最近30天(7天、1天、1⼩时)的曝光数、点击数、 点赞数、收藏数……
  • 按照笔记图⽂/视频分桶。(⽐如最近7天,该⽤户对图 ⽂笔记的点击率、对视频笔记的点击率。)
  • 按照笔记类⽬分桶。(⽐如最近30天,⽤户对美妆笔记 的点击率、对美⾷笔记的点击率、对科技数码笔记的点击率。)

30天指标很好,但是最近的指标很差,可能是笔记过时了。

4、笔记统计特征

  • 笔记最近30天(7天、1天、1⼩时)的曝光数、点击数、 点赞数、收藏数……
  • 按照⽤户性别分桶、按照⽤户年龄分桶……
  • 作者特征:
    • 发布笔记数
    • 粉丝数
    • 消费指标(曝光数、点击数、点赞数、收藏数)

5、场景特征(Context)

  • ⽤户定位 GeoHash(经纬度编码)、城市。(用户对附近发生的事感兴趣)
  • 当前时刻(分段,做 embedding)。(去上班的路上,上班划水的时候,还有下班想看的东西都不一样)
  • 是否是周末、是否是节假⽇。
  • ⼿机品牌、⼿机型号、操作系统。 (安卓和苹果用户之间的差异特别大)

6、 特征处理

  • 离散特征:做 embedding。
    • ⽤户ID、笔记ID、作者ID。
    • 类⽬、关键词、城市、⼿机品牌。
  • 连续特征:做分桶,变成离散特征。
    • 年龄、笔记字数、视频长度。
  • 连续特征:其他变换。
    • 曝光数、点击数、点赞数等数值做 log(1+x) 。
    • 转化为点击率、点赞率等值,并做平滑。

7、 特征覆盖率

  • 很多特征无法覆盖 100% 样本。
    • 例:很多⽤户不填年龄,因此⽤户年龄特征的 覆盖率远⼩于 100%。
    • 例:很多⽤户设置隐私权限,APP 不能获得⽤ 户地理定位,因此场景特征有缺失。
  • 提⾼特征覆盖率,可以让精排模型更准。

需要考虑当特征缺失时,需要何种数据作为默认值。

8、数据服务

  1. 用户画像

  2. 物品画像

  3. 统计数据
    推荐系统 推荐算法 排序_第12张图片
    1 发送用户请求给主服务器,主服务器会将请求发给召回服务器。
    2 召回服务器有多条召回通道,将召回的结果做归并,将ID返回给主服务器。
    3 将三种数据传入排序服务器,其中物品ID是召回的结果,用户ID和场景特征是从用户请求中过去的,场景特征包含用户的时刻,用户的地点和手机型号等等。
    推荐系统 推荐算法 排序_第13张图片

  4. 用户画像数据库压力小,用户特征可以有很多的数据。相反,物品画像数据库压力十分大,数据应该尽量简洁尽量少。

  5. 用户画像一般不变,较为静态,其他请思考。

六、组排

1、粗排 VS 精排

推荐系统 推荐算法 排序_第14张图片

精排模型

  • 前期融合∶先对所有特征做concatenation ,再输入神经网络。
  • 线上推理代价大∶如果有n篇候选笔记﹐整个大模型要做n次推理。

双塔模型

  • 后期融合∶把用户、物品特征分别输入不同的神经网络,不对用户、物品特征做融合。

  • 线上计算量小

    • 用户塔只需要做一次线上推理,计算用户表征a。

    • 物品表征b事先储存在向量数据库中,物品塔在线上不做推理。

  • 预估准确性不如精排模型

2、粗排的三塔模型

交叉特征:用户特征与物品特征做交叉。
推荐系统 推荐算法 排序_第15张图片

介于前期融合和后期融合之间,前期融合就是把底层特征做Concatenation,而这里是将三个输出的向量做Concatenation。


模型下层:

推荐系统 推荐算法 排序_第16张图片

用户塔:可以很大很复杂,即使用户塔很大,推理很慢也无所谓,用户塔的计算对整个粗排的计算影响很小。
物品塔:好在物品特征相对稳定,可以将物品塔的输出结果缓存,每个一段时间进行一次刷新。基于此,物品几乎不用做推理,只有遇到新物品需要做推理。
交叉塔:需要足够小,计算够快。通常来说只有一层,宽度较小。

模型上层:

  • 有n个物品,模型上层需要做n次推理。
  • 粗排推理的大部分计算量在模型上层。

3、三塔模型的推理

  • 从多个数据源取特征∶

    • 1个用户的画像、统计特征

    • n个物品的画像、统计特征

  • 用户塔︰只做1次推理

  • 物品塔︰未命中缓存时需要做推理

  • 交叉塔∶必须做n次推理

  • 上层网络做n次推理,给n个物品打分。



视频地址

本文是在观看此系列视频做出的笔记,我觉得讲的超级好,干货满满。
很多内容都是ppt中的,图形也是ppt中的(为了偷懒直接复制上传了,所以会有水印),有少数文字描述是自己写上去的。

本文仅供学习参考

你可能感兴趣的:(推荐算法,算法,机器学习)