作者 | Chilia

方向 | 哥伦比亚大学研究生 搜索推荐方向

整理 | NewBeeNLP

今天分享阿里的一篇将「目标蒸馏-logits方法」应用到推荐系统领域的论文, 其提出的蒸馏技术是工业界知识蒸馏用在推荐系统领域最广泛的技术之一,整篇文章思路比较朴素,对于工业应用具有非常大的借鉴意义。

论文链接:https://arxiv.org/pdf/1907.05171.pdf

有关知识蒸馏,请先阅读2015年Hinton的开山之作,讲解如下:Knowledge Distillation | 知识蒸馏经典解读

1. 背景

为了得到线上和线下特征的一致性(consistency), 我们通常只能选择那些线上和线下都能够获得的feature。但是,有的非常重要的特征只能在线下得到,在线上预测serving的时候是不能得到的。

比如,「用户停留时长」这个指标对于「CVR(用户点击之后购买的概率)」 的预测非常重要,但是在线上预测的时候我们根本拿不到这个特征,因为在线上需要在用户点击之前就预测CTR,CVR, 用户还没有点击怎么去获得用户停留时长?那为了保持线上线下特征的一致性,只能忍痛割爱,不用这个特征。

「这种信号强,但只能离线获取的特征,就叫优势特征(privileged features)」

自然的想到,使用「多任务」学习来预测优势特征是一个可行的选择,同时预测这些优势特征和CVR、CTR。然而,在多任务学习中,每个子任务往往很难满足对其他任务的无害准则(No-harm Guarantee),换句话说,预测优势特征的任务可能会对原始的预测任务造成负面影响。而且,预测优势特征的任务甚至比原始任务来得更有挑战性!从实践的角度来看,如果同时预测非常多的优势特征,如何平衡各个任务的权重也会非常困难。

为了更优雅地利用优势特征,本论文提出优势特征蒸馏(「Privileged Features Distillation」,简称PFD)。

在离线环境下,我们会训练两个模型:一个Student模型以及一个Teacher模型。其中Student模型和原始模型完全相同,只使用那些线上线下都有的特征;而教师模型额外利用了优势特征, 其准确率也因此更高。通过将教师模型蒸馏出的知识 (Knowledge,论文中特指教师模型中最后一层的logit输出, 是软标签/平滑标签) 传递给学生模型,可以辅助其训练并进一步提升准确率。在线上服务时,我们部署学生模型,因为输入不依赖于优势特征,离线、在线的一致性也得以保证。

本文提出的PFD和普通的模型蒸馏(model distillation, MD)的区别在于,普通Model Distillation的Student和Teacher的输入相同,而Teacher的模型capacity明显大于Student,所以蒸馏的效果是降低模型参数。而PFD的Student和Teacher模型capacity一样,只是Teacher多加了优势特征。所以,这里的知识蒸馏并没有起到让模型轻量级的效果,而只是试图把Teacher学到的加入了优势特征的预测模型“教给”Student:

本模型在手淘的信息流推荐场景,运用在了粗排阶段的CTR预估、和精排阶段的CVR预估两个阶段上。在AB测试下,粗排阶段的CTR有5%的提升,精排阶段的CVR有2.3%的提升。

2. 淘宝推荐中的优势特征

手淘推荐的流程框架图如下。所有的商品从会经历三个阶段:召回、粗排、精排。这三个阶段待打分的商品数会逐渐减少,模型会越来越复杂。

在粗排阶段,主要的任务是预估召回阶段返回的候选集中每个物品的CTR,然后选择排序分最高的一些物品进入精排阶段。粗排阶段输入的特征主要有用户的行为特征(如用户的历史点击/购买行为)、用户属性特征(如用户id、性别、年龄等)、物品特征(如物品id、类别、品牌等)。在粗排阶段,由于要在毫秒内给成千上万的候选物品打分,因此模型的复杂度受到了很大的限制,工业界传统的做法是使用「内积模型」,把用户侧和物品侧作为双塔。离线算好候选商品向量,在请求时,把用户向量和候选商品向量进行内积运算,从而对物品池做粗筛。

有一些「交叉特征」对粗排效果有明显的提升,比如用户在过去24小时内在待预估商品类目下的点击次数、用户过去24小时内在待预估商品所在店铺中的点击次数等。对于这些交叉特征,如果放到用户侧,那么针对每个物品都需要计算一次用户侧的塔;如果放到物品侧,同样针对每个物品都需要计算一次物品侧的塔,这会大大加大计算复杂度,增加线上的推理延时。因此,这些「交叉特征」对于粗排阶段的模型来说,通常在线上无法应用,我们就称它们为粗排CTR预估中的Privileged Features。

