Self-Distillation from the Last Mini-Batch for Consistency Regularization中文版

news2024/9/20 9:36:01

Self-Distillation from the Last Mini-Batch for Consistency Regularization
从上一个小批量自发蒸馏,实现一致性正则化

摘要

知识蒸馏(Knowledge distillation,KD)展示了强大的潜力,作为一种强有力的正则化策略,通过利用学习的样本级软目标来提升泛化能力。然而,在现有的知识蒸馏中,使用复杂的预训练教师网络或一组同行学生既耗时又计算成本高昂。已经提出了各种自我蒸馏方法以实现更高的蒸馏效率。然而,它们要么需要额外的网络架构修改,要么难以进行并行化。

为了应对这些挑战,我们提出了一种高效可靠的自我蒸馏框架,名为“最后小批次自我蒸馏”(Self-Distillation from Last Mini-Batch,DLB)。具体来说,我们通过限制每个迷你批次的一半与上一次迭代一致来重新安排这些顺序采样,同时,剩下的一半将与即将到来的迭代一致,之后,前一半迷你批次将即时蒸馏上一次迭代中生成的软目标。我们提出的机制引导了训练的稳定性和一致性,使其对标签噪声具有鲁棒性。此外,我们的方法易于实现,无需额外的运行时内存或需要模型结构修改。在三个分类基准数据集上的实验结果表明,我们的方法能够始终胜过具有不同网络架构的最先进自我蒸馏方法。此外,我们的方法显示出与增强策略的强大兼容性,能够获得额外的性能提升。代码可在 https://github.com/Meta-knowledge-Lab/DLB 找到。

1.Introduction

知识蒸馏(Knowledge Distillation,KD)最初由Bucilua等人[2]提出,后来由Hinton等人[10]推广。许多先前的研究已经证明了知识蒸馏在各种学习任务中提升泛化能力的成功。例如,在网络压缩的情况下,广泛使用两阶段离线知识蒸馏,将来自繁琐预训练模型的暗知识传递给从教师的中间特征映射[21]、logits[10]、注意力图[40]或辅助输出[43]中学习的轻量级学生模型。然而,训练高容量的教师网络严重依赖于大量的计算资源和运行内存。为了缓解对静态教师耗时的准备工作,引入了在线蒸馏[44],其中一组同行学生相互学习。在线蒸馏实现了与离线蒸馏相同的性能改进,但计算效率更高。因此,许多后续工作将这一线路扩展为更强大的自组教师[3,8,14,33]。知识蒸馏的其他应用包括半监督学习、领域自适应、迁移学习等[18,26,28]。本文的主要范围集中在知识蒸馏范式本身。

传统的知识蒸馏方法,无论是在线还是离线的,都取得了令人满意的经验性能[24]。然而,现有的知识蒸馏方法在知识传输效率方面存在障碍[35]。此外,高计算和运行内存成本限制了它们部署到移动手机、数码相机等终端设备上[4]。为了应对这些限制,自我知识蒸馏受到越来越多的关注,它使得学生模型能够从自身中蒸馏知识。自我知识蒸馏中缺乏复杂的预训练教师和一组同行学生,导致在训练效率方面只有边际改进。其中一种流行的自我蒸馏形式,比如“做自己的老师”(Be Your Own Teacher,BYOT),需要进行大量的网络架构修改,这大大增加了它们推广到各种网络结构上的难度[19,32,43]。在另一条线路中,历史信息,包括先前训练的logits或模型快照,被利用来构建一个虚拟教师,作为自我蒸馏的额外监督信号。最初,Born Again Networks (BAN) 按顺序蒸馏具有相同参数的网络作为其最后一代[7]。快照蒸馏取得的一个进步是从先前的小代数,即一代中的几个时期中获得次要信息[36]。这种虚拟教师的更新频率在渐进式自我知识蒸馏[12]和回顾学习[5]中进一步提高到时代级别。然而,现有的自我知识蒸馏方法存在以下问题需要解决。首先,来自上一次迭代的最即时信息被丢弃。此外,存储过去模型的快照会消耗额外的运行内存成本,并随后增加并行化的难度[36]。最后,每次向后传播中梯度的计算与每个数据批次上两次前向过程相关联,导致计算冗余和低计算效率。

