本文主要是针对2021年 IJCV Knowledge Distillation: A Survey的一个翻译。
知识蒸馏:综述
- 摘要
- 1 引言
- 2 知识
- 2.1 基于响应的知识
- 2.2 基于特征的知识
- 2.3 基于关系的知识
- 3 蒸馏方案
- 3.1 离线蒸馏
- 3.2 在线蒸馏
- 3.3 自蒸馏
- 4 师生结构
- 5 蒸馏算法
- 5.1 对抗蒸馏
- 5.2 多教师蒸馏
- 5.3 跨模态蒸馏
- 5.4 基于图的蒸馏
- 5.5 基于注意力的蒸馏
- 5.6 无数据蒸馏
- 5.7 量化蒸馏
- 5.8 终身蒸馏
- 5.9 基于NAS的蒸馏
- 6 性能比较
- 7 应用
- 7.1 视觉识别中的KD
- 7.2 NLP中的KD
- 7.3 语音识别中的KD
- 7.4 其他应用中的KD
- 8 结论和讨论
- 8.1 挑战
- 8.2 未来的方向
摘要
近年来,深度神经网络在工业界和学术界都取得了成功,尤其是在计算机视觉任务方面。深度学习的巨大成功主要归功于其对大规模数据进行编码和操纵数十亿模型参数的可扩展性。然而,在资源有限的设备(例如移动电话和嵌入式设备)上部署这些繁琐的深度模型是一个挑战,这不仅是因为计算复杂度高,而且还因为存储需求大。为此,已经开发了各种模型压缩和加速技术。知识蒸馏作为一种具有代表性的模型压缩和加速,可以有效地从大型教师模型中学习小型学生模型。它迅速受到社会越来越多的关注。本文从知识类别、训练方案、师生架构、提取算法、性能比较和应用等方面对知识提取进行了全面的综述。此外,还简要回顾了知识蒸馏方面的挑战,并对未来的研究进行了讨论和展望。
1 引言
在过去几年中,深度学习是人工智能许多成功的基础,包括计算机视觉、强化学习和自然语言处理中的各种应用。在许多最新技术的帮助下,包括残差连接和批归一化,可以很容易地在强大的GPU或TPU集群上训练具有数千层的非常深入的模型。例如,在具有数百万张图像的流行图像识别基准上训练ResNet模型不到十分钟;为语言理解训练一个强大的BERT模型不需要超过一个半小时。大规模深度模型已经取得了压倒性的成功,但巨大的计算复杂性和巨大的存储需求使其在实时应用中的部署成为一个巨大的挑战,尤其是在资源有限的设备上,如视频监控和自动驾驶汽车。
为了开发高效的深度模型,最近的工作通常集中在1)深度模型的高效构建块,包括深度可分离卷积,如MobileNets和ShuffleNets;以及2)模型压缩和加速技术,分为以下几类。
- 参数修剪和共享:这些方法侧重于从深度神经网络中去除不重要的参数,而不会对性能产生任何显著影响。这一类别进一步分为模型量化、模型二值化、结构矩阵和参数共享。
- 低秩因子分解:这些方法通过使用矩阵和张量分解来识别深度神经网络的冗余参数。
- 迁移的紧凑卷积滤波器:这些方法通过转移或压缩卷积滤波器来去除不重要的参数。
- 知识蒸馏(KD):这些方法将知识从较大的深度神经网络蒸馏到较小的网络中。
关于模型压缩和加速的全面综述不在本文的范围内。本文的重点是知识蒸馏,近年来越来越受到研究界的关注。大型深度神经网络以良好的性能取得了显著的成功,尤其是在具有大规模数据的真实世界场景中,因为当考虑新数据时,过度参数化提高了泛化性能。然而,由于设备的计算能力和内存有限,在移动设备和嵌入式系统中部署深度模型是一个巨大的挑战。为了解决这个问题,Bucilua等人(2006)首次提出了模型压缩,以在精度没有显著下降的情况下将信息从大模型或模型集合迁移到训练小模型中。在半监督学习中,还引入了使用未标记数据的完全监督教师模型和学生模型之间的知识迁移。从大模型中学习小模型后来被正式推广为知识蒸馏(Hinton et al.,2015)。在知识蒸馏中,小型学生模型通常由大型教师模型监督。其主要思想是,学生模型模仿教师模型,以获得有竞争力甚至卓越的表现。关键问题是如何将知识从大的教师模型转移到小的学生模型。基本上,知识蒸馏系统由三个关键组成部分组成:知识、蒸馏算法和师生架构。知识蒸馏的一般师生框架如图1所示。
尽管在实践中取得了巨大成功,但关于知识蒸馏的理论或实证理解的著作并不多。具体而言,Urner等人(2011)证明了使用未标记数据从教师模型到学生模型的知识迁移是PAC可学习的。为了理解知识蒸馏的工作机制,Phuong&Lampert获得了在深度线性分类器的情况下学习提炼学生网络的快速收敛的泛化界的理论证明。这个理由回答了学生学习的内容和速度,并揭示了决定蒸馏成功的因素。成功的蒸馏依赖于数据几何、蒸馏目标的优化偏差和学生分类器的强单调性。Cheng等量化了从深度神经网络的中间层提取视觉概念,以解释知识蒸馏。Ji和Zhu分别从风险界、数据效率和教师不完善三个方面对广义神经网络上的知识蒸馏进行了理论解释。Cho和Hariharan对知识蒸馏的功效进行了详细的实证分析。实证结果表明,由于模型能力差距,较大的模型可能不是更好的教师。实验还表明,蒸馏对学生的学习有不利影响。Cho和Hariharan(2019)没有涵盖对不同形式的知识蒸馏的经验评估,即教师和学生之间的知识蒸馏和相互影响。知识蒸馏也被探索用于标签平滑、评估教师的准确性以及获得最佳输出层几何的先验。
用于模型压缩的知识蒸馏与人类学习的方式类似。受此启发,最近的知识蒸馏方法已扩展到师生学习、相互学习、辅助教学、终身学习和自学习。知识蒸馏的大多数扩展都集中在压缩深度神经网络上。由此产生的轻量级学生网络可以很容易地部署在视觉识别、语音识别和自然语言处理(NLP)等应用中。此外,知识蒸馏中从一个模型到另一个模型的知识迁移可以扩展到其他任务,如对抗性攻击、数据扩充、数据隐私和安全。受模型压缩的知识蒸馏的启发,知识迁移的思想已被进一步应用于压缩训练数据,即数据集蒸馏,它将知识从大数据集转移到小数据集,以减少深度模型的训练负荷。
在本文中,我们对知识蒸馏进行了全面的综述。本次综述的主要目的是:1)概述知识蒸馏,包括几个典型的知识、蒸馏和架构;2) 回顾知识蒸馏的最新进展,包括算法和在不同现实世界场景中的应用;以及3)基于知识迁移的不同视角,包括不同类型的知识、训练方案、蒸馏算法和结构以及应用,解决一些障碍,并为知识蒸馏提供见解。最近,也有一项关于知识蒸馏的类似综述,从不同的角度介绍了师生视觉学习的全面进展及其挑战。与(Wang和Yoon,2020)不同的是,我们的综述主要从知识类型、蒸馏方案、蒸馏算法、性能比较和不同应用领域的角度来关注知识蒸馏。
本文的组织结构如图2所示。第2节和第3节分别总结了不同种类的知识和蒸馏方法。第4节介绍了现有的关于知识蒸馏中师生结构的研究。第5节全面总结了最新的知识蒸馏方法。第6节报告了知识蒸馏的性能比较。第7节介绍了知识蒸馏的许多应用。讨论了知识蒸馏中的挑战性问题和未来方向,并在第8节中给出了结论。
2 知识
在知识蒸馏中,知识类型、蒸馏策略和师生结构对学生的学习起着至关重要的作用。在本节中,我们将重点介绍不同类别的知识以进行知识蒸馏。朴素知识蒸馏使用大型深度模型的logits作为教师知识。中间层的激活、神经元或特征也可以用作指导学生模型学习的知识。不同激活、神经元或样本对之间的关系包含了教师模型学习到的丰富信息。此外,教师模型的参数(或层之间的连接)也包含另一种知识。我们讨论了以下类别中不同形式的知识:基于响应的知识、基于特征的知识和基于关系的知识。教师模型中不同类别知识的直观示例如图3所示。
2.1 基于响应的知识
基于响应的知识通常是指教师模型最后一个输出层的神经响应。其主要思想是直接模仿教师模型的最终预测。基于响应的知识蒸馏对于模型压缩来说简单而有效,并且已经被广泛应用于不同的任务和应用中。给定logits z的向量作为深度模型的最后一个全连接层的输出,基于响应的知识的蒸馏损失可以公式化为
L
R
e
s
D
(
z
t
,
z
s
)
=
L
R
(
z
t
,
z
s
)
,
(1)
L_{ResD}(z_t,z_s)=L_R(z_t,z_s),\tag{1}
LResD(zt,zs)=LR(zt,zs),(1)
其中
L
R
(
⋅
)
L_R(\cdot)
LR(⋅)表示logits的发散损失,同时
z
t
z_t
zt和
z
s
z_s
zs分别是老师和学生的logits。一个典型的基于响应的KD模型如图4所示。基于响应的知识可以用于不同类型的模型预测。例如,对象检测任务中的响应可能包含logits和边界框的偏移量。在语义地标定位任务中,例如,人体姿态估计,教师模型的响应可以包括每个地标的热图。最近,基于响应的知识被进一步探索,以解决作为条件目标的背景真相标签的信息。
用于图像分类的最流行的基于响应的知识被称为软目标。具体而言,软目标是输入属于类别的概率,并且可以通过softmax函数估计为
p
(
z
i
,
T
)
=
e
x
p
(
z
i
/
T
)
∑
j
e
x
p
(
z
j
/
T
)
,
(2)
p(z_i,T)=\frac{exp(z_i/T)}{\sum_j exp(z_j/T)},\tag{2}
p(zi,T)=∑jexp(zj/T)exp(zi/T),(2)
其中
z
i
z_i
zi是第
i
i
i类的logit,同时这个温度因子
T
T
T被引入去控制每一个软目标的重要性。如(Hinton et al.,2015)所述,软目标包含来自教师模型的信息性暗知识。因此,软logits的蒸馏损失可以重写为
L
R
e
s
D
(
p
(
z
i
,
T
)
,
p
(
z
s
,
T
)
)
=
L
R
(
p
(
z
i
,
T
)
,
p
(
z
s
,
T
)
)
.
(3)
L_{ResD}(p(z_i,T),p(z_s,T))=\mathcal{L}_R(p(z_i,T),p(z_s,T)).\tag{3}
LResD(p(zi,T),p(zs,T))=LR(p(zi,T),p(zs,T)).(3)
一般而言,
L
R
(
p
(
z
i
,
T
)
,
p
(
z
s
,
T
)
)
\mathcal{L}_R(p(z_i,T),p(z_s,T))
LR(p(zi,T),p(zs,T))通常使用KL散度损失。显然,优化方程(1)或(3)可以使学生的logits
z
s
z_s
zs与教师的logits
z
t
z_t
zt相匹配。为了容易理解基于响应的知识蒸馏,图5中给出了朴素知识蒸馏的基准模型,它是蒸馏和学生损失的结合点。注意到学生损失总是被定义为学生模型的基本事实标签和软logits之间的交叉熵损失
L
C
E
(
y
,
p
(
z
s
,
T
=
1
)
)
\mathcal{L}_{CE}(y,p(z_s,T=1))
LCE(y,p(zs,T=1))。
基于响应的知识的概念简单易懂,尤其是在“暗知识”的背景下。从另一个角度来看,软目标的有效性类似于标签平滑或正则化子。然而,基于响应的知识通常依赖于最后一层的输出,例如软目标,因此无法解决教师模型的中级监督,这对于使用非常深入的神经网络的表示学习非常重要。由于软logits实际上是类概率分布,因此基于响应的知识提取也仅限于监督学习。
2.2 基于特征的知识
深度神经网络擅长随着抽象度的提高而学习多个层次的特征表示。这被称为表征学习。因此,最后一层的输出和中间层的输出,即特征图,都可以用作监督学生模型训练的知识。具体而言,来自中间层的基于特征的知识是基于响应的知识的良好扩展,特别是对于更薄和更深的网络的训练。
中间表示首先在Fitnets中引入,以提供改进学生模型训练的提示。其主要思想是直接匹配教师和学生的特征激活。受此启发,已经提出了多种其他方法来间接匹配特征。具体地说,Zagoruyko和Komodakis(2017)从原始特征图中导出了一个“注意力图”来表达知识。利用神经元选择性迁移对注意图进行了推广。Passalis和Tefas(2018)通过匹配特征空间中的概率分布来迁移知识。为了更容易地迁移教师的知识,Kim等人(2018)引入了所谓的“因素”作为一种更容易理解的中间表征形式。为了缩小教师和学生之间的表现差距,金等人(2019)提出了路径约束的暗示学习,通过教师的暗示层的输出来监督学生。最近,Heo等人(2019c)提出使用隐藏神经元的激活边界进行知识迁移。有趣的是,教师模型中间层的参数共享以及基于响应的知识也被用作教师知识。为了匹配教师和学生之间的语义,Chen等人(2021)提出了跨层知识蒸馏,通过注意力分配为每个学生层自适应地分配适当的教师层。
通常,基于特征的知识迁移的蒸馏损失可以公式化为
L
F
e
a
D
(
f
t
(
x
)
,
f
s
(
x
)
)
=
L
(
Φ
t
(
f
t
(
x
)
)
,
Φ
s
(
f
s
(
x
)
)
)
,
(4)
L_{FeaD}(f_t(x),f_s(x))=\mathcal{L}(\Phi_t(f_t(x)),\Phi_s(f_s(x))),\tag{4}
LFeaD(ft(x),fs(x))=L(Φt(ft(x)),Φs(fs(x))),(4)
其中
f
t
(
x
)
f_t(x)
ft(x)和
f
s
(
x
)
f_s(x)
fs(x)分别是教师和学生模型中间层的特征图。当教师和学生模型特征图的形状不一致时,转换函数
Φ
t
(
f
t
(
x
)
)
\Phi_t(f_t(x))
Φt(ft(x))和
Φ
s
(
f
s
(
x
)
)
\Phi_s(f_s(x))
Φs(fs(x))就会被使用。
L
F
(
⋅
)
\mathcal{L}_F(\cdot)
LF(⋅)表示用于匹配教师和学生模型特征图的相似性函数。基于特征的通用KD模型如图6所示。我们还在表1中从特征类型、源层和蒸馏层的角度总结了不同类型的基于特征的知识。特别地,
L
2
(
⋅
)
,
L
1
(
⋅
)
,
L
C
E
(
⋅
)
,
L
M
M
D
(
⋅
)
\mathcal{L}_2(\cdot),\mathcal{L}_1(\cdot),\mathcal{L}_{CE}(\cdot),\mathcal{L}_{MMD}(\cdot)
L2(⋅),L1(⋅),LCE(⋅),LMMD(⋅)分别表示
l
2
l_2
l2正则距离,
l
1
l_1
l1正则距离,交叉熵损失和最大平均差异损失。尽管基于特征的知识迁移为学生模型的学习提供了有利的信息,但如何有效地从教师模型中选择提示层和从学生模型中选择引导层仍有待进一步研究。由于提示层和引导层的大小存在显著差异,如何正确匹配教师和学生的特征表示也需要探索。
2.3 基于关系的知识
基于响应的知识和基于特征的知识都使用教师模型中特定层的输出。基于关系的知识进一步探索了不同层或数据样本之间的关系。
为了探索不同特征图之间的关系,Yim等人(2017)提出了一种求解流程(FSP),该流程由两层之间的Gram矩阵定义。FSP矩阵总结了特征图对之间的关系。它是使用两层特征之间的内积来计算的。利用特征图之间的相关性作为提取的知识,提出了通过奇异值分解进行知识蒸馏来提取特征图中的关键信息。为了利用来自多位教师的知识,Zhang和Peng(2018)分别以每个教师模型的logits和特征为节点,形成了两个图。具体而言,在知识迁移之前,不同教师的重要性和关系通过logits和表示图进行建模。Lee和Song(2019)提出了基于多头图的知识蒸馏方法。图知识是通过多头注意力网络的任意两个特征图之间的数据内关系。为了探索成对的提示信息,学生模型还模拟了来自教师模型的提示层对的相互信息流。通常,基于特征图的关系的基于关系的知识的蒸馏损失可以公式化为
L
R
e
l
D
(
f
t
,
f
s
)
=
L
R
1
(
Ψ
t
(
f
^
t
,
f
ˇ
t
)
,
Ψ
s
(
f
^
s
,
f
ˇ
s
)
)
,
(5)
L_{RelD}(f_t,f_s)=\mathcal{L}_{R^1}(\Psi_t(\hat f_t,\check f_t),\Psi_s(\hat f_s,\check f_s)),\tag{5}
LRelD(ft,fs)=LR1(Ψt(f^t,fˇt),Ψs(f^s,fˇs)),(5)
其中
f
t
f_t
ft和
f
s
f_s
fs分别是教师和学生模型的特征图。从教师模型中选择成对的特征图是
f
^
t
\hat f_t
f^t和
f
ˇ
t
\check f_t
fˇt,从学生模型中选择的是
f
^
s
\hat f_s
f^s和
f
ˇ
s
\check f_s
fˇs。
Ψ
t
(
⋅
)
\Psi_t(\cdot)
Ψt(⋅)和
Ψ
s
(
⋅
)
\Psi_s(\cdot)
Ψs(⋅)是基于师生模型的特征图对的相似函数。
L
R
1
(
⋅
)
\mathcal{L}_{R^1}(\cdot)
LR1(⋅)表示教师和学生特征图之间的相关函数。
传统的知识迁移方法往往涉及个人知识的蒸馏。教师的个人软目标直接蒸馏给学生。事实上,蒸馏的知识不仅包含特征信息,还包含数据样本的相互关系。具体而言,Liu等人(2019g)通过实例关系图提出了一种稳健有效的知识蒸馏方法。实例关系图中迁移的知识包含实例特征、实例关系和跨层特征空间变换。Park等人(2019)提出了一种关系知识提炼方法,将知识从实例关系中迁移出来。基于流形学习的思想,通过特征嵌入对学生网络进行学习,保留了教师网络中间层样本的特征相似性(Chen et al.,2021)。使用数据的特征表示将数据样本之间的关系建模为概率分布。教师和学生的概率分布通过知识迁移来匹配。(Tung和Mori,2019)提出了一种相似保留知识的蒸馏方法。特别地,由教师网络中输入对的相似激活产生的相似性保持知识被迁移到学生网络中,同时保持成对的相似性。Peng等人(2019a)提出了一种基于相关同余的知识蒸馏方法,提取的知识既包含实例级信息,也包含实例之间的相关性。利用相关同余进行蒸馏,学生网络可以学习实例之间的相关性。
如上所述,基于实例关系的基于关系的知识的蒸馏损失可以公式化为
L
R
e
l
D
(
F
t
,
F
s
)
=
L
R
2
(
ψ
t
(
t
i
,
t
j
)
,
ψ
s
(
s
i
,
s
j
)
)
,
(6)
L_{RelD}(F_t,F_s)=\mathcal{L}_{R^2}(\psi_t(t_i,t_j),\psi_s(s_i,s_j)),\tag{6}
LRelD(Ft,Fs)=LR2(ψt(ti,tj),ψs(si,sj)),(6)
其中
(
t
i
,
t
j
)
∈
F
t
,
(
s
i
,
s
j
)
∈
F
s
(t_i,t_j)\in F_t,(s_i,s_j)\in F_s
(ti,tj)∈Ft,(si,sj)∈Fs,
F
t
F_t
Ft和
F
s
F_s
Fs分别是教师模型和学生模型的特征表示集合。
ψ
t
(
⋅
)
\psi_t(\cdot)
ψt(⋅)和
ψ
s
(
⋅
)
\psi_s(\cdot)
ψs(⋅)是
(
t
i
,
t
j
)
(t_i,t_j)
(ti,tj)和
(
s
i
,
s
j
)
(s_i,s_j)
(si,sj)的相似性函数。
L
R
2
(
⋅
)
\mathcal{L}_{R^2}(\cdot)
LR2(⋅)是教师和学生之间特征表示的相关函数。基于实例关系的典型KD模型如图7所示。
蒸馏的知识可以从不同的角度进行分类,例如数据的结构化知识,关于输入特征的特权信息。基于关系的知识的不同类别的总结如表2所示。特别的,
L
E
M
(
⋅
)
,
L
H
(
⋅
)
,
L
A
W
(
⋅
)
\mathcal{L}_{EM}(\cdot),\mathcal{L}_{H}(\cdot),\mathcal{L}_{AW}(\cdot)
LEM(⋅),LH(⋅),LAW(⋅)和
∥
⋅
∥
F
\left\|\cdot\right\|_F
∥⋅∥F分别是地球移动器距离、Huber损失、角度损失和Frobenius范数。尽管最近提供了一些类型的基于关系的知识,但如何将来自特征图或数据样本的关系信息建模为知识仍然值得进一步研究。
3 蒸馏方案
在本节中,我们将讨论教师和学生模型的蒸馏方案(即训练方案)。根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可以直接分为三大类:离线蒸馏、在线蒸馏和自蒸馏,如图8所示。
3.1 离线蒸馏
以前的大多数知识蒸馏方法都是离线的。在朴素知识蒸馏中,知识从预训练的教师模型迁移到学生模型。因此,整个训练过程分为两个阶段,即:1)大教师模型首先在一组训练样本上进行训练,然后进行蒸馏;2)教师模型用于提取logits或中间特征形式的知识,然后在蒸馏过程中用于指导学生模型的训练。
离线蒸馏的第一阶段通常不作为知识蒸馏的一部分进行讨论,即假设教师模型是预定义的。很少有人关注教师模型结构及其与学生模型的关系。因此,离线方法主要侧重于改进知识迁移的不同部分,包括知识的设计和用于匹配特征或分布匹配的损失函数。离线方法的主要优点是它们简单且易于实现。例如,教师模型可以包含一组使用不同软件包训练的模型,这些软件包可能位于不同的机器上。可以提取知识并将其存储在高速缓存中。
离线蒸馏方法通常采用单向知识迁移和两阶段训练过程。然而,复杂的高容量教师模型和巨大的训练时间是不可避免的,而学生模型在离线蒸馏中的训练通常在教师模型的指导下是有效的。此外,大教师和小学生之间的能力差距始终存在,学生往往在很大程度上依赖教师。
3.2 在线蒸馏
尽管离线蒸馏方法简单有效,但离线蒸馏中的一些问题越来越受到研究界的关注。为了克服离线蒸馏的局限性,提出了在线蒸馏来进一步提高学生模型的性能,特别是在没有大容量高性能教师模型的情况下。在在线蒸馏中,教师模型和学生模型同时更新,整个知识提取框架是端到端可训练的。
人们提出了各种在线知识蒸馏方法,尤其是在最近几年。具体而言,在深度互学习中,多个神经网络以协作的方式工作。在训练过程中,任何一个网络都可以是学生模型,其他模型可以是老师。为了提高泛化能力,利用软logits集合扩展了深度互学习。Chen等人(2020a)进一步将辅助同伴和组长引入深度互学,形成了一套多样的同伴模型。为了降低计算成本,Zhu和Gong(2018)提出了一种多分支架构,其中每个分支表示一个学生模型,不同的分支共享同一骨干网络。Kim等人(2019b)引入了一个特征融合模块来构建教师分类器,而不是使用logits的集合。Xie等人(2019)用廉价的卷积运算取代了卷积层,形成了学生模型。Anil等人(2018)采用在线蒸馏来训练大规模分布式神经网络,并提出了一种称为协同蒸馏的在线蒸馏变体。并行共蒸馏训练具有相同架构的多个模型,并且通过迁移其他模型的知识来训练任何一个模型。最近,提出了一种在线对抗性知识提取方法,通过鉴别器使用类概率和特征图中的知识同时训练多个网络。对抗性共蒸馏最近是通过使用GAN来产生不同的例子而设计的。
在线蒸馏是一种具有高效并行计算的单阶段端到端训练方案。然而,现有的在线方法(例如,相互学习)通常无法解决在线环境中的高容量教师问题,这使得进一步探索在线环境中教师和学生模式之间的关系成为一个有趣的话题。
3.3 自蒸馏
在自蒸馏中,教师和学生模型使用相同的网络。这可以看作是在线蒸馏的一个特例。具体而言,Zhang等人(2019b)提出了一种新的自蒸馏方法,将网络较深部分的知识蒸馏到较浅部分。与(Zhang et al.,2019b)中的自蒸馏类似,提出了一种用于车道检测的自注意蒸馏方法(Hou et al.,2019)。该网络利用其自身层的注意力图作为其较低层的蒸馏目标。快照蒸馏是自蒸馏的一种特殊变体,其中网络早期阶段(教师)的知识被迁移到后期阶段(学生),以支持同一网络内的监督训练过程。为了进一步减少通过早期退出的推理时间,Phuong和Lampert(2019b)提出了基于蒸馏的训练方案,其中早期退出层试图在训练期间模仿后期退出层的输出。最近,自蒸馏在(Mobahi et al.,2020)中进行了理论分析,并在(Zhang和Sabuncu,2020)的实验中证明了其改进的性能。
此外,最近提出了一些有趣的自蒸馏方法。具体而言,Yuan等人在分析标签平滑正则化的基础上,提出了无教师知识蒸馏方法。Hahn和Choi提出了一种新的自知识蒸馏方法,其中自知识由预测的概率组成,而不是传统的软概率。这些预测概率由训练模型的特征表示来定义。它们反映了特征嵌入空间中数据的相似性。Yun等人提出了类自知识蒸馏,以匹配具有相同模型的同一源内的类内样本和增强样本之间的训练模型的输出分布。此外,Lee等人(2019a)提出的自蒸馏被用于数据扩充,并且扩充的自知识被蒸馏到模型本身中。自蒸馏也被用于逐个优化具有相同架构的深度模型(教师或学生网络)。每个网络使用教师-学生优化来提取先前网络的知识。
此外,线下、线上和自蒸馏也可以从人类师生学习的角度直观地理解。离线蒸馏是指知识渊博的老师教给学生知识;在线蒸馏是指教师和学生共同学习;自蒸馏是指学生自主学习知识。而且,就像人类学习一样,这三种蒸馏可以结合起来,因其自身的优势而相辅相成。例如,自蒸馏和在线蒸馏都通过多重知识迁移框架进行了适当的整合。
4 师生结构
在知识蒸馏中,师生结构是形成知识迁移的一般载体。换言之,教师和学生网络的设计也决定了知识从教师到学生的获取和蒸馏质量。就人类的学习习惯而言,我们希望学生能找到合适的老师。因此,要想在知识蒸馏中很好地完成知识的获取和蒸馏,如何选择或设计合适的师生结构是一个非常重要但又很困难的问题。近年来,教师和学生的模型设置在蒸馏过程中几乎是预先固定的,大小和结构不变,容易造成模型容量差距。然而,如何特别设计教师和学生的体系结构,以及为什么他们的体系结构是由这些模型设置决定的,几乎是缺失的。在本节中,我们讨论了教师模型和学生模型结构之间的关系,如图9所示。
知识蒸馏之前是为了压缩深度神经网络集合而设计的。深度神经网络的复杂性主要来自两个维度:深度和宽度。通常需要将知识从更深更宽的神经网络迁移到更浅更薄的神经网络。学生网络通常被选择为:1)教师网络的简化版本,每层的层和通道更少;或2)教师网络的量化版本,其中保留了网络的结构;或3)具有高效基础操作的小型网络;或4)具有优化的全局网络结构的小型网络;或5)与教师相同的网络。
大型深度神经网络和小型学生神经网络之间的模型容量差距会降低知识迁移。为了有效地将知识迁移到学生网络,已经提出了多种方法来控制降低模型复杂性。具体而言,Mirzadeh等人(2020)引入了教师助理,以缓解教师模型和学生模型之间的训练差距。残差学习进一步缩小了差距,即使用辅助结构来学习残差。另一方面,最近的几种方法也侧重于最小化学生模型和教师模型在结构上的差异。例如,Polino等人(2018)将网络量化与知识蒸馏相结合,即学生模型是教师模型的小型量化版本。Nowak和Corso(2018)提出了一种结构压缩方法,该方法包括将多层学习的知识迁移到单层。Wang等人(2018a)在保留接受域的同时,逐步进行从教师网络到学生网络的分块知识迁移。在在线设置中,教师网络通常是学生网络的集合,其中学生模型彼此具有相似的结构(或相同的结构)。
最近,深度可分离卷积已被广泛用于设计用于移动或嵌入式设备的高效神经网络。受神经架构搜索(或NAS)成功的启发,通过搜索基于有效元运算或块的全局结构,小型神经网络的性能得到了进一步提高。此外,动态搜索知识迁移机制的想法也出现在知识蒸馏中,例如,使用强化学习以数据驱动的方式自动去除冗余层,并在给定教师网络的情况下搜索最佳学生网络。
以往的工作大多侧重于设计教师和学生模型的结构或它们之间的知识迁移方案。为了使小型学生模型与大型教师模型相匹配,以提高知识蒸馏性能,自适应的师生学习架构是必要的。最近,知识蒸馏中的神经结构搜索的想法,即在教师模型的指导下,联合搜索学生结构和知识迁移,将是未来研究的一个有趣的主题。
5 蒸馏算法
知识迁移的一个简单但非常有效的想法是直接匹配基于响应的知识、基于特征的知识或教师模型和学生模型之间的特征空间中的表示分布。已经提出了许多不同的算法来改进在更复杂的环境中迁移知识的过程。在本节中,我们回顾了最近在知识蒸馏领域内提出的用于知识迁移的典型类型的蒸馏方法。
5.1 对抗蒸馏
在知识蒸馏中,教师模型很难完全从真实的数据分布中学习。同时,学生模型的容量很小,因此无法准确模仿教师模型。有没有其他方法可以训练学生模型来模仿教师模型?最近,对抗性学习因其在生成网络(即生成对抗性网络或GANs)中的巨大成功而受到了极大的关注。具体地,GAN中的鉴别器估计样本来自训练数据分布的概率,而生成器试图使用生成的数据样本欺骗鉴别器。受此启发,已经提出了许多对抗性知识蒸馏方法,以使教师和学生网络能够更好地了解真实的数据分布。
如图10所示,基于对抗性学习的蒸馏方法,特别是那些使用GANs的方法,可以分为三大类,如下所示。在第一类中,对抗性生成器被训练以生成合成数据,该合成数据要么直接用作训练数据集,要么用于增强训练数据集中,如图10(a)所示。此外,Micaelli和Storkey(2019)利用对抗性生成器生成知识迁移的硬示例。通常,在这种基于GAN的KD类别中使用的蒸馏损失可以公式化为
L
K
D
=
L
G
(
F
t
(
G
(
z
)
)
,
F
s
(
G
(
z
)
)
)
,
(7)
L_{KD}=\mathcal{L}_G(F_t(G(z)),F_s(G(z))),\tag{7}
LKD=LG(Ft(G(z)),Fs(G(z))),(7)
其中
F
t
(
⋅
)
F_t(\cdot)
Ft(⋅)和
F
s
(
⋅
)
F_s(\cdot)
Fs(⋅)分别是教师模型和学生模型的输出。
G
(
z
)
G(z)
G(z)表示由给定随机输入向量
z
z
z的生成器
G
G
G生成的训练样本,并且
L
G
\mathcal{L}_G
LG是预测概率分布与真实概率分布之间匹配的蒸馏损失,例如,交叉熵损失或Kullback-Leibler(KL)散度损失。
为了使学生与教师很好地匹配,引入了第二类鉴别器,通过使用logits或特征来区分学生和教师模型中的样本,如图10(b)所示。具体而言,Belagiannis等人(2018)使用未标记的数据样本来形成知识迁移。Shen等人使用了多种鉴别器。此外,Shu等人使用了一种有效的中间监督,即挤压的知识来缓解教师和学生之间的能力差距。Wang等人提出的一个有代表性的模型属于这一类,可以公式化为
L
G
A
N
K
D
=
L
C
E
(
G
(
F
s
(
x
)
)
,
y
)
+
α
L
K
L
(
G
(
F
s
(
x
)
)
,
F
t
(
x
)
)
+
β
L
G
A
N
(
F
s
(
x
)
,
F
t
(
x
)
)
,
(8)
L_{GANKD}=\mathcal{L}_{CE}(G(F_s(x)),y)+\alpha\mathcal{L}_{KL}(G(F_s(x)),F_t(x))+\beta\mathcal{L}_{GAN}(F_s(x),F_t(x)),\tag{8}
LGANKD=LCE(G(Fs(x)),y)+αLKL(G(Fs(x)),Ft(x))+βLGAN(Fs(x),Ft(x)),(8)
其中
G
G
G是学生网络,
L
G
A
N
(
⋅
)
\mathcal{L}_{GAN}(\cdot)
LGAN(⋅)表示生成对抗性网络中使用的典型损失函数,以使学生和教师之间的输出尽可能相似。
在第三类中,对抗性知识蒸馏是以在线方式进行的,即教师和学生在每次迭代中进行联合优化,如图10(c)所示。此外,使用知识蒸馏来压缩GAN,学习的小型GAN学生网络通过知识迁移模仿大型GAN教师网络。
总之,从上述对抗性蒸馏方法可以得出三个要点:GAN是通过教师知识迁移增强学生学习能力的有效工具;联合GAN和KD可以生成有价值的数据,以提高KD的性能,克服数据不可用和不可访问的限制;KD可用于压缩GAN。
5.2 多教师蒸馏
不同的教师体系结构可以为学生网络提供自己有用的知识。多个教师网络可以单独地和整体地用于在训练学生网络期间的蒸馏。在典型的师生框架中,教师通常有一个大模型或一组大模型。要从多名教师那里迁移知识,最简单的方法是使用所有教师的平均响应作为监督信号。最近提出了几种多教师知识蒸馏方法。多教师蒸馏的通用框架如图11所示。
事实证明,多个教师网络可以有效地训练学生模型,通常使用logits和特征表示作为知识。除了来自所有教师的平均logits之外,You等人(2017)进一步结合了中间层的特征,以鼓励不同训练样本之间的差异。为了利用logits和中间特征,Chen等人(2019b)使用了两个教师网络,其中一个教师将基于响应的知识迁移给学生,另一个教师则将基于特征的知识迁移到学生。Fukuda等人(2017)在每次迭代时从教师网络库中随机选择一名教师。为了从多个教师那里迁移基于特征的知识,在学生网络中添加了额外的教师分支,以模仿教师的中间特征。重生网络以循序渐进的方式处理多个教师,即,在t步的学生被用作在t+1步的学生的老师,类似的想法可以在(Yang et al.,2019a)中找到。为了有效地进行知识迁移和探索多个教师的力量,已经提出了几种替代方法,通过向给定的教师添加不同类型的噪声或通过使用随机块和跳跃连接、来模拟多个教师。使用具有特征集合的多个教师模型,设计了知识融合。通过知识融合,可以重用许多公共可用的、经过训练的深度模型作为教师。更有趣的是,由于多教师蒸馏的特殊性,它的扩展被用于通过知识自适应进行领域自适应,并保护数据的隐私和安全。
表3总结了使用不同类型知识和蒸馏方案的典型多教师蒸馏方法。一般来说,由于来自不同教师的不同知识,多教师知识蒸馏可以提供丰富的知识,并定制一个通用的学生模型。然而,如何有效地整合来自多位教师的不同类型的知识还有待进一步研究。
5.3 跨模态蒸馏
在训练或测试期间,可能无法获得某些模态的数据或标签。因此,重要的是在不同的模态之间迁移知识。下面回顾了使用跨模态知识迁移的几个典型场景。
给定在具有大量注释良好的数据样本的一种模态(例如,RGB图像)上预训练的教师模型,Gupta等人(2016)将知识从教师模型迁移到具有新的未标记输入模态的学生模型,例如深度图像和光流。具体而言,所提出的方法依赖于涉及两种模态的未标记配对样本,即RGB和深度图像。然后,教师从RGB图像中获得的特征用于学生的监督训练。成对样本背后的想法是通过成对样本注册来迁移注释或标签信息,并已广泛用于交叉模态应用。为了通过墙壁或遮挡图像进行人体姿势估计,Zhao等人(2018)使用同步的无线电信号和相机图像。知识是跨模态迁移的,用于基于无线电的人体姿态估计。Thoker和Gall(2019)从两种模态中获得了配对样本:RGB视频和骨架序列。这些对用于将在RGB视频中学习到的知识迁移到基于骨架的人类动作识别模型中。为了仅使用RGB图像来提高动作识别性能,Garcia等人(2018)对附加模态(即深度图像)进行了跨模态蒸馏,以生成RGB图像模态的幻觉流。Tian等人(2020)引入了一种对比损失,以在不同模态之间迁移成对关系。为了改进目标检测,Roheda等人(2018)提出了使用GANs在缺失和可用模型之间进行跨模态蒸馏。跨模态蒸馏的一般框架如图12所示。
此外,Do等人(2019)提出了一种基于知识蒸馏的视觉问答方法,将来自以图像问答为输入的三线性交互教师模型的知识蒸馏到以图像问答作为输入的双线性交互学生模型的学习中。Passalis和Tefas(2018)提出的概率知识蒸馏也用于从文本模态到视觉模态的知识迁移。Hoffman等人(2016)提出了一种基于跨模态蒸馏的模态幻觉架构,以提高检测性能。此外,这些跨模态蒸馏方法还可以在多个领域之间迁移知识。
具有不同模态、知识类型和蒸馏方案的跨模态蒸馏总结如表4所示。具体来说,可以看出,知识蒸馏在跨模态场景下的视觉识别任务中表现良好。然而,当存在模态差距时,跨模态知识迁移是一项具有挑战性的研究,例如,不同模态之间缺乏配对样本。
5.4 基于图的蒸馏
大多数知识蒸馏算法侧重于将个体实例知识从教师迁移到学生身上,而最近提出了一些使用图来探索数据内关系的方法。这些基于图的蒸馏方法的主要思想是:1)将图作为教师知识的载体;或者2)使用该图来控制教师知识的消息传递。基于图的蒸馏的通用框架如图13所示。如第2.3节所述,基于图的知识属于基于关系的知识。在本节中,我们介绍了基于图的知识和基于图的消息传递蒸馏算法的典型定义。
具体而言,在(Zhang和Peng,2018)中,每个顶点代表一个自我监督的教师。然后,使用logits和中间特征构建两个图,即logits图和表示图,将多个自我监督的教师的知识迁移给学生。在(Chen et al.,2021)中,该图用于维护高维空间中样本之间的关系。然后使用所提出的局部保持损失函数来执行知识迁移。Lee和Song(2019)使用多头图分析了数据内关系,其中顶点是来自细胞神经网络不同层的特征。Park等人(2019)直接迁移了数据样本的相互关系,即匹配教师图和学生图之间的边。Tung和Mori(2019)使用相似矩阵来表示教师和学生模型中输入对激活的相互关系。学生的相似矩阵与教师的相似矩阵相匹配。此外,Peng等人(2019a)不仅匹配了基于响应和基于特征的知识,还使用了基于图的知识。在(Liu et al.,2019g)中,实例特征和实例关系分别建模为图的顶点和边。
有几种方法不是使用基于图的知识,而是使用图来控制知识迁移。具体而言,Luo等人(2018)考虑了模态差异,以合并来自源域的特权信息。引入了一个有向图,称为蒸馏图,以探索不同模态之间的关系。每个顶点表示一种模态,并且边指示一种模态和另一种模态之间的连接强度。Minami等人(2019)提出了一种基于双向图的多样化协作学习,以探索多样化的知识迁移模式。Yao等人(2020)引入了GNN来处理基于图的知识的知识迁移。此外,使用知识蒸馏,将图卷积教师网络的拓扑语义作为拓扑感知知识迁移到图卷积学生网络中。
基于图的蒸馏可以迁移数据的信息结构知识。然而,如何正确地构造图来对数据的结构知识进行建模仍然是一项具有挑战性的研究。
5.5 基于注意力的蒸馏
由于注意力可以很好地反映卷积神经网络的神经元激活,一些注意力机制被用于知识蒸馏,以提高学生网络的性能。在这些基于注意力的KD方法中,定义了不同的注意力迁移机制,用于将知识从教师网络蒸馏到学生网络。注意力迁移的核心是定义用于在神经网络层中嵌入特征的注意力图。也就是说,使用注意力映射函数来迁移关于特征嵌入的知识。与注意力图不同,Song等人提出了一种不同的注意力知识蒸馏方法。注意力机制用于分配不同的置信规则。
5.6 无数据蒸馏
已经提出了一些无数据的KD方法来克服因隐私、合法性、安全性和保密性问题而产生的不可用数据问题。正如“无数据”所暗示的那样,没有训练数据。相反,数据是新生成的或综合生成的。
具体而言,在一堆论文中,传输数据由GAN生成。在所提出的无数据知识蒸馏方法中,通过使用教师网络的层激活或层谱激活来重建用于训练学生网络的传输数据。Yin等人(2020)提出了DeepInversion,它使用知识蒸馏来生成合成图像,用于无数据的知识迁移。Nayak等人(2019年)提出了不使用现有数据的零样本知识蒸馏。迁移数据是通过使用教师网络的参数对softmax空间进行建模而产生的。事实上,(Micaelli和Storkey,2019;Nayak等人,2019)中的目标数据是通过使用来自教师网络特征表示的信息生成的。与零样本学习类似,通过将教师模型中的知识蒸馏到学生神经网络中,设计了一种具有少量快照学习的知识蒸馏方法。老师使用有限的标注数据。此外,还有一种新型的蒸馏称为数据蒸馏,类似于无数据蒸馏。在数据蒸馏中,使用教师模型生成的未标记数据的新训练注释来训练学生模型。
总之,无数据蒸馏中的合成数据通常是由预训练的教师模型的特征表示生成的,如图14所示。尽管无数据蒸馏在数据不可用的情况下显示出了巨大的潜力,但它仍然是一项极具挑战性的任务,即如何生成高质量的多样化训练数据来提高模型的可推广性。
5.7 量化蒸馏
网络量化通过将高精度网络(例如,32位浮点)转换为低精度网络(如,2位和8位)来降低神经网络的计算复杂度。同时,知识蒸馏旨在训练一个小模型,以产生与复杂模型相当的性能。已经提出了一些在师生框架中使用量化过程的KD方法。量化蒸馏方法的框架如图15所示。
具体而言,Polino等人(2018)提出了一种量化蒸馏方法,将知识迁移到加权量化的学生网络中。在(Mishra和Marr,2018)中,所提出的量子化KD被称为“学徒”。高精度的教师网络将知识迁移到小型低精度的学生网络。为了确保小型学生网络准确地模仿大型教师网络,首先在特征图上对全精度教师网络进行量化,然后将知识从量化教师转移到量化学生网络。Kim等人(2019a)提出了量化感知知识蒸馏,该方法基于量化学生网络的自学习以及教师和学生网络与知识迁移的共同学习。此外,Shin等人(2019)使用蒸馏和量化对深度神经网络进行了实证分析,考虑了知识蒸馏的超参数,如教师网络的大小和蒸馏温度。最近,与上述量化蒸馏方法不同,设计了一种自蒸馏训练方案来提高量化深度模型的性能,其中教师共享学生的模型参数。
5.8 终身蒸馏
终身学习,包括持续学习、连续学习和元学习,旨在以与人类相似的方式学习。它积累了以前学到的知识,也将学到的知识转化为未来的学习。知识蒸馏提供了一种有效的方法来保存和迁移所学知识,而不会造成灾难性的遗忘。最近,越来越多的基于终身学习的KD变体被开发出来。(Jang等人,2019;Peng等人,2019b;Liu et al.,2019e;Flennerhag et al.,2019)中提出的方法采用了元学习。Jang等人(2019)设计了元迁移网络,可以确定在师生架构中迁移什么以及迁移到哪里。Flennerhag等人(2019)提出了一种称为Leap的轻量级框架,通过将知识从一个学习过程迁移到另一个学习进程,实现任务流形上的元学习。Peng等人(2019b)为小样本图像识别设计了一种新的知识迁移网络架构。该体系结构同时结合了来自图像的视觉信息和先验知识。Liu等人(2019e)提出了一种基于语义感知的图像检索知识保存方法。从图像模态和语义信息中获得的教师知识被保存和迁移。
此外,为了解决终身学习中的灾难性遗忘问题,已经开发了全局蒸馏、基于知识蒸馏的终身GAN、多模型蒸馏和其他基于KD的方法来提取所学知识并在新任务上教授学生网络。
5.9 基于NAS的蒸馏
神经结构搜索(NAS)是最流行的自动机器学习(或AutoML)技术之一,旨在自动识别深度神经模型并自适应地学习适当的深度神经结构。在知识蒸馏中,知识迁移的成功不仅取决于教师的知识,还取决于学生的结构。然而,大教师模式和小学生模式之间可能存在能力差距,这使得学生很难向老师学习。为了解决这个问题,已经采用了神经架构搜索来在基于oracle的和感知架构的知识蒸馏中找到合适的学生架构。此外,知识蒸馏用于提高神经架构搜索的效率,如AdaNAS、具有提取架构知识的NAS、教师指导的架构或TGSA搜索和一次性NAS。在TGSA中,每个架构搜索步骤都被引导来模仿教师网络的中间特征表示。有效地搜索学生的可能结构,并且教师有效地监督特征迁移。
6 性能比较
知识蒸馏是一种很好的模型压缩技术。通过捕获教师知识并将提炼策略用于教师-学生学习,它提供了轻量级学生模型的有效性能。近年来,许多知识蒸馏方法都致力于提高性能,尤其是在图像分类任务中。在本节中,为了清楚地证明知识蒸馏的有效性,我们总结了一些典型的KD方法在两个流行的图像分类数据集上的分类性能。
这两个数据集是CIFAR10和CIFAR100,分别由10个和100个类别的32×32 RGB图像组成。两者都有50000个训练图像和10000个测试图像,并且每个类都有相同数量的训练和测试图像。为了公平比较,KD方法的实验分类准确率结果(%)直接来源于相应的原始论文,CIFAR10结果如表5所示,CIFAR100结果如表6所示。我们报告了不同方法在使用不同类型的知识、蒸馏方案和教师/学生模型结构时的表现。具体而言,括号中的准确性是教师和学生模型的分类结果,这些模型是单独训练的。需要注意的是,DML、DCM和KDCL的精度对是教师和学生在线蒸馏后的表现。
根据表5和表6中的性能比较,可以将几个观察结果总结为
- 知识蒸馏可以在不同的深度模型上实现。
- 不同深度模型的模型压缩可以通过知识蒸馏来实现。
- 通过协作学习进行在线知识蒸馏可以显著提高深度模型的性能。
- 自知识蒸馏可以很好地提高深度模型的性能。
- 离线和在线蒸馏方法通常分别迁移基于特征的知识和基于响应的知识。
- 轻量级深度模型(学生)的性能可以通过高容量教师模型的知识迁移来提高。
通过对不同知识蒸馏方法的性能比较,可以很容易地得出结论,知识蒸馏是一种有效的深层模型压缩技术。
7 应用
作为一种有效的深度神经网络压缩和加速技术,知识蒸馏已被广泛应用于人工智能的不同领域,包括视觉识别、语音识别、自然语言处理(NLP)和推荐系统。此外,知识蒸馏还可以用于其他目的,例如数据隐私和防御对抗性攻击。本节简要回顾了知识蒸馏的应用。
7.1 视觉识别中的KD
近年来,各种知识蒸馏方法在不同的视觉识别应用中被广泛用于模型压缩。具体而言,大多数知识蒸馏方法以前都是为图像分类开发的,然后扩展到其他视觉识别应用,包括人脸识别,图像/视频分割,动作识别,物体检测,车道检测,人的重识别,行人检测,面部标志检测,姿态估计,视频字幕,人物搜索,图像检索,阴影检测,显著性估计,深度估计,视频分类,视觉问答和异常检测。由于分类任务中的知识蒸馏是其他任务的基础,我们简要回顾了具有挑战性的图像分类设置中的知识蒸馏,如人脸识别和动作识别。
现有的基于KD的人脸识别方法不仅注重高效部署,而且注重有竞争力的识别精度。具体而言,在(Luo et al.,2016)中,来自教师网络顶部提示层的所选信息神经元的知识被迁移到学生网络中。为了避免教师的错误监督,设计了一种教师加权策略,该策略具有来自提示层的特征表示的损失。通过使用以前的学生网络初始化下一个学生网络,设计了一种递归知识蒸馏方法。由于大多数人脸识别方法都是进行开集识别的,即测试集上的类/身份对训练集来说是未知的,因此人脸识别标准通常是正样本和负样本的特征表示之间的距离度量,例如(Duong et al.,2019)中的角损失和(Wu et al.,2020)中的相关嵌入损失。
为了提高低分辨率人脸识别的准确性,通过使用高分辨率人脸教师和低分辨率人脸学生之间的架构来开发知识蒸馏框架,以实现模型加速和提高分类性能。具体而言,Ge等人(2018)提出了一种选择性知识蒸馏方法,用于高分辨率人脸识别的教师网络通过稀疏图优化将其信息性的人脸特征选择性地迁移到用于低分辨率人脸辨识的学生网络中。在(Kong et al.,2019)中,通过设计一个统一了人脸幻觉和异构识别子网的分辨率不变模型,实现了跨分辨率人脸识别。为了获得高效、有效的低分辨率人脸识别模型,采用师生网络之间的多核最大均值差异作为特征损失。此外,通过改变知识蒸馏中的损失,可以将基于KD的人脸识别扩展到人脸对齐和验证。
最近,知识蒸馏已成功地用于解决复杂的图像分类问题。对于不完整、模糊和冗余的图像标签,提出了通过自蒸馏和标签演进的标签精炼模型,以学习用于复杂图像分类的软、信息、集体和动态标签。为了解决CNN在各种图像分类任务中的灾难性遗忘问题,提出了一种CNN的无遗忘学习方法,包括知识蒸馏和终身学习,以识别新的图像任务并保留原始任务。为了提高图像分类的准确性,Chen等人(2018a)提出了基于特征图的GAN知识蒸馏方法。它将特征图中的知识迁移给学生。利用知识蒸馏,为图像分类器设计了一个视觉解释和诊断框架,该框架将用于解释的师生模型和用于诊断的深度生成模型统一起来。与基于KD的低分辨率人脸识别类似,Zhu等人(2019)提出了用于低分辨率图像分类的深度特征蒸馏,其中学生的输出特征与教师的输出特征相匹配。
如第5.3节所述,具有师生结构的知识蒸馏可以迁移和保存跨模态知识。可以成功实现跨模态任务场景下高效有效的动作识别。这些方法是时空模态蒸馏的例子,具有用于动作识别的不同知识迁移。例子包括相互教师-学生网络、多流网络、时空蒸馏密集连接网络,图蒸馏和多教师-多学生网络。在这些方法中,轻量级学生可以从存储在教师中的多个模态中蒸馏和共享知识信息。
我们总结了基于蒸馏的视觉识别应用的两个主要观察结果,如下所示。
- 知识蒸馏为各种不同的视觉识别任务提供了高效的师生学习,因为在高容量教师网络的指导下,可以轻松地训练轻量级的学生网络。
- 由于灵活的师生架构和知识迁移,知识蒸馏可以充分利用复杂数据源中的不同类型的知识,如跨模态数据、多领域数据和多任务数据以及低分辨率数据。
7.2 NLP中的KD
诸如BERT之类的传统语言模型具有复杂繁琐的结构,非常耗费时间和资源。自然语言处理领域对知识蒸馏进行了广泛的研究,以获得轻量级、高效和有效的语言模型。越来越多的KD方法被提出来解决众多的NLP任务。使用KD的现有NLP任务包括神经机器翻译(NMT),文本生成、问答系统、事件检测、文档检索和文本识别等。在这些基于KD的NLP方法中,大多数属于自然语言理解(NLU),并且许多用于NLU的KD方法被设计为特定任务的蒸馏和多任务蒸馏。在下文中,我们描述了KD在神经机器翻译方面的研究工作,然后在NLU中扩展了一个典型的多语言表示模型,名为Transformer的双向编码器表示(或BERT)。
在自然语言处理中,神经机器翻译是最热门的应用。然而,现有的具有竞争力的NMT模型非常大。为了获得轻量级NMT,有许多用于神经机器翻译的扩展知识蒸馏方法。最近,Zhou等人(2019a)实证证明了基于KD的非自回归机器翻译(NAT)模型的更好性能在很大程度上取决于其容量和通过知识迁移提取的数据。Gordon和Duh(2019)从数据扩充和正则化的角度解释了序列级知识蒸馏的良好性能。在(Kim和Rush,2016)中,在NMT的序列生成场景中,将有效的单词级知识蒸馏扩展到了序列级知识蒸馏。序列生成学生模型模拟教师的序列分布。为了克服多语言的多样性,Tan等人(2019)提出了多教师蒸馏,其中处理双语配对的多个个体模型是教师,多语言模型是学生。为了提高翻译质量,多个NMT模型的集合作为教师,使用数据过滤方法监督学生模型。为了提高机器翻译和机器阅读任务的性能,(Wei et al.,2019)提出了一种新的在线知识蒸馏方法,该方法解决了训练过程的不稳定性和每个验证集的性能下降的问题。在这个在线KD中,选择训练期间评估最好的模型作为教师,并通过任何后续更好的模型进行更新。如果下一个模式表现不佳,那么当前的教师模式将指导它。
BERT作为一种多语言表示模型,在自然语言理解中引起了人们的关注,但它也是一种繁琐的深度模型,不容易部署。为了解决这个问题,提出了使用知识蒸馏的BERT的几种轻量级变体(称为BERT模型压缩)。Sun等人(2019)提出了用于BERT模型压缩的耐心知识蒸馏(BERT-PKD),用于情感分类、转述相似性匹配、自然语言推理和机器阅读理解。在耐心KD方法中,[CLS]标记的特征表示从教师的提示层迁移到学生。为了加速语言推理,Jiao等人(2020)提出了TinyBERT,即两阶段的transformer知识蒸馏。它包含一般领域和特定任务的知识蒸馏。对于句子分类和匹配,Tang等人(2019)提出了将BERT教师模型中的任务特定知识蒸馏到双向长短期记忆网络(BiLSTM)中。在(Sanh et al.,2019)中,设计并学习了一个名为DistilBERT的轻量级学生模型,该模型具有与BERT相同的通用结构,用于NLP的各种任务。在(Aguilar et al.,2020)中,通过内部蒸馏使用大型教师BERT的内部表示,提出了简化的学生BERT。
此外,下面介绍了一些不同视角的NLP典型KD方法。对于问答,为了提高机器阅读理解的效率和稳健性,Hu等人(2018)提出了一种注意力引导的答案蒸馏方法,该方法融合了一般蒸馏和答案蒸馏,以避免混淆答案。对于特定任务的蒸馏,研究了紧凑学生模型的知识蒸馏性能以及预训练、蒸馏和微调之间的相互作用。所提出的预训练蒸馏在情感分类、自然语言推理、文本蕴涵等方面表现良好。对于自然语言理解背景下的多任务蒸馏,Clark等人提出了基于再生神经网络的单一多任务蒸馏。单任务教师教多任务学生。对于多语言表示,知识蒸馏在多语言单词嵌入之间迁移知识,用于双语词典归纳。对于低资源语言,知识迁移在多语言模型的集合中是有效的。
关于自然语言处理中的知识蒸馏,总结如下。
- 知识蒸馏提供了高效、有效的轻量级语言深度模型。大容量教师模型可以从大量不同类型的语言数据中迁移丰富的知识来训练小型学生模型,使学生能够以有效的表现快速完成许多语言任务。
- 考虑到来自多语言模型的知识可以相互迁移和共享,师生知识迁移可以轻松有效地解决许多多语言任务。
- 在深度语言模型中,序列知识可以有效地从大型网络迁移到小型网络。
7.3 语音识别中的KD
在语音识别领域,深度神经声学模型以其强大的性能引起了人们的关注和兴趣。然而,越来越多的实时语音识别系统部署在计算资源有限、响应时间快的嵌入式平台上。现有技术的深度复杂模型无法满足这种语音识别场景的要求。为了满足这些要求,知识提取被广泛研究并应用于许多语音识别任务中。有许多知识提取系统用于设计用于语音识别的轻量级深度声学模型(Chebotar和Waters,2016;
Wong和Gales,2016;Chan等人,2015年;普莱斯等人,2016年;Fukuda等人,2017;Bai等人,2019;Ng等人,2018;Albanie等人,2018;鲁等,2017;施等人,2019a;Roheda等人,2018;施等人,2019b;高等,2019;Ghorbani等人,2018;Takashima等人,2018;
渡边等人,2017;施等人,2019c;Asami等人,2017;黄等,2018;沈等,2018;Perez等人,2020年;沈等,2019c;Oord等人,2018;Kwon等人,2020;沈等,2020)。特别地,这些基于KD的语音识别应用具有口语识别(Shen et al.,20182019c,2020)、音频分类(Gao et al.,2019;Perez et al.,2020),与文本无关的说话人识别(Ng et al.,2018)、语音增强(Watanabe et al.,2017)、声学事件检测,语音合成(Oord et al.,2018)等。
大多数现有的语音识别知识提取方法都使用师生架构来提高声学模型的效率和识别精度(Chan et al.,2015;Watanabe等人,2017;Chebotar和Waters,2016;Shen等人,2019c;
鲁等,2017;沈等,20182020;高等,2019;
施等,2019c,a;Perez等人,2020)。使用递归神经网络(RNN)来保存来自语音序列的时间信息,将来自教师RNN声学模型的知识转移到小型学生DNN模型中(Chan et al.,2015)。通过组合多种声学模式可以获得更好的语音识别精度。具有不同个人训练标准的不同RNN的集合旨在通过知识转移训练学生模型(Chebotar和Waters,2016)。所学习的学生模型在5种语言的2000小时大词汇连续语音识别(LVCSR)任务中表现良好。为了加强口语识别(LID)模型对短话语的泛化,将基于长话语的教师网络的特征表示知识转移到基于短话语的学生网络中,该学生网络能够区分短话语并在基于短持续时间话语的LID任务中表现良好(Shen et al.,2018)。为了进一步提高基于短话语的LID的性能,提出了一种交互式师生在线蒸馏学习,以提高短话语特征表示的性能(Shen et al.,2019c)。通过将教师对长话语的内部表征知识提取到学生对短话语的内部表示知识中,也提高了短话语的LID表现(Shen et al.,2020)。
同时,对于音频分类,开发了一种多层次特征提取方法,并采用对抗性学习策略来优化知识转移(Gao et al.,2019)。为了提高噪声鲁棒性语音识别,将知识提取作为语音增强的工具。在(Perez et al.,2020)中,提出了一种视听多模态知识提取方法。知识从关于视觉和声学数据的教师模型转移到关于音频数据的学生模型。本质上,这种提炼在教师和学生之间共享跨模态知识(Perez等人,2020;Albanie等人,2018;Roheda等人,2018)。为了有效地检测声学事件,提出了一种同时使用知识提取和量化的量化提取方法(Shi et al.,2019a)。
量化蒸馏将具有更好检测精度的大型CNN教师模型中的知识转移到量化RNN学生模型中。
与大多数现有的传统帧级KD方法不同,序列级KD在一些用于语音识别的序列模型中可以表现得更好,例如连接主义时间分类(CTC)(Wong和Gales,2016;Takashima等人,2018;Huang等人,2018)。在(Huang et al.,2018)中,序列级KD被引入到连接主义时间分类中,以匹配教师模型训练中使用的输出标签序列和蒸馏中使用的输入语音帧。在(Wong和Gales,2016)中,研究了语音识别性能对帧级和序列级师生培训的影响,并提出了一种新的序列级师生训练方法。教师合奏是用序列级组合而不是框架级组合来构建的。为了提高基于RNN的单向CTC在实时语音识别中的性能,通过帧级KD和序列级KD将基于双向LSTM的CTC教师模型的知识转移到基于单向LSTM的学生模型中(Takashima et al.,2018)。
此外,知识提取可以用于解决语音识别中的一些特殊问题(Bai et al.,2019;Asami等人,2017;Ghorbani等人,2018)。为了克服数据稀缺时DNN声学模型的过拟合问题,在源模型的监督下,将知识提取作为一种正则化方法来训练自适应模型(Asami et al.,2017)。最终的自适应模型在三个真实声域上实现了更好的性能。为了克服非母语语音识别性能的下降,通过从多重音特定的RNN-CTC模型中提取知识来训练高级多重音学生模型(Ghorbani等人,2018)。从本质上讲,知识提炼(Asami et al.,2017;Ghorbani et al.,2018)实现了跨领域的知识转移。为了解决将外部语言模型(LM)融合到用于语音识别的序列到序列模型(Seq2seq)中的复杂性,知识提取被用作将LM(教师)整合到Seq2seq模型(学生)中的有效工具(Bai et al.,2019)。训练后的Seq2seq模型可以降低序列到序列语音识别中的字符错误率。
总之,关于基于知识提取的语音识别的一些观察可以总结如下。
•轻量级的学生模型可以满足语音识别的实际要求,如实时响应、使用有限的资源和高识别精度。
•由于语音序列的时间特性,许多师生架构都建立在RNN模型上。一般来说,选择RNN模型作为教师,可以很好地将真实声学数据中的时间知识保存并转移到学生模型中。
•序列级知识蒸馏可以很好地应用于具有良好性能的序列模型。
事实上,帧级KD总是使用基于响应的知识,而序列级KD通常从教师模型的提示层转移基于特征的知识。
•使用师生知识转移的知识提取可以轻松解决多重音和多语言语音识别等应用中的跨域或跨模态语音识别问题。
7.4 其他应用中的KD
充分而正确地利用外部知识,例如在用户评论或图像中,对深度推荐模型的有效性起着非常重要的作用。降低深度推荐模型的复杂性和提高其效率也是非常必要的。最近,知识蒸馏已成功应用于深度模型压缩和加速的推荐系统。在(Tang和Wang,2018)中,知识蒸馏首次被引入推荐系统,并被称为排名蒸馏,因为推荐被表示为排名问题。Chen等人(2018b)提出了一种用于高效推荐的对抗性知识蒸馏方法。教师作为正确评论预测网络监督学生作为用户-项预测网络(生成器)。学生的学习是通过教师和学生网络之间的对抗性适应来调整的。与(Chen et al.,2018b;Tang和Wang,2018)中的蒸馏不同,Pan等人(2019)通过知识蒸馏为推荐系统设计了一个增强的协同去噪自动编码器(ECAE)模型,以从用户反馈中捕获有用的知识并降低噪声。统一的ECAE框架包含一个生成网络、一个再训练网络和一个蒸馏层,用于传递知识并减少生成网络的噪声。
利用师生架构中知识蒸馏的自然特征,知识蒸馏被用作解决深层模型的对抗性攻击或扰动的有效策略和由于隐私而导致的不可用数据问题,保密和安全问题。具体而言,对抗性样本的扰动可以通过教师网络的鲁棒输出通过蒸馏来克服。为了避免暴露私人数据,多名教师访问敏感或未标记数据的子集,并监督学生。为了解决隐私和安全问题,通过无数据蒸馏使用教师网络的层激活或层谱激活来生成训练学生网络的数据。为了保护数据隐私和防止知识盗版,Wang等人(2019a)提出了一种通过知识蒸馏的私有模型压缩框架。学生模型应用于公共数据,而教师模型同时应用于敏感数据和公共数据。这种私有知识的蒸馏采用了隐私丢失和批量丢失的方式,进一步提高了隐私性。为了考虑隐私和性能之间的折衷,Bai等人(2020)通过一种新的分层知识蒸馏开发了一种小样本网络压缩方法,每类样本很少。当然,知识蒸馏还有其他特别有趣的应用,如神经架构搜索、深度神经网络的可解释性和联邦学习。
8 结论和讨论
近年来,知识蒸馏及其应用引起了人们的广泛关注。本文从知识蒸馏、蒸馏方案、师生体系结构、蒸馏算法、性能比较和应用等方面对知识蒸馏进行了全面的综述。下面,我们讨论了知识蒸馏的挑战,并对未来的知识蒸馏研究提供了一些见解。
8.1 挑战
对于知识蒸馏,关键是1)从教师那里提取丰富的知识,2)从教师手中迁移知识,指导学生的训练。因此,我们从以下几个方面讨论了知识蒸馏的挑战:知识的质量、蒸馏的类型、师生架构的设计以及知识蒸馏背后的理论。
大多数KD方法利用不同类型知识的组合,包括基于响应的、基于特征的和基于关系的知识。因此,重要的是要了解每种类型的知识的影响,并了解不同类型的知识如何以互补的方式相互帮助。例如,基于响应的知识与标签平滑和模型正则化具有相似的动机;基于特征的知识通常用于模拟教师的中间过程,基于关系的知识用于捕捉不同样本之间的关系。为此,在一个统一和互补的框架中对不同类型的知识进行建模仍然具有挑战性。例如,来自不同提示层的知识可能对学生模型的训练有不同的影响:1)基于响应的知识来自最后一层;2) 来自更深提示/引导层的基于特征的知识可能会受到过度正则化的影响。
如何将丰富的知识从教师手中迁移给学生,是知识蒸馏的关键环节。一般来说,现有的蒸馏方法可分为离线蒸馏、在线蒸馏和自蒸馏。离线蒸馏通常用于从复杂的教师模型中迁移知识,而教师模型和学生模型在在线蒸馏和自蒸馏的设置中是可比较的。为了提高知识迁移的效率,应该进一步研究模型复杂性与现有蒸馏方案或其他新蒸馏方案之间的关系。
目前,大多数KD方法都侧重于新类型的知识或蒸馏损失函数,使得师生体系结构的设计研究得很少。事实上,除了知识和蒸馏算法之外,教师和学生的结构之间的关系也会显著影响知识蒸馏的性能。例如,一方面,最近的一些工作发现,由于教师模型和学生模型之间的模型能力差距,学生模型从一些教师模型中学到的东西很少;另一方面,从一些早期关于神经网络能力的理论分析来看,浅层网络能够学习与深度神经网络相同的表示。因此,设计一个有效的学生模型或构建一个合适的教师模型仍然是知识蒸馏中具有挑战性的问题。
尽管有大量的知识蒸馏方法和应用,但对知识蒸馏的理解,包括理论解释和实证评估,仍然不足。例如,蒸馏可以被视为一种利用特权信息进行学习的形式。线性教师和学生模型的假设使得能够通过蒸馏研究学生学习特征的理论解释。此外,Cho和Hariharan(2019)对知识蒸馏的功效进行了一些实证评估和分析。然而,深入理解知识蒸馏的可推广性,尤其是如何衡量知识的质量或师生架构的质量,仍然很难实现。
8.2 未来的方向
为了提高知识蒸馏的性能,最重要的因素包括什么样的师生网络架构,从教师网络中学习什么样的知识,以及在哪里蒸馏到学生网络中。
深度神经网络的模型压缩和加速方法通常分为四类,即参数修剪和共享、低秩因子分解、迁移紧致卷积滤波器和知识蒸馏。在现有的知识蒸馏方法中,只有少数相关著作讨论了知识蒸馏与其他压缩方法的结合。例如,量化知识蒸馏可以被视为一种参数修剪方法,它将网络量化集成到师生架构中。因此,为了学习用于在便携式平台上部署的高效和有效的轻量级深度模型,通过知识蒸馏和其他压缩技术的混合压缩方法是必要的,因为大多数压缩技术都需要重新训练/微调过程。此外,如何确定应用不同压缩方法的正确顺序将是未来研究的一个有趣的话题。
除了用于加速深度神经网络的模型压缩外,由于教师-学生体系结构上知识迁移的自然特性,知识蒸馏也可以用于其他问题。最近,知识蒸馏已被应用于数据隐私和安全、深度模型的对抗性攻击、跨模态、多领域、灾难性遗忘、加速深度模型的学习,神经结构搜索的效率、自监督和数据扩充。另一个有趣的例子是,从小型教师网络到大型学生网络的知识迁移可以加速学生的学习。这与朴素知识的蒸馏大不相同。大型模型从未标记数据中学习的特征表示也可以通过蒸馏来监督目标模型。为此,将知识蒸馏扩展到其他目的和应用可能是一个有意义的未来方向。
知识蒸馏的学习与人类的学习是相似的。将知识迁移推广到经典和传统的机器学习方法中是可行的。例如,基于知识蒸馏的思想,传统的两阶段分类适合于单一教师单一学生的问题。此外,知识蒸馏可以灵活地应用于各种优秀的学习方案,如对抗性学习、自动机器学习、标签噪声过滤学习、终身学习和强化学习。因此,将知识蒸馏与其他学习方案相结合将有助于应对未来的实际挑战。