A good teacher is patient and consistent(CVPR 2022)论文解读

paper:Knowledge distillation: A good teacher is patient and consistent

official implementation:https://github.com/google-research/big_vision

本文的创新点

本文没有提出新的方法,而是提出了一些影响蒸馏性能的关键因素,这些因素在之前的蒸馏方法中常常被忽略,本文通过实验验证,指出正确的选择这些因素,可以大大提高现有蒸馏方法的性能。

首先,本文将知识蒸馏当做教师和学生之间的函数匹配,并发现了两个原则,一是教师和学生应该处理相同的输入,即相同的crop和数据增强;二是希望可以在大量的support points上进行函数匹配,从而具有更好的泛化性。

最后通过大量实验验证,作者指出一致的图像视图、更强的数据增强、非常长的迭代次数是实践中通过知识蒸馏进行模型压缩发挥良好作用的关键。

实验验证

Investigating the "consistent and patient teacher" hypothesis

作者首先通过实验验证观点:当视为函数匹配时,蒸馏的效果是最好的。即当教师和学生的输入视图一致,通过相同的方式进行mix-up填充,并训练非常长的迭代次数,如图2所示。

Importance of "consistent" teaching

首先如图2所示,对于输入视图,作者采用了四种不同的方法:

  • Fixed teacher. 固定教师的输入,即在蒸馏过程中对于同一张图片教师的输入是固定不变的。具体又包括几种不同的方式,首先是fix/rs,即教师和学生的输入都统一resize成224x224。然后是fix/cc,即教师采用固定的center crop,而学生采用random crop。最后是fix/ic_ens,即教师的预测是1000个crop预测的平均值。
  • Independent noise. 分为两种,ind/rc 教师和学生分别采用random crop,ind/ic 采用更强的inception crop
  • Consistent teaching. 这里只对图片进行一次随机剪裁,random crop(same/rc)或 inception crop(same/ic)都可以,然后作为教师和学生的输入。
  • Function matching. 这里扩展了consistent teaching,通过mix-up对图片进行增强,然后分别输入教师和学生网络。

图3是在Flowers102数据集上上述各种配置10000个epoch的训练曲线,可以看出consistency是关键因素,所有inconsistent的配置最终的性能都更差。此外通过训练损失可以看出,对于这种小数据集,fixed teacher的设置会导致过拟合,相反函数匹配在训练集上的损失达不到这么低,但泛化性能好,在验证集上的精度更高。

Importance of "patient" teaching

我们可以把蒸馏当做监督学习的一种变体,其中标签Labels(soft)时由一个更强的教师模型提供的,同时也继承了监督学习的所有问题,比如过强的数据增强可能会扭曲实际的标签,而过弱的数据增强可能会导致过拟合。但当我们把蒸馏视作函数匹配,并且更重要的是确保教师和学生的输入一致,情况就不一样了。此时我们可以使用非常强的数据增强,即使输入图像被扭曲的非常厉害,对于这个输入进行函数匹配仍能取得很好的效果。这样我们就可以使用非常强的数据增强来避免过拟合,并优化非常久的时间知道学生的函数非常接近教师的函数。

结果验证了作者的直觉如图4所示,其中展示了对每个数据集,在训练最佳funtion matching student(根据验证集)时测试精度的变化。其中教师是红线,在监督训练足够大的epoch后总是能到达。更重要的是即使训练了一百万个epoch,也没有过拟合。 

结论

本文没有提出一种新的模型压缩方法,而是仔细研究了现有的常用的知识蒸馏过程,并确定如何使它在模型压缩中更有效。其中关键发现源于对知识蒸馏的一种特定解释:本文提出将其视为一个函数匹配任务。这不是常见的观点,因为它通常被视为“一个强大的教师模型产生更好的(软的)标签,有利于训练一个更好的、更小的学生模型”。

基于这种解释,本文确定了三个关键要素: (i)确保教师和学生总是得到相同的输入,包括噪声,(ii)引入积极的数据扩充,以丰富输入(通过mix-up),(iii)使用非常长的训练schedule。尽管每个要素看起来微不足道,但本文通过实验表明,同时应用三个要素可以得到最好的结果。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文润色突显研究亮点 papergpt

大家好,今天来聊聊论文润色突显研究亮点,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:论文润色突显研究亮点――提升论文吸引力的关键步骤 一、引言 在学术研究中&#x…

家政服务小程序预约上门,让服务更便捷

随着人们生活节奏的加快,家政服务行业越来越受到人们的欢迎。为了满足市场需求,提高服务质量,家政公司需要开发一款预约上门的家政服务小程序。本文将详细介绍如何制作一个预约上门的家政服务小程序。 一、登录乔拓云网后台 首先&#xff0c…

什么是接口与API接口!

今天有个朋友问我什么接口?你们平时都说在写接口,写的是什么鬼啊?我一开始就想,咦小陈同学怎么突然了解编程接口了,不过听到他后一个提问我知道原来他想的是API接口,不过被我主观意识习惯想成了编程定义上的…

DHCP--自动获取IP地址

目录 一、了解DHCP服务 1、概念 2、使用DHCP的好处 3、DHCP的分配方式 二、DHCP的租约过程 1、客户机请求IP地址 2、服务器响应 3、客户机选择IP地址 4、服务器确定租约 5、服务器租约期限到了之后续期问题 6、总结 三、部署DHCP实验 1、项目要求 2、规划设计 …

