知识蒸馏的简要概述

简介: 知识蒸馏是一种在繁琐的模型中提炼知识并将其压缩为单个模型的方法,以便可以将其部署到实际应用中。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和知识蒸馏的结合是提高神经网络性能的一种非常强大的方案。

相关文章
|
4月前
|
机器学习/深度学习 Python
CatBoost高级教程:深度集成与迁移学习
CatBoost高级教程:深度集成与迁移学习【2月更文挑战第17天】
66 1
|
存储 弹性计算 NoSQL
libcuckoo论文概述
本文简要阐述libcuckoo项目的两篇论文基础。如有错漏之处,欢迎指出一起讨论交流。 ## 论文1 《MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing》 这篇论文主要讲了在多线程模式下如何提升cuckoo hash table的吞吐。 ### 问题 传统hash表在并发效率上并不
1801 0
libcuckoo论文概述
|
4月前
|
机器学习/深度学习 算法 计算机视觉
目标检测的基本概念有哪些
目标检测的基本概念有哪些
|
29天前
|
机器学习/深度学习 数据采集 自然语言处理
迁移学习的基本概念与应用
迁移学习是一种机器学习技术,旨在将从一个领域中学到的知识应用到另一个相关领域中,以解决目标任务的训练数据不足和模型训练时间过长的问题。它在计算机视觉、自然语言处理等领域中得到了广泛应用。
27 2
|
24天前
|
机器学习/深度学习 算法 计算机视觉
5.1 目标检测基本概念和YOLOv3设计思想
这篇文章详细介绍了目标检测的基本概念、发展历程、设计思想以及YOLOv3算法,解释了如何通过不同的方法生成候选区域并对这些区域进行分类以实现目标检测任务。
|
4月前
|
计算机视觉 网络架构
【YOLOv8改进】MSBlock : 分层特征融合策略 (论文笔记+引入代码)
YOLO-MS是一个创新的实时目标检测器,通过多尺度构建块(MS-Block)和异构Kernel选择(HKS)协议提升多尺度特征表示能力。它在不依赖预训练权重和大型数据集的情况下,在MS COCO上超越了YOLO-v7和RTMDet,例如YOLO-MS XS版本(4.5M参数,8.7G FLOPs)达到了43%+的AP,比RTMDet高2%+。MS-Block利用分层特征融合和不同大小的卷积,而HKS协议根据网络深度调整Kernel大小,优化多尺度语义信息捕获。此外,YOLO-MS的模块化设计允许其作为即插即用的组件集成到其他YOLO模型中,提升它们的检测性能。
|
机器学习/深度学习 人工智能 算法
因果发现方法概述
直到今天,发现因果关系仍然不是一件简单的事情,要么需要进行精心控制的实验,要么依赖人类的原始直觉。随着技术的不断进步,人工智能可以帮助我们发现因果关系。因果AI能够结合人类直觉和经验,通过观测数据自主发现因果关系。
343 0
因果发现方法概述
|
Web App开发 监控 安全
【应用分类】技术应用概述
【应用分类】技术应用概述
|
机器学习/深度学习 算法 数据可视化
机器学习基础——k-近邻算法概述和简单实现
本章介绍第一个机器学习算法:k-近邻算法,它非常有效而且易于掌握。首先,我们将探讨k-近邻算法的基本理论,以及如何使用距离测量的方法分类物品;其次我们将使用Python从文本文件中导人并解析数据。
170 0
机器学习基础——k-近邻算法概述和简单实现
|
机器学习/深度学习 存储 人工智能
人工神经网络概述|学习笔记
快速学习人工神经网络概述
165 0
人工神经网络概述|学习笔记