何为蒸馏
想解决的问题
现在谁家不整个大模型,条件好了吃喝都不差钱了,大模型一般都效果好
但是应用可能麻烦点,费资源,可能下游任务设备一般般,那咋整?
那你就用小一点的模型呗,比如resnet152用不了那咱们就用resnet18也行
但是现在咱们两边都想要,既要用小的18层的也要让它效果尽可能进阶152的
模型参数越大越好?
模型参数量越大,效果一定越好吗?
不一定,越来越平稳的曲线,有上限;而且参数越大越难收敛。
模型的参数量相同,训练策略不同,得到的结果也可能完全不同
那么我们就得想想能不能利用点不同的训练策略让咱们模型既小又好。
蒸馏需要啥呢
回顾下半监督问题(以物体检测为例)
T模型生成一些伪标签,然后把这些标签交给S模型来进行学习
基本思想
大概就是这个图的意思,老师把会的东西通过一种表现形式交给学生
那么蒸馏要学什么呢?
不仅学习结果,还要关注分布
soft target有啥用
左边的2更像3,右边的2更像7,这时候得让模型知道像谁,但是是谁
Temperature的作用
温度的选择还是要根据实际情况来
应用领域
在物体检测领域应用
teacher与students的Backbone上要尽可能一致,分类和回归预测结果也要类似
类似半监督任务,Teacher输出伪标签,让Student来进行学习