Knowledge Distillation论文阅读之:综述文章:Knowledge Distillation

目录

1. Introduction

2. Background

3. Knowledge

3.1 Response-base Knowledge

3.2 Feature-Based Knowledge

3.3 Relation-Based Knowledge

4.知识蒸馏发展趋势

5. 代码


摘要

本问提供了 KD 的复杂研究包括了下述方面:

  • KD 的种类
  • 训练方案
  • teacher-student 结构
  • 蒸馏算法
  • 表现对比和实际应用

在此基础上,简要回顾了知识蒸馏面临的挑战,并对未来的研究方向进行了讨论和展望。

1. Introduction

近年来深度学习发展火热,主要方向是:

计算机视觉
强化学习
自然语言处理
能够帮助训练深层网络的技术:

residual connection 残差连接
batch normalization 批标准化
为了将大型的复杂网络迁移到移动设备上,节省内存和运算,主要有两个方面的工作:

1)为深度模型提供高效的构建模块:

  • 深度可分卷积(MobileNet、ShuffleNet为例)

2)模型压缩和加速技术 有如下分类:

  • 参数剪枝和参数共享(Parameter pruning and sharing):这些方法主要是在不影响性能的情况下从深度神经网络中去除不重要的参数。该类别又分为:
  1. 模型量化(Wu et al., 2016)
  2. 模型二值化(Courbariaux et al., 2015)
  3. 结构矩阵(Sindhwani et al., 2015)
  4. 参数共享(Han et al., 2015;Wang等,2019f)
  • 低秩因子分解(Low-rank factorization):这些方法利用矩阵和张量分解来识别深度神经网络的冗余参数(Yu等,2017;Denton等,2014)。
  • 可迁移的紧凑卷积滤波器(Transferred compact convolutional filters):这些方法通过传输或压缩卷积滤波器来去除不必要的参数(Zhai et al., 2016)。
  • 知识蒸馏(Knowledge distillation (KD)):这些方法将知识从一个较大的深度神经网络提取到一个较小的网络中(Hinton et al., 2015)。

本文不涉及到其他模型压缩算法,只是针对知识蒸馏进行研究:

  • 知识蒸馏本质是在 teacher 网络的监督下实现 student 网络的学习
  • 知识蒸馏的关键在于如何将 knowledge 从 teacher 网络迁移到 student 网络
  • 知识蒸馏网络通常有三部分构成:
  1. knowledge (知识)
  2. distillation algorithm (蒸馏算法)
  3. teacher-student architecture (老师-学生网络结构)

在这里插入图片描述

虽然在实践上取得了巨大的成功,但对无论是理论理解还是经验理解的知识提炼的著作并不多。具体地说:

  • 为了了解 KD 的工作机制, Phuong & Lampert 在深线性分类器的情况下获得了快速收敛的学习提取学生网络的泛化边界的理论证明(Phuong and Lampert, 2019a)。这个解释回答了学生网络学习的速度,并揭示了决定知识蒸馏成功的因素:
  1. 数据几何(data geometry)
  2. 蒸馏目标的优化偏差(optimization bias of distillation objective)
  3. 学生分类器的强单调性(strong momotonicity of the student classifier)
  • Cheng等人量化了从深度神经网络的中间层提取视觉概念,以解释知识的精馏
  • Cho & Hariharan 实证详细分析了知识蒸馏的有效性(Cho和Hariharan, 2019)。
  • 实证结果表明,由于模型容量的差距(capacity gap),一个较大的模型不一定是一个更好的教师 (Mirzadeh等人,2020)。
  • 实验还表明,蒸馏对学生的学习有负面影响。Cho和Hariharan(2019) 的论文中并没有涵盖对不同形式的知识蒸馏的经验评价,也没有关于知识的蒸馏和 teacher-student 的相互影响。
  • 知识蒸馏也被用于平滑标签、评估教师模型的准确性以及获得最佳输出层几何形状的先验(Tang et al., 2020)。

