论文解读 | 解耦知识蒸馏

news2024/11/25 0:27:44

10 年来,DNN 的变革给计算机视觉领域带来了重大发展,促成了各种实时任务的繁荣,如图像分类、目标检测、语义分割等。然而强大的网络通常得益于大的网络容量,这通常以大量的计算和存储为代价,是工业应用所不喜欢的。在工业应用中,广泛采用的是轻量的模型。知识蒸馏是减小这种代价的一个有效方法,它可以把重型模型的知识迁移到轻型模型上,从而提高轻型模型的性能。知识蒸馏的概念最初是 Hinton 在论文 “Distilling the knowledge in a neural network” 中提出的,它通过最小化老师网络和学生网络输出 logit 的 KL 散度来完成知识迁移,见下图 (a)。但是自从 Fitnets 以来,有关知识蒸馏的研究大多都转移到了对中间层的深度特征的知识蒸馏,因为基于特征的蒸馏在各种任务上都性能更加优异。然而基于特征的蒸馏有一个缺点:在训练过程中,会引入大量额外的对计算和存储资源的需求。7881fcc48642f574f08e17bb772cc4e9.png

基于 logit 的蒸馏恰恰能解决这一问题,只是经典 KD 性能一般。从直觉上来说,基于 logit 的知识蒸馏应当能达到和基于特征的知识蒸馏相当的性能,因为 logits 相对于深层特征,表达了更高层次的语义。“Decoupled Knowledge Distillation”论文重构了经典知识蒸馏的表达方式,通过新的表达方式分析了经典的基于 logit 的知识蒸馏性能不理想的原因,并提出了解决问题的方法:解耦知识蒸馏(Decoupled Knowledge Distillation, DKD),一种新的基于 logit 的知识蒸馏,见上图 (b)。DKD 在各种任务上能达到 SOTA,比起基于特征的知识蒸馏,有着更高的训练效率和特征迁移性能。

重新思考知识蒸馏

重写知识蒸馏的公式

一些标记符号:

  1. 分类概率 ,其中 中的每个元素可以表示为公式(1), 表示第 i 类的 logit 输出。 

  2. 二元概率 , 表示目标类的概率, 表示所有其他的非目标类的概率,可以按下面的公式进行计算:

  3. 非目标类中的独立的模型概率分布

重写公式

表示老师, 表示学生,经典的 KD 使用 KL 散度来计算 loss,忽略温度 T,其 loss 值可以用公式(3)表示。

因为公式(1)和公式(2),我们有:所以公式(3)能表示为公式(4):

公式(4)可以进一步表示为公式(5):

在公式(5)中,KD loss 被表示成为了两项的加权求和的形式。加号左侧表示老师和学生之间对目标类的二元概率分布的相似性,论文把它叫做 Target Class Knowledge Distillation(TCKD)。加号右侧的项表示在非目标类中,老师和学生概率分布的相似程度,叫做 Non-Target Class Knowledge Distillation(NCKD)。故公式(5)可以表示为:

公式(6)是经典 KD 的新的表达方式,通过公式(6),论文研究分析了 TCKD 和 NCKD 对蒸馏的独立影响。

TCKD 与 NCKD 的效果

论文通过一系列的实验,探究了 TCKD 和 NCKD 对蒸馏的影响,总结如下:

  1. 单独使用 TCKD 进行蒸馏是没有帮助甚至是有害的。单独使用 NCKD 可以得到和经典 KD 相当或更好的性能。NCKD 和 TCKD 对蒸馏的重要性是不同的。NCKD 更重要。

  2. TCKD 能表示和训练样本难易相关的知识,训练样本越难,TCKD 就能提供更多的知识。

  3. NCKD 提供的非目标类的知识对基于 logit 的蒸馏至关重要,  NCKD 是基于 logit 的蒸馏有效果但被性能抑制的主要原因。从公式(6)可以看出,NCKD 与 耦合,其中 表示老师在目标类上的置信度。通常认为老师在训练样本上的置信度越高,它传递的知识越有价值越可靠。然而 NCKD 的损失权重被这样的置信度预测严重抑制,这就限制了知识迁移的效果。

