点击下载论文原文
1. 引言
众所周知,工业级的推荐系统中,特征输入的信号强弱, 决定了模型和算法的上限。在实际应用中,为了维护离线训练和在线预估的一致性,往往需要确保一致的特征输入。然而,这种一致性使得一些信号非常强的特征被排除在外。比如,用户在详情页的停留时长这个特征,尽管能极大地提升CVR预估的准确率,然而线上服务时我们却无法获取这样的后验(post-event)特征,因为CVR预估需要在用户发生点击之前就被触发。
在本文中,我们将这种区分度高、但只能离线获取的特征定义为优势特征(Privileged Features)。直观来看,使用多任务学习(Multi-Task Learning, 简称MTL)来预测优势特征是一个不错的选择。然而,在多任务学习中,每个子任务往往很难满足对其他任务的无害准则(No-harm Guarantee),换句话说,预测优势特征的任务可能会对原始的预测任务造成负面影响,尤其是预测优势特征的任务比原始任务来得更有挑战性时。 从实践的角度来看,如果同时预测许多优势特征,如何平衡各个任务的权重也会非常困难。
为了更优雅地利用优势特征,本文提出优势特征蒸馏(Privileged Features Distillation, 简称PFD)。在离线环境下,我们会同时训练两个模型:一个学生模型以及一个教师模型。其中学生模型和原始模型完全相同,而教师模型额外利用了优势特征, 其准确率也因此更高。通过将教师模型蒸馏出的知识(Knowledge, 本文特指教师模型中最后一层的输出)传递给学生模型,可以辅助其训练并进一步提升准确率。在线上服务时,我们只抽取学生模型进行部署,因为输入不依赖于优势特征,离线、在线的一致性得以保证。在PFD中,所有的优势特征都被统一到教师模型作为输入,加入更多的优势特征往往能带来模型更高的准确度。相反,在MTL中,预测更多的优势特征反而可能损害原始模型。更进一步,相比原始目标函数,PFD只引入额外一项蒸馏误差,因此更容易与原始损失函数平衡。
PFD不同于常见的模型蒸馏(Model Distillation, 简称MD)。 在MD中,教师模型和学生模型处理同样的输入特征,其中教师模型会比学生模型更为复杂, 比如,教师模型会用更深的网络结构来指导使用浅层网络的学生模型进行学习。在PFD中,教师和学生模型会使用相同网络结构,而处理不同的输入特征。PFD与原始的Learning Using Privileged Information(LUPI) 也有一定的差异,在教师模型中,PFD额外处理了常规特征。在图1中,我们给出了他们的区别示意图。
图 1. 模型蒸馏(Model Distill, 简称MD)与优势特征蒸馏(PFD)对比; 在MD中,知识(Knowledge)是从更复杂的模型中蒸馏出来,而在PFD中,知识是从优势特征中蒸馏出来。其中红色箭头表示PFD额外处理了常规特征,这也区别了PFD与原始的LUPI.
我们在手淘信息流的两个基础预测任务上进行PFD实验。在粗排CTR模型中,通过蒸馏交叉特征(在线构造特征以及模型推理延时过高,在粗排上无法直接使用)以及蒸馏表达能力更强的MLP模型, 在线提升了5.0%的点击指标(同时保证成交指标不降)。在精排CVR模型上,通过蒸馏停留时长等后验特征,PFD提升2.3%的成交指标(同时保持点击指标不降)。
2. 手淘信息流中的优势特征介绍
为了更好地理解优势特征,图2给出了手淘信息流框架图。 我们采用级联学习(Cascaded Learning)的框架,随着待打分的商品变少,模型也变得更复杂。实验中,所有特征都被one-hot编码并映射成embedding来表达(连续特征可以通过分Bin离散化),其中用户行为通常会被RNN或者Transformer来建模其长短期兴趣。
图 2. 手淘信息流架构图。商品最终展示给用户前,会采用级联学习(Cascaded Learning)框架来筛选/排序用户感兴趣的商品。在粗排阶段(Coarse-grained Ranking), 尽管交叉特征(Interacted Features)非常有区分度,但由于极大增加推理延时,无法在线使用。本文中我们将其作为粗排模型的优势特征。
我们将排序分为两个阶段:粗排(Coarse-grained Ranking)和精排(Fine-grained Ranking)。在粗排阶段,由于复杂度的限制,我们采用内积模型来打分:
其中u和i分别指代用户和商品,X表示输入,W表示非线性映射Φ的模型参数,这里Φ会使用一个多层的MLP。如上述公式所示,用户侧和商品侧分离,所以全网的商品映射可以提前计算好并放在内存中建索引。当请求发生时,我们只需一次前馈运算即可得到用户映射,而对候选商品打分可以通过简单高效的内积运算来实现。对于更多的细节,可以参见下图4。
如图2所示,在粗排阶段,我们没有使用任何交叉特征(比如,用户过去24小时内在待预估商品类目下的点击次数,用户过去24小时内在待预估商品店铺下的点击次数等等)。尽管这些特征对于模型效果提升明显,但是如果在线使用这些特征,粗排的推理延时将会显著增大。无论将交叉特征放置于用户侧或者商品侧,在线推断非线性映射Φ_W (⋅) 需要被执行的次数与候选集大小相同,即〖10〗^5次左右。加上非线性映射(多层MLP)会比内积高几个量级的计算量,所以在粗排不会使用交叉特征。结合第二段中的定义,我们将交叉特征视为粗排CTR模型的优势特征。
在精排阶段, 我们还会预估候选集商品的CVR,即用户点击跳转到商品页后购买该商品的概率。显然,用户在商品页行为特征对于CVR预估会非常有帮助(如图3所示)。然而,在线上服务时,商品在被用户点击之前就需要估计CVR以进行排序,因此无法事先获取这类后验特征。在精排CVR预估中,我们将这类特征定义为模型的优势特征。
图3. 用户在商品详情页的示意特征。包括用户停留时长在内,这些特征能极大提升CVR预估的准确率。然而,在线上服务时,商品在被用户点击之前就需要估计出CVR来进行排序。因此,这类后验特征被称为CVR中的优势特征。
3. 优势特征蒸馏
接下来,我们将具体介绍优势特征蒸馏。无论是模型蒸馏还是特征蒸馏,其目的都是为了让非凸的学生模型训练得更好。对于优势特征蒸馏,可以将目标函数抽象成如下形式:
其中X表示普通的输入特征,X^* 表示优势特征, y表示标签,f(⋅)表示模型的输出, L表示损失函数,其中下标s指代student, d指代distillation, t指代teacher。 λ是平衡两个损失函数之前的超参数。值得注意的是,在教师模型中,除了输入优势特征以外,我们还将普通特征输入到教师模型中去。在上述公式中所示,教师模型的参数需要预先学好,这直接导致模型的训练时间加倍。一种更直接的方式是同步更新学生和教师模型,因此目标函数变成如下形式:
尽管同步更新能显著缩短训练时间,但也会导致训练不稳定的问题。尤其在训练初期,教师模型还处于欠拟合的情况下,学生模型直接学习教师模型的输出会有一定的概率导致训练偏离正常。解决这个问题的方法也非常简单,只需要在开始阶段将λ设定为0,然后在预设的迭代步将其设为固定值。具体步骤可以参见算法1。值得一提的是,我们让蒸馏误差项只影响学生网络的参数的更新,而对教师网络的参数不做梯度回传,从而避免学生网络和教师网络相互适应(co-adaption)而损失精度。
拓展到统一蒸馏(Unified Distillation)
在图1中,我们比较模型蒸馏和优势特征蒸馏的异同,既然两者都能提升学生模型的效果且互补,一个直观的想法就是将这两种技巧结合在一起以进一步提升效果。这里我们尝试在粗排CTR模型中使用这种统一蒸馏(Unified Distillation)技巧。
如本文第一个公式所示,在粗排中,我们使用内积运算对候选商品集合进行打分。事实上,无论采用何种映射表征用户或者商品,模型最终都会受限于顶层双线性(Bi-Linear)内积运算的表达能力。内积粗排模型可以看成是广义的矩阵分解,不过与常规的分解不同的是,这里额外融合了各种辅助信息(side information)。按照神经网络的万有逼近定理,非线性(Non-Linear)MLP,有着比双线性内积运算更强的表达能力,在这里很自然地被选为更强的教师模型。图4给出了粗排统一蒸馏框架示意图。事实上,图中加了优势特征的教师模型就是我们线上精排CTR模型,所以这里的蒸馏技巧也可以看成粗排反向学习精排的打分结果。
图4. (a)粗排模型统一蒸馏框架以及(b)在线部署系统。在训练端,用户与商品的交叉特征(优势特征)+ 复杂非线性(Non-linear)网络 构成一个强大的教师共同指导双线性(Bi-linear)内积模型。在线服务时,我们可以将商品映射离线计算好放在内存中建立索引,当出现新的用户请求,模型只需要计算一次前馈即可获取用户向量。
4. 实验
因为是点击/成交实验,所以我们直接采用LogLoss来建模学生和教师模型的损失函数,即
其中f_(t/s,i) 表示教师/学生模型第i个样本的输出。对于蒸馏损失函数,我们采用交叉熵,直接上将上述公式中的y_i 提换成1/(1 + e^(-f_{t,i} ))即可实现。模型通过预测下一天的数据上的AUC来评判结果。此外,我们让教师模型和学生模型共享公共的模块(如图4所示)。
图4. 整体网络示意图,其中教师模型和学生模型共享公共的模块
粗排CTR模型离线实验结果:其中MD表示模型蒸馏(Model Distillation);LUPI表示传统的优势信息学习(Learning Using Privileged Information), 如图1所示,其中教师模型只处理优势特征;PFD 表示本文提出的优势特征蒸馏(Privileged Features Distillation), 除了优势特征以外,教师模型还会处理常规特征。这里我们没有比较MTL(Multi Task Learning),因为如果直接去预测交叉特征(优势特征),模型会变得过于复杂。从下表中可以看到,通过MD+PFD可以显著提升粗排模型的训练效果。当训练更多天的数据时,这种蒸馏技巧的效果提升依然能得到保持。在线上A/B实验中,通过MD+PFD可以提升5.0%的点击指标(同时成交指标不下降)。
精排CVR模型离线实验结果:其中MTL的多个任务共享底层神经网络的输出,在MD中,我们使用更宽更深的神经网络,可以看到,相比学生模型,教师模型并没有取得非常显著的提效,因此,在线上A/B实验中,我们只对PFD做测试,对比Baseline,PFD提升了2.3%的成交指标(并且点击指标不降)。
5. 总结
在这个工作中,我们聚焦在预测任务中的特征输入,具体来说,我们主要考虑如何最大化利用优势特征并因此提出PFD。在手淘信息流推荐的两个基础任务上,可以看到,PFD都能明显提升相应模型的效果。PFD与目前常用的MD互补,在粗排任务中,通过PFD+MD这种统一蒸馏框架,模型效果还能进一步提升。对于更完整的技术和实验细节,可以参看我们的论文:https://arxiv.org/abs/1907.05171
6. 主要参考文献
[15] Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. 2015. Distilling the knowledge in a neural network. arXiv preprint arXiv:1503.02531 (2015).
[26] David Lopez-Paz, Leon Bottou, Bernhard Scholkopf, and VladimirVapnik. 2016. Unifying distillation and privileged information. In ICLR.