本文主要是介绍优势特征蒸馏:阿里PFD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Privileged Features Distillation at Taobao Recommendations
背景
ctr&cvr预估任务中有很多非常有区分性的特征没法使用,比如用户点击之后的互动时长、点击之后的一些页面动作信息,因为只有离线训练的时候能拿到,线上预估的时候是拿不到的,为了保持线上和线下的一致性,这些“优势特征”(Privileged Features)就会被忍痛割爱舍弃掉。那么如何有效利用这些优势特征呢?
解决方案
通过蒸馏的方式,teacher模型的特征输入包含了优势特征,teacher模型和student模型结构一样,只是特征输入不同,teacher模型将学习到的信息蒸馏迁移到student模型。student的输入中没有优势特征,这样线上infer的时候,student模型可以正常工作。
方案详情
与常规的蒸馏模型不同,PFD(Privileged Features Distillation)中teacher和student模型结构上是一致的,只是输入不同。常规的MD(Model Distillation)是teacher模型结构非常复杂,student模型结构简单。
对比如下:
特征输入 X \mathbf X X,优势特征 X ∗ \mathbf X^* X∗,student的模型参数 W s \mathbf W_s Ws,teacher的模型参数 W t \mathbf W_t Wt,student模型是原来的主模型,这里加了一个蒸馏loss L d L_d Ld,蒸馏loss用来衡量是teacher模型输出和student模型输出的差异情况的。
如果teacher模型先训练好,然后再来训练student模型,loss如下
但是teacher模型先训练好可能会比较费时,可以同步训练teacher模型和student模型,loss如下
我们希望teacher和student的预测输出足够接近,可以使用均方误差如下:
L d = 1 N ∑ i = 1 N ( f ( X ∗ ; W t ) − f ( X ; W s ) ) 2 L_d = \frac {1} {N} \sum_{i=1}^N (f(\mathbf X^*;\mathbf W_t) - f(\mathbf X;\mathbf W_s))^2 Ld=N1i=1∑N(f(X∗;Wt)−f(X;Ws))2
也可以使用KL 散度,将teacher和student的输出都当做一个分布,KL散度用来衡量分布差异效果较好。
特征输入示意图如下
粗排阶段优势特征蒸馏
蒸馏方式:交叉特征效果非常好,但是一般没法用在粗排上面,作为优势特征输入到teacher模型
精排阶段优势特征蒸馏
蒸馏方式:用户点击之后的行为特征,比如点击后的停留时长、有没有咨询客服、有没有浏览评论等信息,这些特征作为优势特征输入到teacher模型。
实验
进一步可以将MD和PFD结合起来,可以让teacher模型结构更加复杂,容量更大。
效果更好
超参数 λ \lambda λ的调节
同步(Synchronous)训练时teacher和student的参数共享效果更好,耗时也更低,学习的更充分。
这篇关于优势特征蒸馏:阿里PFD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!