Distilling Knowledge via Knowledge Review

news2024/9/29 3:26:11

摘要

知识蒸馏从教师网络转移到学生网络,目的是大大提高学生网络的性能。以往的方法主要是通过提出特征变换和同级特征之间的损失函数来提高有效性。对师生网络连接路径交叉层次的影响因素进行了不同程度的研究,揭示了其重要性。在知识蒸馏中首次提出了跨阶段连接路径我们新的审查机制有效,结构简单。我们最终设计的嵌套和紧凑的框架需要可以忽略不计的计算开销,并且在各种任务上由于其他方法。我们将我们的方法应用于分类、对象检测和实例分割任务。

介绍

知识蒸馏在文献[9]中首次提出。这个过程是在一个更大的网络(也就是教师)的监督下训练一个小网络(也就是学生)。在[9]中,知识是从教师里提炼出来的logit,这意味着学生同时受到ground truth和教师logit的监督。近年来,人们一直在努力提高蒸馏效率。FitNet[25]通过中间特征提取知识。AT[38]进一步优化了FitNet,利用特征的注意图传递知识。PKT[23]将教师的知识建模为概率分布,而CRD[28]使用对比目标来转移知识。所有这些解决方案都集中在变换和损失函数上。

我们的新发现:本文从教师与学生之间的联系路径这一新的视角来解决这一具有挑战性的问题。为了简单地理解我们的想法,我们首先提示之前的工作是如何处理这些路径的。如图1(a)-©所示,前面的方法都只是使用同一层次的信息来引导学生例如,在监督学生的第四阶段输出时,总是使用教师的第四阶段信息。这个程序看起来很直观,很容易构造。

image-20240304152505549

但有趣的是,我们发现它实际上是整个知识蒸馏框架的瓶颈——结构的快速更新惊人地提高了许多任务的整个系统性能。

我们研究了之前在知识蒸馏中被忽视的连接路径设计的重要性,并提出了一个新的有效框架。关键的改进是使用教师网络中的底层特征来监督学生的深层特征,这大大提高了整体性能。

我们进一步分析了网络结构,发现学生高水平阶段从教师的低水平特征中学习有用信息的能力很大。这个过程类似于人类的学习曲线,小孩子只能理解教授的一小部分知识。在成长的过程中,越来越多来自过去岁月的知识可能会逐渐被理解并记忆为经验。

我们的知识回顾架构

基于这些发现,我们提出利用教师的多层次信息来指导学生网络的一层信息我们的新框架如图1(d)所示,我们称之为“知识回顾”。回顾机制是使用以前的(较浅的)特性来指导当前的特性。这意味着学生必须经常检查以前学过的知识,以获得新的理解和“旧知识”的背景。在我们人类的学习中,将不同阶段的知识联系起来是一种常见的做法。

然而,如何从教师提供的多层次信息中提取有用的信息并将其传递给学生是一个开放和具有挑战的问题。为了解决这些问题,我们提出了一个残差学习框架,使学习过程稳定高效。此外,**设计了一种新的基于注意力的融合(ABF)模块和层次上下文丢失(HCL)功能来提高性能。**我们提出的框架使学生网络大大提高了学习的有效性。

主要贡献

1、我们提出了一种新的知识蒸馏回顾机制,利用教师的多层次信息来指导学生网络的一层学习。

2、为了更好地实现回顾机制的学习过程,我们提出了残差学习框架。

3、为了进一步完善知识回顾机制,我们提出了基于注意力的融合(ABF)模块和层次上下文损失(HCL)函数

我们的方法

我们首先形式化了知识蒸馏提炼过程和回顾机制。然后,我们提出了一个新的框架,并引入了基于注意力的融合模块和分层上下文损失函数。

回顾机制

给定输入图像X和学生网络S表示学生的输出logit。S可以分成不同的部分(S1,S2,…Sn,Sc),Sc是分类器,S1,…,Sn是被下采样层分割的不同阶段。因此,产生输出Ys的过程可以表示为
KaTeX parse error: Can't use function '$' in math mode at position 12: Y_s = S_c $̲\circ$ ....$\ci…
我们将image-20240305125817076称为函数嵌套,其中image-20240305131008329image-20240305131015402image-20240305131717215为学生的输出,中间特征为image-20240305131801802。第i个特征计算为:
KaTeX parse error: Can't use function '$' in math mode at position 14: F_s^i = S_i $̲\circ$ ....$\ci…
对于教师网络T,过程几乎相同,我们省略了细节。根据前面的符号,单层知识蒸馏可以表示为
L S K D = D ( M s i ( F s i ) , M t i ( F t i ) ) L_{SKD} = D(M_s^i(F_s^i),M_t^i(F_t^i)) LSKD=D(Msi(Fsi),Mti(Fti))
其中M是将特征转化为注意图[38]或因素[14]的目标表示的转换,D是距离函数用于衡量学生和教师之间的差距。类似的,多层知识蒸馏写为
L M K D = ∑ i ∈ I D ( M s i ) L_{MKD} = \sum_{i \in I}D(M_s^i) LMKD=iID(Msi)
I存储特征层来传递知识。

