Knowledge Distillation: A Survey
本文译自Knowledge Distillation: A Survey,论文地址:https://arxiv.org/abs/2006.05525
(有翻译不周之处,敬请指正)

1. Introduction
深度学习取得了巨大进步,但是受限于庞大的计算量和参数量很难实际应用与资源受限设备上。
为了使深度模型更加高效,主要有以下两个方向的研究:
-
高效的网络模块构建:如MobileNets, ShuffeNets
-
模型压缩和加速技术,包括:
-
参数裁剪和共享(模型量化,模型二值化,结构化矩阵,参数共享等)
-
低秩分解
-
卷积核压缩
-
知识蒸馏(Knowledge Distillation, KD)
2006年, Bucilua等人最先提出将大模型的知识迁移到小模型的想法。2015年,Hinton才正式提出广为人知的知识蒸馏(KD)的概念。其主要的想法是:学生模型通过模仿教师模型来获得和教师模型相当的精度,关键问题是如何将教师模型的知识迁移到学生模型。通常来说,一个知识蒸馏系统由以下三部分组成:知识(knowledge)、蒸馏算法(distillation algorithm)、教师-学生架构(teacher-student architecture)。典型的教师-学生框架如图1所示:

关于KD一些理论上的理解和证明:成功的蒸馏和数据结构,目标函数的偏好,学生分类器的强单调性紧密相关。由于模型能力之间的gap,并不是越大的模型作为teacher越好(大学教授可能教不了幼儿园的熊孩子)。
KD和人类的学习过程很相似,受此启发,有了各种各样的学习方式:传统的教师学生网络、互学习(学习小组)、辅助教学(助教来减少gap)、lifelong learning(学无止境)、自蒸馏(自学成才)等等。
蒸馏后的学生模型更容易部署,此外,蒸馏过程中学习到的知识还可以用于对抗攻击、数据增广、隐私保护等。还有一部分研究使用KD来进行训练数据的压缩。
本文的目的:
-
从知识、蒸馏、结构三个方面总览知识蒸馏
-
回顾最近知识蒸馏在算法和应用层面的发展
-
提供一些更深层次的见解
此外,顺便安利另一篇KD的综述【Knowledge distillation and student-teacher learning for visual intelligence: A review and new outlooks】,其重点关注视觉领域的教师学生模型架构的发展和挑战,与本综述还是有所不同的。
本文的组织结构如开头的图2所示。
2. Knowledge
知识是KD的三驾马车之一,本节主要关注KD中不同的知识类型。最朴素的KD采用教师模型的logits(通常指网络最后全连接层的输入、softmax层前的输出)作为教师的知识。此外,中间层的激活值、神经元或者特征也可以作为知识;不同的激活单元、神经元或者样本对之间的关系也有可能包含丰富的信息。甚至教师模型本身的参数或者层间连接也包含着某种类型的知识。
我们把以上各种形式的知识分为以下几类,如图3所示:
-
基于响应的知识
-
基于特征的知识
-
基于关系的知识

2.1 基于响应的知识
基于响应的知识通常指教师模型最后一层的输出,想法来源于直接模拟教师模型最终的输出,这类知识直观有效,在不同的任务和应用场景上有着广泛的应用,其形式化定义如下:
其中z_t

本文全面概述了知识蒸馏的概念,从知识、蒸馏策略和教师-学生架构三个方面展开,探讨了包括响应知识、特征知识和关系知识在内的多种知识类型。知识蒸馏旨在通过小型学生模型模仿大型教师模型,实现模型压缩和加速。文中还介绍了不同类型的蒸馏方法,如离线、在线和自蒸馏,并讨论了它们的特点和挑战。此外,知识蒸馏在视觉识别、语音识别、自然语言处理等多个领域的应用也得到了阐述。文章最后提出了未来研究方向,包括混合模型压缩、跨模态学习和知识迁移等。
最低0.47元/天 解锁文章
1131





