作者 | 雨下 整理 | NewBeeNLP
推荐系统一般包含召回、粗排、精排等阶段,每个阶段各司其职。
召回主要是将用户所有可能感兴趣的内容取出来,排序(粗排、精排)主要是预测用户对每条内容感兴趣的程度。召回为整个推荐系统的后续阶段提供数据,保证了效果的上确界。排序对召回提供的数据再更细致化的分析、预测和排序,保证最终用户看到的结果。可以说召回是服务于后续排序模型。
由于召回和排序是推荐的两个阶段,可以说是独立运行的过程。在工业上,做召回和排序的可能是两波人。因此两者的目标可能存在不一致。比如:精排希望给转化率高或者浏览时长高的内容更高的评分,而召回依旧取出用户喜欢点击的内容,最终精排的能力受到了限制。
为了让召回的目标向后续的排序靠齐,我们需要一路以排序模型的目标为目标的召回方法,保证能提供排序模型所需要的数据。
多目标蒸馏召回
腾讯提出了一个多目标MMoE蒸馏DSSM召回的方法DMTL(如图1所示)。
MMoE的两个目标是点击和阅读时长。DSSM只是建模了用户的点击兴趣,召回出用户可能喜欢点击的内容,没有考虑用户对阅读时长较高的内容。因此作者使用MMoE蒸馏DSSM模型,提升大盘的阅读时长。
对于点击任务,正样本是点击的内容,负样本按照点击频率随机采样的。负样本没有使用曝光未点击的样本,毕竟DMTL是一个召回模型,不是排序模型。
对于时长任务,正样本是阅读时长超过50s(所有时长的均值)的点击内容,其它为负样本。
表示点击正样本,
表示时长正样本(即阅读时长超过50s)。
是样本
的特征,其中
是用户特征,
是内容特征。
是预测的点击率pCTR,
是预测的转化率pCVR,
是pCTCVR。
作者使用MMoE同时学习CTR和CVR,然后pCTCVR蒸馏给DSSM。MMoE是teacher网络,DSSM是student网络。
预测的pCTCVR
。
拟合CTVR的loss为交叉熵:
。
拟合CTR的loss为:
最终MMoE训练的loss为:
为了将CTCVR的分蒸馏给DSSM,首先定义DSSM学习到的
。
为用户塔学习到的用户特征,
为内容塔学习到了内容特征。
蒸馏loss定义为KL散度:
最终loss即为MMoE(teacher网络)和DSSM(student网络)的loss之和。
论文实验也展示了离线的AUC和线上的平均阅读时长都有不错的提升。
离线蒸馏方法
DMTL是同时训练MMoE和DSSM的。如果有大量的数据,训练的时间复杂度较高。我们可以先训练一版MMoE,然后将样本的logit保存下来,该logit可以用于指导DSSM训练。
在推荐系统中,DSSM和MMoE每天都会更新。我们可以将MMoE当天生成的logits保存一下,然后用于第二天DSSM的训练。由于DSSM会继续batch内每个user与所有item的logits,而MMoE 可能没有计算某<user,item>对logits。这时我们可以将精排的打分(比如ctr和cvr分)保存下来。
离线的蒸馏的方法得到的精排分是不及时的,毕竟是昨天产生的,可能与今天线上学习到的分有所区别。但是在真实实践中,发现用昨天的分依旧可以取得不错的结果。
在张俊林:知识蒸馏在推荐系统的应用[3]中,作者提出了很多离线蒸馏的方法,有logits, without-logits(point-wise, pair-wise,list-wise)。作者尝试了point-wise方法,使用的是精排给的排序作为权重。线上在时长、点击、互动等多个指标都有2 %到6 %之间的不同程度的提升作用。
本人也用多目标精排的打分和排序去蒸馏给DSSM,点击率影响不大(可能因为其它的召回模型都是在提升点击率,因此补充了DSSM在点击率上的损失),但是互动率却有很大的提升。
参考
[1] Distillation based Multi-task Learning: A Candidate Generation Model for Improving Reading Duration. [2] Modeling task relationships in multi-task learning with multi-gate mixture-of-experts. [3] 张俊林:知识蒸馏在推荐系统的应用:https://zhuanlan.zhihu.com/p/143155437