【学习笔记】推荐系统 (5.排序:多目标模型、MMoE、融合预估分数、视频播放建模)

网课:王树森 - 推荐系统公开课

5.1 多目标模型

5.1.1 用户-笔记的交互

点击率=点击次数/曝光次数

点赞率=点赞次数/点击次数

收藏率=收藏次数/点击次数

转发率=转发次数/点击次数

5.1.2 排序的依据

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

5.1.3 多目标模型

排序模型的输入是多种特征:

  • 用户特征:用户ID和用户画像;
  • 物品特征:物品ID、物品画像和作者信息;
  • 统计特征:用户统计特征(如给用户曝光了多少篇笔记,用户点击了多少篇,点赞了多少篇等)、物品统计特征(获得了多少次曝光机会,获得了多少次点击、点赞等);
  • 场景特征:随请求传入,包含用户所在的时间和地点等。

训练时,预估的 p 1 , ⋯   , p 4 p_1,\cdots,p_4 p1,⋯,p4的取值范围为 [ 0 , 1 ] [0,1] [0,1];目标的 y 1 , ⋯   , y 4 y_1,\cdots,y_4 y1,⋯,y4的取值范围为0或1(只有两种状态)。采用交叉熵损失进行训练,总损失函数为:
∑ i = 1 4 α i ⋅ CrossEntropy ( y 1 , p i ) \sum_{i=1}^4 \alpha_i\cdot\text{CrossEntropy}(y_1,p_i) i=1∑4αi⋅CrossEntropy(y1,pi)

其中权重 α \alpha α根据经验设置。

5.1.4 负样本过多问题

实际训练过程中,负样本数量很大,需要对负样本进行降采样:

  • 保留一小部分负样本;
  • 让正负样本数量平衡,节约计算。

5.1.5 预估值校准

由5.1.4节得知,对负样本进行了降采样,负样本变少,预估点击率会大于真实点击率。

  • 正样本、负样本数量为 n + n_+ n+和 n − n_- n−;
  • 使用 α ⋅ n − \alpha\cdot n_- α⋅n−个负样本, α ∈ ( 0 , 1 ) \alpha\in(0,1) α∈(0,1)是采样率。

真实点击率:
p true = n + n + + n − p_\text{true}=\frac{n_+}{n_++n_-} ptrue=n++n−n+

预估点击率:
p pred = n + n + + α ⋅ n − p_\text{pred}=\frac{n_+}{n_++\alpha\cdot n_-} ppred=n++α⋅n−n+

由上面两个式子推导得到:
p true = α ⋅ p pred ( 1 − p pred ) + α ⋅ p pred p_\text{true}=\frac{\alpha\cdot p_\text{pred}}{(1-p_\text{pred})+\alpha\cdot p_\text{pred}} ptrue=(1−ppred)+α⋅ppredα⋅ppred

5.2 Multi-gate Mixture-of-Experts (MMoE)

5.2.1 模型结构

5.2.1.1 下层结构

注:图中为了展示方便,放了3个专家神经网络,实践中通常尝试4个或8个。专家神经网络的数量是MMoE的一个超参数。

5.2.1.2 上层结构

注: p 1 , p 2 , p 3 p_1,p_2,p_3 p1,p2,p3和 q 1 , q 2 , q 3 q_1,q_2,q_3 q1,q2,q3是两组用于对 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3加权平均的权重。加权平均的权重的组数等于多目标模型的目标个数(如点击率、点赞率),详见5.2.1.2节。

5.2.2 极化现象

解决方法:

  • 如果有 n n n个专家,那么每个softmax的输入和输出都是 n n n维向量;
  • 训练时,对softmax的输出使用dropout,softmax输出的 n n n个数值被mask的概率都是10%,即每个专家被随机丢弃的概率都是10%;
  • dropout可以避免模型训练时过度依赖某个专家。

5.3 融合预估分数

5.3.1 简单的加权和

p click + w 1 p like + w 2 p collect + ⋯ p_\text{click}+w_1p_\text{like}+w_2p_\text{collect}+\cdots pclick+w1plike+w2pcollect+⋯

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

p click ⋅ ( 1 + w 1 p like + w 2 p collect + ⋯   ) p_\text{click}\cdot (1+w_1p_\text{like}+w_2p_\text{collect}+\cdots) pclick⋅(1+w1plike+w2pcollect+⋯)

