知识蒸馏综述笔记

知识蒸馏是一种将大型复杂模型(教师模型)的知识转移至小型高效模型(学生模型)的技术。它涉及到软目标、暗知识、特征模仿和关系学习等方面,旨在提高学生模型的泛化能力和性能。知识蒸馏可以应用于模型压缩、多任务学习和跨模态学习等领域,同时也存在挑战,如选择最佳的知识形式和结合方式。
摘要由CSDN通过智能技术生成

 

 知识蒸馏的目的 将学习能力强的复杂教师模型中的“知识”迁移到简单的学生模型中

1.知识蒸馏的背景知识 

2.解释知识蒸馏的作用机制

3.归纳知识蒸馏中知识的不同形式

4.详细分析和对比了知识蒸馏的各种关键方法,

5.介绍知识蒸馏与其它技术融合、

6.对知识蒸馏在多个不同领域下的应用场景进行了详细的阐述

7.知识蒸馏存在的挑战和未来的研究方向

 

 

 

 模型压缩是

教师网络在相同的带标签的数据集上指导学生网络的训练

来获得简单而高效的网络模型

 

 如何区分呀 

‘ 看标签’ 如果都是有标签的样本 则为 模型压缩

如果 教师网络没有样本 学生网络有样本 其实是可以提高学生的复杂性能 则为 模型增强

 

 

 

 知识蒸馏与迁移学习的四点区别

1.用的数据域不同,知识蒸馏用的是相同的数据集 

而 迁移学习用的是不同领域的数据集 考察的是model的泛化性能

2.网络结构不同

迁移学习 用的是相同的一个网络 跑不同的数据集

知识蒸馏 的两个网络 可以是两个一样的 也可以不一样

3,学习方式也不一样

迁移学习 是可以把其他领域的知识 也就是所谓的权重 也就是所谓的预训练 放到测试的model上

而 蒸馏学习是不会直接使用 学过来的权重的

 

 

与知识蒸馏思想最为接近的工作是 Bucilu 等人 [8] 2006 年提出的“模型压缩” (Model Compression),它通过学习较大但性能更好模型的近似特征来获得轻量级的网络模型.
06年提出模型压缩

 逻辑单元是 Softmax 激活的前一层

类概率 是逻辑单元通过 Softmax 激活函数转化而来

  softmax 的前一层可能包含噪声信息

而这些噪声信息就会导致学生过拟合

从而泛化能力下降

主要是softmax 太直男了哈哈

不够温柔

知识蒸馏 Knowledge distillation(学习笔记)_:)�东东要拼命的博客-CSDN博客

可以看我这一篇讲的很详细

解决办法就是 Hinton老爷子 提出的蒸馏温度

让softmax温柔一些哈哈 

 

 

 

较大 T 值的软目标差异比 T =1 时的差异小,模
型训练时会对较小的逻辑单元给予更多的关注,从
使学生模型学习到这些负样本和正样本之间的关
系信息 . Hinton 等人 [2] 将这样的蕴含在教师模型中
关系信息称之为“暗知识” (Dark Knowledge) ,而
知识蒸馏就是在训练过程中将教师模型的“暗知识”
传递到学生模型中.
这段话 很重要  好好看 好好学
说人话就是 在训练阶段 将softmax尽可能的软化一些,
这样学生就能学到更多的细节
这个细节指的是 

 而这些稍微 明显的高低的关系 就是所谓的暗知识

而这个 解决了之前的难题  老师跟我说 解决这个词 不能乱用 我觉得这里更加适合 提升

 

 

 

只能说 知识蒸馏 真不错 

知识蒸馏的作用机制

知识蒸馏为什么能行对吧 哈哈

就第一句话  这个 软目标 软知识 丰富的知识 给学生模型 提供了正则化约束 

而这个  正则化 还是双向 挺好啊 雨露均沾哈哈

 软目标 标签变得柔和了 顺滑了 术语 叫 标签平滑 

而这个平滑 就能防止过拟合 从另一个角度来说就是 模型泛化能力又强了

 置信度惩罚 说的是loss 与hard 目标

 当然 可以自己来嘛  自己加个正则化 又有何不可嘞

 这个 又是个 好名字呀 特权信息 6其实等价 暗信息 

从莫种意义上来说 其实就是软目标 的信息很丰富

 这个软目标 就是能告诉你 枪往哪打 教师 能引导学生 往哪里优化 不停地迭代自己 成为更好的自己

 这个 比喻很牛逼 很高级 

真的很卷好吗 还嫌弃软目标的知识不够 求知若渴的student model 

一看就是一个好学生 至于聪明不聪明哈哈 不知道 就是想学

扯远了 输出特征知识 答案

        中间特征知识 解题过程

        关系特征知识 解题方法

        结构特征知识  完整的知识体系 理论知识 

看看这格局 至下而上的学习方式 

看看这个中文表达 这个结构特征 一看就比这个关系特征牛

 

 输出特征知识  逻辑单元 软目标 教师模型的最终预测