在精排阶段,我们不仅要预估CTR,还要预估CVR,即用户点击跳转到商品页后购买该商品的概率。在电商领域的推荐,主要目标是最大化GMV,即 GMV = CTR * CVR * Price 。一旦预估了所有商品的CTR和CVR,我们就可以根据预期的GMV对它们进行排名,使得GMV最大化。

在CVR的定义下,很明显「用户在商品页的行为特征」对于CVR预估会非常有帮助,比如说「用户在商品页停留的时长、是否查看评论、是否与商家沟通」等。但是,这些特征在线上预估阶段是无法获取的,因为商品在被用户点击之前就需要估计CVR以进行排序。所以对于CVR预估来说,用户在点击后进入到商品页的一些特征(比如停留时长、是否查看评论、是否与商家沟通等)同样是Privileged Features。

再比如,在短视频粗排或精排阶段要做多目标预估,即不仅要预估点击率还要预估该视频的点赞、评论、分享转发、进入个人主页、收藏、下载等互动目标。如果此时,用户点击该视频,并对该视频进行了观看。那么,用户的视频观看时长特征,对于互动目标的预估显的很重要,但是在线上推理时,我们需要在预估点击率之前就要估计互动目标,并不能获取到视频观看时长这一重要特征。因此,我们可以把用户观看视频时长特征作为Privileged Features。

3. 优势特征蒸馏

令X表示普通特征,X*表示优势特征,y表示标签,L表示损失函数,则特征蒸馏的目标函数抽象如下:

上面的损失函数被分为两部分,两部分都是计算交叉熵。损失的第一部分是可以称为hard loss,其label是0或者1;第二部分可以称为soft loss或distillation loss,其label是Teacher网络的Softmax输出,是概率值。

如上述公式中所示,教师模型的参数需要预先学好,这直接导致模型的训练时间加倍。所以,能不能同步更新学生和教师模型呢?同步更新的目标函数变成如下形式:

尽管同步更新能显著缩短训练时间,但也会导致训练不稳定的问题。尤其在训练初期,教师模型还处于欠拟合的情况下,学生模型直接学习教师模型的输出会导致训练偏离正常。解决这个问题的方法也非常简单,只需要在开始阶段将 设定为0,不让Student跟Teacher学;然后在预设的迭代步将 设为固定值。值得一提的是,我们让「蒸馏误差项(distillation loss)」 只影响学生网络的参数的更新,而对教师网络的参数不做梯度回传,从而避免学生网络和教师网络相互适应(co-adaption)而损失精度。也就是说,只能学生向老师学,而不能老师向学生学。

4. 优势特征蒸馏+模型蒸馏 (PFD+MD)

在上文中,我们比较了模型蒸馏(MD)和优势特征蒸馏(PFD)的异同,既然两者都能提升学生模型的效果且互补,一个直观的想法就是将这两种技巧结合在一起以进一步提升效果。

这里我们尝试在「粗排CTR」模型中使用这种PFD+MD技巧。在粗排中,我们使用「内积运算」对候选商品集合进行打分。事实上,无论采用何种映射表征用户或者商品,模型最终都会受限于顶层双线性(Bi-Linear)内积运算的表达能力。因为内积粗排模型可以看成是广义的矩阵分解。按照神经网络的万有逼近定理,非线性(Non-Linear)MLP,有着比双线性内积运算更强的表达能力,在这里很自然地被选为更强的教师模型。下图给出了粗排PFD+MD蒸馏框架示意图。事实上,图中加了优势特征的教师模型就是我们「线上精排CTR模型」,所以这里的蒸馏技巧也可以看成粗排反向学习精排的打分结果。

5. 实验

在手淘信息流的两个基础预测任务上PFD实验。在「粗排CTR」模型中,通过蒸馏「交叉特征」(在线构造特征以及模型推理延时过高,在粗排上无法直接使用)以及蒸馏表达能力更强的MLP模型,即通过MD+PFD可以在线提升CTR(同时保证CVR指标不降)。在「精排CVR」模型上,通过蒸馏停留时长等「后验特征」,只对PFD做测试,对比Baseline提升CVR(并且CTR不降)。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定要备注信息才能通过)

END -

聊一聊算法工程师复现算法的踩坑总结

2021-10-17

深度学习基础 | 从Language Model到RNN

2021-10-16

搜索、推荐、广告中的曝光偏差问题

2021-10-12

图神经网络中可能用到的11种距离, 小结

2021-10-05

