知识蒸馏
什么是知识蒸馏?
- 知识蒸馏(Knowledge
Distillation)是一种模型压缩方法,可以将大型深度模型中的知识转移到小型模型中,以期达到更好的性能和精度。知识蒸馏时通过构建一个轻量化的小模型,利用性能更好的大模型的监督信息,来训练这个小模型。 - 知识蒸馏的主要思想是将一个大模型的知识转移到一个小模型中,使得小模型的性能接近于大模型的性能。这种方法可以用来将网络从大网络转化成一个小网络,并保留接近于大网络的性能;也可以将多个网络学到的知识转移到一个网络中,使得单个网络的性能接近整体的结果。
- 知识蒸馏的过程可以简单地描述为:将大模型的输出作为小模型的目标,同时在训练小模型时,加入大模型的输出作为辅助信息,从而使得小模型可以学到大模型的知识。
知识蒸馏的算法有哪些?
- Soft Target
- FitNet
- Attention Transfer
- Similarity-Preserving Knowledge Distillation
- Data-Free Knowledge Distillation
- Self-Distillation
- Multi-Teacher Knowledge Distillation
- Collaborative Learning for Deep Neural Networks
知识蒸馏的缺点是什么?
- 知识迁移的低效性,即学生模型往往并不能充分学习到教师模型的全部知识。
- 如何设计并训练合适的教师模型,现有的蒸馏框架往往需要消耗大量的实验来找到最好的教师模型架构。
- 蒸馏效率依赖于softmax loss计算和mumber of class。
- 对于没有label(low-level)的问题,无法去做。
- 当student network模型太小时,很难从teacher network 蒸馏成功。
知识蒸馏的应用场景
知识蒸馏的应用场景非常广泛,目前已经应用到图像语义识别,目标检测等场景中,并且针对不同的研究场景,蒸馏方法都做了部分的定制化修改,同时,在行人检测,人脸识别,姿态检测,图像域迁移,视频检测等方面,知识蒸馏也是作为一种提升模型性能和精度的重要方法。