复习一下 逻辑单元

 这里注意一下 不同任务的输出特征知识 是不同的 

尤其是目标检测 不仅有分类头 还有检测头 里面有着定位信息

 

教师 给的软目标 只能 在学生深层的layer上指方向 

也就是说 学生自己提取特征的技术还得自学 

所以在这个内卷的时代 光学习深层的知识 学生model还不知足

这是就需要学习中间特征知识 这里指的是 教学生怎么提取特征

因为

这个问题

所以提出

中间特征知识

来解决 教师和学生模型在容量之间的 代沟问题 gap

中间特征知识的主要思想

从教师中间的网络层中提取特征来充当
学生模型中间层输出的提示 (Hint)知识(信息).这一过程 就称之为 中间特征的知识蒸馏
Hint learning

 

 

这里重要的是 最早使用教师模型中间特征的是 

 [27] Romero A, Ballas N, Kahou S E, Chassang A, Gatta C, Bengio Y.
Fitnets: hints for thin deep nets//Proceedings of the 3rd Internati-onal Conference on Learning Representations. San Diego, USA,2015:1-13

 

 

 

 这个 十分重要 非常重要 

这个 中间层的知识学习 1.可以逐层 2.可以隔层3. 甚至可以逐块

1.可以通过 模仿学习 例子 可学习的投影矩阵 和定义的注意力映射图

2. 通过 共享网络 直接利用教师的中间特征

很重要 中间特征的知识蒸馏是要最小化教师与学生之间的中间特征映射距离

用到 度量学习 度量学习在知识蒸馏领域应用最广的是 KL散度

用于 最小化教师与学生的model输出的相对概率分布

 关系特征知识 指的是教师模型 不同层之间 和 不同数据样本之间的关系知识

 

 第一阶段 最小化师生间的FSP矩阵距离

第二阶段 使用正常的分类损失来优化学生模型 

FSP 矩阵是测量网络间的关系特征,
后续工作 更强调样本的关系 知识.
基于样本的角度关系和距离关系蒸馏.
其中的角度关系蒸馏用来测量
三个样本角度关系 .

 基于关系的知识蒸馏分成三类

1.基于网络层的关系

 

1. 雅克比矩阵 可以捕获网络层映射相似性

2.使用径向基函数 计算层间的相关性

这两个方法 不收师生网络结构的限制 很适合学生model的模型压缩

 

2。基于样本间的关系

 学习排名 Learning to rank

 

 传递交叉样本的1.相似性知识来改善学生模型

还可以利用

2.相互关系知识

3.相关性知识

(还能借助于辅助技术,如通过图描述数据内部关系来实现样本关系的知识迁移)
优点 优势
基于样本的关系知识蒸馏
不仅1.传递了单个样本的信息,
而且2.传输多个样本间的关系知识,
使学生模型形成与教师相同的关系.

3.相关任务的关系

 

 包含的最广的  怎么说来着

广度最大的是 结构特征知识

结构特征知识蒸馏 是以互补的形式

                                利用多种知识

                                来促使学生的预测  能包含和教师一样丰富的结构知识.

 这里有点乱整理一下

结构化知识可以是 样本特征 +样本间关系 +特征空间变换

                可以是像素关系+像素间整体知识

                可以是输出特征+中间特征+全局预测特征

                可以借助对比学习找

                可以借助生成对抗网络找(干 现在的diffusion)来capture 结构化特征知识

当然 对抗性学习还可以用来调整师生网络结构的全局预测

 知识蒸馏的常见方法

1.知识合并

 好多老师教你不同的科目 你就可以同时处理多个任务 孩子你真苦啊 studentmodel说我还能学,给我插上电源

 有一种方法将多个教师模型的特征知识进行融合 由融合得到的特征作为学生模型学习参数的指导

 一个是 将多个教师的特征压缩到紧凑且有区别的特征集

另一个是 使用辅助模块 来提取多个任务对应的特征

 

我也不知道我现在突然看不进去 这一段

只能慢慢分析了

首先 我们用到了一个 共享网络层

这个共享网络层直接去学习多个教师model的特征

来达到一个目的 实现多任务知识的合并 是不是可以理解为多个不同领域知识的融合

而达到这个目的的操作是

把教师model的相应层?替换为学生model要学习的层 学生要学的层不应该就是 教师model的相应层 这不是离谱

往下看 使学生的网络块与相应的教师一起学习??? 满脸黑线 教师model 还要学习???

下面举了一个例子 学生将不同领域的融合知识 投射到 每个教师的专业领域知识 

并以计算损失的方式更新学生模型的参数

这个例子讲的很清楚 学生model将学到的融合知识 投射到 相应老师的相关领域来计算loss

其实就是学生学的好坏 与训练时的指引 至于中间这个描述 真的好迷

 

2.多教师学习 

 

这段话说的很好 举出了知识合并和多教师学习 的相同点与不同点

