Rocket Launching: A Universal and Efficient Framework for Training Well-performing Light Net论文阅读

article/2025/11/7 7:03:35

目录

摘要

引言

相关工作

方法

  框架和损失函数

  方法特色

实验

  不同的共享结构

  CIFAR-10

  rocket和AT的中间层注意图的可视化

结论


摘要

提出了用好网络帮助小网络训练的新的统一框架

这个框架中,好网络全程都在帮助小网络学习

分析了不同的loss的效果

用叫做gradient block的技巧同时提升了小网络和好网络的性能

引言

  • 之前

分解和压缩解决推理时间长的问题,有矩阵SVD,MobileNet以及ShuffleNet

知识蒸馏,有KD,Fitnets

  • 本文工作

名字叫做rocket launching

booster对应深的复杂的teacher,light net是student

light net和booster net都是这个架构的组成成分,训练的时候都参与训练

light net在训练过程中会学习booster net的知识

  • 总结

设计了一个统一叫做rocket launching的架构,booster全程对student监督,student可以达到接近booster的效果

分析了不同的知识蒸馏函数

设计了gradient block技巧,使得booster在训练的时候不受light net的影响,给了booster更多的自由性

相关工作

  • 简化计算和裁剪

SVD近似卷积

深度可分离卷积( MobileNets )

pointwise组卷积和通道的打乱(ShuffleNet)

用下一层的数据信息裁剪当前层的filters(ThiNet )

  • teacher-student

用集成模型标记没有标签的数据,将数据用来训练小网络,表明大网络的知识可以迁移到小网络中

有论文使用softmax前的logits作为要迁移的知识,训练小网络

KD,用了T来放大输出概率的分布信息,证明了T无限大时,logits的方法是它的特例

用中间层的信息作为要迁移的知识(Fitnets)

用多层的信息,但是用attention map作为要迁移的知识

  • 本文和之前做法的不同点

booster会在自己训练的整个过程的同时提供给light net知识这是因为light net不仅仅需要最后尘埃落定后的知识,还需要整个训练过程的优化走向知识,也就是说怎么走到终点也是一个重要的要传递的知识

booster和light net底层的参数是共享的,这是因为同样的任务,低层次的特征表达应该是相同的

方法

  框架和损失函数

  • 框架

粉红色框是booster,蓝色框是light net

黄色块是共享参数,粉色块是booster的参数,蓝色块是light net的参数

  • 损失函数

x是输入,y是标签,Ws是共享参数,Wl是light net的参数,Wb是booster的参数

H是普通交叉熵损失,两个交叉熵加一个监督损失

l(x)表示booster中从输入到softmax之前的logits的映射

z(x)表示light net中从输入到softmax之前的logits的映射

lamda权证两个损失的超参数

  方法特色

  • 参数共享

直接从booster中获取推力,带动light net获取更好的性能

多任务学习以前就有,计算机视觉中,假设多个任务的低层表达信息是类似的,可以通过共享参数来减少推理时间

另有论文表明共享参数可以帮助减少收敛时间

  • 同时训练

同时训练使得light net不仅可以学到booster网络的最终的输入,而且可以学到booster是怎么一步一步走到最终的结果的,这个过程教导是之前的知识蒸馏方法没有的

  • Hint loss

考虑以下三种知识蒸馏的损失函数:

MSE of final softmax:

可以看到导数是跟输出的概率值成比例关系的,如果输出的概率接近于0,就算和真正的teacher的概率差别很大,梯度也会接近于0,有梯度消失的问题

MSE of logits before softmax activation

 

可以看到梯度直接是student和teacher的logits的差距,没有梯度消失的问题,在这几种loss中效果最好

knowledge distillation

当T非常大时,KD原论文推到出logits是它的特例

不得不说这里的推导实在牵强的很,推到过程会用到如上所示的泰勒展开越等式,省掉了项,注意到(4)式是与它同等级的,那么按理说(4)式也可以忽略。。。

我认为这里省略掉的无穷小跟结果同级的情况下,得到的跟(3)式成比例的结论是靠不住的,因为假如考虑到被省略的无穷小的因素,完全可能会影响最终的同级别的无穷小的结果,导致结果不跟(3)式成比例

本论文的作者对推到差生了质疑,但是又肯定了以下的推论:

在T非常小的情况下,梯度会接近于pi-qi,所以当多个类别的qi接近于0时,最终输出的相似性信息是没有体现在梯度中的,所以网络会忽略掉这些信息;当T非常大的情况下,梯度会接近li-zi,这时的梯度是logits之间的差,就算最终的概率值都很小的情况下,由于logits的值并不小,而且logits之间也是有明显区别的,所以也会将概率接近于0的类别的相似性信息考虑到

