排序与多目标

排序与多目标


一、排序模型演进

模型 核心改进 年份
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(xi*xj)
关键创新 用隐向量内积替代交叉权重wij,参数量从O(n^2)降至O(n*k)
优势 自动学习二阶交叉,无需人工特征工程
劣势 仅二阶交叉,缺乏高阶交叉能力

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个行为