Knowledge Distillation from A Stronger Teacher[论文阅读整理]

论文地址:

https://arxiv.org/pdf/2205.10536.pdf

目录

背景:

文章简介:

问题:

        传统KD VS(DIST):

        传统KD :

        DIST 之类间匹配:

        DIST 之类内匹配:

        性能:Image Classification


背景:

1、深度学习模型压缩常用方法:

1)低比特模型量化

2)模型剪枝算法

3)知识蒸馏算法

        知识蒸馏是一种教师-学生(Teacher-Student)训练结构, 通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师的知识.

        高性能的深度学习网络通常是计算型和参数密集型的,难以应用于资源受限的边缘设备. 为了能够在低资源设备上运行深度学习模型,需要研发高效的小规模网络. 整体思想是模型压缩,目的在利用教师模型来从大数据中学习一个相对粗略的特征表达,并基于这一结果再精细化训练一个小的学生模型。 这样就可以减少对深度学习最核心的运算硬件的依赖,使得模型更加轻量化,甚至可以让这些模型,在模型压缩后能进到手机上去处理。

        知识蒸馏中的知识是一个抽象的概念

        从学生解题的角度,形象比喻为:

        输出特征知识 -> 解题的答案,

        中间特征知识 -> 解题的过程,

        关系特征知识 -> 解题的方法,

        结构特征知识 -> 完整的知识体系.

        知识本身其实是一个“黑盒”问题

文章简介:

问题:

1)学生和更强的老师之间的预测差异可能会相当严重。

2)KL散度预测的精确匹配将干扰训练

方法: DIST(Distillation from A Stronger Teacher)方法:

1)简单地保持教师和学生的预测之间的关系就足够了(KL散度->皮尔逊相关系数)

2)一种基于相关性的损失来显式地捕捉来自教师的内在类间关系

3)考虑到不同实例对每个类具有不同的语义相似性,将这种关系匹配扩展到类内级别

效果:

1)适应性:很好地适应各种体系结构、模型大小和训练策略

2)场景:图像分类、目标检测和语义分割任务中始终达到最先进的性能

问题:

强老师教出差学生(更大尺寸,更强训练策略)

老师对知识发现的影响尚未得到充分研究 学生和更强的老师之间的预测差异可能会相当严重。

KL散度预测的精确匹配将干扰训练

        作者在系统地研究了当前的流行策略后,发现在有更强的训练策略或者更大的模型的时候,学生的训练会受到很大影响而无法显示出更好的效果。 他分析的原因:老师对知识发现的影响尚未得到充分研究。 其次KL散度预测的精确匹配将干扰训练, 他们认为保持教师和学生之间的预测关系是充分的情况下。当将知识从老师传递给学生时,  真正关心的是保留老师的偏好(预测的相对等级),而不是准确地恢复绝对值。这里我理解就是只知道学生每一科成绩的排名就可以,不需要知道学生每一科的准确成绩。 这两张图就是经过训练后,他们的方法在更大尺寸模型,更强策略训练老师模型的过程中,学生模型性能的对比。 蓝线和绿线:两种KD方法,橙色是老师模型,红色就是他们的方法训练的模型了。可以看到这个效果还是比KD好很多的。 蓝线可以看到更强的老师模型,学生模型反而性能下降。

        传统KD VS(DIST):

DIST:(Distillation from A Stronger Teacher) 有两个含义:尺寸更大,数据增强策略更先进

        接下来对他们提出的DIST方法和现有KD方法进行比较,这个方法的名字就和论文名字一样,取了简写当作了方法的名字。这个图总共是有三张图片,猫,狗和船。论文后面举例写的是plane飞机,不过不影响。 传统的KD逐点匹配学生和教师的输出;实例关系方法在特征级上操作,并且分别测量学生和教师中的实例之间的内部相关性,然后将教师的相关性传递给学生。这种关系是后面会讲的KL精准匹配。 DIST方法主张维持学生和老师之间的类别间和类别内的关系。还提出了两个概念,类间关系和类内关系。类间关系:教师和学生的每个实例的预测概率分布之间的相关性。类内关系:每个类上所有实例的概率的相关性。这个的话就是匹配的是一种概率的分布。

传统KD :

将知识从预先训练的教师模型转移到学生模型。在形式上,对于学生和教师网络的逻辑Z(s) ∈ R^B×C和Z(t) ∈ R^B×C,其中B和C分别表示batch大小和channel类别数量,标准KD损失[15]表示为:

总的训练损失由原始分类损失Lcls和KD损失LKD组成,即:

        DIST 之类间匹配:

        本文提出的蒸馏策略是

保持住教师和学生模型输出向量的线性相关关系。作者称为类间匹配 (inter-class relation),公式:

皮尔逊相关系数  (Pearson's distance):

      本文提出的方法:  回归的损失+类间匹配损失以及类内匹配损失中,  cov是向量  的协方差, std 是向量  的标准差。 式7相当于是舍弃了传统的 KL 散度的精确匹配的模式,而是采用一种较为松弛的模式,希望保持住每个实例教师和学生模型输出向量的线性相关关系。作者称这样的匹配为类间匹配 (inter-class relation)。

        DIST 之类内匹配:

        除了类间的关系,作者还考虑到了单个样本中类内的关系。作者认为每个类的,多个实例的,预测分数也是有用的。

        作者也觉得应该进行类内匹配(intra-relations):

因而本文最终的蒸馏策略是

        作者通过类间匹配和类内匹配的方式,赋予了学生自适应匹配教师网络输出的自由,从而提高了蒸馏性能。

        除了类间的关系,作者还考虑到了单个样本中类内的关系。作者认为每个类的,多个实例的,预测分数也是有用的。 举个例子, 有两张图片, 里面的内容分别是 "白猫", "黑猫", 它们对于 "猫" 这个类别的预测结果是不同的  。如果黑猫对应 "猫" 类别的预测结果较大, 白猫的对应 "猫" 类别的预测结果较小, 那么,这个关系也应当由教师模型传给学生。 受到以上思想的启发,作者也觉得应该进行类内匹配。

        性能:Image Classification

表2:DIST明显优于以前的KD方法。与当前较好的设计的方法相比,性能也较优。

表3:不同的模型尺寸比较: DIST更好地解决了学生和大教师之间的巨大差异。

表4:不同的训练策略比较: 复杂的训练策略和强大的数据增强

性能:Object Detection

使用 MS COCO 数据集, 同时将 DIST 作为一种类别的额外的监督信号,为了进行比较,作者在与 DIST 相同的设置下训练原始 KD。 通过简单地替换损失函数,显著优于原始 KD 方法。

性能:Semantic Segmentation

在 Cityscape 数据集上,对语义分割这一具有挑战性的密集预测任务进行了实验,DIST 比最近最先进的方法 CIRKD 在 PSPNet-R18 上的性能高出 1.58%, 证明了 DIST 在关系建模方面的有效性。

        基本上就是这些内容,直觉上是搞一种轻松的方式来匹配老师和学生之间的预测。包含了类内关系和类间关系的蒸馏方法。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
知识蒸馏(Knowledge Distillation)是一种将一个较大的模型的知识转移到一个较小的模型的技术。这种技术通常用于减小模型的大小和推理成本,同时保持模型在任务上的性能。 在Python中,你可以使用以下步骤来实现知识蒸馏: 1. 准备教师模型和学生模型:首先,你需要准备一个较大的教师模型和一个较小的学生模型。教师模型通常是一个预训练的大型模型,例如BERT或其他深度学习模型。学生模型是一个较小的模型,可以是一个浅层的神经网络或者是一个窄的版本的教师模型。 2. 训练教师模型:使用标注数据或其他训练数据集来训练教师模型。这个步骤可以使用常规的深度学习训练方法,例如反向传播和随机梯度下降。 3. 生成教师模型的软标签:使用教师模型对训练数据进行推理,并生成教师模型的软标签。软标签是对每个样本的预测概率分布,而不是传统的单一类别标签。 4. 训练学生模型:使用软标签作为学生模型的目标,使用训练数据集来训练学生模型。学生模型的结构和教师模型可以不同,但通常会尽量保持相似。 5. 进行知识蒸馏:在训练学生模型时,除了使用软标签作为目标,还可以使用教师模型的中间层表示或其他知识来辅助学生模型的训练。这可以通过添加额外的损失函数或使用特定的蒸馏算法来实现。 以上是实现知识蒸馏的一般步骤,具体实现细节可能因应用场景和模型而有所不同。你可以使用深度学习框架(如TensorFlow、PyTorch等)来实现这些步骤,并根据需要进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值