1.重新拆解了KD
2.分析和解释KD的工作机制
3.发现了KD固有的一些问题
4.提出了一个新的方法DKD
5.
通过KL散度来监督学生的学习 让学生的输出尽可能和Teacher去相似 模仿的行为
在KD之后,大家对基于中间特征的蒸馏帮助学生去学习
relation RKD CRD样本间的相似度 帮助student涨点
21 norm review的机制 帮助student的浅层特征学的更好
KD不涉及中间的feature 也不会涉及到特征对齐 包括一些关系
KD架构简单 但是有效性并不是那么强
基于feature, relation的蒸馏的语义信息是不如最后的基于logits的
最后输出的 是最抽象的也是最高级的 但是通过比较发现 这个基于logits的蒸馏的性能却不是最好的 有可能受限于一些潜在的未知因素
研究动机 1.什么限制了KD的性能
2.通过公式的拆解 能够帮助我们更好的理解KD
3.
对网络的分类输出做一个概念重写
核心思想 想把target拆解成两个部分
需要预测的目标类别 强相关
另一个和target lable无关的
然后就可以认为这两个部分是正交的
二分类分布 target的类的概率有多少 0.8
非target的类的概率是多少 0.2
再定义一个分布 non -target上面的分布 内部相互竞争的概率
怎么实现:
第一步
把我画圈的地方取出来 去做一遍softmax就会得到
映射回去的关系
然后重写KD
接下来我去“深度学习”KL散度了
首先在这里类置信度的分布是离散的 所以采用离散的KL散度
还有要注意的是刚才提及的关系 才会推出 建议大家试试
把TCKD和NCKD看成两个单独的知识蒸馏 知识传递
这个消融实验的设计 是相同架构的老师和学生
也有不同架构的 老师和学生
增加实验的普适性
TCKD 传递样本 难度的一个知识
teacher就会觉得这是容易拟合的
TCKD传递的知识来自于一个二分类 主要有用的就是teacher的置信度分布
为什么TCKD在cifar数据集上是没用的
1.拟合难度很低
对训练集加难度 (Augmentation)
noisy label 给训练集加一些噪声
噪声越强 我们发现带来涨点就越多
TCKD在cifar100上 超参的敏感度不高
缓解大模型的 未必可以蒸馏出好的模型