1知识蒸馏简介
定义:知识蒸馏代表将知识从大模型向小模型传输的过程。
作用:可以用于模型压缩和训练加速 手段。
2基于响应的知识(Response-Based Knowledge)
基于响应的知识一般指的是神经元的响应,即教师模型的最后一层逻辑输出。
响应知识的loss:
T是用于控制soft target重要程度的超参数。
那么整体蒸馏loss可以写作:
一般来讲使用KL散度来衡量两者分布差异,通过优化以上loss可以使得学生网络的logits输出尽可能和教师网络的logits输出相似,从而达到学习的目的。
KD中除了蒸馏的一项通常还会使用交叉熵损失函数令学生网络学习真实标签(也称hard label),两项联合起来进行训练。
KD通常的解释是学生网络可以从教师网络中学习到额外的隐形知识(dark knowledge), 而这种知识要比通过标签学习的知识更容易理解。
KD其他角度的解释还包括:KD可以生成类似label smooth的soft target;KD可以视为一种正则化方法;
基于响应的知识只用到了模型最后一层logits中包含的知识,而并没有用到中间层的监督,而中间层的监督信息在表征学习中非常有用。
3基于特征的知识(Feature-Based Knowledge)
在深度卷积神经网络中,网络学习到的知识是分层的,从浅到深层对应的知识抽象程度越来越高。因此中间层的特征也可以作为知识的载体,供学生网络进行学习。
基于特征的知识可以视为基于响应的知识的一个扩展。
FitNets是第一个引入中间层表征的,教师网络的中间层可以作为学生网络对应层的提示(Hints层)从而提升学生网络模型的性能。其核心是期望学生能够直接模仿教师网络的特征激活值。
基于特征的知识迁移可以建模为:
下图总结了各个基于特征的知识的匹配类型:
一般而言,在基于特征的知识迁移中,研究的对象包括了:
如何需选择知识类型?特征图、注意力图、gram矩阵或其他
如何选择教师层和学生层?简单的一对一匹配,自适应通过注意力匹配。
如何弥补教师网络与学生网络之间的GAP?如果容量相差过大,可能会导致学习效果变差。
4基于关系的知识(Relation-Based Knowledge)
基于关系的知识进一步扩展了基于响应的知识以及基于特征的知识,更全面深入的探索了不同层、不同数据样本之间的关系。
不同样本之间的关系建模:
传统的知识迁移通常只关心个体知识蒸馏,但是通常知识不仅包括特征的信息,还包括数据样本之间的互作用关系。
- Knowledge distillation via instance relationship graph提出了通过个体及关系图进行知识蒸馏的方法,迁移的知识包括个体级别特征。
- Relational knowledge distillation提出关系知识蒸馏,从个体关系中进行知识迁移
- Learning student networks via feature embedding结合流型学习,学生网络可以通过特征嵌入进行学习,从而保证教师网络中间层特征的样本相似度。
- Probabilistic Knowledge Transfer for Lightweight Deep Representation Learning使用概率分布来建模教师网络和学生网络的关系。
- Similarity-preserving knowledge distillation提出相似性保留的知识,使得教师网络和学生网络根据相同的样本对产生相似的激活。
- Correlation congruence for knowledge distillation提出基于关系一致的知识蒸馏方法,可以同时蒸馏instance-level的信息以及between instance的信息。
下表对蒸馏知识从不同角度进行分类,比如数据的结构化知识、输入特征的专有知识等。
5参考
Gou, J., Yu, B., Maybank, S.J., & Tao, D. (2021). Knowledge Distillation: A Survey. ArXiv, abs/2006.05525.
论文地址