《A Gift from Knowledge Distillation:Fast Optimization, Network Minimization and Transfer Learning》阅读

发布于:2023-01-22 ⋅ 阅读:(6) ⋅ 点赞:(0) ⋅ 评论:(0)

目录

零、前言

一、知识的三种形式

二、主要观点

1、基于relation的知识的表示:

2、一个比较形象的比喻:

3、定义FSP矩阵:

 4、计算FSP矩阵:

5、计算损失函数:

 6、特别地:

三、蒸馏方法

四、实验效果

实验一:证明 fast optimization

实验二:证明对小网络蒸馏效果好

 实验三:Transfer Learning

五、总结


文章传送门:A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning | IEEE Conference Publication | IEEE Xplore

零、前言

我们知道知识蒸馏中对知识的定义有三种:基于response、基于feature和基于relation。

第一篇我们讲了基于response的知识蒸馏(Hinton老爷子的开山之作),第二篇我们讲了fitnets基于feature的知识蒸馏(Bengio大佬),今天我们就来看看基于relation的知识蒸馏。

这一篇是韩国科学院研究得出的,首次提出基于relation的知识,认为大模型层与层之间的联系也是一种知识。有“授人以鱼不如授人以渔”的师道思想。标题给的也很直接,提出了他们研究的知识蒸馏的方法有:Fast Optimization:快速优化 Network Minimizaion:网络缩小 Transfer Learning:迁移学习这三个优点。(感觉有些不自信所以就标榜自己的过人之处🤣)

一、知识的三种形式

虽然之前有跟大家聊过知识的三种形式,但是在这里还是再拿出来说一下吧!

Response-Based Knowledge:小模型学习大模型的输出

Feature-Based Knowledge:小模型学习大模型的中间feature map

Relation-Based Knowledge:小模型学习input-hidden-output之间的关系

二、主要观点

1、基于relation的知识的表示:

考虑到教师教学生解决问题的流程,将知识定义为解决问题的过程(flow),由于DNN从输入到输出是一层层映射的,因此解决问题的过程在DNN中可以表示为两层特征之间的关系,这种关系通过计算两层特征之间的内积(FSP矩阵)来表征。

 

2、一个比较形象的比喻:

如果把输入inputs看作问题,输出outputs看作答案,那么中间层feature map就可以看作中间过程。虽然Fitnets方法效果比较好,但是Fitnets有一定的不足之处:不灵活。单纯的教会小模型模仿大模型生成的feature map是个硬约束(会让网络变得不灵活),因此应致力于教会小模型学习解决问题的过程(模仿FSP矩阵)。

3、定义FSP矩阵:

定义FSP矩阵来刻画层与层之间的特征关系。

本文中的FSP矩阵是一种特殊的Gram矩阵。 Gram矩阵在之前的研究(风格迁移)中被证明表征图像的纹理信息。由于Gram矩阵是通过计算特征向量的内积生成的,因此包含特征之间的方向性。 我们计算FSP矩阵是跨层计算的。而传统Gram矩阵是在一个层内的features之间进行计算的。FSP矩阵示意图如下:

 4、计算FSP矩阵:

FSP矩阵的数学表达式如图:

 

 其中x和W分别表示输入图像和DNN的权值 h , w , m分别表示高度宽度和通道数。

FSP矩阵是Gramian矩阵推广:Gramian矩阵表征图像的纹理信息,其计算如下所示:

但是对于feature map来说,两个三维的矩阵是如何计算成为一个二维的FSP矩阵呢?

答案是:先flatten再做内积

 

 就像这个样子……

5、计算损失函数:

损失函数如下所示,是个待加权项的均方损失函数:

 λi和N分别表示每个损失项的权重和数据点的数量

 6、特别地:

如果两层特征的大小不同,使用最大池层来生成相同的空间大小。

三、蒸馏方法

在了解了FSP矩阵的定义和计算之后终于来到了蒸馏过程的介绍了!整个蒸馏可以分为两个阶段(默认大模型已经训练好了)。

第一阶段,对学生网络进行预训练,使学生网络和教师网络的FSP矩阵之间的差距最小化。

第二阶段,利用学生DNN的预训练权值作为第二阶段的初始权值进行正常的训练过程。

有如下示意图:

 伪码:

四、实验效果

实验一:证明 fast optimization

1、蒸馏阶段只使用 n/3 的 epochs 就达到收敛状态

2、蒸馏结果比Fitnet效果好

符号*表示每个网络训练了21000次,小于原始情况的三分之一,原始情况使用了64000次。Student *在第一阶段训练21000次,将训练结果复制到net 1、net 2和net 3中,每个学生网络在第二阶段训练21000次,共84k次。 ‡符号表示经过21000次训练的教师网络,它是从一个经过64000次训练的教师网络开始的。 符号†表示在阶段1学习随机打乱FSP矩阵的学生网络。以Student *†为例,每个网在阶段1和阶段2分别训练21000次和21000次。

实验二:证明对小网络蒸馏效果好

Teacher:Resnet26 Student:Resnet8

 实验三:Transfer Learning

Teacher: Resnet34 Student:Resnet20

五、总结

1. 提出了一种知识蒸馏的新技术

2. 这种方法对于快速优化很有效:训练在一个合适的位置开始,可迅速达到全局优化(预训练模型)

3. 利用所提取的知识作为初始值,可以提高小模型的性能

4. 及时学生与教师的训练任务不同,提取的知识也能提高学生的表现、

授人以鱼不如授人以渔,使用 FSP 矩阵来描述学习方法,教师网络的“蒸馏知识”以 FSP 矩阵的形式被提取出来,并将它传递到学生网络上。方法是最小化教师和学生网络的 FSP 矩阵,能够使得知识就从教师网络蒸馏到学生网络。


网站公告

欢迎关注微信公众号

今日签到

点亮在社区的每一天
签到