前言 本文将对 response-based、feature-based 和relation-based 这三类根底 KD 算法进行关键介绍,为我们后续的深化研讨、沟通打下根底。

本文转载自OpenMMLab

作者 | 带来新常识的

欢迎关注大众号CV技能攻略,专心于核算机视觉的技能总结、最新技能跟踪、经典论文解读、CV招聘信息。

核算机视觉入门1v3辅导班

常识蒸馏(Knowledge Distillation,简记为 KD)是一种经典的模型压缩方法,中心思维是通过引导轻量化的学生模型“仿照”功用更好、结构更杂乱的教师模型(或多模型的 ensemble),在不改变学生模型结构的情况下进步其功用。

2015 年 Hinton 团队提出的根据“呼应”(response-based)的常识蒸馏技能(一般将该文算法称为 vanilla-KD [1])掀起了相关研讨热潮,这以后根据“特征”(feature-based)和根据“联系”(relation-based)的 KD 算法被陆续提出。

以上述三类蒸馏算法为根底,学术界不断涌现出致力于解决各特定问题、面向各特定场景的 KD 算法,如:

  1. 零练习数据情况下的 data-free KD;
  2. 教师模型也权重更新的 online KD、self KD;
  3. 面向检测、切割、自然语言处理等使命的 KD 算法等。

关于知识蒸馏,你一定要了解的三类基础算法

图 1 三类根底的常识蒸馏算法的常识来历示意图

源自参考文献 [2]

本系列文章将以 MMRazor 算法库为依托,逐步揭开各类 KD 算法的奥秘面纱。

MMRazor 链接:

github.com/open-mmlab/…

1 Response-based KD

如下图所示,Response-based KD 算法以教师模型的分类猜测成果为“方针常识”。详细来说,这里的分类猜测成果指的是分类器最终一个全衔接层的输出(称为 logits)。

关于知识蒸馏,你一定要了解的三类基础算法

图 2 根据呼应的常识蒸馏算法示意图,源自参考文献 [2]

与模型的最终输出比较,logits 没有通过 softmax 进行归一化,非方针类别对应的输出值尚未被抑制(假设教师模型 logits 中方针类其他对应值最高)。

在得到教师和学生的 logits 后,运用温度系数 T 别离对教师和学生的 logits 进行“软化”,进而核算二者的差异,详细的 loss 核算公式为:

关于知识蒸馏,你一定要了解的三类基础算法

其间 z 为 logits, 为 logtis 中第 i 个类其他对应值,丢失函数 L() 一般运用 KL 散度核算差异。T 一般取大于 1 的整数值,此刻方针类与非方针类的猜测值差异减小,logits 被“软化”。相反地,T 小于 1 时会进一步拉大方针类与非方针类的数值差异,logtis 趋向于 one-hot。

由上可知,response-based KD 算法的常识提取和 loss 核算进程十分简练,且 logits 本身具备较好了解的实际意义(模型判断当时样本为各类其他信心多少),因而研讨者们将更多的注意力会集于 response-based KD 算法收效原因的解说

1.1 Non-target class information

Vanilla-KD 以为:logits 供给的“软标签”信息比较于 one-hot 方式的真值标签(GT Label)有着更高的熵值,然后供给了更高的信息量以及数据之间更小的梯度差异。

文中举了一个 MNIST 数据会集的比如,对于某个手写数字 2,模型以为它是 3 的可能性为 ,是 7 的可能性为 。其间便蕴含着“比较于 7 而言,当时的手写数字 23 愈加近似”的信息,然后供给了当时样本与各非方针类其他类间联系信息

但 logits 中的非方针类其他猜测值一般相对过小(如上述猜测为 3 的可能性仅为 ),因而文中运用大于 1 的温度系数 T 降低类间得分差异(增大非方针类的猜测值)。

DKD [3] 算法将 logits 信息拆分红方针类与非方针类两部分,进一步验证并得到 logits 中的非方针类别供给的信息是 response-based KD 起效的要害

DKD 首先对原始 KD 丢失进行拆解,然后解耦 KD 丢失为 target class knowledge distillation (TCKD)和 non-target class knowledge distillation(NCKD)两部分:

关于知识蒸馏,你一定要了解的三类基础算法

其间,TCKD 相当于方针类概率与(1-方针类概率)的二元猜测丢失,NCKD 则是不考虑方针类后的软标签蒸馏丢失。之后对 TCKD 和 NCKD 的效果做融化,成果如下表所示,其间二者一起运用代表着原始 KD 丢失。能够看到独自运用 NCKD 的效果十分好,乃至普遍优于完整的 KD 丢失,而独自运用 TCKD 带来的功用进步不大乃至会降低练习效果。

关于知识蒸馏,你一定要了解的三类基础算法

表 1 TCKD 和 NCKD 的融化试验成果

那么对于方针类其他蒸馏部分是否应该直接去除呢?TCKD 在哪些使命场景中是有用的呢?

1.2 Difficulty transfer

DKD 以为教师 logits 中方针类猜测值代表着教师模型对各样本的难度评价,举个比如,方针类别猜测值为 0.99 的样本要比 0.75 的样本更简略。

当数据集较为简略时(如 1.1 节试验中运用的 CIFAR-100 数据集),教师模型 logtis 中方针类猜测值均较高,样本难度信息的信息量很低时 TCKD 的效果会随之变差。

相反地,DKD 中相关试验标明,当通过数据增强、标签噪声化处理或使命本身较困难时,TCKD 的正面效果会愈加显着。运用数据增强后的试验成果如下所示(运用 CIFAR-100 数据集),能够看到此刻 TCKD 带来的正面效果显着。

关于知识蒸馏,你一定要了解的三类基础算法

表 2 运用数据增强的情况下,增加 TCKD 带来的功用收益,功用方针为 top-1 准确率

无独有偶,BAN [4] 算法也对 logtis 中的方针类猜测值进行了关键剖析验证。

通过公式推导(详细推导进程见 BAN section 3.2)得到定论:教师 logits 中的方针类猜测值相当于各样本的加权因子

直接运用方针类猜测值进行丢失加权(Confidence Weighted by Teacher Max, CWTM)的成果如下所示(运用 CIFAR-100 数据集,方针为 test error),模型功用得到小幅进步。

关于知识蒸馏,你一定要了解的三类基础算法

表 3 CWTM 和 DKPP 用在不同模型上的蒸馏成果,功用方针为错误率,越小越好

需求说明的是:BAN 为级联自蒸馏算法,上表中 Teacher 即为学生模型;DKPP 为 dark knowledge with Permuted Predictions 的简写,详细做法为打乱非方针类的猜测值,如原始为 [0.05, 0.2, 0.1, 0.6] 的 logits 打乱为 [0.2, 0.1, 0.05, 0.6]。

为什么 BAN 中运用打乱非方针类后的 logits 蒸馏(DKPP)依然有用,且在 DenseNet80-80 和 80-120 模型中得到了比 CWTM 更好的功用呢?

1.3 Label smoothing

原因在于,此刻的软标签仍在起到类似标签滑润(label smoothing)的效果,然后进步了模型的泛化性。标签滑润是一种缓解模型过拟合问题的技能,它将 one-hot 方式的标签转化为如下方式,其间 为人为设定的超参数。

参考文献 [5] 以为:one-hot 方式的标签会鼓舞模型将方针类其他概率猜测为 1、非方针类其他概率猜测为 0,然后导致 logtis 中方针类的值趋于无穷大。当练习数据质量较差(有偏散布显着)或数量较少时容易导致模型 over-confident。因而,为了进步模型的泛化才能,标签滑润将方针类的一部分标签值均匀分给了非方针类。

关于知识蒸馏,你一定要了解的三类基础算法

能够发现,软标签与标签滑润有着异曲同工之妙,软标签在不经意间起到了标签滑润的效果。二者最主要的区别在于,软标签中非方针类的标签由教师给出,包含着类间联系信息。DKPP 打乱各类猜测值后导致类间联系错乱,但仍起到了标签滑润的效果。

