On the Efficacy of Knowledge Distillation 解析

news2025/1/9 1:40:58

paper:On the Efficacy of Knowledge Distillation

本文的题目是《论知识蒸馏的有效性》,主要是对教师模型并不是越大越好这一现象进行研究,并提出了缓解方法:early stop。 

Bigger models are not better teachers

知识蒸馏背后的思想是,训练好的教师模型学习到的soft probabilities比标签更能反映数据的真实信息。因此人们可能认为,如果教师模型的预测更加准确,这些soft probabilites就能更好的捕获潜在的类别分布信息并且作为一个更好的教师模型为学生模型提供监督信息。因此直觉上会期望更大更准确的模型应该是更好的教师模型。作者在CIFAR 10和ImageNet数据集上分别进行了实验,其中保持学生模型不变,用不同大小的教师模型进行蒸馏。CIFAR10的结果如下

 

其中左边是不同深度的教师模型蒸馏下学生模型的error变化,右边是不同宽度的教师模型蒸馏下学生模型的error变化,可以看出随着教师模型变得更大,学生模型的精度一开始可能会有所提升,但随后就开始下降。 

下表是在ImageNet上的实验结果

同样的结果,随着教师模型精度越来越高,学生模型的精度反而越来越低。

通过这两个实验得到结论:更大更准确的模型未必是更好的教师模型

这种下降的原因可能是什么?一种可能性是,随着教师模型变得更加confident和准确,输出概率开始越来越像one-hot的真实标签,因此学生可用的信息就会减少。但是,用更大的 \(T\) 对probabilities进行soften并没有改变这一结果从而否定了这一假设。下面,作者提出了另一种假设。 

Analyzing student and teacher capacity

对于更大更准确的教师模型不让提高学生模型的精度,作者给出两个可能的原因:

  1. 学生能够模仿老师,但这并不能提高其精度。这表明KD损失和我们所关心的精度metric之间的不匹配。
  2. 学生无法模仿老师,这表明学生和教师的能力capacities的不匹配。

作者在CIFAR 10和ImageNet上评估了这两种假设,下表是CIFAR 10上的KD error,即学生和老师的预测不同的例子的比例。

表3的奇数行是学生模型ResNet-18在不同的教师模型蒸馏下在ImageNet数据集上的KD损失

 

在这两种情况下,更大的教师模型的KD error/loss都要高得多,这反过来又导致了学生模型精度的下降。这表明,学生模型无法模仿很大的教师模型,这指向了第二个假设,即这个问题是一个能力不匹配的问题。因此,我们假设,在ImageNet和CIFAR上,由于容量要低得多,学生无法在其空间中找到与最大的教师相对应的解决方案。

Distillation adversely affects training

注意到知识蒸馏在ImageNet数据集上的效果尤其差,如表1所示,用不同的教师模型进行蒸馏还不如从头训练学生模型的精度高,并且之前知识蒸馏的论文大都在CIFAR数据集上进行实验,很少给出在ImageNet数据集上的实验结果。 

作者对这一现象进行了深入研究,图3是从头训练的ResNet-18和用ResNet-34进行蒸馏在验证集上的Error对比。可以看出,虽然一开始KD提高了验证集上的精度,但在训练结束时精度反而降低了。

作者假设,因为ImageNet是一个更具挑战性的数据集,较小的学生模型可能处于不拟合的状态。因此可能没有足够的能力来同时优化训练损失和蒸馏损失,并可能最终以牺牲另一个损失(KD损失)为代价来优化一个损失(交叉熵损失),尤其是到训练结束的时候。

这一假设表明,我们可以在训练过程的早期停止知识蒸馏,并在剩下的训练过程中只对交叉熵损失进行优化。我们将这个过程称为“早期停止(Early-stopped)”的知识蒸馏(“ESKD”)。

表3对比了ESKD和标准KD的精度,可以看出ESKD下不同的教师模型就得到了更高的精度,但是,early stop并没有改变我们最初的观察:更大、更准确的教师模型不会得到更准确的学生模型。即使进行了早停,我们发现测试集上的KD损失随着教师模型的增大而增加,这表明学生仍在努力模仿老师,这确实是学生能力的问题。

The efficacy of repeated knowledge distillation

如果学生模型和教师模型的规格差距过大,一种自然的想法是首先从大教师模型提炼到中间教师模型,然后提炼到学生模型,使得每个知识蒸馏步骤都让学生模型和教师模型能力有更好的匹配。sequence knowledge distillation的概念在之前的文章中已经被提出过,最近有一篇文章提出训练一系列模型,其中第 \(i\) 个模型以第 \(i-1\) 个模型为教师模型进行蒸馏训练,他们发现,与从头开始训练的模型相比,这种顺序知识蒸馏可以提高性能,并且对这一系列模型进行继承可以得到更好的模型。

作者在CIFAR10上对该结论进行了验证,结果如表4所示

