在多任务学习(Multi-Task Learning, MTL)中,多个任务共享部分模型结构,以提升整体效果。然而,不同任务间存在 任务冲突(Task Conflict) 问题,即不同任务对参数的优化方向不一致,导致性能下降。
论文:Tang, Hongyan, et al. “Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations.” RecSys 2020.
PLE 的核心思想是:
通过引入多个专家网络(Experts)并区分共享专家与特定任务专家,结合门控机制(Gating Network)实现任务间知识共享与隔离的平衡。
CGC中门控网络的个数等于任务的个数,而Extraction Network中除了对应任务的门控网络外,还有一个共享的门控网络。高层Extraction Network的输入不是原始的输入,而是包含更抽象语义的底层Extraction Network的门控融合输出。
Extraction Network结构 + CGC结构 如下图:
感觉用得最多的必然是Adam了,原理介绍见【搜广推校招面经十三】
见【搜广推校招面经二十,搜广推校招面经十四,搜广推校招面经三十一】
排序模型(Ranking Model)和分类模型(Classification Model)在输入特征方面是类似的,通常都是一组结构化的特征向量,反正都是二维的表格。这些特征可以包括数值型、类别型、文本向量化表示等,经过处理(如归一化、Embedding)后送入模型。
项目 | 分类模型(Classification) | 排序模型(Ranking) |
---|---|---|
输出形式 | 各类别的概率或标签 | 候选项的排序分数或排名 |
任务目标 | 预测所属类别 | 判断多个样本之间的相对排序 |
应用示例 | 图片识别:猫 / 狗 / 鸟 | 推荐系统:为用户排序商品 |
损失函数常用 | CrossEntropyLoss、FocalLoss | Pairwise:Hinge loss、BPR Listwise:Softmax Cross Entropy、LambdaRank |
预测方式 | 选最大概率的类别 | 根据得分排序候选项 |
见【搜广推校招面经二十九】
排序任务可以根据建模的方式分为三类:Pointwise、Pairwise 和 Listwise,主要区别在于它们如何构造训练样本以及如何定义损失函数。
方法 | 输入粒度 | 损失目标 | 优点 | 缺点 |
---|---|---|---|---|
Pointwise | 单个样本 | 回归/分类损失 | 实现简单,易于训练 | 无法建模样本间排序关系 |
Pairwise | 样本对 | 相对顺序损失 | 引入相对信息,排序效果好 | 样本量大,训练时间较长 |
Listwise | 整个样本列表 | 列表级排序指标 | 排序效果最佳 | 实现复杂,训练成本高 |
NDCG 是一种常用的排序评估指标,衡量推荐结果的相关性和排序位置。值越高,说明模型越好。其核心思想是:
对于前 k 个推荐结果,DCG 的定义如下:
公式一(使用等级评分):
D C G @ k = ∑ i = 1 k r e l i log 2 ( i + 1 ) DCG@k = \sum_{i=1}^{k} \frac{rel_i}{\log_2(i + 1)} DCG@k=i=1∑klog2(i+1)reli
公式二(使用指数评分,更重视高相关性):
D C G @ k = ∑ i = 1 k 2 r e l i − 1 log 2 ( i + 1 ) DCG@k = \sum_{i=1}^{k} \frac{2^{rel_i} - 1}{\log_2(i + 1)} DCG@k=i=1∑klog2(i+1)2reli−1
其中:
rel_i
:第 i 个位置的真实相关性评分(如:点击=1,未点击=0,或等级评分1~5)i
:排序位置,从 1 开始IDCG 是将相关性从高到低理想排序后得到的 DCG,即最优情况下的 DCG:
I D C G @ k = DCG@k of ideal (sorted) list IDCG@k = \text{DCG@k of ideal (sorted) list} IDCG@k=DCG@k of ideal (sorted) list
N D C G @ k = D C G @ k I D C G @ k NDCG@k = \frac{DCG@k}{IDCG@k} NDCG@k=IDCG@kDCG@k
如果 IDCG@k = 0(全是 0 分相关性),通常设定 NDCG@k = 0。
直接看公式可能不够清晰,搞个例子。假设模型返回的文档真实相关性为:
predicted ranking: [D1, D2, D3, D4, D5]
rel_scores: [3, 2, 3, 0, 1] ← rel_i
计算 DCG@5(使用公式二):
DCG@5 = (2^3 - 1)/log2(1+1) + (2^2 - 1)/log2(2+1) +
(2^3 - 1)/log2(3+1) + (2^0 - 1)/log2(4+1) +
(2^1 - 1)/log2(5+1)
≈ 7/1 + 3/1.5849 + 7/2 + 0/2.3219 + 1/2.5849
≈ 7 + 1.892 + 3.5 + 0 + 0.387
≈ 12.779
理想排序的相关性:[3, 3, 2, 1, 0],计算 IDCG@5(同样方法):
IDCG@5 ≈ 7/1 + 7/1.5849 + 3/2 + 1/2.3219 + 0/2.5849
≈ 7 + 4.417 + 1.5 + 0.430 + 0
≈ 13.347
根据Step3
NDCG@5 = 12.779 / 13.347 ≈ 0.957