排序与多目标
一、排序模型演进
| 模型 | 核心改进 | 年份 |
|---|---|---|
| LR | 基础线性模型,人工特征交叉 | 2010 |
| FM | 自动二阶特征交叉 | 2010 |
| Wide & Deep | 记忆(Wide)+泛化(Deep) | 2016 |
| DeepFM | FM替代Wide部分,端到端训练 | 2017 |
| DIN | 注意力机制建模用户兴趣 | 2018 |
| DIEN | 兴趣演化网络,捕捉兴趣变化 | 2019 |
二、Wide & Deep
架构
| 组件 | 作用 | 特点 |
|---|---|---|
| Wide部分 | 记忆能力,学习特征共现 | 交叉特征(如"男+体育") → Dense(1) |
| Deep部分 | 泛化能力,学习特征组合 | Dense特征 → 多层DNN → Dense(1) |
| 合并层 | Wide+Deep输出合并 | concatenate → Dense(1, sigmoid) |
特征处理
| 特征类型 | Wide部分 | Deep部分 |
|---|---|---|
| 类别特征 | 交叉组合(如gender_x_sport) | Embedding → concat |
| 连续特征 | 归一化后直接输入 | 归一化后直接输入 |
| 交叉特征 | 手动构造(关键) | 自动学习 |
优劣势
| 优势 | 劣势 |
|---|---|
| Wide部分记忆能力强 | Wide部分需人工构造交叉特征 |
| Deep部分泛化能力强 | 两部分需分别优化 |
| 工业界成熟方案 | 交叉特征工程量大 |
三、FM与DeepFM
FM(Factorization Machine)
| 维度 | 说明 |
|---|---|
| 核心公式 | y = w0 + sum(wixi) + sum( |
| 关键创新 | 用隐向量内积 |
| 优势 | 自动学习二阶交叉,无需人工特征工程 |
| 劣势 | 仅二阶交叉,缺乏高阶交叉能力 |
DeepFM
| 组件 | 作用 | 与Wide&Deep区别 |
|---|---|---|
| FM部分 | 替代Wide,自动二阶交叉 | 无需人工交叉特征 |
| Deep部分 | 高阶特征交叉 | 与Wide&Deep相同 |
| 共享Embedding | FM和Deep共享同一套Embedding | 减少参数,联合训练 |
| 对比 | Wide & Deep | DeepFM |
|---|---|---|
| Wide部分 | LR+人工交叉 | FM自动交叉 |
| 特征工程 | 需人工构造交叉 | 无需人工交叉 |
| Embedding | Wide和Deep独立 | 共享Embedding |
| 训练方式 | 联合训练 | 端到端联合训练 |
| 竞赛推荐 | 有领域知识时 | 通用首选 |
四、序列建模
用户行为序列
| 维度 | 说明 |
|---|---|
| 输入 | 用户历史交互物品序列[item1, item2, ..., itemN] |
| 目标 | 从序列中提取用户兴趣表示 |
| 挑战 | 序列长度不一、兴趣随时间变化、多兴趣并存 |
序列建模方法对比
| 方法 | 原理 | 优势 | 劣势 |
|---|---|---|---|
| Mean Pooling | 对序列Embedding取平均 | 简单快速 | 丢失顺序信息 |
| RNN/LSTM | 递归处理序列 | 捕捉顺序依赖 | 训练慢,长序列梯度消失 |
| TextCNN | 多尺度卷积核提取局部模式 | 并行训练快 | 全局依赖弱 |
| Transformer/BST | 自注意力机制 | 全局依赖+并行 | 计算量大 |
DIN(Deep Interest Network)
| 维度 | 说明 |
|---|---|
| 核心思想 | 用注意力机制对用户历史行为加权,与候选物品相关的行为权重高 |
| Attention计算 | alpha_i = softmax(MLP([vi, va, vi-va, vi*va])) |
| vi | 历史物品i的Embedding |
| va | 候选物品的Embedding |
| 优势 | 自适应关注相关行为,不同候选物品激活不同兴趣 |
| 竞赛价值 | 推荐赛题中排序模型的核心组件 |
BST(Behavior Sequence Transformer)
| 维度 | 说明 |
|---|---|
| 核心思想 | 用Transformer编码用户行为序列 |
| 位置编码 | 时间间隔编码(相对时间),而非绝对位置 |
| 优势 | 全局注意力,捕捉长距离依赖 |
| 与DIN对比 | DIN是局部注意力(只看与候选相关),BST是全局注意力 |
五、多目标算法
动机
| 问题 | 说明 |
|---|---|
| 多目标冲突 | 点击率(CTR)和转化率(CVR)可能冲突,优化一个损害另一个 |
| 业务需求 | 同时优化点击、收藏、购买、停留时长等多个指标 |
| 竞赛场景 | 赛题可能同时评估多个指标 |
Shared-Bottom
| 维度 | 说明 |
|---|---|
| 结构 | 共享底层网络 → 多个任务特定输出头 |
| 优势 | 参数少,简单 |
| 劣势 | 任务差异大时负迁移(任务间互相干扰) |
MMOE(Multi-Gate Mixture-of-Experts)
| 维度 | 说明 |
|---|---|
| 结构 | 多个Expert网络 + 每个任务一个Gate(门控) |
| Expert | 多个独立的DNN网络,学习不同特征表示 |
| Gate | 为每个任务学习Expert的权重组合:g(x) = softmax(W_g * x) |
| 输出 | 每个任务的输入 = sum(gate_i * expert_i(x)) |
| 优势 | 任务间软共享,避免负迁移 |
| 关键 | Expert数量和Gate设计 |
PLE(Progressive Layered Extraction)
| 维度 | 说明 |
|---|---|
| 改进 | 在MMOE基础上增加任务特定Expert + 共享Expert |
| CGC层 | Customized Gate Control:任务Expert + 共享Expert → Gate |
| 多层堆叠 | 多层CGC逐步提取高层次特征 |
| 优势 | 更好地平衡共享和任务特定知识 |
| 竞赛表现 | 目前多目标竞赛中最强方案之一 |
六、知识图谱应用
知识图谱嵌入
| 方法 | 原理 | 适用 |
|---|---|---|
| TransE | h + r ≈ t (头实体+关系≈尾实体) | 1对1关系 |
| TransH | 将实体投影到关系超平面再计算 | 1对多/多对1关系 |
| TransR | 实体空间和关系空间分离 | 复杂关系 |
知识图谱增强推荐
| 方法 | 说明 |
|---|---|
| 实体链接 | 将物品与知识图谱实体对齐 |
| 路径推理 | 用户→实体→关系→实体,发现潜在兴趣 |
| 特征增强 | 用知识图谱Embedding作为物品附加特征 |
七、推荐赛题Trick
特征工程
| 特征类型 | 示例 |
|---|---|
| 用户统计 | 历史点击数、购买数、活跃天数 |
| 物品统计 | 总点击数、点击率、转化率 |
| 交叉统计 | 用户类别x物品类别点击率 |
| 时间特征 | 最近N天点击数、时间间隔统计 |
| 序列特征 | 最近点击物品类别分布、兴趣变化率 |
序列建模Trick
| Trick | 说明 |
|---|---|
| 序列截断 | 取最近50~100个行为,过长序列效果反而差 |
| 时间衰减 | 近期行为权重更高 |
| 行为类型区分 | 点击/收藏/购买分别建模 |
| 负反馈 | 不喜欢/取消收藏等负反馈单独处理 |
训练技巧
| 技巧 | 说明 |
|---|---|
| 负采样 | 随机负采样 + 热门物品负采样 |
| 样本权重 | 正样本权重 > 负样本权重 |
| 特征重要性 | 用LightGBM筛选重要特征再送入深度模型 |
| 多折验证 | 按时间划分验证集,避免数据泄露 |
八、竞赛实战流程
| 阶段 | 步骤 | 工具/方法 |
|---|---|---|
| 1. Baseline | ItemCF召回 + LR排序 | Python, pandas |
| 2. 召回优化 | 多路召回 + 向量召回 | DeepWalk, DSSM |
| 3. 排序优化 | DeepFM/DIN排序 | TensorFlow/PyTorch |
| 4. 多目标 | MMOE/PLE多任务学习 | 多目标损失加权 |
| 5. 特征工程 | 交叉特征 + 序列特征 | LightGBM筛选 |
| 6. 融合冲刺 | 多模型融合 + 规则修正 | 加权平均/Stacking |
九、高级排序模型
DCN(Deep & Cross Network)
| 维度 | 说明 |
|---|---|
| 核心思想 | 用Cross Network自动学习有界阶的特征交叉,替代Wide部分 |
| Cross层 | x_{l+1} = x_0 * (w_l^T * x_l) + b_l + x_l,每层增加一阶交叉 |
| DCN V2 | 用低秩矩阵替代全参数交叉,更高效 |
| 与DeepFM区别 | DeepFM做二阶交叉,DCN可做任意阶有界交叉 |
| 竞赛应用 | 特征交叉丰富的场景,如电商推荐 |
AutoInt
| 维度 | 说明 |
|---|---|
| 核心思想 | 用多头自注意力机制自动学习特征间交互 |
| 优势 | 可解释性强(注意力权重可视化特征交互) |
| 交互方式 | 每个特征域的Embedding通过注意力与其他域交互 |
| 适用场景 | 特征域多、交叉关系复杂的场景 |
xDeepFM
| 维度 | 说明 |
|---|---|
| 核心思想 | 用压缩交互网络(CIN)在向量级别学习高阶特征交叉 |
| 与DCN区别 | DCN在bit级别交叉,xDeepFM在向量级别交叉 |
| 优势 | 向量级交叉更精细,可学习更复杂的高阶交互 |
| 劣势 | 训练速度比DCN慢 |
十、多目标进阶
ESMM(Entire Space Multi-Task Model)
| 维度 | 说明 |
|---|---|
| 核心问题 | 转化率(CVR)预测存在样本选择偏差和数据稀疏问题 |
| 解决方案 | pCTCVR = pCTR * pCVR,用曝光样本训练CTR和CTCVR,间接学习CVR |
| 优势 | 在全样本空间训练,避免选择偏差;CTR和CVR共享Embedding缓解稀疏 |
| 竞赛应用 | 同时优化点击率和转化率的推荐赛题 |
DBMTL(Deep Bayesian Multi-Task Learning)
| 维度 | 说明 |
|---|---|
| 核心思想 | 用贝叶斯网络建模多目标间的因果关系 |
| 优势 | 显式建模目标间依赖关系(如购买依赖点击) |
| 与ESMM区别 | ESMM只建模CTR→CVR,DBMTL可建模更复杂的因果图 |
多目标损失权重调优
| 方法 | 说明 |
|---|---|
| 固定权重 | 手动设置各任务Loss权重,简单但需经验 |
| Uncertainty Weighting | 用同方差不确定性自动学习权重 |
| GradNorm | 平衡各任务梯度大小,避免某个任务主导训练 |
| DWA(Dynamic Weight Averaging) | 根据各任务Loss下降速度动态调整权重 |
十一、推荐系统竞赛常见踩坑点
| 坑点 | 原因 | 解决方案 |
|---|---|---|
| 召回不足 | 单路召回覆盖率低 | 多路召回合并 |
| 冷启动差 | 新用户/物品无交互历史 | 内容特征召回 + 跨域推荐 |
| 排序过拟合 | 特征过多或训练数据不足 | 特征筛选 + 正则化 + 早停 |
| 多目标冲突 | CTR和CVR优化方向相反 | MMOE/PLE软共享 |
| 负采样偏差 | 随机负采样过于简单 | 热门物品负采样 + 混合负采样 |
| 数据泄露 | 用未来数据训练 | 严格按时间划分训练/验证 |
| 序列过长 | 全部历史行为噪声大 | 截断最近50~100个行为 |