为解决现有自我知识蒸馏方法中的这些挑战,我们提出了一种简单而高效的自我蒸馏方法,称为“最后小批次自我蒸馏”(Self-Distillation from Last Mini-Batch,DLB)。与现有的自我知识蒸馏方法相比,DLB具有计算效率高、节省运行内存的特点,只存储上一次迭代产生的软目标,使得其在部署和并行化上更为简单。每个数据实例的前向处理都伴随着一次反向传播过程,减少了计算冗余。与最新技术相比,主要的不同点总结在表1中。DLB为自我蒸馏产生了即时的样本级平滑标签。利用上一次迭代的软预测,我们的方法为每个训练样本提供了最即时的蒸馏。DLB的成功归功于从最即时历史生成的软目标进行蒸馏,以强化训练的一致性和稳定性。更具体地说,在训练阶段,目标网络在每个小批次中扮演着教师和学生的双重角色。作为教师,在下一次迭代中提供软目标以规范自身。作为学生,它从上一次迭代中生成的平滑标签进行蒸馏,并最小化监督学习目标,比如交叉熵损失。

在这里插入图片描述

1. 在计算成本和平滑度方面与最新技术的比较。我们将我们的方法与标签平滑正则化[27]、无教师知识蒸馏(Tf-KDself、Tf-KDreg)[37]、
类别自我知识蒸馏(CS-KD)[39]、渐进式自我知识蒸馏(PS-KD)[12]、记忆回放知识蒸馏(Mr-KD)[30]、数据失真引导的自我知识蒸馏(DDGSD)
[35]、做自己的老师(BYOT)[43] 进行了比较。

我们选择了六种代表性的主干CNN进行评估,包括ResNet-18、ResNet-110[9]、VGG-16、VGG-19[25]、DenseNet[11]和WideResNet[41]。实验结果表明,我们的DLB可以持续改善泛化能力。我们还在受损数据上测试了DLB的稳健性。DLB对受损数据的训练一致性和稳定性导致了更高的泛化能力。主要贡献有三个方面:
我们提出了一种简单但高效的一致性正则化方案,基于自我知识蒸馏,名为DLB。我们的方法无需对网络架构进行修改,实现时需要的额外计算成本和运行时内存都非常少。利用来自上一次迭代的最新更新,我们的DLB易于实现并行化。值得注意的是,该方法也不依赖特定模型或任务。
• 在三个常用的分类基准数据集上进行的全面实验结果展示了不同模型上的一致泛化改进。我们还在经验上证明了DLB与各种增强策略的兼容性。
• 我们系统地分析了我们方法对训练动态的影响。具体来说,其正则化效果的成功归功于利用即时样本级平滑标签引导训练一致性。在标签受损的环境下,一致性效应进一步增强,表现出对标签噪声的强大稳健性。这些实证发现可能为理解知识蒸馏的影响打开新的方向。

2.Related Works

知识蒸馏。知识蒸馏(Knowledge Distillation,KD)旨在将“知识”,如logits或中间特征映射,从高性能的教师模型传输到轻量级的学生网络[2,10]。尽管它在泛化方面具有竞争力的性能改进,但预训练复杂的教师模型需要额外的训练时间和计算成本。另一种形成经济蒸馏的方式被称为相互学习,也称为在线蒸馏,其中一组学生相互学习[44]。这个想法被许多后续工作所推广[3,14,33]。但是,在对等学习中的优化涉及多个网络,这需要额外的内存来存储所有参数。

