论文来源于:知识蒸馏研究综述
主要有 5 种方法可以获得高效的深度学习模型:直接手工设计轻量级网络模型、剪枝、量化、基于神经架构搜索(Neural Architecture Search,NAS)的网络自动化设计以及知识蒸馏(Knowledge Distillation,KD)。
知识蒸馏是一种教师-学生(Teacher-Student)训练结构,通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师的知识。 它可以以轻微的性能损失为代价将复杂教师模型的知识迁移到简单的学生模型中。
根据应用场景划分出基于知识蒸馏的模型压缩和模型增强这两个技术方向,即获得的网络模型是否为了应用于资源受限的设备。
知识蒸馏与迁移学习都涉及到知识的迁移,然而它们有以下四点的不同:
Hinton 等人在 2015 年引入软目标(即带有参数 T 的类概率)并提出知识蒸馏概念。
Hinton 等人认为,学生模型在知识蒸馏的过程中通过模仿教师模型输出类间相似性的“暗知识”来提高泛化能力。
从数学或实验角度关于知识蒸馏作用机制的证明和理解:
软目标为学生模型提供正则化约束
软目标为学生模型提供了“特权信息”
“特权信息”指教师模型提供的解释、评论和比较等信息。
教师模型在训练的过程中将软目标的“暗知识”迁移到学生模型中,而学生模型在测试的过程中并不能使用“暗知识”。
**软目标引导了学生模型优化的方向 **
原始知识蒸馏(Vanilla Knowledge Distillation) 仅仅是从教师模型输出的软目标中学习出轻量级的 学生模型。 当模型变深时,仅学习输出是远远不够的。可以使用的知识形式有输出特征知识、中间特征知识、关系特征知识和结构特征知识。
从学生解题的角度,这 4 种知识形式可以形象比喻为:输出特征知识提供了解题的答案,中间特征知识提供了解题的过程,关系特征知识提供了解题的方法,结构特征知识则提供了完整的知识体系。
输出特征知识通常指的是教师模型的最后一层特征,主要包括逻辑单元和软目标的知识。
输出特征知识蒸馏的主要思想是促使学生能够学习到教师模型的最终预测,以达到和教师模型一样的预测性能。
相关文献的总结如下:
任务名称 | 知识的类型 | 描述 |
---|---|---|
目标分类 | 软目标知识 | 分类任务重点是学生如何模仿到教师的软目标。与硬目标知识相比,教师的软 目标提供给学生模型更多的类间知识。 目标分类任务的知识蒸馏就是学习教师 模型输出的软目标知识。 |
目标检测 | 边界框回归知识和软目标知识 | 目标检测网络的最后输出层包含区域建议网络(Region Proposal Network,RPN) 的边界框回归和区域分类网络(Region Classification Network,RCN)的软目标知 识. 前者的知识用于定位,后者用于分类。 |
目标分割 | 像素级软目标知识和空间上下文结构知识 | 目标分割需要分割出具有抽象语义的目标,即要对目标的每一个像素都要分类。 同时由于教师和学生模型输出的特征尺寸并不总是能直接进行匹配,因此要求学生模型在特征映射时学习教师模型的空间上下文结构知识。 |
序列特征 | 序列级输出概率分布 | 序列特征任务在数据对齐的情况下都可以使用帧级的知识蒸馏,其主要思想是匹配教师和学生间输出离散化的软目标。 然而在数据没有对齐的情况下,帧级的知识蒸馏实时地使用教师模型输出的每一种可能的序列分布来指导学生模型的训练。 序列级的知识蒸馏则在一个样本中,只将教师模型得分最高的输出序 列分布作为学生模型的监督信号,最优的序列分布代表了序列级的知识特性。 |
Gotmare 等人的研究表明:教师的软目标主要是指导学生在深层次的网络层训练,而在学生网络的特征提取层的指导较少。中间特征知识的主要思想是从教师中间的网络层中提取特征来充当学生模型中间层输出的提示(Hint)。 它不仅需要利用教师模型的输出特征知识,还需要使用教师模型隐含层中的特征图知识。
最早使用教师模型中间特征知识的是 FitNets,其主要思想是促使学生的隐含层能预测出与教师隐含层相近的输出。隐藏层损失定义为:
L Hint ( W Guided , W r ) = 1 2 ∥ u h ( x ; W Hint ) − r ( u g ( x ; W Guided ) ; W r ) ∥ 2 \begin{array}{r} L_{\text {Hint }}\left(W_{\text {Guided }}, W_r\right)=\frac{1}{2} \| u_h\left(x ; W_{\text {Hint }}\right) \\ -r\left(u_g\left(x ; W_{\text {Guided }}\right) ; W_r\right) \|^2 \end{array} LHint (WGuided ,Wr)=21∥uh(x;WHint )−r(ug(x;WGuided );Wr)∥2
中间特征的知识蒸馏要求将教师模型的特征提取能力迁移到学生模型中。在网络层的迁移点上,可以隔层,逐层和逐块地将教师的中间特征知识转移到学生模型中,或者仅迁移教师模型较高的隐含层和最后一个卷积层的特征知识。
知识蒸馏中应用最广的度量学习算法是 KL 散度,如用于最小化教师与学生 模型输出的相对概率分布。
关系特征知识
基于网络层的关系蒸馏
关系特征指的是教师模型不同层和不同数据样本之间的关系知识。关系特征知识蒸馏认为学习的 本质不是特征输出的结果,而是层与层之间和样本数据之间的关系。它的重点是提供一个恒等的关系映射使得学生模型能够更好的学习教师模型的关系知识。
Yim 等人的“Flow of Solution Procedure”(FSP)矩阵,其中通过模仿教师生成的 FSP 矩阵来实施对学生模型训练的指导。FSP 矩阵的知识蒸馏可视化结构如图:
Yim 等人的工作分为两阶段训练. 第一阶段最小化师生间的 FSP 矩阵距离,以使学生能学习到教师模型层间的关系知识。 第二阶段是使用正常的分类损失来优化学生模型。
Park 等人提出了基于样本的角度关系和距离关系蒸馏。其中的角度关系蒸馏用来测量三个样本角度关系。
缺点:基于 FSP 矩阵的方法要求网络的中间层具有相同大小和数量的过滤器,当师生网络层的维度不同时,该方法并不能用于表示学习。
这些方法由于不受师生网络结构的限制,特别适用于学生模型的模型压缩。
基于样本间的关系特征知识蒸馏
基于样本间的关系特征知识蒸馏是额外利用了不同样本之间的关系知识,即把教师模型捕捉到的数据内部关系迁移到学生模型中。
“学习排名”(Learning to Rank)算法是该方法中较早的工作,它将知识蒸馏形式化为师生网络之间样本相似性的排列匹配问题,提出利用不同样本之间的关系,并传递交叉样本的相似性知识来改善学生模型。
结构特征知识
结构特征知识是教师模型的完整知识体系,不仅包括教师的输出特征知识,中间特征知识和关系特征知识,还包括教师模型的区域特征分布等知识。
结构特征知识蒸馏是以互补的形式利用多种知识来促使学生的预测能包含和教师一样丰富的结构知识。
不同工作构成结构化特征知识的成份是不同的,比如:
知识合并(Knowledge Amalgamation,KA)是将多个教师或多个任务的知识迁移到单个学生模型,从而使其可以同时处理多个任务。
知识合并和多教师学习都是学习多个教师模型的知识,但是它们的目标却是不一样的。
You 等人利用投票策略从多个教师网络中筛选出相对不同的中间特征知识来强化学生模型的性能,其多个教师和单个学生模型的预测任务是相同的。
多个教师模型通过提供多个信息流对学生模型的任务提供了多种解释,学生模型可以利用教师模型对目标任务的“看法”(Views)来提高模型的性能。
随机选择一位教师模型的软目标;
通过动态权重选择较高效教师模型的软目标。
一些工作特别强调各个教师模型间知识的互补性,即它们自行选择具有互补性知识的教师模型。
Jiang 等人提出同时向能提供稳定信号的长期教师和高质量训练更新的短期教师学习来改善学生模型。
教师和学生模型由于容量差异大导致它们存在着“代沟”。 “代沟”既可以通过传递教师的特征知识去缓解,也可以使用教师助理(Teacher Assistant)网络去协助学生模型学习。
在许多实际应用中,数据通常以多种模态存在,一些不同模态的数据均是描述同一个事物或事件,我们可以利用同步的模态信息实现跨模态蒸馏(Cross Modal Distillation)。
Albanie等人提出的的跨模态情感识别方法人在说话时脸部的情感和语音情感是一致的,利用这种同步对齐的模态信息将无标签的视频作为输入数据进行训练,视频中的图片进入预训练的人脸教师模型中产生软目标来指导学生的语音模型训练。
论文 | 描述 |
---|---|
Aytar 等人 | 将大规模无标签视频中的图片预测软标签对视频中的声音识别进行指导学习. |
Girdhar 等人 | 收集和标记大型和干净的静态图像数据集作为教师训练和引导无标签的视频学习丰富的知识表示. |
Liu 等人 | 将现有弱监督检测模型中的局部语义区域和类相关性蒸馏到无标注的多标签图像分类任务中. |
Gupta 等人 | 将从标注过大样本的 RGB 图像模态中学习得到的特征作为监督信号,用于无标注样本深度和光流图像模态的特征学习. |
Wang 等人 | 使用知识蒸馏纠正 2D 地标注释重建 3D 姿势估计所犯的一些错误,从而避免对 3D标签的依赖. |
Luo 等人 | 使用图蒸馏动态学习蒸馏方向和权重来更好利用大规模多模态数据集的“特权信息” |
Liu 等人 | 将 ImageNet 的语义信息迁移到草图检索任务中. |
Hoffman 等人 | 提出了一个幻觉网络来学习深度图片的特权信息来提高 RGB 目标检测的性能,它通过在测试时学习教师模型的中间层特征来弥补丢失的信息流. |
Aditya 等人 | 将基于问题和场景图的附加信息以空间知识的形式用于视觉推理问题中. |
Ye 等人 | 通过构造实例与实例之间的关系将不同领域教师模型的知识迁移到新领域的学生模型中. |
Yuan 等人 | 将图像语义理解的知识迁移到文本到图像合成的任务中. |
Li 等人 | 将磁共振成像的知识以相互学习的方式迁移到计算机断层扫描的分割任务中. |
Piao 等人 | 将深度的“特权信息”迁移到 RGB 流中. |
Garcia 等人 | 通过时空表示的乘法连接,利用软目标和硬目标以及特征图之间的距离来学习视频中深度特征的“特权信息”. |
Tavakolian 等人 | 通过帧自适应加权将视频中每一帧的时空信息蒸馏到图像中. |
Gu 等人 | 通过强制匹配共享特征空间的方式将视频表示网络所学习的时间知识传播到图像表示网络中. |
Zhao 等人 | 将从包含两个模态的配对样本的源数据集中学习提炼的交叉模式知识推广到目标数据集 |
Hu 等人 | 通过利用无监督教师模型输出中获得的广泛的相关性信息来监督学生模型的训练. |
Li 等人 | 传递字幕新闻符号的知识以提高单词级手语识别性能. |
是让一组未经训练的学生模型同时开始学习,并共同解决任务。 它是一种在线的知识蒸馏,即教师和学生模型是同时训练并更新的。
思想由 Zhang 等人于 2017 年提出,其意义在于没有强大教师的情况下,学生模型可以通过相互学习的集成预测来提高性能。
深度学习网络在学习新任务时,对旧任务的性能就会急剧下降,这个现象被称为灾难性遗忘。这就需要使用终身学习来减轻这种影响,终身学习也称为持续学习或增量学习。
终身
蒸馏就是通过知识蒸馏来保持旧任务和适应新任务的性能,其重点是训练新数据时如何保持旧任务的性能来减轻灾难性遗忘。
Li等人通过引入知识蒸馏来保持旧任务性能的“学习而不遗忘”(Learning without Forgetting)算法。
通过缓存一小部分旧任务数据和产生旧任务相似的输出值或视觉模式都能使网络在学习新任务的同时保持旧任务性能。
自蒸馏(Self-Distillation)是单个网络被同时用作教师和学生模型,让单个网络模型在自我学习的过程中通过知识蒸馏去提升性能。
Mobahi 等人认为自蒸馏是通过逐渐减少代表解的基函数数量来不断修改正则化。
Zhang 等人认为自蒸馏先前的迭代都能为后续的迭代充当教师作用,从而通过多次的迭代之后能学习到多样性的知识。
自蒸馏分为两类:
知识蒸馏的方法 | 优点 | 缺点 |
---|---|---|
知识合并 | 多用途的学生网络能减少部署的成本和提高模型的利用率. | 相较于单网络预测单个目标任务,多用途学生网络的性能可能会下降. |
多教师学习 | 相比于单个老师,多个老师通常能让学生网络学习到更好的、更丰富的知识. | 难以高效地融合各个教师网络的知识. |
教师助理 | 减少师生网络存在的“代沟”,有助于学生网络更好地训练. | 通常会增加训练的成本 |
跨模态蒸馏 | 通过跨模态的数据集来实现少样本学习或半监督学习,减少对带标签数据的依赖. | 获取同步的跨模态数据并不是一个很容易的任务. |
相互蒸馏 | 节省训练教师网络的时间,提高了训练的效率. | 可能会陷入“瞎子带领瞎子”的局面. |
终身蒸馏 | 能保护旧任务的数据隐私,并提高训练的效率. | 难以维持旧任务的性能. |
自蒸馏 | 节省训练教师网络的时间,提高了训练的效率. | 缺少丰富的外部知识. |