相同的是 知识合并和多教师学习 都是让学生model同时学习多个教师的知识

不同的是 目的 多教师相当于 多个相同专业的老师教你 让你对一个专业的理解加深 在单任务上处理变强

知识合并 是不同专业的老师教你 目的是让你的高考的每一个科目都能同时处理并且拿高分 

 

 

 

 

  长期的教师信号提供了稳定的教师信息,保证了师生的差异,
 而短期的教师信号则保证了高质量的教学.

 

 

3.教师助理

 

 就这一段话吓我一跳 还以为自己的创新点完蛋了 还好 只能说还没提及 让我更坚信了自己的创新点的可行性 只能说有点相似 

[57] Mirzadeh S I, Farajtabar M, Li A, Levine N, Matsukawa A, Gha
semzadeh H. Improved knowledge distillation via teacher assis
tant//Proceedings of the AAAI Conference on Artificial Intel
ligence. New Orleans, USA, 2020, 34(04): 5191-5198
[58] Passalis N, Tzelepi M, Tefas A. Heterogeneous knowledge distill
ation using information flow modeling//Proceedings of the IEEE/
CVF Conference on Computer Vision and Pattern Recognition.
Seattle, USA, 2020: 2339-2348
[59] Gao M, Wang Y, Wan L. Residual error based knowledge distilla
tion. Neurocomputing, 2021(433): 154-161好好看好好学

4.跨模态蒸馏 

可以给阳仔这个创新点

 

5.相互蒸馏

 在线蒸馏 好牛啊 用的是 KL散度

 

 

看看 都是啥 CVPR ICCV  NIPS 

6.终身蒸馏

 

 

 还有啊  个人觉得 看文献综述的阶段不要那么执着于数学公式 真的 除非就是 真的发那种全都是数学公式的顶刊 不然真的没必要 还有就是确定某一个具体方向 那就应该深耕 而不是 全都钻进去 时间真的很重要

 θs 为网络的共享参数

θo 为旧任务参数

目的是增加一个新任务参数 θn

并让 θn 在新旧任务上都能获得高性能.

通过缓存一小部分旧任务数据和产生旧任务相似的输出值或视觉模式都能使网络在学习新任务的同时保持旧任务性能.

7.自蒸馏

 

 

 

只能说自蒸馏很棒 

 思想很novalty

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 这里有跟我相关 的Transform 多个层压缩到一个层 

或者是引入自适应层

 

 

 

 

 

 

 

 

 

 

 

 

 看了这么多 从一开始就带有一个疑问 那么哪种知识蒸馏方式最厉害嘞

答案是目前尚无定论哈哈

但是可以说得是

我们既然决定要整知识蒸馏了 就要知道每种知识以及不同种类组合的知识的作用

1.基于特征的知识在模仿教师特征产生的过程

2.基于关系的知识用于捕获数据样本间 网络层 特征的关系 结构化咋不提啦?

当教师模型与学生模型容量差别较小的时候 (也小不到哪里去)

软目标就够用了

但基本上都是差别很大的时候比较多 所以就要用将多种蒸馏的知识形式和方法结合起来来表示出教师model

读完这一段之后 我能告诉你最优的是组合 至于怎么组合 组合什么知识 什么技术 目前尚无定论

 知识其实是一个黑盒问题

这一段话指出了一个问题 那么网络层之中 或者样本间 再或是 输出的特征 到底哪里的知识是最好的呀

首先我们知道教师模型和学生模型从直观上就是大小不一样 

再深入认识之后 那网络结构也肯定不一样

而至于教师网络中哪一层最具代表性 也是一个知识蒸馏理论上的未知问题

还有要知道的是

关系蒸馏跟网络容量大小没有关系 关系蒸馏仅仅获取的是 网络层和样本间的关系 并非容量差异gap 问题 原因是 知识也是个黑盒 不可知嘛哈哈

 这一段话说的是 知识蒸馏与网络架构无关 其实从另一层角度来看 对科研小白比较友好

它无需大改网络 只需要确定好一个教师模型 to find an excellent student model 就好

逻辑反推 没有确定好老师  就没办法找到好的学生 控制变量 

 

这个可太重要了

睁大眼睛好好学 

老师教的好不好 我们通常看学生考的高不高

而这里就是看student的performance (测试阶段)

而在训练阶段 我们就要明确 关于**问题我们需要采用**的损失函数来找到学生学的和老师教的最接近的情况

需要提前设计好 loss function 

常见的有三种 

1.余弦相似(缺点就是会使得教师和student的随机分布上的相似度非对称)

2.KL散度(缺陷是不能考虑到向量的大小 优点是突出了两个向量方向上的差异)

3.MSE(在高位特征并不明显,很容易被随机特征混淆)

 

这一段告诉大家 知识蒸馏很厉害很值得搞探究

它融合了模型压缩 模型增强 牛得不得了 

 

 

最后感谢 写这篇综述的peer 让我这科研小白再次了解一个新的field 

感谢 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东东要拼命

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值