我们的评审机制是使用以前的特性来指导当前的特性。带评审机制的单层知识蒸馏形式化为
L S K D R = ∑ j = 1 i D ( M S i , j ( F s i ) , M t j , i ( F t j ) ) L_{SKD_R} = \sum _{j=1}^i D(M_S^{i,j}(F_s^i),M_t^{j,i}(F_t^j)) LSKDR=j=1iD(MSi,j(Fsi),Mtj,i(Ftj))
虽然乍一看,它与多层知识蒸馏有一些相似之处,但实际上是根本不同的。在这里,学生的特征被固定为image-20240305134705727,我们用老师的前i层特征来引导image-20240305134733372。审查机制和多层蒸馏是互补的概念。将评审机制与多层知识蒸馏相结合,损失函数变为:
L M K D R = ∑ i ∈ I ( ∑ j = 1 i ) D ( M s i , j ( F s i ) , M t j , i ( F t j ) ) L_{MKD_R} = \sum _{i \in I}(\sum _{j=1}^i)D(M_s^{i,j}(F_s^i),M_t^{j,i}(F_t^j)) LMKDR=iI(j=1i)D(Msi,j(Fsi),Mtj,i(Ftj))
在我们的实验中,在训练过程中,简单地将损失与原始损失单独相加推理结果与原始模型完全相同。所以我们的方法在测试时完全没有成本。使用因子image-20240305143838670平衡蒸馏损失和原始损失。以分类任务为例,将整个损失函数定义为:

image-20240305143922055

在我们提出的审查机制中,我们只使用教师的浅层特征来监督学生的较深特征。我们发现,相反的做法带来了边际效益,反而浪费了大量的资源。直观的解释是,更深层、更抽象的特征对于早期学习来说太复杂了。

残差学习框架

根据之前的工作,我们首先设计了一个简单的框架,如图2(a)所示。变换image-20240305144529312简单地由卷积层和最近的插值层组成,将学生的第i个特征 转移到匹配教师的第j个特征的大小。我们不变换教师特征image-20240305144732250。学生特征被变换成与教师特征相同的大小。

图2(b)显示了将该思想直接应用于多层蒸馏,并蒸馏了所有阶段的特征。然而,由于层之间存在巨大的信息差异这种策略并不是最优的。因此,它产生了一个复杂的过程,其中使用了所有功能。例如,有n个阶段的网络需要计算n(n+1)/2对损失函数的特征,这使得学习过程非常繁琐,耗费大量的资源。

为了使过程更加可行和优雅,我们将图2(b)的等式(6)重新描述为
L M K D R = ∑ i = 1 n ( ∑ j = 1 i D ( F s i , F t j ) ) L_{MKD_R} = \sum_{i=1}^n(\sum_{j=1}^iD(F_s^i,F_t^j)) LMKDR=i=1n(j=1iD(Fsi,Ftj))
为了简单起见,省略了特征的变换。现在我们交换i和j的两个求和的顺序
L M K D R = ∑ j = 1 n ( ∑ i = j n D ( F s i , F t j ) ) L_{MKD_R} = \sum_{j=1}^n(\sum_{i=j}^nD(F_s^i,F_t^j)) LMKDR=j=1n(i=jnD(Fsi,Ftj))
当j固定时,等式9累加教师特征image-20240305152206593与学生特征之间的距离。通过特征融合[40,16],我们将距离的总和近似为融合特征的距离。它会导致
∑ i = j n D ( F s i , F t i ) ≈ D ( U ( F s j , . . . . , F s n ) , F t j ) \sum_{i=j}^nD(F_s^i,F_t^i) \approx D(U(F_s^j,....,F_s^n),F_t^j) i=jnD(Fsi,Fti)D(U(Fsj,....,Fsn),Ftj)
其中U是融合特征的模块。图2©说明了这种近似,其中结构现在更有效了。但为了提高计算效率,可以进一步优化融合计算,如图2(d)所示。image-20240305152746553的融合由image-20240305152757008image-20240305152805170组合计算,其中融合操作递归定义为image-20240305152835033,应用于连续的特征映射。将image-20240305152918634记为特征从image-20240305152927470image-20240305152934933的融合,损失记为:
L M K D R = D ( F s n , F t n ) + ∑ j = n − 1 1 D ( U ( F s i , F s j + 1 , n ) , F t j ) L_{MKD_R} = D(F_s^n,F_t^n) + \sum_{j=n-1}^1 D(U(F_s^i,F_s^{j+1,n}),F_t^j) LMKDR=D(Fsn,Ftn)+j=n11D(U(Fsi,Fsj+1,n),Ftj)
在这里我们从n-1循环到1来使用image-20240305153203807,详细结构如图2(d)所示,其中ABF和HCL分别是为此结构设计的融合模块和损失函数。图2(d)中的结构很简洁,利用残差学习的概念简化了提炼过程。例如,将第四阶段的学生特征与第三阶段的学生特征聚合起来,以模仿第三阶段的教师特征。因此,第四阶段的学生特征学习了第三阶段的学生与教师之间特征的残差。残差信息很可能是教师产生高质量教学结果的关键因素。

