为了能够在低资源设备上运行深度学习模型,需要研发高效的小规模网络。知识蒸馏是获取高效小规模网络的一种新兴方法,其主要思想是将学习能力强的复杂教师模型中的"知识"迁移到简单的学生模型中。
知识蒸馏介绍
知识蒸馏是一种教师-学生(Teacher-Student)训练结构,通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师的知识。它可以以 轻微的性能损失为代价将复杂教师模型的知识迁移到简单的学生模型中。
知识蒸馏与迁移学习思想较为相似,然而它们有以下四点的不同:
-
知识蒸馏中的知识通常是在同一个目标数据集上进行迁移,而迁移学习中的知识往往是在不同目标的数据集上进行转移。
-
知识蒸馏的两个网络可以是同构或者异构的,而迁移学习通常是在单个网络上利用其它领域的数据知识。
-
迁移学习使用其它领域的丰富数据的权重来帮助目标数据的学习,而知识蒸馏不会直接使用学到的权重。
-
知识蒸馏通常是训练一个轻量级的网络来逼近复杂网络的性能,而迁移学习是将已经学习到相关任务模型的权重来解决目标数据集的样本不足问题。
早期的工作都涉及到小网络利用大网络的输出知识,如全连接层和概率输出。Hinton 等人在 2015 年引入软目标(即带有参数 T 的类概率)并提出知识蒸馏概念:
其中T为温度系数,用来控制输出概率的软化程度。Hinton等人还发现了在训练过程加上正确的数据标签(即硬目标)会使学习效果更好。
知识蒸馏的作用机制
学生模型在知识蒸馏的过程中通过模仿教师模型输出类间相似性的"暗知识"来提高泛化能力。软目标携带着比硬目标更多的泛化信息来防止学生模型过拟合。
-
软目标为学生模型提供正则化约束
-
软目标引导了学生模型优化的方向
蒸馏的知识形式
当教师模型变得更深时,仅仅学习软目标是不够的。不仅需要获取教师模型输出的知识,还需要学习隐含在教师模型中的其它知识,比如中间特征知识。
输出特征知识
输出特征知识通常指的是教师模型的最后一层特征,主要包括逻辑单元和软目标的知识。输出特征知识蒸馏的主要思想是促使学生能够学习到教师模型的最终预测,以达到和教师模型一样的预测性能。
中间特征知识
复杂教师和简单学生模型在中间的隐含层之间存在着显著的容量差异,这导致它们不同的特征表达能力。 教师的中间特征状态知识可以用于解决教师和学生模型在容量之间存在的"代沟"(Gap)问题,其主要思想是从教师中间的网络层中提取特征来充当学生模型中间层输出的提示(Hint)。
关系特征知识
关系特征知识蒸馏认为学习的本质不是特征输出的结果,而是层与层之间和样本数据之间的关系。它的重点是提供一个恒等的关系映射使得学生模型能够更好的学习教师模型的关系知识。
结构特征知识
结构特征知识是教师模型的完整知识体系,不仅包括教师的输出特征知识,中间特征知识和关系特征知识,还包括教师模型的区域特征分布等知识。
知识蒸馏的方法
知识合并
知识合并(Knowledge Amalgamation,KA)是将多个教师或多个任务的 知识迁移到 单个学生模型中,从而使其可以同时处理多个任务。
多教师学习
知识合并和多教师学习(Learning from Multiple Teachers)都属于"多教师-单学生"的网络训练结构。它们的相同点是,知识合并和多教师学习都是学习多个教师模型的知识,但是它们的目标却是不一样的。
相互蒸馏
相互蒸馏(Mutual Distillation)是让一组未经训练的学生模型同时开始学习,并共同解决任务。 它是一种在线的知识蒸馏,即教师和学生模型是同时训练并更新的。
终身蒸馏
深度学习网络在学习新任务时,对旧任务的性能就会急剧下降,这个现象被称为灾难性遗忘。终身蒸馏就是通过知识蒸馏来保持旧任务和适应新任务的性能,其重点是训练新数据时如何保持旧任务的性能来减轻灾难性遗忘。
查看更多内容,欢迎访问天池技术圈官方地址: 小白学深度学习:知识蒸馏研究综述_天池技术圈-阿里云天池