作者对上述观点进行了驳斥,首先对于一些模型比如ResNet-8和ResNet-14,sequence中最后一个学生模型的精度是要比从头训练的精度低的,网络架构在很大程度上决定了sequence KD的成功。其次,作者发现,尽管对整个序列的学生模型进行集成优于从头开始训练的单个模型,但它并不优于从头开始训练的相同数量的学生模型的集成。这可能是因为通过一系列知识蒸馏步骤获得的学生模型可能相互关联,因此可能不会产生一个强大的集成模型。

如果sequential knowledge distillation确实提高了模型的精度,那么一个自然的问题是由此得到的模型是否是一个更好的教师模型?为了评估这个问题,作者做了如下实验,选择WRN16-1作为学生模型,WRN16-3作为教师模型(如图2所示这是最佳的教师模型),然后用5次迭代的sequence蒸馏来训练教师模型,并与从头训练的教师模型进行比较,结果如表5所示,可以看出经过多次迭代蒸馏得到的教师模型尽管本身精度更高,但并不是一个更好的教师模型。

 

Early-stopped teachers make better teachers

在上一节中作者已经证明了sequence知识蒸馏是无效的,这可能是因为它并没有解决核心问题:大模型找到的解决方案在小模型的能力之外或者说在小模型的solution space之外。唯一的解决方法是找到一个教师模型,它找到的解决方案是小模型能够找到的。 

我们可以通过grid search来找到最合适的教师模型,但这代价太大了。作者建议在训练大模型时对其进行正则化regularize,比如对大模型的训练进行early stop。有一些研究表明,一个只训练了少数epoch的大模型的表现和小模型一样,但仍然包含比小模型更大的搜索空间。作者在CIFAR 10和ImageNet上评估了该想法,结果如图4所示

其中x轴是教师模型的训练epoch,纵轴是学生模型的error,可以看出所有提前终止训练的教师模型蒸馏出的学生模型的精度都比完成全部训练的教师模型蒸馏出的学生模型的精度高。

Conclusion

  • 并不是更好(精度更高)的教师模型就能教出(蒸馏)更好的学生模型
  • 这可能是能力不匹配的问题,教师模型找到的solution在学生模型的solution space之外
  • 之前解决该问题的方法是逐步进行蒸馏,本文证明其效果也不好,并且效果和网格结构有关系
  • 本文提出提前终止蒸馏可以有效缓解该问题
  • 提前终止教师模型的训练也可以有效缓解该问题

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

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

相关文章

S32k3系列开发学习(FlexCAN)

前言 由于之前没有接触过CAN总线模块,对这一块的知识仍比较陌生,于是乎想简单梳理一下CAN总线的工作流程,加深理解。 一、CAN是什么? 参考:https://zhuanlan.zhihu.com/p/346696648 二、CAN框架 各模块功能如下&am…

NLP基础:标注器Label Studio的入门使用

目录 一、环境准备 二、操作 文章来源: 简介: Label Studio是一个开源的数据标注工具,它可以用于各种机器学习和深度学习项目。它的主要目的是帮助数据科学家和机器学习工程师快速、高效地标注数据,以构建和训练准确的机器学…

Linux入门---开发的Linux命令手册

Linux 基础知识 基础 启动过程: 内核的引导。运行 init。系统初始化。建立终端 。用户登录系统。 命令介绍 磁盘 #文件#a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用);f:为强制(force)进行&…

Ubuntu20.04使用多卡训练HyperNetwork模型和LoRA模型全流程及疑难问题解决方案

目录 一. LoRA模型多卡训练1.1 安装xformer等库1.2 设置路径1.3 多卡训练 二. LoRA模型多卡训练疑难报错解决方案多卡训练报错 软硬件配置: CPU: AMD 5800 8core 16Thread GPU: NVIDIA RTX 3090 *1 NVIDIA TITAN RTX *1 OS: Ubuntu20.04 一. LoRA模型多卡训练 1.1 …

JavaScript概述四(DOM文档对象模型)