所以KD原作者认为T取一个不过大的值效果好是有道理的,这会使得网络忽略掉一些值太小的类别间的差异,而这些差异很可能是噪音造成的;而本论文的作者通过实验表明logits蒸馏的效果最好,他认为这些值非常小的类别间的差异仍然是有用的

  • Gradient block

​​​​​​​

booster和light net同时训练时,hint loss会阻止booster直接从target中训练,从而影响到他的表现,而light net的知识又是从booster中来的,这也会进而影响到light net的表现

为了解决这个问题,作者采用gradient block阻止hint loss传入booster,这使得Wb不接受来自于hint loss的导数

实验

  不同的共享结构

Figure 3中红色块时共享块

蓝色块时booster的独立块

黄色箭头指向light net的独立块

由于attention transfer不能直接在整个体系中直接实现(因为AT需要在每个块的结尾做知识监督,而若第一个块全用来共享,就不能再做知识监督了),所以实现了(b)的共享模式

  CIFAR-10

从表中可以看出rocket的效果要好于AT和KD的效果

并且rocket和KD相结合可以使最终的结果再次提升,这说明rocket和KD有不同的优化方向,是互补的

从表中可以看出每一个技巧都是有效的

  rocket和AT的中间层注意图的可视化

可以看到,rocket(Figure 5(b))对于注意力图的学习力还要稍微强于AT(Figure 5(a))的能力

结论

提出了一种高效的叫做rocket launching的知识蒸馏框架

booster和light net同时训练,帮助light net学习整个优化的过程知识

booster和light net共享参数,使light net直接利用booster的底层表达能力

分析不同hint loss的影响

用gradient block技巧防止hint loss对booster网络造成不好的影响


http://chatgpt.dhexx.cn/article/YyVxvfKV.shtml

相关文章

面试之算法知识点总结

1.如何防止过拟合 加样本,加正则化惩罚项,加dropout,减小网络规模,early stopping 2.cacade r-cnn https://zhuanlan.zhihu.com/p/42553957 3.朴素贝叶斯的朴素 之所以叫朴素,就是因为属性条件独立的假设&#xf…

【论文笔记_在线蒸馏、GAN】Online Multi-Granularity Distillation for GAN Compression

2021年。 摘要 生成性对抗网络(GAN)在生成优秀图像方面取得了巨大的成功,但是,由于计算成本高,内存使用量大,在资源有限的设备上部署GAN非常困难。尽管最近压缩GAN的努力取得了显著的成果,但它…

BERT知识点总结

文章目录 为什么NLP网络中经常使用Adam优化器以及存在的问题NLP语言模型的特点Adam优化器的特点问题解决办法 BERT的基本原理BERT为什么要取消NSP任务为什么BERT比ELMo效果好?ELMo和BERT的区别是什么?为什么BERT比ELMo效果好ELMo和BERT的区别是什么 BERT…

【论文速递】CCDC2021 - 轻量级网络的结构化注意知识蒸馏

【论文速递】CCDC2021 - 轻量级网络的结构化注意知识蒸馏 【论文原文】:Structured Attention Knowledge Distillation for Lightweight Networks 获取地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9601745 CSDN下载&#xff1a…

从Hinton开山之作开始,谈知识蒸馏的最新进展

作者 | 孟让 转载自知乎 导读:知识蒸馏是一种模型压缩常见方法,模型压缩指的是在teacher-student框架中,将复杂、学习能力强的网络学到的特征表示“知识”蒸馏出来,传递给参数量小、学习能力弱的网络。本文对17、18年知识蒸馏的最…

深度学习精度提升 3 个小妙招:模型集成、知识蒸馏、自蒸馏

本文转载自 AI公园。 作者:Zeyuan Allen-Zhu 编译:ronghuaiyang 导读 训练好的模型,用自己蒸馏一下,就能提高性能,是不是很神奇,这里面的原理到底是什么呢,这要从模型集成开始说起。 在现在的标…

AI关键组件 | 集成,知识蒸馏和蒸馏「AI核心算法」

关注:耕智能,深耕AI脱水干货 作者:Zeyuan Allen-Zhu 编译:ronghuaiyang 报道:AI公园 转载请联系作者 训练好的模型,用自己蒸馏一下,就能提高性能,是不是很神奇,这里面的…

深度学习中的3个秘密:集成,知识蒸馏和自蒸馏