对模型压缩的知识蒸馏类似于人类学习的方式。

受此启发,最近的知识提炼方法已经扩展到:

  • teacher-student learning(Hinton等人,
  • mutual learning (Zhang et al., 2018b)
  • assistant teaching (Mirzadeh et al., 2020)
  • life-long learning(Zhai et al., 2019)
  • self-learning (Yuan et al.,2020)

所有这些知识蒸馏的扩展主要集中在压缩深度神经网络上。由此产生的轻量级学生网络可以轻松地部署在诸如视觉识别、语音识别和自然语言处理(NLP)等应用程序中

此外,知识精馏中的知识从一个模型到另一个模型的迁移可以扩展到其他任务,如:

  • 对抗性攻击(adversarial attacks)(Papernot et al., 2016)
  • 数据增加 (data augmentation)(Lee et al., 2019a; Gordon and Duh, 2019)
  • 数据隐私和安全(data privacy and security)(Wang et al., 2019a)

基于对模型压缩的知识蒸馏,进一步将知识转移的思想应用于训练数据压缩中(compressing training data)

  • 数据集精馏:将知识从一个大数据集转移到一个小数据集,以减少深度模型的训练负荷(Wang et al., 2018c; Bohdal et al., 2020).

本文对知识蒸馏的研究进行了综述。本综述的主要目的是:

  • 提供知识蒸馏的概述,包括动机的背景知识,基本的符号和公式,以及一些典型的知识,蒸馏和算法;
  • 回顾知识蒸馏的最新进展,包括算法和在不同现实场景中的应用;
  • 针对知识迁移(knowledge transfer)的不同角度,提出知识蒸馏的一些困难和见解包括:
  1. 知识的不同类型
  2. 训练方案
  3. 知识蒸馏的算法和结构及应用

整个综述研究的问题的组织结构如下图所示:

在这里插入图片描述

  •  section2: KD 的重要概念和传统模型
  • section3:不同种类的知识
  • section4:不同种类的蒸馏方法
  • section5:知识蒸馏的 teacher-student 结构研究
  • section6:全面总结了 KD 的最新的研究
  • section7:不同知识蒸馏的表现比较
  • section8:知识蒸馏的众多应用
  • section9:关于知识蒸馏有关的挑战性的问题和未来发展的方向的研究和讨论

2. Background

  • 一个普通的 KD 框架通常包含一个或多个大型的 pre-trained 教师模型和一个小型的学生模型。教师模型通常比学生模型大得多。其主要思想是在教师模式的指导下,培养一种高效的学生模式,以获得相当的准确性,从而实现将知识从复杂的 teacher 网络 迁移到紧凑简单的 student 网络;
  • 来自教师模型的监督信号,通常是指教师模型学习到的 “知识”,这些知识被用来帮助学生模型模仿教师模型的表现。
  • 在一个典型的图像分类任务中,使用 logits (深度神经网络中最后一层的输出)作为教师模型知识的载体,这不同于训练样本中的训练标签
  • 例如,一只猫的图像被错误地归类为一只狗的概率非常低,但是这种错误的概率仍然比把一只猫误当成一辆车的概率高很多倍;另一个例子是,手写数字2的图像更类似于数字3,而不是数字7。
  • 这种由教师模型学习到的知识也被称为“dark knowledge”

在vanilla KD 中传递 dark knowledge 的方法表述如下。

  • 给定 logits 的输出表示为 z,它是全连接层最后的输出(进入 softmax 函数之前);
  •  z_i是第  i 个类的 logit 值
  • 属于第 i 类的概率 p_i 可以被 softmax 函数估计出来:

    在这里插入图片描述

  • 因此,这些每个类的概率就可以作为 soft target 来指导 student 网络的训练

  • 类似地,one-hot标签被称为 hard target。一个关于 soft target 和 hard target 的直观例子如图所示。在这里插入图片描述

  • ​不仅如此,一个温度参数 T TT 被引入来控制每个 soft target 的重要程度在这里插入图片描述
  •   T 越大,产生的概率分布越“软”,越平滑。尤其地,当 T \rightarrow \propto 的时候,所有的类的概率分布都变成一样的了。当 T \rightarrow 0时,soft target 就变成了 hard target
  • teacher 网络产生的 soft targets 和 ground-truth label 对于引导 student 网络的训练都是很重要的;这两部分分别用于构建 distillation loss 和 student loss。

  • distillation loss 是用来逼近 teacher model 的 logits 和 student 网络的 logits的在这里插入图片描述

  •  z_t 和 z_s 分别是 teacher 和 student 的 logits,通过一系列的推导:
  • 在这里插入图片描述
  • 根据式(6),distillation loss 等于在 high temperature下教师模型和学生模型的 零均值 logits 的匹配;即:最小化 \left ( z_{si} - z_{ti} \right )
  • 因此,通过在 hight temperature 学习 teacher 的 logits 和 student 的 logits 之间的差距可以将教师模型所学到的非常有用的知识信息传递给学生模型来训练学生模型。
  • student loss 定义为ground truth label和student model的 soft logits 之间的交叉熵

在这里插入图片描述

  1.   L_{CE} \left ( y , p \left ( z_s \right ) , T \right ) =\sum _{i} -y_i log \left ( p_i \left ( z_{si},T \right ) \right ) 是个 cross-entropy loss
  2. y 是 groundtruth 的向量;其中只有一个元素为1,表示传输训练样本的ground truth label,其他都为0。
  • 在 distillation loss 和 student loss 中,都使用相同的学生模型的 logits,但他们的温度不同:
  1.  student loss 中 T =1
  2. distillation loss 中 T = t
  • 最终,这个 vanilla KD 的 loss function 是结合 distillation loss 和 student loss:

在这里插入图片描述

  • 其中 x为训练输入
  • W为学生模型的参数
  • \alpha为调节参数。
     
  • 为了便于理解知识蒸馏,结合教师模型和学生模型的 vanilla KD 的具体架构如图所示:

在这里插入图片描述

  • 实际上,这是利用基于响应的知识(response-based knowledge)对线下知识(offline knowledge)的蒸馏(distillation)。knowledge 和 distillation 的类型将分别在接下来的第3节和第4节中讨论。

3. Knowledge

在知识蒸馏 KD 中,最重要的三个部分是:

知识类型(knowledge type)
蒸馏方法(distillation strategies)
师生结构(teacher-student architecture)
这个部分,精力主要放在研究 knowledge type 上 。
 

  • vanilla KD 使用一个大型深层模型的 logits 作为 teacher knowledge
  • 激活层、神经元或中间层的特征也可以作为知识来指导学生模型的学习
  • 不同激活层、神经元或成对样本之间的关系包含了教师模型所获得的丰富信息
  • 此外,教师模型的参数(或层之间的连接)还包含另一种 knowledge

我们将在以下类别中讨论不同形式的 knowledge:

  • response-based knowledge
  • feature-based knowledge
  • relation-based knowledge

下图显示了教师模型中不同知识类别的直观示例:

在这里插入图片描述

3.1 Response-base Knowledge

  • response-based knowledge 通常是指教师模型中最后一个输出层的神经响应。其主要思想是直接模仿教师模型的最终预测结果

  • response-based knowledge 方法用于模型压缩简单有效,已广泛应用于不同的任务和应用中
  • 图像分类中最常用的 response-based knowledge 是 soft target
  • response-based knowledge 的 distillation loss 可以表述为:

在这里插入图片描述

  1.           KL 代表了 KL 散度 
  • 典型的 response-based 的KD模型如下图所示:在这里插入图片描述
  • response-based knowledge 可以用于不同类型的模型预测:
  1.       对象检测(object detection)任务中的 response knowledge 可能包含 logits 和边界框的偏移量
  2. 在语义地标定位任务(semantic landmark localization)中,如人体姿态估计,教师模型的 response knowledge 可能包括每个地标的热图(heatmap)
  3. 近年来,基于响应的知识被进一步探索,以解决 ground-truth label 作为条件目标(conditional targets)的问题
  • 基于响应的知识的想法是直接和容易理解的,尤其是在“dark-knowledge”的背景下。
  • 从另一个角度来看,软目标 soft target 的有效性类似于标签平滑(label smoothing)或是 regularizers
  • 然而,基于响应的知识通常依赖于最后一层的输出,比如 soft target 就是如此。因此,response-based knowledge 就很难代表 teacher model 的中间层中包含的能够知道 student 网络训练的有效信息;尤其是我们认为在 network 很深的时候,中间层的重要程度更加不能忽略
  • 因此, soft logits 实际上是类概率分布, response-based KD 也被局限于监督学习领域。

3.2 Feature-Based Knowledge

  • 深度神经网络善于学习抽象程度不断提高的多级特征表示。这就是所谓的 “表示学习(representation learning)”
  • 因此,无论是最后一层的输出,还是中间层的输出,即 feature map,都可以作为知识来监督学生模型的训练。
  • 具体来说,来自中间层的基于特征的知识是 response-based knowledge 的很好的扩展,尤其适用于更狭窄但是层数更深的网络的训练。
  • 首先在 Fitnets 中引入了中间表示(intermediate representation)(Romero et al., 2015),为改进学生模型的训练提供了提示。
  • 其主要思想是直接匹配教师和学生网络的中间层的激活特征。受此启发,人们提出了各种其他方法来间接匹配这些特征。具体而言
    • Zagoruyko和Komodakis(2017) 从原始的特征图衍生出一个“注意图(attention map)”来表达知识。
    • Huang和Wang(2017)利用神经元选择性转移对注意图进行了推广。
    • Passalis和Tefas(2018)通过匹配特征空间中的概率分布来迁移知识。
    • 为了使老师的知识更容易传递,Kim等人(2018)引入了所谓的 factor 作为一种更容易理解的中间表征形式。
    • 为了缩小教师与学生之间的表现差距,Jin et al.(2019)提出了路径约束 hint learning,通过教师的 hint 层输出来对学生进行监督。
    • 最近,Heo等人(2019c)提出利用隐藏神经元的激活边界(activation boundary of the hidden neurons)进行知识转移
    • 有趣的是,教师模型中间层的参数共享与 response-based 知识联合被当做 teacher 的知识(Zhou et al., 2018)。
  • 一般情况下,基于特征的知识转移(feature-based)的 distillation loss 可以表示为:
  • 在这里插入图片描述
    •  f_t(x) 和 f_s(x)代表的分别是 teacher 和 student 网络的中间层特征图(intermediate feature map         
    • \Phi _t \left ( f_t(x) \right ) 和 \Phi_s (f_s(x))分别代表当 teacher 网络和 student 网络的 中间层特征不是同一个维度的时候,使用的 transformation function (变换函数)
    • LF​(⋅) 代表为了匹配 teacher 、student 中间层特征而使用的相似度函数
       
  • 一个普通的 feature-based knowledge 在下图中表示:在这里插入图片描述
  •  在下图的表中我们从 feature type、source layers 和 distillation loss 的角度总结了不同的 feature-based knowledge:

在这里插入图片描述

  • L_2(.) ,L_1(.) ,L_{CE}(.) , LMMD(.)分别代表了 L_2范数距离,L_1范数距离,交叉熵损失和最大平均偏差损失
    虽然 feature-based 的知识转移为学生模型的学习提供了有利的信息,但如何有效地从教师模型中选择 hint 层,从学生模型中选择 guided 层,仍有待进一步研究(Romero et al., 2015);由于 hint 层和 guided 层的 尺寸 差异很大,如何正确匹配教师和学生的特征表示也需要探索。

3.3 Relation-Based Knowledge

  • response-based knowledge 和 feature-based knowledge 都使用了教师模型中特定层次的输出。relation-based knowledge 进一步探索不同层或数据样本之间的关系。
  • 为了探究不同特征图之间的关系,Yim等人(2017)提出了一种求解流程 (flow of solution process (FSP)),该流程由两层之间的 Gram 矩阵定义。FSP矩阵总结了特征图对之间的关系。它是利用两层特征之间的内积(inner products)来计算的。
  • (Lee et al., 2018) 提出了利用特征图之间的相关性作为提取的知识,通过奇异值分解的知识蒸馏(knowledge distillation via singular value decomposition)来提取特征图中的关键信息
  • 为了利用来自多个教师网络的知识,Zhang和Peng(2018)分别以每个教师模型的 logits 和 features 作为节点,形成了两个图。具体来说,不同教师模型的重要性和关系是通过知识转移前的 logits 和 representation graphs 来建模的(Zhang and Peng, 2018)。
  • Lee和Song(2019)提出了 multi-head graph-based 的知识蒸馏。graph knowledge 是任意两个特征图通过多头注意网络(multi-head attention)之间的数据内(intra-data)关系
  • 为了探究 pairwise 的提示信息,学生模型还模仿了教师模型中 pairs of hint layers 的相互信息流(mutual information flow) (Passalis et al., 2020b)。
  • 一般来说,基于不同特征图之间关系的 relation-based 的 distillation loss 可以表述为:
  • 在这里插入图片描述
    •  f_t 和 f_s是 teacher 和 student 网络的特征图
    • 成对的(pairs)特征是分别从 teacher 网络和 student 网络中提取出来的:teacher 网络的 pair 特征是 \hat{f_t} 和 \breve{f_s}
    • \Psi_t\left ( \cdot \right ) 和 \Psi_s\left ( \cdot \right )分别代表 teacher 内部 feature pairs 的相似度函数 和 student 内部的 feature pairs 的相似度函数。
    • L_R1代表的是 teacher 和 student 特征图之间的相关函数。
    • 先把 teacher 和 student 内部的 feature map pairs 之间的关系(相似度)求出来;然后再看看 teacher 中的 feature map pairs 之间的关系是否和 student 中的一样
  • 传统的知识迁移方法往往涉及到单独的 knowledge distillation。也就是说,单独的知识蒸馏之后得到 soft target 直接用于 student 网络的训练。事实上,经过蒸馏的知识不仅包含特征信息,还包含数据样本之间的相互关系 (You et al., 2017; Park et al., 2019). 具体来说:
    • Liu et al. (2019g)提出了一种基于 实例关系图 的鲁棒、有效的知识蒸馏方法。实例关系图中传递的知识包含实例特征(instance features)、实例关系图(instance relationship graph)和跨层特征空间转换(space transformation cross layers)。
    • Park et al.(2019)提出了一种关系知识蒸馏(relational knowledge distillation),将知识从实例关系中转移(instance relations)。
    • 基于流形学习(manifold learning)的思想,通过特征嵌入(feature embedding)来学习学生网络,保留了教师网络中间层样本的特征相似性(Chen et al., 2020b)。
    • 利用数据的特征表示,将数据样本之间的关系建模为概率分布(Passalis和Tefas, 2018;Passalis等,2020a)。教师和学生网络的概率分布是通过知识迁移(knowledge transfer)匹配的。
    • (Tung and Mori, 2019)提出了一种保持相似性(similarity-preserving)的知识蒸馏方法。特别是: 教师网络中 input pair 的相似激活(similar activation)所产生的 similarity-preserving knowledge 被转移到学生网络中,保留了 pairwise similarities。
       
    • Peng et al. (2019a)提出了一种基于相关一致性(correlation congruence) 的知识蒸馏方法,该方法中提取的知识既包含实例级信息(instance-level information),又包含实例之间的关联(correlations between instances)。利用关联同余进行蒸馏,学生网络可以学习实例之间的关联。

综上所述,基于实例关系的 relation-based knowledge 的 distillation loss 可以被描述为:

在这里插入图片描述

  • \left ( t_i,t_j \right ) \epsilon F_t , \left ( s_i,s_j \right ) \epsilon F_s
  • F_t,F_s分别是 teacher 和 student 网络中的 特征表示的集合(set of feature representations)
  • \psi _t\left ( \cdot \right ) , \psi _s\left ( \cdot \right )是相似度函数,代表的分别是\left ( t_i,t_j \right ) 和 \left ( s_i,s_j \right ) 之间的各自的相似度(feature pair 间的相似度)
  • L_{R^2}是 teacher 和 student 特征表示的相关函数

一个典型的 instance relation-based KD 模型如下图所示:

在这里插入图片描述

4.知识蒸馏发展趋势

  •  教学相长
  • 助教,多个老师,同学
  • 知识的表示(中间层) 数据集蒸馏,对比学习
  • 多模态,知识图谱,预训练大模型的知识蒸馏
  •    Attention transfer
  • channel-wise knowledge distillation for dense。prediction
  • contrastive representation distillation
  • distill bert

5. 代码

博客:【精读AI论文】知识蒸馏 - 哔哩哔哩

### 关于目标检测与知识蒸馏的研究 目标检测是一项重要的计算机视觉任务,其目的是识别图像中的对象并定位它们的位置。近年来,随着深度学习的发展,单阶段和双阶段的目标检测方法取得了显著进展[^2]。然而,在实际应用中,模型的计算复杂度和内存占用成为部署的主要瓶颈之一。为了缓解这一问题,研究人员提出了多种轻量化策略,其中一种有效的方法是利用知识蒸馏技术。 #### 知识蒸馏概述 知识蒸馏是一种模型压缩技术,通过将大型教师网络的知识迁移到小型学生网络来实现性能提升的同时降低资源消耗。具体而言,教师网络产生的软标签(soft labels)被用来指导学生网络的学习过程,从而使得学生网络能够更好地逼近教师网络的表现[^1]。 #### 结合目标检测与知识蒸馏的技术挑战 当知识蒸馏应用于目标检测领域时,存在一些独特的挑战: - **多尺度特征映射**:目标检测通常涉及多个尺度上的特征提取,这增加了跨层知识传递的难度。 - **边界框回归**:除了分类之外,目标检测还需要精确预测物体位置,因此如何有效地迁移边界框信息是一个重要课题。 - **类别不平衡问题**:真实世界数据集中往往存在严重的正负样本比例失衡现象,这对知识蒸馏算法的设计提出了更高要求。 #### 综述文章推荐 虽然当前并没有直接针对“目标检测+知识蒸馏”的专门综述论文提及到上述引用材料里,但是可以从以下几个方面寻找相关资料: 1. 阅读最新的CVPR/ECCV/ICCV会议论文集,这些顶级会议上经常会有高质量的工作讨论该主题; 2. 查找专注于模型压缩或者高效推理方向的文章,因为这类研究很可能涉及到知识蒸馏的应用场景; 3. 参考其他领域的成功案例,比如自然语言处理(NLP),看看是否有可借鉴之处用于改进现有方案。 ```python # 示例代码展示了一个简单的知识蒸馏框架伪代码 def knowledge_distillation(student_model, teacher_model, dataloader): optimizer = Optimizer(student_model.parameters()) for data in dataloader: inputs, targets = data # 计算教师模型输出作为辅助监督信号 with torch.no_grad(): teacher_outputs = teacher_model(inputs) student_outputs = student_model(inputs) loss = compute_loss(student_outputs, targets, teacher_outputs) optimizer.zero_grad() loss.backward() optimizer.step() return student_model ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Terry_dong

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

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

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

打赏作者

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

抵扣说明:

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

余额充值