这种残差学习过程比直接让学生的高阶特征从教师的低阶特征中学习更稳定有效。利用残差学习框架,学生的高级特征可以更好地逐步提取有用信息。此外,使用等式(11),我们消除了求和并将总复杂度降低到n对距离。

ABF和HCL

图2(d)中有两个关键组件。它们分别是基于注意的融合(ABF)和层次上下文丢失(HCL)。我们在这里解释一下。

ABF模块利用[30,12]的洞察力,如图3(a)所示。高级特征首先被调整为低级特征相同的形状。然后将来自不同层次的两个特征连接在一起,生成两个H×W注意图。这些特征图分别与两个特征相乘。最后,添加这两个特征以生成最终输出。

ABF模块可以根据输入特征生成不同的注意图。因此,两个特征映射可以动态聚合。由于两种特征图来自不同的网络阶段,其信息具有多样性,因此自适应和优于直接和。低级和高级特征可能关注不同的分区。注意图可以更合理地聚集它们。

HCL的详细情况如图3(b)所示。通常,我们使用L2距离作为两个特征映射之间的损失函数。L2距离对于同一层特征之间的信息传递是有效的。但在我们的框架中,不同层次的信息被聚集在一起,向老师学习。微小的全局L2距离不足以传递符合能级的信息。

受[41]的启发,我们提出了HCL,利用空间金字塔池,将知识转移到不同层次的上下文信息中。这样,信息可以更好地提炼成不同的抽象层次。结构非常简单:我们首先使用空间金字塔也从特征中提取不同层次的知识,然后分别用L2距离进行蒸馏。尽管结构简单,但HCL适合我们的框架。

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

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

相关文章

【Python 识别某滑块的距离】今天来换思维搞滑块,不用识别库,几行代码就能搞定,仅供学习