关于软标签丢失与标签滑润丢失的相同性、相异性等进一步联系剖析详见参考文献 [6],一起,关于运用标签滑润练习后的教师能否用于常识蒸馏等问题的探求可见参考文献 [6]、[7]、[8]。

1.4 Quantifying

进一步地,response-based KD 在模型练习进程中起到了哪些正面影响(除了最终功用的进步)呢?

参考文献 [9] 从信息量化的视点对蒸馏进程进行了深化剖析,该文章的深度剖析可见榜首作者的知乎答复,本文不再布鼓雷门。文章中验证为真的三个假设为:

  1. 比起直接从数据学习,蒸馏算法往往使得深度神经网络(DNN)学到更多的常识;

  2. 比起直接从数据学习,蒸馏算法往往使得 DNN 更倾向于一起学到不同常识;

  3. 比起直接从数据学习,蒸馏算法往往使得 DNN 的优化方向更为安稳。

1.5 太长不看,直接看定论

假如你没有足够的时间浏览上面的各项论说,能够直接获取本节的定论:

  1. logits 中的非方针类信息是 response-based KD 起效的要害;

  2. 方针类信息传递的是教师模型对各样本“难度”的评价,数据噪声较大、使命困难的情况下,难度传递的效果更为显着;

  3. logits 比较于 one-hot label 而言,起到了类似标签滑润的效果,抑制了模型的 over-confidence 倾向,然后进步了模型泛化性;

  4. 从信息量化的视点来看,response-based KD 往往使得模型学到更多的常识、更倾向于一起学到不同的常识、优化方向更为安稳。

2 Feature-based KD

一般的常识蒸馏设置中,教师模型与学生模型的分类器(或检测器、解码器等)是一致的,二者的差异在于特征提取器(或称 backbone、encoder)才能的强弱。

对于深度神经网络而言,由输入数据笼统而来的特征的质量凹凸,很大程度上决定了模型功用的好坏。自然而然地,以教师模型特征提取器发生的中间层特征为学习对象的 feature-based KD 算法应运而生。

关于知识蒸馏,你一定要了解的三类基础算法

图 3 FitNets 蒸馏算法示意图

最先成功将上述思维应用于 KD 中的是 FitNets [10] 算法,文中将教师的中间层输出特征界说为 Hints,以教师和学生特征图中对应方位的特征激活的差异为丢失。

一般情况下,教师特征图的通道数大于学生通道数,二者无法彻底对齐。为解决该问题,一般在学生特征图后接卷积层(或全衔接层、由多层卷积构成的卷积模块等),将学生特征图通道数与教师特征图通道数对齐,然后完成特征点的一一对应。

丢失函数核算公式如下所示,其间 和 别离代表教师和学生的特征图, 和 别离代表对教师和学生特征的转化,然后完成二者的维度对齐, 一般运用 丢失。

关于知识蒸馏,你一定要了解的三类基础算法

2.1 Connector

完成特征对齐功用的模块(上面说到的 和 )是 feature-based KD 算法的中心模块(本文中称之为 connector),也是许多算法的关键研讨对象。

如针对教师 connector 进行预练习的 Factor Transfer [11] 算法;以二值化方式挑选教师和学生原始特征的 AB [12] 算法;将特征值转化为注意力值的 AT [13] 算法等。

OFD [14] 对各相关算法进行总结,研讨了多种蒸馏算法采用的特征方位、 connector 的构成、丢失函数等要素对信息丢失的影响,汇总表如下所示:

关于知识蒸馏,你一定要了解的三类基础算法

表 4 各蒸馏算法的细节差异与信息丢失情况,表中的文献编号与本文不相对应

能够看到 connector 的款式多变,特征的选取方位也是多种多样,因而将上表中的算法集成到一个算法框架中看起来比较困难。那么,有没有一个算法库成功做到了这一点呢?

好消息!好消息!上面说到的 FitNets、Factor Transfer、AB、AT Loss(AT 算法与蒸馏最相关的丢失核算部分)、OFD 等算法均被集成到了 MMRazor 算法库中,且中心模块 connector 被独自笼统出来作为可装备组件,十分便于我们进行“算法魔改”(如为 FitNets 算法装备上 Factor Transfer 的 connector 并核算 AT Loss)。

