知识蒸馏 Knwoledge Distillation

paper:https://arxiv.org/pdf/1503.02531.pdf
CSDN:https://blog.csdn.net/xbinworld/article/details/83063726 https://blog.csdn.net/weixin_41761357/article/details/113719963
知乎:https://zhuanlan.zhihu.com/p/127036442
PPT:https://qdata.github.io/deep-learning-undergrad-reading-group/notes/week15-distilling-the-knowledge-in-a-neural-network-ivey.pdf

知识蒸馏(Knowledge Distilling)是模型压缩的一种方法,
是指利用已经训练的一个较复杂的Teacher模型,指导一个较轻量的Student模型训练,
从而在减小模型大小和计算资源的同时,尽量保持原Teacher模型的准确率的方法。

1、动机
Knowledge Distill是一种简单弥补分类问题监督信号不足的办法。
传统的分类问题,模型的目标是将输入的特征映射到输出空间的一个点上,例如在著名的Imagenet比赛中,就是要将所有可能的输入图片映射到输出空间的1000个点上。
这么做的话这1000个点中的每一个点是一个one hot编码的类别信息。这样一个label能提供的监督信息只有log(class)这么多bit。
然而在KD中,我们可以使用teacher model对于每个样本输出一个连续的label分布,这样可以利用的监督信息就远比one hot的多了。
另外一个角度的理解,大家可以想象如果只有label这样的一个目标的话,那么这个模型的目标就是把训练样本中每一类的样本强制映射到同一个点上,这样其实对于训练很有帮助的类内variance和类间distance就损失掉了。
然而使用teacher model的输出可以恢复出这方面的信息。
具体的举例就像是paper中讲的, 猫和狗的距离比猫和桌子要近,同时如果一个动物确实长得像猫又像狗,那么它是可以给两类都提供监督。
综上所述,KD的核心思想在于”打散”原来压缩到了一个点的监督信息,让student模型的输出尽量match teacher模型的输出分布。
其实要达到这个目标其实不一定使用teacher model,在数据标注或者采集的时候本身保留的不确定信息也可以帮助模型的训练。

2、方法
在这里插入图片描述
在这里插入图片描述

使用soft targets将复杂模型的泛化能力迁移到小模型中。
原因有二,一是软化的标签有很高的熵,每个训练阶段提供更多的信息。二是训练阶段之间梯度方差更小,训练更加稳定。这样的好处是要求训练的数据更少,可以使用更高的学习率。
作者对softmax进行改造,引入温度系数
在这里插入图片描述
通常 是为1的,当使用更高的温度时,会得到类间更加软化的概率分布。
训练过程中,作者说直接使用两个不同的目标函数加权的方式更好。
令大模型logits 经过有温度的softmax输出
在这里插入图片描述
,小模型logits 经过有温度softmax输出
在这里插入图片描述
其中两个的温度要一致。
最终
在这里插入图片描述
作者说第二个目标函数权重小时通常结果更好,但要注意soft targets的梯度量级乘以了在这里插入图片描述
,所以在二者同时使用时,第一个目标函数梯度要乘以 在这里插入图片描述
保证贡献基本一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值