写作日期:2024.03.05 使用工具:Python 温馨提示:此方法仅对有完整图和缺口图的滑块有效,可精准识别出缺口要滑动的距离 文章全程已做去敏处理!!! 【需要做的可联系我】 AES处理(直接…

HI3519DV500 HI3519DRFCV500 HI3519DRBCV500 海思安防监控芯片 提供原厂开发包

一、总体介绍 Hi3519DV500是一颗面向视觉行业推出的超 高清智能 SoC。该芯片最高支持四路sensor输 入,支持最高4K30fps的ISP图像处理能力,支持 2F WDR、多级降噪、六轴防抖、全景拼接、多光 谱融合等多种传统图像增强和处理算法,支持通过AI…

记录前端面试的一些笔试题(持续更新......)

文章目录 js相关数组去重数组对象去重 实现数组unshift数组扁平化tree型数据扁平化list数据转tree型数据 对象深拷贝防抖/节流函数柯里化函数管道 随便记录一些,面试或者工作中都会用到,实现的方法很多,这里只是一小部分,有更好的…

网上搞钱的方法你知道几个?盘点3个普通人都可操作的赚钱项目

项目一,微头条 我们可以借助精彩的文章,分享知识、心得和见解,吸引更多的读者关注并获得更多的点赞与评论。关键字的巧妙运用将使你的文章更具吸引力和影响力,同时也会为你带来更多的关注度和阅读量。我们写微头条文章的时候&…

【Python】使用numpy进行神经网络激活函数算法描述

【Python】使用numpy进行神经网络激活函数算法描述 系统:macOS 10.14.5 IDE:PyCharm 2018.2.4 一、What 1.1 NumPy NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供…

找不到msvcr100.dll怎么办,多种解决方法快速修复msvcr100.dll问题

当计算机系统中关键文件msvcr100.dll丢失时,可能会引发一系列运行问题和故障现象。msvcr100.dll是Microsoft Visual C Redistributable Package的一部分,对于许多基于Windows的应用程序正常运行至关重要。由于msvcr100.dll是许多应用程序运行所必需的动态…

BUUCTF:[MRCTF2020]ezmisc

题目地址:https://buuoj.cn/challenges#[MRCTF2020]ezmisc 下载附件打开是一张照片: 放到kali中发现crc校验错误,修改照片宽高: 保存即可发现flag flag为: flag{1ts_vEryyyyyy_ez!}

学习Python类型和对象,看这篇文章足矣!

类型与对象 一点基础理论: 对象代表现实世界中像轿车、狗、自行车这些事物。对象具有数据和行为两个主要特征。 在面向对象编程中,我们把数据当作属性,把行为当作方法。即: 数据 → 属性 和 行为 → 方法 类型是创造单个对象实例的蓝本。…

CSS元素分类,知乎上已获万赞

什么是css块元素? 块级元素是独占一行显示的。它的兄弟元素必定不会与其在同一行中(除非脱离了文档流)。通俗点来说,就是块元素(block element)一般是其他元素的容器元素,能容纳其他块元素或内联元素。 css块元素的三…

基于SSM的学科竞赛管理系统。Javaee项目。ssm项目。

演示视频: 基于SSM的学科竞赛管理系统。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvcMybatisVueLayuiElemen…

Java 反射详解:动态创建实例、调用方法和访问字段

“一般情况下,我们在使用某个类之前已经确定它到底是个什么类了,拿到手就直接可以使用 new 关键字来调用构造方法进行初始化,之后使用这个类的对象来进行操作。” Writer writer new Writer(); writer.setName("少年");像上面这个…

2024年软考-官方最新考试安排出来了,软考新调整,很重要,但也很惹人气愤

官方最新通知,关于2024年度计算机技术与软件专业技术资格(水平)考试工作计划 笔试改机考后,必然会迎来调整,但有点让人费解。 这次调整变动主要是每年考试的次数调整,很多改为了一年一考,具体…

Centos8 yum方式安装Redis

Centos8 yum方式安装多个Redis 是否安装GCC依赖 ggc -v #或者 rpm -q gcc安装GCC yum install -y gcc如果不是管理员 加 sudo sudo yum install -y gcc yum安装Redis yum install redis失败更新yum 再安装 #添加EPEL仓库 sudo yum install epel-release#更新yum源 sudo yum upd…

Newsmy储能电源与您相约九州汽车生态博览

2024年3月7日—10日,第24届 深圳国际智慧出行、汽车改装及汽车服务业态博览会(以下简称“九州汽车生态博览会”)将在深圳国际会展中心(宝安)举办,Newsmy纽曼集团将在3号馆32523展位,携全系产品与…

拼多多3.9元的手机支架,在视频号卖15.9元

关注卢松松,会经常给你分享一些我的经验和观点。 万万没想到:拼多多3.9元的手机支架,在视频号竟然要卖15.9元。 更让人想不到的是:视频号商家竟然是从拼多多发货的,足足赚了4倍差价。 更更更让人想不到的是&#xff1a…

2024年第一届CS2major,新胶囊即将发行,需要提前做哪些布局

2024年第一届CS2major,将会在3月17日哥本哈根开始。 所以: 1、新的胶囊大概率会在3月10日左右发布。 2、网传战队挂坠,不知道是否会出现?(原本出现过战队布章包,由于销量太差,第二届就取消了…

《花书》学习:LeNet

# LeNet网络架构 正常的应该是:输入→操作→输出 但都简化 要么省略 操作 要么省略 输出 # LeNet第一个卷积层详解

实现session共享的方法总结完整版

文章目录 实现session共享的方法总结完整版1、使用共享数据库:2、使用粘性会话(Sticky Session):3、使用缓存系统:4、使用分布式文件系统:5、使用中央认证服务:6、使用会话复制:7、使…

【软件测试】一个扫码支付的二维码怎么测(测试点分析)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 面试的时候&#…

linux小记(1)

基本概念:不依靠扩展名来区分文件类型 好处:除了文本文件其他所有windows文件都无法在Linux下运行,包括病毒木马。 坏处:所有的软件都需要对linux单独开发 习惯用后缀来区分文件,方便管理。 -压缩包:*.…