近年来随着人工智能的发展,深度学习开始在工业界不同场景落地。深度学习跟以前的机器学习模型相比,其中很重要的特点就是在于能在模型侧自动构建特征,实现端到端学习,效果也有明显提升,但新的问题如模型效果和推理效率的冲突也开始凸显。
爱奇艺提出了新的在线知识蒸馏方法来平衡模型效果和推理效率,在推荐场景上获得了明显的效果,本文主要介绍爱奇艺在探索升级排序模型的过程中提出的双DNN排序模型。文章开始之前,首先为大家科普与本文主题相关的关键词的含义及相关技术知识。
▌关键词
▌写在前面
近些年来,学术界和工业界陆续开展了多项让排序模型变的wider and deeper的相关工作,其中,wider(更宽)意味着一个模型包含更多不同的子模型,如xDeepFM[1]包括了LR, DNN和CIN三种组件,分别建模一阶显示特征交叉(LR),高阶隐式特征交叉(DNN)和高阶显示特征交叉(CIN);deeper(更深)意味着通过增加模型复杂性来提升模型性能,一些在NLP和CV领域使用的复杂组件开始被引入排序模型,如xDeepFM的CIN其实是利用卷积神经网络来建模特征交叉, BST[2]利用Transformer建模用户行为序列的表征。然而,更深更宽的模型在提升模型效果的同时,往往伴随着模型推理效率的下降。
爱奇艺提出的在线知识蒸馏方法来平衡模型效果和推理效率,并在短视频信息流和图文信息流两个重要场景上线后都获得了明显的正向效果。其中,在爱奇艺短视频场景时长指标+6.5%,点击率指标+2.3%;图文推荐场景时长指标+4.5%,点击率指标+14% 。
▌深度学习时代排序模型的演进
从建模特征组合这个角度去介绍深度学习时代排序模型的演进,按照时间的发展经历了三个时期(萌芽期、中兴期和突破期),具体如下:
a. 萌芽期:DNN开始被引入推荐排序模型,其优点在于神经网络能隐式建模不同特征间的高阶特征组合。国内最早应用案例是百度等公司在2013年左右开始将DNN用作CTR模型;
b. 中兴期:深度排序模型开始被广泛接受,代表模型为WDL[3]和 DeepFM[4]等,这些模型的优势在于在DNN基础上,增加了显示的一阶或二阶特征组合。其中WDL几乎成了推荐广告CTR模型从传统机器学习时代过渡到深度学习的敲门砖,应用这一模型既能尝到深度学习的甜头,又能复用已有的排序模型成果进一步提升模型性能;
c. 突破:从DCN[5],xDeepFM开始,深度排序模型开始变的更深更宽,尤其重视使用DL组件来显示建模高阶特征交叉,其显示的高阶特征组合更符合算法工程师对排序模型的期许。通过模型本身来进行特征组合可以避免人工特征组合的一些弊端,如工程代价和人力成本。
上面介绍的深度排序模型可以归类为如下表格,显示的高阶vector-wise交叉相对更make sense, 也是最近一些排序模型工作的核心优化点:
▌排序模型优化动机
爱奇艺排序模型从GBDT+FM等机器学习模型跨入到深度学习时代也是从WDL开始的,但是爱奇艺在此基础上做了一些改进,最终排序模型结构如下图1, Wide侧是FM, GBDT输出是FM输入,Deep Model是DNN和FM的stacking。
该模型结构[7]在爱奇艺推荐的各个场景都作为baseline model使用,线上表现一直不错。从2019年开始,团队开始尝试推动模型的实时性和端到端建模,同时引入一些最新的研究成果来提升模型性能。但在实践过程中,发现baseline model存在如下弊端:
1. GBDT是CTR模型外的预处理组件,不适合实时训练和更新。若GBDT更新,整个排序模型也需要更新,无法进行端到端训练;
2. 若去掉GBDT, 端到端建模要解决两类原始特征(稀疏特征和稠密特征)之间的高阶特征组合。现有模型对稀疏特征和稠密特征是隔离处理,稀疏特征只进入了Wide Model,现有模型不支持稀疏特征的显示高阶建模;
3. 现在的模型结构无法自适应引入一些新的排序模型组件,因为其结构过于的大而全,而缺少了灵活性。
爱奇艺首先尝试了最近提出的一些复杂模型来取代baseline model,如DCN, xDeepFM等,但发现需要平衡large model 的模型效果和推理性能是有待解决的比较关键的问题。
如以下图表格所示,xDeepFM比较难落地:
1. 推理性能:同等情况下,在CPU上推理,xDeepFM与baselinemodel相比,耗时是其2.5~3.5倍;
2. 使用GPU时,只有在大batch下,xDeepFM推理性能才符合要求。
当使用和现有baseline model一样的CPU推理资源时,像xDeepFM这样的复杂深度模型无法上线。若使用GPU进行推理, ROI并不高。与这两种情况相比,知识蒸馏[6]这一类模型压缩方法是解决这类问题的良药,可以将复杂模型的知识迁移到简单模型。
到这里总结出了下一代排序模型的优化方向:
1. 升级现有基准排序模型
• 去掉GBDT;
• 探索最新的一些排序模型进展,提升排序模型性能;
2. 大规模稀疏特征的交叉
• 用模型显示建模不同高维稀疏特征的交叉;
• vector-wise交叉;
• 一个模型可以容纳各种特征交叉组件;
3. 高性能的复杂深度模型如何落地
• 低投入高产出:不高于现有资源投入,获得更好的线上效果;
• 模型压缩:复杂模型知识迁移到简单模型。
▌双DNN排序模型
通过实践,爱奇艺提出了一种新的排序模型框架: 双DNN排序模型,其核心在于提出了新的联合训练方法,从而解决了高性能复杂模型的上线问题,该框架的特点和优势总结如下:
1. 双DNN
• 左侧DNN:模型性能更好的复杂模型,推理性能差;
• 右侧DNN:模型性能一般的简单模型,推理性能佳;
2. Fine-Tune
• 右侧DNN 复用左侧DNN的inputrepresentation layer;
3. 联合训练
• 复杂DNN监督指导简单DNN的学习;
• KD on the fly, one stage;
• 训练稳定性,大网络性能天花板不受小网络影响。
排序模型结构如下:
双DNN排序模型由两个DNN CTR Model组成,左侧是Teacher,右侧是Student,Student 模型是最终用于上线推理的CTR 模型。两者共享特征输入和表示,但是左侧相比右侧多了Feature Interaction Layer。左侧和右侧有各自独立的MLP , 其包含多层Hidden Layer。主要Layer的介绍如下:
Embedding Layer : 输入表示层,不同特征按Field组织,稀疏Field ID embedding化后通过average pooling得到field的embedding表示;
Feature Interaction Layer:这是左侧模型核心,其可以容纳各种形式的特征组合组件,二阶或高阶特征组合都可以放置在其中;
Classifier Layer: 两个DNNCTR模型的Classifier,一般是多层DNN。
▌双DNN排序模型的优势
双DNN的优势在于联合训练,通过联合训练迁移左侧复杂DNN知识到右侧简单DNN,关键部分是以下3点:
1. Feature Transfer:正如模型结构图中的标注1所示,两个DNN共享特征表示层,相当于右侧DNN 使用了copy and freeze的特征迁移范式;
2. KD One the Fly: 知识蒸馏(KnowledgeDistillation, KD)是两阶段训练,我们将其改为使用联合训练时进行知识迁移,训练时使用teacher的预测结果指导student;
3. Classifier迁移:仅有第二点还无法让右侧模型性能逼近左侧,因为右侧网络结构偏弱,无法直接学到左侧模型的输出, 于是让teacher的hiddenlayer作为监督信号指导student的hiddenlayer。
▌双DNN排序模型训练架构
在端到端模型结构确定后,通过引入在线学习实现了模型的实时性。下图是双DNN排序模型的训练架构。
Finetune:每天例行使用30天窗口训练得到离线双DNN排序模型,训练完后再使用最新的样本fine tune,使得模型能学到最新的用户行为pattern。
在线学习热启动:正如之前在线学习实践[8]文章中所分享的,这里也是使用离线模型作为在线学习训练的热启动模型,这既能oov问题,也能防止在线学习长期运行带来的bias。而这里的在线学习只使用实时数据更新双DNN的Student 模型,因为真正用于推理的是Student。
▌双DNN排序模型推理
如下图所示,依赖于公司提供的训练平台,双DNN模型的部署和推理实现了模型Graph和Embedding权重的解耦部署,其使得模型更新和部署超大模型变得更加方便,特别是在模型的大部分重要特征是大规模稀疏特征时。模型推理时,TF serving通过定制化的OP访问存储Embedding 矩阵的分布式PS。
▌业界相关实践
百度
百度广告CTR模型的发展历程[9]如下:CTR-X是一个用于粗排阶段的DSSM, 其中CTR 3.0与我们的工作比较类似,也是用于精排阶段,但是训练两个结构差不多的DNN需要运用类似于特征迁移的方法,左侧DNN主要用来学习稀疏特征embedding, 右侧DNN使用左侧训练得到的embedding和其他特征作为输入训练CTR model。
阿里
阿里妈妈在2018年提出了Rocket Launching训练方法[10],将其用于广告算法模型压缩。该方法也是需要联合训练两个复杂度有明显差异的网络,其中简单的网络称为轻量网络(light net),复杂的网络称为助推器网络(booster net),两个网络共享表示层参数,方法和其核心区别在于如下两点:
1. Rocket Launching只使用预测结果来指导简单模型的训练,我们的方法是让简单模型同时拟合预测结果和决策层的网络结构表示,两个网络的性能差距会进一步缩小;
2. Rocket Launching联合训练时两个大小网络都会在反向传播时更新EmbeddingLayer参数, 我们的方法是让小网络直接sharing, 不再更新,因为实验发现同时更新会拉低大网络性能。
▌实验部分
双DNN模型压测:在爱奇艺某个信息流推荐场景的测试数据来看,左侧模型是右侧模型推理时延的5倍左右, 模型大小压缩了超过3倍,右侧模型QPS也更高。因此同样资源情况下,使用右侧上线ROI更高。
Co-Train和两阶段训练(类似于百度CTR3.0)效果对比:Co-Train模式下右侧模型和左侧模型的差距缩小明显, student的能力更接近teacher。
▌总结
爱奇艺提出了一种新的在线知识蒸馏方法,不同于以往的知识蒸馏进行两阶段训练,而是进行联合训练,让teacher网络在训练过程中指导student网络的训练,与此同时做到不受student网络的影响。目前,双DNN排序模型的方法在短视频信息流和图文信息流场景实现落地,这也佐证了这一方法的优越性。未来会继续推动落地一些前沿的排序模型研究成果,让teacher网络变的更宽更深,进一步提升排序模型的精度。
▌参考文献
1. Lian, Jianxun &Zhou, Xiaohuan & Zhang, Fuzheng & Chen, Zhongxia & Xie, Xing &Sun, Guangzhong. (2018). xDeepFM: Combining Explicit and Implicit FeatureInteractions for Recommender Systems. 1754-1763. 10.1145/3219819.3220023.
2. Chen, Qiwei &Zhao, Huan & Li, Wei & Huang, Pipei & Ou, Wenwu. (2019). Behaviorsequence transformer for e-commerce recommendation in Alibaba. 1-4.10.1145/3326937.3341261.
3. Cheng, Heng-Tze &Koc, Levent & Harmsen, Jeremiah & Shaked, Tal & Chandra, Tushar& Aradhye, Hrishi & Anderson, Glen & Corrado, G.s & Chai, Wei& Ispir, Mustafa & Anil, Rohan & Haque, Zakaria & Hong, Lichan& Jain, Vihan & Liu, Xiaobing & Shah, Hemal. (2016). Wide &Deep Learning for Recommender Systems. 7-10. 10.1145/2988450.2988454.
4. Guo, Huifeng &Tang, Ruiming & Ye, Yunming & Li, Zhenguo & He, Xiuqiang &Dong, Zhenhua. (2018). DeepFM: An End-to-End Wide & Deep Learning Frameworkfor CTR Prediction.
5. Wang, Ruoxi & Fu,Bin & Fu, Gang & Wang, Mingliang. (2017). Deep & Cross Network forAd Click Predictions. 1-7.
6. Hinton, Geoffrey &Vinyals, Oriol & Dean, Jeff. (2015). Distilling the Knowledge in a NeuralNetwork.
7. 爱奇艺个性化推荐排序实践.
https://mp.weixin.qq.com/s/lUP2BehOh7KczR3WRnOqFw
8. 在线学习在爱奇艺信息流推荐业务中的探索与实践。
https://mp.weixin.qq.com/s/aQOcnWV2L_VY3ChrSXXxWA
9. AI筑巢:机器学习在百度凤巢的深度应用。
https://myslide.cn/slides/763
10. Rocket Launching: AUniversal and Efficient Framework for Training Well-Performing Light Net GuoruiZhou, Ying Fan, Runpeng Cui, Weijie Bian, Xiaoqiang Zhu, Kun Gai