解耦知识蒸馏(DKD)

TCKD 和 NCKD 都是重要且不可缺少的。然而经典 KD 中,TCKD 和 NCKD 存在如下两方面的耦合:

  1. NCKD 与 耦合,当 TCKD 展现很好的预测效果时,NCKD 是被抑制的。

  2. NCKD 和 TCKD 在蒸馏中的作用不同,在经典 KD 中是耦合的,不能对每一项的权重进行单独调整。

论文提出了一种新颖的基于 logit 的蒸馏,叫 DKD,公式如下,可以通过两个超参 和 平衡 TCKD 和 NCKD 的重要性。

通过 DKD,可以在 CIFAR-100 数据集和 ImageNet 数据集上,取得和最先进的特征蒸馏 ReviewKD 相当的效果。ReviewKD 和 DKD 结合,在 COCO 上可以取得 SOTA 的性能。

DKD 的优点:1.训练效率 DKD 的训练效率和经典 KD 是相当的,不需要很多额外的计算和存储资源,但是性能却非常优秀。下图横坐标是每个 batch 的训练时间,纵坐标是模型的 accuracy。老师模型是 ResNet32×4,学生模型是 ResNet8×4。该图很好的展示了 DKD 能够在模型性能和训练代价(如训练时间,额外的参数)之间取得很好的平衡。

20312fa4a131aaeae3bf9f6ed7631c33.png

2.改善大的老师模型在蒸馏中的性能 经典 KD 存在一个问题,越大的模型并非总是更好的老师。一般的观点认为大的老师模型比起小一些的老师模型应该传递更多的知识,但是实验证明很多时候大模型却带来更差的性能。论文认为这主要是因为经典 KD 中 NCKD 抑制带来的。论文用实验证明 DKD 大大缓解了这个问题。实验数据见下图,都是在 CIFAR-100 数据集上做的测试。一组是 WRN-16-2 作为学生模型,WRN 系列模型作为老师模型;另一组是 WRN-16-2 作为学生模型,不同系列的模型作为老师模型。

1401b4dd03b33cc3b16212e85a6cd171.png

81446f8962e53b634ce47479708ef44c.png

初步分析

知识蒸馏是模型压缩中一个非常有潜力的方向,他可以把大模型的知识迁移到小模型上,提升小模型的性能。小模型根据需要,可以部署到边缘设备或移动设备上。自从 Fitnets 以来,有关知识蒸馏的研究大多都转移到了对中间层的深度特征的知识蒸馏,但在训练过程中,会引入大量额外的对计算和存储资源的需求。基于 logit 的蒸馏训练快,消耗资源少,有其独特的优势。模型优化方向需要跟踪研究提升 logit 蒸馏性能的方法。我们在 ImageNet 数据集上对 DKD 的效果进行了简单探索,见下表。试验中,学生模型是 ResNet-50,老师模型是 convnext_base_in22ft1k。通过 DKD 的方式,可把学生模型的精度提升到 81.65%,比 KD 提高了 0.21%,可见 DKD 方式确实能提供比经典 KD 更加优越的性能。DKD 对每一项的权重进行单独调整,这是它的优势,但与经典 KD 相比多了一个超参需要调整,从某一个角度说也是它的不足,因为在调参时需要花费更多的精力。

teacherconvnext_base_in22ft1k (85.82%)
KD81.44%
DKD81.65%

好了,有关 DKD 的介绍就到这里。期待大家继续支持和关注 Adlik 的 Github 仓库。

7fbbd4d5107f43fd6a344d690ba2738f.png

AdlikGithub仓库

参考文献

【1】Geoffrey E. Hinton, Oriol Vinyals, and Jeffrey Dean. Distilling the knowledge in a neural network. arXiv:1503.02531 [stat.ML], 2015. 

