分享

知识蒸馏在推荐系统中的应用

导读:随着深度学习的快速发展,优秀的模型层出不穷,比如图像领域的 ResNet、自然语言处理领域的 Bert,这些革命性的新技术使得应用效果快速提升。但是,好的模型性能并非无代价的,你会发现,深度学习模型正在变得越来越复杂,网络深度越来越深,模型参数量也在变得越来越多。而这会带来一个现实应用的问题:将这种复杂模型推上线,模型响应速度太慢,当流量大的时候撑不住。

知识蒸馏就是目前一种比较流行的解决此类问题的技术方向。一般知识蒸馏采取 Teacher-Student 模式:将复杂模型作为 Teacher,Student 模型结构较为简单,用 Teacher 来辅助 Student 模型的训练,Teacher 学习能力强,可以将它学到的暗知识 ( Dark Knowledge ) 迁移给学习能力相对弱的 Student 模型,以此来增强 Student 模型的泛化能力。复杂笨重但是效果好的 Teacher 模型不上线,就单纯是个导师角色,真正上战场挡抢撑流量的是灵活轻巧的 Student 小模型。比如 Bert,因为太重,很难直接上线跑,目前很多公司都是采取知识蒸馏的方法,学会一个轻巧,但是因为被 Teacher 教导过,所以效果也很好的 Student 模型部署上线。

01知识蒸馏典型方法


目前知识蒸馏已经成了独立研究方向,各种新技术层出不穷。但是如果粗略归纳一下的话,主流的知识蒸馏技术有两个技术发展主线:Logits 方法及特征蒸馏方法。
2020-05-27_185038.jpg
我们先简单说明下 Logits 方法的思路。在介绍之前,首先得明白什么是 Logits。我们知道,对于一般的分类问题,比如图片分类,输入一张图片后,经过 DNN 网络各种非线性变换,在网络接近最后一层,会得到这张图片属于各个类别的大小数值 zi,某个类别的 zi 数值越大,则模型认为输入图片属于这个类别的可能性就越大。

什么是 Logits? 这些汇总了网络内部各种信息后,得出的属于各个类别的汇总分值 zi,就是 Logits,i 代表第 i 个类别,zi 代表属于第 i 类的可能性。因为 Logits 并非概率值,所以一般在 Logits 数值上会用 Softmax 函数进行变换,得出的概率值作为最终分类结果概率。Softmax 一方面把 Logits 数值在各类别之间进行概率归一,使得各个类别归属数值满足概率分布;另外一方面,它会放大 Logits 数值之间的差异,使得 Logits 得分两极分化,Logits 得分高的得到的概率值更偏大一些,而较低的 Logits 数值,得到的概率值则更小。

上图中的公式 qi,就是一个变体的 Softmax 公式,如果把 T 拿掉或令 T=1,则是个标准的 Softmax 公式,zi 就是第 i 个类别的 Logits 数值,qi 是 Logits 数值经过 Softmax 变换后,归属于第 i 个类别的概率值。

知识蒸馏在推荐系统中的三个应用场景是什么?精排环节蒸馏方法有哪些?

可下载文档:
知识蒸馏在推荐系统中的应用 .pdf (1.26 MB, 下载次数: 20)

已有(1)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条