『优势特征知识蒸馏』在淘宝推荐中的应用相关推荐

  1. 淘宝UWP中的100个为什么

    从淘宝UWP第一版发布到现在,已经有十个月了,期间收到了用户各种各样的反馈,感谢这些用户的反馈,指导我们不断的修正.完善应用.但是也有一部分需求或建议,由于资源或技术的限制,目前确实无法做到,只能对广 ...

  2. 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定

    原标题:怎么录制淘宝页面中的视频?简单方法,轻松搞定 怎么录制淘宝页面中的视频?当前足不出户,大家就可以在很多的电商平台购买到自己心仪的商品.这其中商机也就产生了,如果不太想上班,或者说想要自己当老板 ...

  3. php提取淘宝URL中ID的代码

    php提取淘宝URL中ID的代码 一段可以提取淘宝URL中ID的PHP代码. 例如: <?php $taobao = 'taobao.com'; $tmall = 'tmall.com'; $g ...

  4. 淘宝url中的spm编码是怎么生成的呢?

    淘宝url中的spm编码是怎么生成的?生成使用了什么技术?是怎么回事呢 越详细越好. 下面是SPM淘宝说明: SPM是淘宝社区电商业务(xTao)为外部合作伙伴(外站)提供的一套跟踪引导成交效果数据的 ...

  5. 求一个手机淘宝直播中抢购的脚本,急

    要求,手机淘宝直播中不管上架什么东西,我都是第一个购买成功的! 天灵灵地灵灵,太上老君急急如律令,大神来>o<

  6. 游戏开发计算机图形学杂项知识系列:OpenGL红宝书中第一个渲染程序Triangles常见问题归总

    游戏开发计算机图形学杂项知识系列:OpenGL红宝书中第一个渲染程序Triangles常见问题归总 声明:未经作者允许,严禁商用,转载请标明出处和来源,谢谢 转载自:https://www.cnblo ...

  7. 【淘宝】从开店到运营 - 开店前期知识(天猫、淘宝店铺介绍)

    开发中发现,对好多电商概念模糊,就想到从淘宝开店流程开始,理解客户(产品经理)在想什么... 视频:https://www.bilibili.com/video/BV1c4411p7vd?from=s ...

  8. 《css基础知识》——案例:淘宝首页的登录界面

    在熟悉内边框.外边框.边框等概念之后,还需掌握父子盒子的知识内容.在弹性盒子中,定父盒子的宽高,子盒子等分父盒子宽度,高度需指定.或者定父盒子的宽高,子盒子设置宽高,控制间距.下面就是这两种方式的例子 ...

  9. 深度语义模型以及在淘宝搜索中的应用

    https://www.toutiao.com/a6685574319969403404/ 传统的搜索文本相关性模型,如BM25通常计算Query与Doc文本term匹配程度.由于Query与Doc之 ...

最新文章

  1. Hadoop For Windows
  2. Oracle技术之OCRCONFIG工具
  3. POJ 2152 Fire
  4. 2021年陕西高考成绩单招查询时间,2021年陕西单招考试时间是什么时候,单招考试分数线是多少...
  5. Spring Bean的生命周期(非常详细)
  6. 常用Openssl命令
  7. 拒绝用户“root”@“localhost”的访问(使用密码:yes)_使用PHP和Github Webhook实现自动部署
  8. 将cmd添加到鼠标右键,并且在任意目录下可以打开
  9. python是什么语言-python是一门什么样的语言?
  10. bio、nio、aio及select、poll、epoll
  11. 关于欧几里德第五公设的感言
  12. 在VS2010进行MFC编程设置字符集的问题(使用多字节字符集引起错误)
  13. Go语言 channel 管道 阻塞 死锁 经典问题
  14. 当后台返回的图片在前端加载不出来时,前端做默认图片展示
  15. extjs的html绑定变量,jquey中的事件绑定 - paul_cheung-js中变量的作用域-ExtJs实践(2)——ExtJs在IE下存在的一个bug - 蒋叶湖_169IT.COM...
  16. Pr 2019版安装教程
  17. 创建视图时--ora-01731:出现循环的视图定义
  18. Tesseract OCR简介(一)
  19. 绝地潜兵服务器不稳定,爽快的合作射爆游戏《绝地潜兵》评测评分汇总
  20. 中山大学数字电路实验时钟设计大作业

热门文章

  1. SAP License:SAP与中国电子技术标准化研究院开展交流活动
  2. MySQL高级知识(十)——批量插入数据脚本
  3. WEB前后端交互原型通用元件库、常用组件、信息输出、信息输入、信息反馈、综合系列、页面交互、首页、分类页、内容详情、用户中心、注册登录、找回密码、元件库、web元件库、rplib、axure
  4. 树的合并 connect
  5. 基于jquery的带事件显示功能的日历板插件calendar.js
  6. 关于 Linux 操作
  7. 1.读入待分析的字符串 2.分解提取单词 3.计数字典 4.排除语法型词汇 5.排序 6.输出TOP(20)...
  8. ThinkPHP admin.php后台登录
  9. POJ 3254 Corn Fields [DP]
  10. 动态规划优化_斜率优化