【2】Borui Zhao, Quan Cui, Renjie Song, Yiyu Qiu, Jiajun Liang. Decoupled Knowledge Distillation. arXiv:2203.08679 [cs.CV], 2022 

【3】Pengguang Chen, Shu Liu, Hengshuang Zhao, and Jiaya Jia. Distilling knowledge via knowledge review. arXiv:2104.09044 [cs.CV], 2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一觉醒后ChatGPT 被淘汰了

OpenAI 的 Andrej Karpathy 都大力宣传,认为 AutoGPT 是 prompt 工程的下一个前沿。 近日,AI 界貌似出现了一种新的趋势:自主人工智能。 这不是空穴来风,最近一个名为 AutoGPT 的研究开始走进大众视野。特斯拉前 AI 总监、刚刚回归…

X进制转十进制黄金万能算法

单纯、混合进制通吃,真正的黄金万能的进制转换方法。 【学习的细节是欢悦的历程】Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:https://…

LINUX_kali学习笔记

基础命令 命令说明示例pwd查看当前路径ls查看当前文件夹下文件 .开头为隐藏文件 (文件夹下使用ctrlh查看)ls -a(查看文件及隐藏文件)ls -alh(查看文件及显示详情)cd切换目录cd /(切换到根目录&…

为何MySQL 8.0开始取消了查询缓存

官方文档说明:MySQL :: MySQL 8.0: Retiring Support for the Query Cache MySQL查询缓存是查询结果缓存。它将以SEL开头的查询与哈希表进行比较,如果匹配,则返回上一次查询的结果。 进行匹配时,查询必须逐字节匹配,例…

[Netty源码] 服务端启动过程 (二)

文章目录1.ServerBootstrap2.服务端启动过程3.具体步骤分析3.1 创建服务端Channel3.2 初始化服务端Channel3.3 注册selector3.4 端口绑定3.5 服务端的读事件1.ServerBootstrap ServerBootstrap引导服务端启动流程: //主EventLoopGroup NioEventLoopGroup master new NioEvent…

深入浅出:理解 RPC 和 Dubbo 架构

简介 Apache Dubbo是一款高性能的Java RPC框架.其前身是阿里巴巴公司开源的一个高性能,轻量级的开源Java RPC框架,可以和Spring框架无缝集成. Dubbo 官网 RPC RPC介绍 Remote Procedure Call 远程过程调用,是分布式架构的核心,按响应方式分以下两种: 同步调用:客户端调用…

App/Web自动化的面试题

App/Web自动化的面试题(详细答案自己百度哈,红色的表示app自动化专有问题、绿色表示web自动化专有的问题,未标色的表示共有的问题) 备注:一般面试的时候是结合简历上的项目一步一步深入进行问的问题,只要你实际做过一个…

HPE: smart storage: hpssacli:

文章目录参考命令实例问题参考 https://cmdref.net/hardware/proliant/hpssacli.html https://support.hpe.com/connect/s/softwaredetails?languageen_US&softwareIdMTX_9849e3ae326f43f2825d92dce0 https://community.hpe.com/hpeb/attachments/hpeb/itrc-264/148204/3…

SpringBoot—JPA和Mybatis多数据源配置和使用

JPA多数据源配置 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…

VM 增加硬盘

1、使用“fdisk -l”的命令查看当前系统的分区&#xff08;如果刚才设置VMware--“设置”的时候运行了系统&#xff0c;则会出现下图情况&#xff1a;没有识别到新的磁盘即sdb&#xff09;&#xff0c;解决办法&#xff0c;重启虚拟机&#xff1a;shutdown -r now 2、 输入 # …

【Python_Selenium学习笔记(八)】基于Selenium模块实现滑块验证码破解

基于Selenium模块实现滑块验证码破解 前言 有些网站页面会在 访问时进行滑块验证&#xff0c;针对此问题&#xff0c;此篇文章中会介绍如何基于 Selenium 模块实现滑块验证码的破解 &#xff0c;并以模拟登录豆瓣网&#xff0c;破解其滑块验证码 为例进行讲解。 正文 1、滑…

需要买apple pencil吗?ipad第三方电容笔了解下

第一款ipad早在诞生于十年前&#xff0c;并被作为一款平板电脑使用&#xff0c;其性能十分出色。随着IPAD的不断更新换代&#xff0c;IPAD已经被越来越多的人接受了。其中&#xff0c;iPad的附属配件起到了很大的作用&#xff0c;就像今天要介绍的电容笔&#xff0c;它是我们进…

Python接外包养无敌可爱的她,每天都随便花~

人生苦短&#xff0c;我用python 女友好不容易放假&#xff0c;她带着我花花花的样子真的很迷人~ python 安装包资料:点击此处跳转文末名片获取 不为什么 我的女友我来宠&#xff01; 作为一个程序员&#xff0c;要有会用自己的技术创造价值的自觉~ 今天来给大家展示一下用py…

第七章 法律行为与法律意识

目录 第一节 法律行为 一、 法律行为的含义与特征二、 法律行为的结构 &#xff08;一&#xff09;法律行为的内在方面 动机目的认知能力 &#xff08;二&#xff09;法律行为的外在方面 行动&#xff08;行为&#xff09;手段结果 三、法律行为的分类 第二节 法律意识 一、法…

【WebRTC技术专题】大势所趋,迈向认识 WebRTC 的第一步(2)

每日一句 人生的挑战&#xff0c;无处不在&#xff0c;满怀信心&#xff0c;轻装上路&#xff0c;明天永远是充满希望的战场。 承接上文 承接上文的内容介绍完相关WebRTC技术的概念和发展历程后&#xff0c;开始初步摸索一下相关WebRTC技术的功能和原理。&#x1f33a;【WebRTC…

【科普】一篇搞定发paper基本概念:SCI、EI、会议/期刊、分区、CCF、DOI、IF、h-index、及cs/ee常见会议:CVPR、GlobeCOM等

文章目录基础概念SCI、EI、CPCI&#xff08;ISTP&#xff09;论文类型&#xff1a;Journal、magazine、transaction、letter、 proceedingsDOI&#xff08;数字对象标识Digital Object Identifier&#xff09;IF 期刊影响因子(Impact Factor&#xff0c;IF)H指数 (h-index/h-fa…

时间序列 | MATLAB实现CNN-LSTM-Attention时间序列预测

时间序列 | MATLAB实现CNN-LSTM-Attention时间序列预测 目录时间序列 | MATLAB实现CNN-LSTM-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-LSTM-Attention时间序列预测&#xff0c;CNN-LSTM结合注意力机制时间序列预测。 模…

使用wait监听tomcat服务启动

文章的wait脚本素材会放在末尾 执行docker-compose.yml文件之后就有mysql的主服务器&#xff0c;还有从服务器&#xff0c;还有tomcat服务&#xff0c;在tomcat中部署一个crm项目&#xff0c;tomcat服务中我们添加了启动顺序&#xff0c; # 启动顺序 depends_on: - mysql…

低压接地系统:TN-C 、TN-S、TN-C-S、TT、IT

电力系统的接地直接关系到用户的人身和财产安全,以及电气设备和电子设备的正常运行。如何针对实际情况选择合适的接地系统,确保配电系统及电气设备的安全使用,是电气设计人员面临的首要问题。 根据 国际电工委员会(IEC)规定的各种保护接地方式的术语概念,低压配电系统按…

如何利用开源思想开发一个SEO友好型网站

当你对一个网站进行 SEO 优化的时候&#xff0c;不要期望你的努力能立即得到回报。耐心等待并更正内容营销策略&#xff0c;最终会发现你的网站很受用户欢迎。下面就教你如何利用开源思维开发一个SEO友好型网站&#xff01; 首先&#xff0c;你应该知道&#xff1a;93% 的网站…