思路:由于 p click p_\text{click} pclick=点击/曝光, p like p_\text{like} plike=点赞/点击,......

通过把点击率乘在外面,使得其他项的点击被消除,剩下了点赞/曝光。

5.4 视频播放建模

5.4.1 图文vs视频

图文笔记排序的主要依据:点击、点赞、收藏、转发、评论......

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

直接回归拟合播放时长效果不好。

5.4.2 视频播放时长建模

把最后一个全连接层的输出记作 z z z,设 p = sigmoid ( z ) p=\text{sigmoid}(z) p=sigmoid(z)。

实际观测的播放时长记作 t t t,如果用户没有点击视频,则 t = 0 t=0 t=0。

训练时,目标值为 y = t 1 + t y=\frac{t}{1+t} y=1+tt,输出值 z z z做sigmoid后为 p = exp ⁡ ( z ) 1 + exp ⁡ ( z ) p=\frac{\exp(z)}{1+\exp(z)} p=1+exp(z)exp(z),目标是让 p p p拟合 y y y,用交叉熵损失:
CE ( y , p ) = y ⋅ log ⁡ p + ( 1 − y ) ⋅ log ⁡ ( 1 − p ) \text{CE}(y,p)=y\cdot\log p+(1-y)\cdot\log(1-p) CE(y,p)=y⋅logp+(1−y)⋅log(1−p)

由于我们尝试用 p p p拟合 y y y,因此 exp ⁡ ( z ) \exp(z) exp(z)就是拟合的播放时长 t t t,将 exp ⁡ ( z ) \exp(z) exp(z)作为融合预估分数中的一项,从而影响视频的排序。

5.5 视频完播

5.5.1 回归方法

例:视频长度10分钟,实际播放4分钟,则实际播放率为 y = 0.4 y=0.4 y=0.4。

令预估播放率 p p p拟合 y y y,损失函数为:
L = y ⋅ log ⁡ p + ( 1 − y ) ⋅ log ⁡ ( 1 − p ) L=y\cdot \log p+(1-y)\cdot \log (1-p) L=y⋅logp+(1−y)⋅log(1−p)

线上预估完播率,模型输出 p = 0.73 p=0.73 p=0.73时,意思是预计完播73%。

5.5.2 二元分类方法

定义完播指标,比如完播80%,那么播放>80%的作为正样本,播放<80%的作为负样本,然后做二元分类模型。

线上预估完播率,模型输出 p = 0.73 p=0.73 p=0.73,意思是
P ( 播放>80% ) = 0.73 P(\text{播放>80\%})=0.73 P(播放>80%)=0.73

5.5.3 融合预估分数中的完播率

如图所示,视频越长完播率越低,因此不能直接把预估的完播率用到融分公式。

线上预估完播率后,做调整:
p finish = 预估完播率 f ( 视频长度 ) p_\text{finish}=\frac{\text{预估完播率}}{f(\text{视频长度})} pfinish=f(视频长度)预估完播率

预估完播率是通过用户、物品等很多信息预测出的一个完播率的估计值,而 f ( 视频长度 ) f(\text{视频长度}) f(视频长度)是一个只与视频长度有关的拟合函数。
p finish p_\text{finish} pfinish可以作为融分公式中的一项。

相关推荐
悠哉悠哉愿意2 小时前
【物联网学习笔记】中断
笔记·单片机·嵌入式硬件·物联网·学习
灿宝宝lo2 小时前
阿里云OSS视频自动转码的配置详细步骤
阿里云·云计算·音视频
snowfoootball2 小时前
优先队列/堆 题目讲解
学习·算法
weixin_468635292 小时前
Pandas 速查笔记
笔记·pandas
shangjian0072 小时前
AI-大语言模型LLM-LangChainV1.0学习笔记-OpenAI类和ChatOpenAI类
人工智能·学习·语言模型
yzx9910132 小时前
从单一到融合:机器学习、多模型学习与大语言模型的全面综述
学习·机器学习·语言模型
shangjian0072 小时前
AI-大语言模型LLM-LangChainV1.0学习笔记-模型不同调用方式的差异
人工智能·学习·语言模型
flyyyya2 小时前
【AI学习从零至壹】AI agent自动化工作流
人工智能·学习·自动化
2501_918126912 小时前
stm32是用杜邦线母头接核心板和调试器吗
stm32·单片机·嵌入式硬件·学习·个人开发