1.DOM(Document Object Model) 会把网页里面的元素当成对象去操作,包含对象的属性,属性值,方便我们去 操作网页。 整个页面最终会形成一个对象 :document ,页面里面的所有的元素(如 标签 ) 最终都会转换成 js 里面的对象。 1.1 获取页面的元素(通过选择器&#xff0…

S32K3系列单片机学习

前言 定时器中断,每个平台的实现方式均有差异,从51单片机通过寄存器配置实现定时器周期计数,再到使用HAL库配置STM32的定时器,他们的实现原理都是大同小异的,只不过不同的平台使用的底层库不同,导致实现的…

公司25k招了一个测试员不会自动化,试用期没过就赶走了...

最近翻了一些网站的招聘信息,把一线大厂和大型互联网公司看了个遍,发现市场还是挺火热的,虽说铜三铁四,但是软件测试岗位并没有削减多少,建议大家有空还是多关注和多投简历,不要闭门造车,错过好…

手推FlinkML2.2(一)

Java 快速入门 # 本文档提供了一个关于如何使用Flink ML的快速入门。阅读本文档的用户将被指导提交一个简单的Flink作业,用于训练机器学习模型并提供预测服务。 求助,我卡住了!# 如果你遇到困难,请查看社区支持资源。特别是&…

第一个 Servlet 程序

1. 创建项目 使用 IDEA 创建一个 Maven 项目. 1.1、File -> New Project Name:javaservlet2 Location:选择要存放的路径 Language:Java Build system:Maven 点击Create按钮 1.2、Pom.xml引入依赖 依赖包来源&#xff1a; <dependencies> <!-- https…

【Hive实战】探索Hive 2.X以及更早版本的MetaStore

探索Hive 2.X以及更早版本的MetaStore 文章目录 探索Hive 2.X以及更早版本的MetaStore概述配置元数据服务和元数据存储库基础配置参数其他配置参数默认配置配置元服务数据库使用内嵌模式的Derby库使用远程数据存储库 配置元数据服务本地/内嵌服务配置远程服务配置 元数据服务配…

Java Collection源码分析(JDk corretto 11)

文章目录 Collection 系列源码分析 (JDK Amazon corretto 11)Collection接口Iterable接口 子接口 QueueQueue的子接口 Deque双端队列 子接口ListArrayList 实现类序列化与反序列化(后续解决)获取Calss对象的方式 主要有三种&#xff1a;Arrays工具类System类 LinkedList实现类t…

kotlin的let,with,run,apply,also,异同区别

kotlin的let&#xff0c;with&#xff0c;run&#xff0c;apply&#xff0c;also&#xff0c;异同区别 例如&#xff1a; class Person(var name: String, var age: Int) {fun eat() {println("吃饭")}fun work(hour: Int): Int {println("$name $age 工作 $ho…

【论文写作】如何写引言?应该思考什么问题?总体架构!!!

结构 大多数的科技论文都聚焦于简单地说明&#xff0c;做了什么&#xff0c;发现了什么&#xff1f;虽然这个可以帮助你写出一篇研究型论文当中的核心的东西&#xff08;方法论和结果&#xff09;&#xff0c;但是不能完全把引言的部分完成。在这篇文章当中&#xff0c;将展示…

【Python】Python学习笔记(三)条件语句

条件语句 Python中的条件语句与c/cpp基本无异。 if语句 基本结构见以下代码。 Python使用缩进控制if/else语句之间的嵌套关系。 #判断两数是否相等。a int(input(a:)) b int(input(b:))if a b:print(Same) else:print(No Same)elif 代替了cpp中“else if”的写法&#…

数据结构(顺序结构、链式结构、索引结构、散列结构)

文章目录 1.概述2.数据间逻辑关系3.数据的存储结构&#xff08;或物理结构&#xff09;3.1顺序结构3.2链式结构3.3索引结构3.4散列结构 4.运算结构 1.概述 数据结构&#xff0c;就是一种程序设计优化的方法论&#xff0c;研究数据的逻辑结构和物理结构以及它们之间相互关系&am…

STM32 DMA详解

1.DMA简介 DMA (Direct Memory Access) 直接存储器存取 DMA 可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源( 比如想把Flash里的一批数据转运到SRAM里&#xff0c;需要软件触发&#xff0c;使用软件触发之后&a…

NAT网络地址转换技术入门到详解

本文目录 1、NAT简介1.1、SNAT 和IP伪装(Masquerade)1.2、DNAT1.3、Full NAT (也称为Full Cone NAT)1.4、PAT (也称为NAPT) 2、如何通过iptables将一台多网卡的主机配置成NAT路由器3、汇总 本文会从NAT的简介入手&#xff0c;详解NAT技术本身&#xff0c;通过本文&#xff0c;你…

巧用千寻位置GNSS软件| 电力线勘测如何实现?

正如大家所知&#xff0c;电力线勘测是在做电力线路设计之前对设计线路沿途自然环境进行勘察测量&#xff0c;最后把手簿测量数据在电脑端经过转换输出为电力软件专用格式数据的专用功能。 那么在千寻位置GNSS软件中该如何操作完成电力线的勘察测量呢&#xff1f; 点击【测量】…

市场岗位都在通缩,Framework开发就业环境怎么样?

随着 Android 设备的普及和应用领域的不断扩大&#xff0c;Android Framework 开发需求量将会持续增长&#xff0c;并且会越来越多地向行业、企业级应用和系统优化等方向发展。以下是一些 Android Framework 开发相关的应用场景&#xff1a; 特定垂直领域的智能设备&#xff1…

写最好的Nacos Server稳定版(nacos-server-2.1.1)在Centos、Docker和Windows上安装部署(单机、集群)教程

写最好的Nacos Server稳定版&#xff08;nacos-server-2.1.1&#xff09;在Centos、Docker和Windows上安装部署&#xff08;单机、集群&#xff09;教程 一、前言二、Nacos Server在 Centos7 安装部署&#xff08;单机模式&#xff09;2.1 下载 nacos-server-2.1.1 安装包2.1.1…