自我知识蒸馏。为增强知识传递的效率和有效性,提出了自我知识蒸馏(Self Knowledge Distillation,SKD)来利用自身的知识,而无需额外网络的参与[31]。构建SKD模型有三种流行方式:1)基于数据失真的自我蒸馏[15,35],2)利用历史信息作为虚拟教师,3)在辅助头之间进行蒸馏[17,43]。然而,第一种方式在于数据增强效率上存在一定依赖性。第二种方式错过了来自上一次小批次的最新更新。而最后一种方式需要对网络架构进行大量修改,增加了其部署的难度。作为正则化的蒸馏。知识蒸馏(KD)在许多任务中被广泛使用,比如模型压缩、半监督学习、领域自适应等[18,26,28]。然而,对KD成功的理论分析仍然是一个巨大挑战。最近,Yuan等人将KD的成功归因于其作为从LSR(标签平滑正则化)视角提供样本级软目标的正则化效果[37]。这揭示了将KD应用于正则化领域的巨大潜力。在这一领域中,类别自我知识蒸馏(CS-KD)通过消除两批同类别样本预测之间的一致性来设计[39]。渐进式自我知识蒸馏(PS-KD)与我们的工作更相似,它逐渐从上个时期蒸馏过去的知识,以软化当前时期的硬目标[12]。记忆回放知识蒸馏(Mr-KD)通过存储一系列被放弃的网络备份进行扩展PS-KD[30]。然而,实施PS-KD或Mr-KD都需要额外的GPU内存来存储历史模型参数或者整个过去预测结果在硬盘上。前一种策略对于像深度WRN[41]这样的大模型来说计算成本很高,而后一种策略在训练像ImageNet[23]这样大型数据集时效率低下。上述缺点导致了训练效率低下,以及在移动电话、数码相机等终端设备上的实现难度[4],限制了其在正则化方面的应用。另一方面,这些方法缺乏来自最后几个小批次的最新信息。为了应对这些不足,我们提出了一种新颖的自我蒸馏框架,名为DLB,将在以下部分详细阐述。

3.Methods

3.1.Preliminary

在这项工作中,我们以监督分类任务作为案例研究。为了清晰表示,我们将一个包含K类标签的数据集表示为D={(xi,yi)}Ni=1,其中N是训练实例的总数。在每个小批次中,一个包含n个样本的批次B={(xi,yi)}ni=1⊆D通过数据扭曲ϕ进行增强,得到扭曲图像集合Bϕ={(ϕ(xi),yi)}ni=1。然后,它们被输入到目标神经网络hθ中,优化交叉熵损失函数,其定义如下:
在这里插入图片描述
待更新

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

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

相关文章

CETN01 - How to Use Cloud Classroom

文章目录 I. Introduction to Cloud ClassroomII. How to Use Cloud Classroom1. Publish Resources2. Conduct Activities3. Class Teaching Reports4. View Experience Values5. Performance in Cloud Classroom I. 云课堂介绍II. 如何使用云课堂1. 发布资源2. 进行活动3. 班…

C++STL之List的实现

首先我们要实现List的STL,我们首先要学会双向带头链表的数据结构。那么第一步肯定是要构建我们的节点的数据结构。 首先要有数据域,前后指针域即可。 再通过模板类进行模板化。 然后再写List的构造函数,这个地方用T&,通过引用就可以减少一次形参拷…

Android 蓝牙BluetoothAdapter 相关(一)

Android 蓝牙相关 本文主要讲述android 蓝牙的简单使用. 1: 是否支持蓝牙 /*** 是否支持蓝牙** return*/ private boolean isSupportBluetooth() {BluetoothAdapter bluetoothAdapter BluetoothAdapter.getDefaultAdapter();return bluetoothAdapter ! null; }2: 开启蓝牙 …

强大的音频编辑器 Metadatics直装 for mac

Metadatics是一款Mac上的音频元数据编辑器,功能强大且高级。它支持批量编辑最常见的音频文件类型,包括MP3、M4A、AIFF、WAV、FLAC、APE、OGG、WMA等。它可以从在线资源中查找元数据,根据元数据重命名文件,或使用众多内置函数之一来…

Mysql、Oracle安全项检查表及操作脚本

软件开发全资料获取:点我获取 Mysql检查表 Oracle检查表

【Canvas】记录一次从0到1绘制风场空间分布图的过程

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 背景 前置知识 风场数据 绘制风场 准备工作 生成二维网格 获取…

ppt转换成pdf文件

最近用到了,记一下; ppt转pdf分为两种情况: 小于2007版本的 .ppt格式(2003) 与大于2007版本的 .pptx格式(2007) .ppt格式为 二进制文件 .pptx格式为xml格式,在java中有不同的jar包需要使用 引入…

MacOS 12 开放指定端口 指定ip访问