Recorder 机制更是完成了 function、method、model和parameter 等各类信息的“无痛”获取,我们不需求额定进行代码编写,只需求略微更改 config 装备便可获取你想要的信息。

关于知识蒸馏,你一定要了解的三类基础算法

表 5 MMRazor 中多种类型的 Recorder

2.2 Summary

Feature-based KD相关的研讨较多,本文不再进行深化评论。稍作总结的话,该类别算法的中心关注点在于:

  • 常识的定位(规划规矩选出更为重要的教师特征,这一点在检测蒸馏算法中十分重要)
  • 怎么进行特征维度对齐、特征语义对齐、特征加权(connector 规划)
  • 怎么进行常识的高效传递(特征 fusion、loss 规划)

3 Relation-based KD

最终一个蒸馏根底算法是 relation-based KD,有的研讨者会将该类别算法视为 feature-based KD 算法的一种。原因在于 relation-based KD 运用的信息也是模型特征,只不过核算的不是对应特征点之间的一对一差异,而是特征联系的差异。

relation-based KD 算法关心的关键是样本之间或特征层之间的联系,如别离构建教师和学生特征层之间联系矩阵的 FSP [15] 算法、别离构建相同 batch 内教师和学生各样本特征之间联系矩阵的 RKD [16] 算法,二者均核算联系矩阵的差异丢失。

关于知识蒸馏,你一定要了解的三类基础算法

图 4 根据联系的常识蒸馏算法示意图

上图来历自参考文献 [2]

3.1 Relational Knowledge Distillation

以 RKD 算法为例,其间心思维如下图所示。RKD 以为联系是一种更 high-level 的信息,样本之间的联系差异信息优于单个样本在不同模型的表达差异信息,其间联系的差异一起包含两个样本之间的联系差异和三个样本之间的夹角差异。

关于知识蒸馏,你一定要了解的三类基础算法

图 5 RKD 算法中的“联系”示意图

将两两样本之间的联系组成的联系矩阵差异丢失记为 ,核算公式如下所示:

关于知识蒸馏,你一定要了解的三类基础算法

其间, 为 Huber loss, 核算的是欧式间隔, 、 为不同样本的特征。将三个样本之间的夹角组成的视点联系矩阵差异丢失记为 ,核算公式如下所示:

关于知识蒸馏,你一定要了解的三类基础算法

其间, 为 Huber loss, 核算夹角余弦值,详细核算公式为:

关于知识蒸馏,你一定要了解的三类基础算法

3.2 Summary

近年来,relation-based KD 算法在切割使命中不断取得突破。同一张图画中,像素点之间的特征联系差异或区域之间的特征联系差异成为蒸馏切割模型的有用手法。但在检测使命中 relation-based KD 算法取得的成果较少。

一个可能的原因在于,构建高质量的联系矩阵需求很多的样本,分类和切割(以像素点或区域为样本)使命的样本数量足够大;而受限于存储空间大小等硬件要素,检测使命同一个 batch 中的远景方针(object)数量较少且存在低质量远景方针(被遮挡的、含糊的物体等),因而制约了样本间联系蒸馏在检测使命上的应用。

4 Conclusion

本文对常识蒸馏中的三类根底算法进行了浅陋的介绍,近年来的 KD 算法大多是依托于这三类根底算法进行的优化升级,信任本文对我们在常识蒸馏的进一步研讨会有所协助。

