推荐系统遇上深度学习(九十九)-[华为]多教师网络知识蒸馏来提升
本文是CIKM20上华为发表的一篇关于使用知识蒸馏来提升点击率预估效果的论文,论文标题是《Ensembled CTR Prediction via Knowledge Distillation》,下载地址为:https://dl.acm.org/doi/pdf/10.1145/3340531.3412704
1、背景
当前对于点击率预估的研究大致集中在两方面,一种是尝试更为复杂的网络结构来更好的捕捉特征之间的交叉信息以及用户的动态行为信息,如引入卷积神经网络、循环神经网络、注意力机制和图神经网络等;另一种趋势是沿用Wide & Deep的思路,尝试将多个子模块进行融合,如DeepFM、DCN、XDeepFM、AutoInt等。尽管这些研究带来了点击率预估效果的提升,但是随着模型结构的复杂,在实际工业界使用这些模型耗时会越来越高,往往难以真正在线上进行部署。
那么如何既能保持多模型融合的效果,同时能够使得模型更加轻量化呢?知识蒸馏的方式是一种不错的选择。
2、多教师网络知识蒸馏
2.1 单教师网络知识蒸馏
首先来看下单教师网络知识蒸馏的框架:
可以看到,同样的特征分别输入到teacher网络和student网络中,得到各自的输出,那么teacher网络和student网络的损失分别为:
teacher网络的损失只有交叉熵损失,而student网络的损失除包含交叉熵损失外,还包括一项蒸馏损失。蒸馏损失通常有两种计算方式:soft label和hint regression。
soft label
soft label的计算公式如下:
这里为什么要使用soft label呢?在计算softmax之前,对所有值乘上一个大于1的数,会起到sharp的作用,使得预测概率最高的那一类更加接近于1,而除以一个大于1的数,则会起到soft的作用,使得类别的预测概率更加接近。将这样的信息传递给student网络,可以提供额外的信息,例如下图中假设soft label是预测为1的概率是0.7,7是0.2,9是0.1,那么student可以学到不同类别之间的隐藏关系,比如1和7可能是更接近的,1和9也是比较接近的。
上述图片出自课程:https://www.bilibili.com/video/BV1SC4y1h7HB?p=7
hint regression
hint regression的目的是引导student网络学习teacher网络的中间层表示。这里VT代表选择的teacher网络的中间层表示,VS代表student网络中被指导的层的输出。通过矩阵W进行变换,期望二者的距离越近越好,此时蒸馏损失表示为:
2.2 多教师网络知识蒸馏
模型融合能够有效提升CTR预估的效果,但会带来耗时的增加。因此,可以通过知识蒸馏的方式,让student网络从多个模型中进行学习,来达到近似或比模型融合更佳的效果。因此,论文提出了多教师网络知识蒸馏,其结构如下图所示:
这里的主要问题是,多teacher网络如何向student网络传递知识?最简单的方式就是对所有teacher的输出进行平均。这种做法实现简单,但是不同的teacher的模型结构和训练框架都不同,所能够提供的知识的重要程度也是不同的,如果有一个效果较差的teacher网络,可能会影响到student网络的学习。因此可以对不同teacher网络的知识进行加权:
权重的学习通过一个gate网络得到,计算方式如下:
2.3 网络训练
知识蒸馏一般有两种训练方式,pre- train方式和co-train方式。pre- train方式是预先训练teacher网络,然后再训练student网络;co-train方式则是通过上述介绍的损失对teacher网络和student网络进行联合训练。co-train方式往往训练速度更快,但所需的GPU资源也会更多。后续实验部分也会看一下这两种实验的效果对比。
3、实验结果
最后简单看下实验结果部分。首先看下单教师网络知识蒸馏的结果,可以看到,无论选择DeepFM、DCN或是xDeepFM作为teacher网络,均是使用soft label和pre-train方式得到了最优的效果:
再看下多教师网络知识蒸馏的效果,其中3T(M)代表DeepFM、DCN和xDeepFM三个网络作为teacher网络,6T(M)则是每种模型使用不同的随机因子,训练两遍。3T(D)代表使用同一模型,将同一数据集切分成3份训练集进行训练,6T(D)则是数据集切分成6份进行训练:
从上表可以得到如下的结论:
1)随着1T->3T->6T,teacher网络和student网络的效果都是越来越好的
2)3T(D)/6T(D)的效果好于3T(M)/6T(M),这可能是由于选择的Teacher是3种模型中最好的模型导致的
3)student网络的效果反而比teacher网络更好,一种解释是,student网络不仅学习了teacher网络的经验,同时student网络结构相对简单,保持了更好的泛化性能。
好了,本文就到这里了,论文对于知识蒸馏这一知识点的总结以及实验部分都是值得一看的。