MacOS 12 开放指定端口 指定ip访问 在 macOS 上开放一个端口,并指定只能特定的 IP 访问,你可以使用 macOS 内置的 pfctl(Packet Filter)工具来实现。 以下是一些基本的步骤: 1、 编辑 pf 配置文件: 打开 /…

Dockerfile创建镜像--LNMP+wordpress

实验准备: nginx:172.111.0.10 docker-nginx mysql:172.111.0.20 docker-mysql php:172.111.0.30 docker-php 自定义网段:172.111.0.0/16mkdir nginx mysql php mv nginx-1.22.0.tar.gz wordpress-6.4.2-zh_CN.ta…

数据结构之选择排序

目录 直接选择排序 选择排序的时间复杂度 堆排序 向上调整算法 向下调整算法 向上调整算法建立堆 向下调整算法建立堆 堆排序整体代码 堆排序的时间复杂度 直接选择排序 在之前讲插入排序时,我们讲了这样的一个应用场景,我们在斗地主摸牌时&…

PyInstaller 打包 Python 脚本为 .exe 可执行文件闪退、No Model named XXX问题

文章目录 前言.exe 可执行文件闪退No Model named XXXPython 环境问题查看当前python路径查看当前python环境使用的site-package路径 个人简介 前言 在上一篇文章中,我们介绍了如何将 Python 脚本打包为 .exe 可执行文件,但有时候打包生成的 .exe 文件会…

慢SQL诊断

最近经常遇到技术开发跑来问我慢SQL优化相关工作,所以干脆出几篇SQL相关优化技术月报,我这里就以公司mysql一致的5.7版本来说明下。 在企业中慢SQL问题进场会遇到,尤其像我们这种ERP行业。 成熟的公司企业都会有晚上的慢SQL监控和预警机制。…

阿里云cdn设置相同的域名路径访问不同的oss目录

1.设置回源配置,添加回源URL改写 2.设置跨域,cdn的跨域优先oss 3.回源设置

前端 三种解决跨域问题 jsonp 、CORS、代理服务器 解决跨域全家桶

我的报错情况是 后端接口是3000 前端本地接口是8080,最后出现跨域 1.什么是跨域? 首先跨域是一种安全机制,是在开发上线前考虑到的安全问题并且需要采取合适的手段去避免这个问题带来的程序错误,接口跨域可以后端处理,也可以前端处理&#x…

Docker的安装与简单操作命令

目录 前言 docker的安装 基础docker操作 容器管理 镜像管理 容器镜像封装与加载 前言 前文简单说明了容器技术出现的背景,与对docker做了结构上的介绍Container容器技术简介-CSDN博客https://blog.csdn.net/qq_72569959/article/details/134814887 讲到dock…

Day07 Liunx高级系统设计8-线程

概述 进程与线程 进程 : 系统分配资源的基本单位 , 可以简单理解为一个正在进行的程序 线程 : 操作系统调度的最小单位 , 就是一段代码的执行顺序 注意: 1, 一个进程必须要有一个线程 , 该线程被称为主线程 2, 一个进程可以有多个线程 , 除主线程外的其他线程都是…

玻色量子袁为出席中国移动第四届科技周量子计算算法与应用分论坛

9月12日,中国移动第四届科技周“量子计算算法与应用”分论坛在北京成功举办,中国移动研究院院长黄宇红发表致辞,中国移动未来研究院院长崔春风全程主持。玻色量子作为光量子计算领域真机测试与场景应用的标杆企业应邀出席,玻色量子…

散点图,何须图,折线图混放在一个echarts

散点图,何须图,折线图混放在一个echarts option {tooltip: {trigger: axis,axisPointer: {type: cross,crossStyle: {color: #999}}},legend: {data:[盒须图1,盒须图2,折线图,散点图]},xAxis: [{type: category,data: [周一,周二,周三,周四,周五,周六…

智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于花授粉算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.花授粉算法4.实验参数设定5.算法结果6.参考文…

vue3 + ts 防抖指令,节流指令,复制指令

vue3 ts 自定义指令 防抖指令,节流指令,复制指令 本文使用了 element-ui , element-plus 官网 源文件 https://admin.spicyboy.cn/#/directives/debounceDirect 新建 copy.ts 文件 (复制指令) import type { Directive, Di…