点击上方“CVer”,选择加"星标"置顶 重磅干货,第一时间送达 本文转载自:AI公园 作者:Zeyuan Allen-Zhu | 编译:ronghuaiyang 导读 训练好的模型,用自己蒸馏一下,就能提高性能&#…

深度学习中的3个秘密:集成,知识蒸馏和蒸馏

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作者:Zeyuan Allen-Zhu 编译:ronghuaiyang 导读 训练好的模型,用自己蒸馏一下,就能提高性能,是不是很神奇,这里面的原理到…

【论文笔记_知识蒸馏_2022】Knowledge Distillation with the Reused Teacher Classifier

(下文中的知识提炼即知识蒸馏) 摘要 知识提炼的目的是将一个强大而繁琐的教师模型压缩到一个轻量级的学生模型中,而不至于牺牲很多性能。为此,在过去的几年里,人们提出了各种方法,一般都有精心设计的知识…

深度学习优化利器:集成、知识蒸馏和自蒸馏

为什么简单的「集成」便能够提升性能呢?本文是对上述问题的解析,作者解读了来自微软研究院高级研究员朱泽园博士,以及卡内基梅隆大学机器学习系助理教授李远志的最新论文《在深度学习中理解集成,知识蒸馏和自蒸馏》。 本文授权转自…

深度学习中的3个秘密:集成、知识蒸馏和蒸馏

作者:Zeyuan Allen-Zhu 来源:AI公园 编译:ronghuaiyang 在现在的标准技术下,例如过参数化、batch-normalization和添加残差连接,“现代”神经网络训练 —— 至少对于图像分类任务和许多其他任务来说 —— 通常是相当稳…

【知识蒸馏】Knowledge Distillation with the Reused Teacher Classifier

文章目录 一、摘要二、引言三、相关工作四、创新点五、实验5.1精度对比5.2. 分类器重用操作分析5.3 应用一:多教师知识提炼5.4 应用二:无数据的知识蒸馏 六.结论七. 限制性和未来工作 一、摘要 知识蒸馏的目的是将一个强大而繁琐的教师模型压缩到一个轻…

集成、知识蒸馏和自蒸馏有区别?

点击上方“视学算法”,选择加"星标"或“置顶” 重磅干货,第一时间送达 作者丨梦佳 来源丨智源社区 编辑丨极市平台 集成(Ensemble,又称模型平均)是一种「古老」而强大的方法。只需要对同一个训练数据集上&am…

知识蒸馏学习

一.知识蒸馏综述 1.简介 大模型在部署到资源有限的设备上(手机、嵌入式设备等)会遇到体积和速度问题,知识蒸馏作为有代表性的模型压缩和加速的技术之一(其他还有:参数裁剪和共享、低秩分解和Transferred compact con…

深度学习三大谜团:集成、知识蒸馏和自蒸馏

来源:数据派THU 链接:https://www.microsoft.com/en-us/research/blog/three-mysteries-in-deep-learning-ensemble-knowledge-distillation-and-self-distillation/ 编辑:王萌(深度学习冲鸭公众号) 著作权归作者所有,本文仅作学术…

sql 一条语句统计男女人数

第一种方法: SELECT user.sex, count(user.sex) as 总数 FROM test.user group by user.sex; 执行结果 ​​​​ 第二种方法: select sum(case when sex 男 then 1 else 0 end) 男生人数 , sum(case when sex 女 then 1 else 0 end) 女生人数 from …

Sql根据不同条件统计总数

前言 经常会遇到根据不同的条件统计总数的问题&#xff0c;一般有两种写法&#xff1a;count和sum都可以 数据准备&#xff1a; 方法一 &#xff1a;Count 代码&#xff1a; SELECTCOUNT(CASEWHEN age > 20AND age < 25 THEN1ELSENULLEND) AS cnt0,COUNT(CASEWHEN a…

SQLServer查询多条件统计总数

业务需求&#xff1a;根据不同条件查询统计出总价钱 select SUM(case when status0 then price else 0 end) A, SUM(case when status5 then price else 0 end) B, SUM(case when status4 then price else 0 end) C, SUM(case when status1 then price else 0 end) D, SUM(ca…

SQL--统计出每日在线总数

需求&#xff1a; 一张表有uid、起始日期和终止日期&#xff0c;能不能一条sql统计出每日在线总数 样例&#xff1a; 比如 三条数据&#xff1a; a 20220510 20220512 b 20220510 20220511 c 20220511 20220512 结果: 20220510 2 20220511 3 20220512 2 数据准备&#xff1a;…