参考文献:

  • [1] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015, 2(7).

  • [2] Gou J, Yu B, Maybank S J, et al. Knowledge distillation: A survey[J]. International Journal of Computer Vision, 2021, 129(6): 1789-1819.

  • [3] Zhao B, Cui Q, Song R, et al. Decoupled Knowledge Distillation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 11953-11962.

  • [4] Furlanello T, Lipton Z, Tschannen M, et al. Born again neural networks[C]//International Conference on Machine Learning. PMLR, 2018: 1607-1616.

  • [5] Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2818-2826.

  • [6] Shen Z, Liu Z, Xu D, et al. Is label smoothing truly incompatible with knowledge distillation: An empirical study[J]. arXiv preprint arXiv:2104.00676, 2021.

  • [7] Mller R, Kornblith S, Hinton G E. When does label smoothing help?[J]. Advances in neural information processing systems, 2019, 32.

  • [8] Chandrasegaran K, Tran N T, Zhao Y, et al. Revisiting Label Smoothing and Knowledge Distillation Compatibility: What was Missing?[C]//International Conference on Machine Learning. PMLR, 2022: 2890-2916.

  • [9] Zhang Q, Cheng X, Chen Y, et al. Quantifying the Knowledge in a DNN to Explain Knowledge Distillation for Classification[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022.

  • [10] Romero A, Ballas N, Kahou S E, et al. Fitnets: Hints for thin deep nets[J]. arXiv preprint arXiv:1412.6550, 2014.

  • [11] Kim J, Park S U, Kwak N. Paraphrasing complex network: Network compression via factor transfer[J]. Advances in neural information processing systems, 2018, 31.

  • [12] Heo B, Lee M, Yun S, et al. Knowledge transfer via distillation of activation boundaries formed by hidden neurons[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33(01): 3779-3787.

  • [13] Zagoruyko S, Komodakis N. Paying more attention to attention: Improving the performance of convolutional neural networks via attention transfer[J]. arXiv preprint arXiv:1612.03928, 2016.

  • [14] Heo B, Kim J, Yun S, et al. A comprehensive overhaul of feature distillation[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 1921-1930.

  • [15] Yim J, Joo D, Bae J, et al. A gift from knowledge distillation: Fast optimization, network minimization and transfer learning[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4133-4141.

  • [16] Park W, Kim D, Lu Y, et al. Relational knowledge distillation[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 3967-3976.

欢迎关注大众号CV技能攻略,专心于核算机视觉的技能总结、最新技能跟踪、经典论文解读、CV招聘信息。

核算机视觉入门1v3辅导班

【技能文档】《从零搭建pytorch模型教程》122页PDF下载

QQ沟通群:444129970。群内有大佬担任回答我们的日常学习、科研、代码问题。

其它文章

深度了解变分自编码器(VAE) | 从入门到精通

核算机视觉入门1v3辅导班

核算机视觉沟通群

用于超大图画的练习策略:Patch Gradient Descent

CV小常识评论与剖析(5)到底什么是Latent Space?

【免费送书活动】关于语义切割的亿点思考

新方案:从错误中学习,点云切割中的自我规范化层次语义表明

经典文章:Transformer是怎么进军点云学习领域的?

CVPR 2023 Workshop | 首个大规模视频全景切割比赛

怎么更好地应对下流小样本图画数据?不平衡数据集的建模的技巧和策

Transformer沟通群

U-Net在2022年相关研讨的论文引荐

用少于256KB内存完成边际练习,开销不到PyTorch千分之一

PyTorch 2.0 重磅发布:一行代码提速 30%

Hinton 最新研讨:神经网络的未来是前向-前向算法

聊聊核算机视觉入门

FRNet:上下文感知的特征强化模块

DAMO-YOLO | 超越所有YOLO,统筹模型速度与精度

《医学图画切割》总述,胪陈六大类100多个算法

怎么高效完成矩阵乘?万文长字带你从CUDA初学者的视点入门

近似乘法对卷积神经网络的影响

BT-Unet:医学图画切割的自监督学习框架

语义切割该怎么走下去?

轻量级模型规划与布置总结

从CVPR22动身,聊聊CAM是怎么激活我们文章的热度!

入门必读系列(十六)经典CNN规划演变的要害总结:从VGGNet到EfficientNet

入门必读系列(十五)神经网络不work的原因总结

入门必读系列(十四)CV论文常见英语单词总结

入门必读系列(十三)高效阅览论文的方法

入门必读系列(十二)池化各关键与各方法总结

TensorRT教程(三)TensorRT的装置教程

TensorRT教程(一)初次介绍TensorRT

TensorRT教程(二)TensorRT进阶介绍