知识蒸馏的简要概述

简介: 知识蒸馏是一种在繁琐的模型中提炼知识并将其压缩为单个模型的方法,以便可以将其部署到实际应用中。AI的教父Geoffrey Hinton和他在Google的两个同事Oriol Vinyals和Jeff Dean于2015年引入了知识蒸馏。

知识蒸馏是一种在繁琐的模型中提炼知识并将其压缩为单个模型的方法,以便可以将其部署到实际应用中。AI的教父Geoffrey Hinton和他在Google的两个同事Oriol Vinyals和Jeff Dean于2015年引入了知识蒸馏。

8490a697579cff25f6db7ab0314e441f.jpg

知识蒸馏是指将笨拙的模型(教师)的学习行为转移到较小的模型(学生),其中,教师产生的输出被用作训练学生的“软目标”。通过应用此方法,作者发现他们在MNIST数据集上取得了令人惊讶的结果,并表明通过将模型集成中的知识提取到单个模型中可以获得显着的改进。


知识蒸馏用于图像分类

 

Hinton和他的两位合著者在论文中首先介绍了他们对图像分类任务的知识蒸馏:在神经网络中提炼知识。


如本文所述,知识蒸馏的最简单形式是在具有软目标分布的传递集上训练蒸馏模型。到目前为止,我们应该知道有两个目标用于训练学生模型。一个是正确的标签(硬目标),另一个是从教师网络生成的软标签(软目标)。

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读

因此,目标函数是两个不同目标函数的加权平均值。 第一个目标函数是学生预测和软目标之间的交叉熵损失,第二个目标函数是学生输出和正确标签之间的交叉熵损失。 作者还提到,最好的结果通常是通过在第二目标函数上使用较低的权重来获得的。

 

实验结果如下所示

276ef308fe487e11b9917e20099ffcb2.png

496bfba5e05ac858f52f900b647f08a8.png

知识蒸馏用于目标检测

 

Guobin Chen和他的合著者在NeurIPS 2017中发表了他们的知识蒸馏与提示学习相结合的对象检测研究,该论文通过知识蒸馏学习有效的对象检测模型。


在他们的方法中,他们还使用提示,该提示是从教师的中间层获得的特征图,用于指导学生尽可能地了解教师的行为。 此外,为了实现最佳的蒸馏知识,必须有一个适应层,该适应层将在后面讨论。 Faster-RCNN是本文实验中使用的目标检测网络。他们的学习方案如下图所示:

00f2931a86659754932fd53835df8761.png

目标函数如下:

9f6f6336ef0851d573c82304fb684d82.png

9f6f6336ef0851d573c82304fb684d82.png

其中RCN和RPN分别代表回归分类网络和区域提议网络;N和M分别是RCN和RPN的批量大小;L_RCN,L_RPN和L_Hint分别是RCN,RPN和提示的损失;λ(通常为1)和γ(通常设置为0.5)是用于控制最终损耗的超参数。

 

Hint learning

 

Adriana Romero在《FitNets: Hints for Thin Deep Nets》一文中证明,通过利用教师网络的中间表示作为提示来帮助学生进行训练,可以提高学生网络的性能。从这个意义上讲,提示特征Z(从教师的中间层获得的特征图)和引导特征V(学生的中间层的特征图)之间的损失是使用L1或L2距离计算的。


下图显示了从在WAYMO数据集上训练的预训练YOLOv4模型中提取的特征图,这是我的与知识蒸馏进行目标检测有关的项目之一。 在这些示例中,输入图像的大小调整为800x800。

1b19f14a9ccf6185454e1cf381ef9e13.png


知识蒸馏和提示学习

 

Hint learning的使用要求提示功能和引导功能应具有相同的形状(高度x宽度x通道)。同样,提示特征和引导特征将永远不会在相似的特征空间中,因此,使用自适应层(通常是1x1卷积层)来帮助改善知识从教师到学生的转移。

 

0ffd2ea491fe9f02a32bf54c20c94270.png


 下图描述了我在目标检测项目中正在研究的学习方案,其中,我正在使用一个具有三个检测级别的小型网络,从预先训练的YOLOv4中提取知识。

1d02edb7eb675eaa87dd42879b570408.png

Guobin Chen在将知识蒸馏与Hint learning相结合进行目标检测时显示出优异的结果。

243579becad2f1998996b3847857c313.png

Conclusion

 

在这篇文章中,我简要介绍了知识蒸馏和Hint learning。知识蒸馏被认为是一种将繁琐的模型集成知识转换成较小的蒸馏模型的有效方法。Hint learning和知识蒸馏的结合是提高神经网络性能的一种非常强大的方案。

相关文章
|
编译器
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
10675 0
|
机器学习/深度学习 传感器 算法
单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法
本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet、SMOKE等。 基于深度信息的方法 涉及到模型包括:MF3D、MonoGRNet、D4LCN、MonoPSR等。 基于点云信息的方法 涉及到模型包括:Pseudo lidar、DD3D、CaDDN、LPCG等。
3029 2
|
存储 开发框架 .NET
【博士每天一篇文献-综述】A Comprehensive Survey of Continual Learning Theory, Method and Application
本文综述了持续学习的理论基础、方法论和应用实践,探讨了五种主要的解决策略,包括基于回放、架构、表示、优化和正则化的方法,并深入分析了持续学习的不同场景、分类、评价指标以及面临的挑战和解决方案。
896 1
【博士每天一篇文献-综述】A Comprehensive Survey of Continual Learning Theory, Method and Application
|
机器学习/深度学习 PyTorch 算法框架/工具
数据平衡与采样:使用 DataLoader 解决类别不平衡问题
【8月更文第29天】在机器学习项目中,类别不平衡问题非常常见,特别是在二分类或多分类任务中。当数据集中某个类别的样本远少于其他类别时,模型可能会偏向于预测样本数较多的类别,导致少数类别的预测性能较差。为了解决这个问题,可以采用不同的策略来平衡数据集,包括过采样(oversampling)、欠采样(undersampling)以及合成样本生成等方法。本文将介绍如何利用 PyTorch 的 `DataLoader` 来处理类别不平衡问题,并给出具体的代码示例。
3095 2
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
5160 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
网络协议 网络安全 网络虚拟化
网络技术基础(4)——IP地址规划
【2月更文挑战第8天】网络基础笔记
|
机器学习/深度学习 人工智能 算法
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(下)
今天分享一篇上交投稿TPAMI的文章,论文很全面的调研了广义上的弱监督分割算法,又涵盖了语义、实例和全景三个主流的分割任务。特别是基于目标框的弱监督分割算法,未来有很大的研究价值和落地价值,相关算法如BoxInst、DiscoBox和ECCV2022的BoxLevelset已经证明了,只用目标框可以实现可靠的分割性能。论文很赞,内容很扎实,分割方向的同学一定不要错过!
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(下)
|
机器学习/深度学习 人工智能 算法
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(上)
今天分享一篇上交投稿TPAMI的文章,论文很全面的调研了广义上的弱监督分割算法,又涵盖了语义、实例和全景三个主流的分割任务。特别是基于目标框的弱监督分割算法,未来有很大的研究价值和落地价值,相关算法如BoxInst、DiscoBox和ECCV2022的BoxLevelset已经证明了,只用目标框可以实现可靠的分割性能。论文很赞,内容很扎实,分割方向的同学一定不要错过!
一文尽览!弱监督语义/实例/全景分割全面调研(2022最新综述)(上)
|
机器学习/深度学习 人工智能 文字识别
【学习打卡03】可解释机器学习笔记之CAM类激活热力图
【学习打卡03】可解释机器学习笔记之CAM类激活热力图