为了能够在低资源设备上运行深度学习模型,需要研发高效的小规模网络。知识蒸馏是获取高效小规模网络的一种新兴方法,其主要思想是将学习能力强的复杂教师模型中的“知识”迁移到简单的学生模型中。
知识蒸馏介绍
知识蒸馏是一种教师-学生(Teacher-Student)训练结构,通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师的知识。它可以以 轻微的性能损失为代价将复杂教师模型的知识迁移到简单的学生模型中。
知识蒸馏与迁移学习思想较为相似,然而它们有以下四点的不同:
-
知识蒸馏中的知识通常是在同一个目标数据集上进行迁移,而迁移学习中的知识往往是在不同目标的数据集上进行转移。
-
知识蒸馏的两个网络可以是同构或者异构的,而迁移学习通常是在单个网络上利用其它领域的数据知识。
-
迁移学习使用其它领域的丰富数据的权重来帮助目标数据的学习,而知识蒸馏不会直接使用学到的权重。
-
知识蒸馏通常是训练一个轻量级的网络来逼近复杂网络的性能,而迁移学习是将已经学习到相关任务模型的权重来解决目标数据集的样本不足问题。
早期的工作都涉及到小网络利用大网络的输出知识,如全连接层和概率输出。Hinton 等人在 2015 年引入软目标(即带有参数 T 的类概率)并提出知识蒸馏概念:
其中T为温度系数,用来控制输出概率的软化程度。Hinton等人还发现了在训练过程加上正确的数据标签(即硬目标)会使学习效果更好。
知识蒸馏的作用机制
学生模型在知识蒸馏的过程中通过模仿教师模型输出类间相似性的“暗知识”来提高泛化能力。软目标携带着比硬目标更多的泛化信息来防止学生模型过拟合。
-
软目标为学生模型提供正则化约束
-
软目标引导了学生模型优化的方向