Linux服务器配置免密SSH

在当今互联网时代,远程工作和网络安全已成为信息技术领域的热点话题。无论是管理远程服务器、维护网络设备还是简单地从家中连接到办公室,安全始终是首要考虑的因素。这就是为什么 SSH(Secure Shell)成为了网络专业人士的首选工具…

【送书活动五期】Go语言开发规范指南

今天和一个小伙伴偶尔聊了两句,聊到现在工作的开发语言,大学时接触的第一个语言应该是html,系统且简单的学习了前端语言,之后伴随着学校的课程,C、C#、Java都有涉及,然后就一直已Java为主了,也是…

动手学深度学习-注意力机制

10.1注意力提示 自主性注意力机制 有意识的注意力机制。非自主性注意力机制 无意识的注意力机制。 小结: 人类的注意力是有限的,有价值和稀缺的资源。受试者使用非自主性和自主性提示有选择的引导注意力,前者基于突出性,后者则依赖于意识。…

浏览器js中添加日志断点

一、需求 本地调试时,可以直接代码里使用console.log直接调试; 代码已更新到服务器,不想要提交代码,如何通过添加console.log调试呢 二、实现 使用浏览器添加日志断点的方式,当然vue这种打包的不可行哦 设置完成后…

【深度学习】AlexNet网络实现猫狗分类

【深度学习】AlexNet网络实现猫狗分类 AlexNet简介 AlexNet是一种卷积神经网络(Convolutional Neural Network,CNN)模型,它在2012年的ImageNet图像分类挑战赛中取得了重大突破,引发了深度学习在计算机视觉领域的热潮…

严世芸龟法养生经

文章目录 严世芸理念荤素搭配,不偏嗜动静结合心平气和 龟息法 严世芸 严世芸,出生于1940年,现任上海中医药大学的主任医师,教授。他父亲是近代上海有名的中医,他又是著名医家张伯臾的亲传弟子。 从小就在父亲诊室里长…

阿里云国际版CDN网页打不开、页面报错该如何解决?

如果在使用CDN过程中,遇到了网页打不开、页面报错等问题时,您可以通过自助诊断工具来进行诊断。诊断工具会告知本次诊断结果,您可以根据结果来调整CDN配置或提交工单进行咨询。 使用场景 主要支持以下情况: 域名访问异常&#x…

后端idea提交代码到主分支

1.先从本地提交到远程本地orgin:保留一份,避免后面提交出错,无法回退 2.提取主分支代码:更新比人提交的部分;右击项目-》git-》提取 3.把主分支代码合并到本地中:避免最后推送起冲突 4.最后提交代码:推…

JVM第10章-前端编译与优化

Javac编译器 从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程 1)准备过程:初始化插入式注解处理器。 2)解析与填充符号表过程,包括: 词法、语法分析。将源代码的字符流转变为标记…

云计算与大数据技术应用知识及案列

云计算与大数据技术应用知识及案列 简述什么是云计算? 答:云计算是一种动态扩展的计算模式,通过网络将虚拟化的资源作为服务提供;云计算是一种无处不在的、便捷的通过互联网访问一个可定制的IT资源(IT资源包括网络、服…

c/c++ 文件操作(2)

文件操作读和写 顺序读写 1、fgetc、fputc 函数功能fgetc字符输入函数----->对应打开方式是 “r”fputc字符输出函数-----> 对应打开方式是 “w” 2、fgets、fputs 函数功能fgets文本行输入函数------> 对应打开方式是"r"fputs文本行输出函数------>…

mybatis动态SQL-foreach

1、建库建表 create database mybatis-example; use mybatis-example; create table emp (empNo varchar(40),empName varchar(100),sal int,deptno varchar(10) ); insert into emp values(e001,张三,8000,d001); insert into emp values(e002,李四,9000,d001); insert into…

SD-WAN解决外贸企业网络问题

为了获取全球客户,占领更多的市场,越来越多的外贸企业出现。外贸企业在发展业务的过程中会遇到很多困难,海外网络访问问题就是其中之一。目前该问题主要有三种解决方案:VPN、MPLS专线以及SD-WAN专线。 VPN通过在公网上面建立专用网…

windows 服务器 怎么部署python 程序

一、要在 Windows 服务器上部署 Python 程序,您需要遵循以下步骤: 安装 Python:首先,在 Windows 服务器上安装 Python。您可以从官方网站(https://www.python.org/downloads/windows/)下载最新的 Python 安…

Spring 6(一)【Spring 入门】

前言 好久没有写博客了,最近刚忙完考试,眼下又是英语四六级。Flink 按说应该是大数据学习的主线任务,但是长时间学一门技术还是心累的。正好之前对 Java 注解有了进一步的熟悉,一直想着熟悉巩固。所以,今天开始就来深入…

Feign-实现Feign最佳实践

目录 一、实现最佳实践的步骤(方式二) 1.1 首先创建一个module,命名为feign-api,然后引入feign的starter依赖 1.2.将order-service中编写的UserClient、User、DefaultFeignConfiguration都复制到feign-api项目 1.3.在order-se…