在工业级推荐系统的演进过程中,多任务学习(Multi-Task Learning, MTL)已经从可选技术演变为核心架构范式。这种转变背后是推荐系统面临的两个根本性挑战:用户行为信号的稀疏性和单一指标的局限性。早期独立建模每个业务指标的做法虽然直观,但在规模化场景下会遭遇样本偏差和优化目标偏离用户真实需求的结构性问题。
以电商场景的转化率(CVR)预测为例,典型的用户行为漏斗呈现金字塔结构:亿级曝光、千万级点击、百万级购买。若仅用转化样本训练CVR模型,正样本的极度稀疏会导致模型难以捕捉有效的泛化模式。常见的补救方案是将未点击样本标记为负例,但这会引入样本选择偏差(Sample Selection Bias, SSB)——模型从未见过"曝光但未点击"的样本分布,却在线上要对所有曝光商品进行预测。
阿里巴巴的ESMM模型通过将CVR分解为CTR×CTCVR,在全量曝光样本空间联合训练,既利用了CTR任务的丰富样本,又避免了直接标注CVR标签的偏差问题。
即使用户行为信号充足,单目标优化仍面临根本困境:任何单一行为指标都只是用户真实满意度的局部投影。Goodhart定律在此显现——当指标成为优化目标后,系统会找到在该指标上得分高但实际损害用户体验的路径:
多任务学习的本质是通过多个行为指标的联合建模,逼近无法被单一指标完整描述的用户价值。其优势体现在三个维度:
根据任务间的依赖关系,可分为三种典型模式:
| 任务类型 | 特点 | 典型案例 |
|---|---|---|
| 并行任务 | 同样本多目标 | 点击、完播、点赞 |
| 级联任务 | 样本空间递进 | 曝光→点击→购买 |
| 主辅任务 | 辅助目标不参与预测 | 对比学习辅助loss |
梯度余弦相似度:
python复制def gradient_cosine_sim(grad_i, grad_j):
return np.dot(grad_i, grad_j) / (np.linalg.norm(grad_i)*np.linalg.norm(grad_j))
持续负相关的任务对应考虑参数隔离。
AUC差异矩阵:
ΔAUCi→j = AUCjMTL - AUCjSTL
正值表示任务i对j有正向迁移。
共享底层+独立任务头的结构简单高效,但面临"跷跷板效应"——相关任务相互拉扯导致效果不如单任务模型。
Google提出的MMoE引入专家混合机制:
但所有专家仍被所有任务共享,难以处理强冲突任务。
腾讯的PLE在MMoE基础上增加:
总Loss = Σ wiLi
权重初始化建议:
wi(0) = Lbase(0)/Li(0)
| 方法 | 核心思想 | 计算开销 | 适用场景 |
|---|---|---|---|
| GradNorm | 平衡任务学习速率 | 中(需梯度范数) | 任务收敛速度差异大 |
| Uncertainty Weighting | 学习任务噪声水平 | 低(仅标量参数) | 标签噪声分布均匀 |
| PCGrad | 投影冲突梯度 | 高(O(N²)) | 任务数较少(<10) |
每个目标应在自己的有效样本空间评估:
评估新增目标需同时检查:
典型成功模式:
在实际业务中,我们发现在视频推荐场景采用PLE+固定权重方案,在12个任务联合训练时,相比单任务模型:
关键成功因素是构建了完善的专属评估体系,确保每个新增目标都经过:
这种严谨的迭代流程避免了"离线提升但线上无效"的常见陷阱。