推荐算法排序模型

多目标建模、粗排优化与特征处理实践

📸 Posted by iStar on March 26, 2025

摘要:本文介绍推荐系统中排序阶段的核心模型与策略,包括多目标建模(MMoE)、负样本降采样、预估分数校准、粗排三塔模型等关键技术。内容基于实际项目经验整理。


一、排序阶段在推荐系统中的位置

推荐系统通常分为三个阶段:召回 → 粗排 → 精排

海量物品 → 召回(千/万级) → 粗排(百级) → 精排(十级) → 策略层 → 最终展示
  • 召回:从百万级候选池中快速筛选出千/万级候选
  • 粗排:在召回结果中进一步筛选到百级,平衡精度与速度
  • 精排:对百级候选进行精确打分排序

本文将重点讨论粗排和精排阶段的核心技术。


二、多目标建模

2.1 为什么需要多目标?

在实际业务中,我们关心的不仅仅是点击率(CTR),还包括:

  • 播放时长 / 完播率:用户是否真的看完了
  • 点赞 / 评论 / 分享:用户是否有互动行为
  • 关注 / 收藏:用户是否有长期兴趣

单一目标模型无法同时优化这些指标,因此需要多目标学习(Multi-Task Learning, MTL)

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

MMoE 是 Google 提出的多任务学习架构,通过专家网络和门控机制实现任务间的知识共享与分离。

输入特征 → [Expert_1, Expert_2, ..., Expert_n]
                ↓ 门控加权
        [Tower_CTR]    [Tower_CVR]
                ↓           ↓
           P(点击)      P(转化)

核心公式

\[\text{Output}_k = \sum_{i=1}^{n} g_k(i) \cdot f_i(x)\]

其中 $g_k(i)$ 是任务 $k$ 对专家 $i$ 的门控权重,$f_i(x)$ 是专家网络的输出。

注意事项

  • 训练时使用 Dropout 缓解极化问题(某个任务主导了所有专家)
  • 使用了 MMoE 并不一定带来提升,需要结合业务数据分布和任务相关性来调参
  • 当任务高度相关时,Shared-Bottom 可能更简单有效;当任务差异大时,MMoE 的优势才体现出来

2.3 预估分数融合

当有多个目标分数时,需要融合为最终排序分数:

\[\text{Score} = w_1 \cdot p(\text{点击}) + w_2 \cdot p(\text{完播}) + w_3 \cdot p(\text{互动})\]

权重 $w_i$ 通常通过业务经验和 A/B 测试确定。


三、训练策略

3.1 负样本降采样

在点击率预估中,负样本(未点击)数量远大于正样本(点击),导致:

  1. 样本严重不平衡
  2. 训练效率低下

解决方案:对负样本进行降采样,例如正负比设为 1:2 或 1:3。

3.2 预估值校准

降采样后,模型预估的点击率($p_{pred}$)会高于真实点击率($p_{true}$),需要校准:

\[p_{true} = \frac{n_+}{n_+ + n_-}\] \[p_{pred} = \frac{n_+}{n_+ + \alpha \cdot n_-}\]

其中 $\alpha$ 是负样本降采样比例。

校准公式

\[p_{true} = \frac{\alpha \cdot p_{pred}}{(1 - p_{pred}) + \alpha \cdot p_{pred}}\]

这个公式将模型输出的 $p_{pred}$ 还原为真实的点击率,保证排序分数的准确性。


四、视频播放建模

在视频推荐场景中,单纯的 CTR 预估是不够的。排序依据还需要考虑:

4.1 播放时长

\[\text{WatchTimeScore} = \min(\text{实际播放时长}, \text{视频时长})\]

4.2 完播率

完播率需要根据视频长度做动态调整

  • 短视频(< 1min):完播率权重较高
  • 中视频(1-10min):完播率适中
  • 长视频(> 10min):适当降低完播率权重,改为关注有效播放比例

五、排序模型的特征工程

5.1 特征分类

类别 示例
用户画像 年龄、性别、地域、兴趣标签
物品画像 类别、标签、发布时间、作者
用户统计特征 历史点击率、平均播放时长、活跃天数
物品统计特征 总曝光量、总点击量、CTR、完播率
场景特征 时间段、入口位置、网络环境

5.2 特征处理

对于长尾分布的特征(如点赞率),直接输入模型会导致:

  • 极少数值过大,主导梯度更新
  • 大部分值集中在 0 附近,区分度低

处理方法

  1. Log 变换log(1 + x) 压缩大值,拉伸小值
  2. 分桶(Binning):将连续值离散化为区间
  3. 转化为率:如 点赞数 / 曝光量

六、粗排模型

粗排的核心挑战是:牺牲一定准确性,换取推理速度

6.1 三塔模型

三塔模型是介于前期融合后期融合之间的折中方案:

用户塔 → User Embedding
物品塔 → Item Embedding
            ↓
        交叉塔(轻量交互)
            ↓
         排序分数
  • 用户塔物品塔:独立的特征编码网络
  • 交叉塔:轻量级的交互计算(不送入大神经网络)
  • 输出层:直接全连接输出分数,不做复杂的非线性变换

6.2 粗排 vs 精排

维度 粗排 精排
候选数量 百级 十级
模型复杂度 轻量 复杂
特征交互 有限(三塔) 充分(Deep Cross)
延迟要求 < 10ms < 50ms

七、总结

排序阶段是推荐系统中最直接影响用户体验的环节。关键技术要点:

  1. 多目标建模(MMoE):平衡 CTR、完播率、互动等多维度指标
  2. 样本处理:负样本降采样 + 预估分数校准
  3. 特征工程:长尾分布处理、多类别特征融合
  4. 粗排优化:三塔模型平衡速度与精度

相关文章