该篇文章的主要内容是整理了面向图像识别的知识蒸馏的相关工作,首先在 response-based、feature-based 和 relation-based 三种知识形式来介绍离线知识蒸馏的相关工作,然后整理了在线知识蒸馏和自知识蒸馏的相关工作,在其中也对自监督学习蒸馏和视觉 Transformer(ViT)蒸馏也进行了介绍。
最后讲解了扩展的蒸馏技术领域,包括多教师知识蒸馏、跨模态知识蒸馏、注意力机制知识蒸馏、无数据知识蒸馏和对抗知识蒸馏。本解读主要讲解核心内容和见解,具体的参考文献请见原著作。
论文地址:
https://link.springer.com/chapter/10.1007/978-3-031-32095-8_1
arXiv地址:
https://arxiv.org/pdf/2306.10687.pdf
01.基于响应、特征、关系的知识蒸馏划分
目前的离线知识蒸馏方法通常涉及知识类型和蒸馏策略。前者侧重于探索学生模仿的各种信息类型。后者旨在帮助学生有效地学习老师。在本节中,我们将研究基于响应、基于特征和基于关系的知识,以及基于预定义信息的常用类型。基于响应的 KD 引导教师的最终输出以指导学生的输出。
直观上,学生可以直接学习到老师产生的预测。除了最终输出外,中间特征还对神经网络的知识提取过程进行编码。基于特征的 KD 可以教学生在整个隐藏层中获得更有意义的语义信息。基于响应和基于特征的 KD 通常考虑从单个数据样本中提取知识。
相反,基于关系的 KD 试图挖掘整个数据集的跨样本关系。在本节中,我们回顾了每种知识类型的一些代表性方法,并总结了它们的差异。示意图概述如下图所示。
▲ 图1 基于响应、特征、关系的教师-学生知识蒸馏整体示意图
1.1 基于响应的知识蒸馏
基于响应的 KD 侧重于从最后一层学习知识作为响应。它旨在使教师和学生之间的最终预测保持一致。基于响应的 KD 的特性是结果驱动学习,使其易于扩展到各种任务。
开创性的 KD 可以追溯到 Hinton 等人工作 [1]。核心思想是通过软化的 softmax(即“软标签”)提取类概率分布。对于分类任务,软概率分布被公式化为:
给定来自教师和学生的类别概率分布 和 ,基于响应的 KD 尝试使用距离函数 对齐二者。
其中 可以是 Kullback-Leibler(KL)散度、均平方误差等。
主要讲解三个方面的工作内容:
1.1.1 解释基于响应的知识蒸馏
基于响应的 KD 的核心思想很容易理解。它引导学生学习教师网络生成的最终结果。基于响应的 KD 的有效性也可以与标签平滑正则化联系起来。
Yuan 等人将基于 KL 散度的 KD 方程求解为标签平滑。Muller 等人观察到标签平滑抑制了 KD 的有效性。他们认为,标签平滑会导致不同类别样本之间相似性的逻辑信息丢失,这对基于响应的 KD 很有价值。
然而,Shen 等人提供了一项实证研究,说明标签平滑通常不会抑制 KD 的有效性。他们发现,在两种情况下,标签平滑可能会产生负面影响:长尾类分布和类数量增加。Mobahi 等人展示了一种理论观点,即两个相同网络架构之间的蒸馏放大了 Hilbert 空间中的正则化。
最新的 DKD 将原始 KD 损失解耦为目标类 KD 和非目标类 KD。通过仅引入两个超参数来灵活平衡两个项,DKD 提高了原始 KD 的有效性。
1.1.2 通过辅助结构减少教师-学生性能差距
由于教师和学生之间的能力差距,KD 可能存在性能差距,导致性能下降问题。为了缓解这个问题,TAKD 引入了一个中等规模的网络作为教师助理,并执行了一个连续的 KD 过程。
沿着这条脉络,HKD 应用了一个辅助教师网络来传输分层信息流。DGKD 提出了一种密集引导模式,并由所有前任教师执行多步 KD。SFTN 首先训练一名教师和学生分支,然后将更容易传授的知识传授给学生。TOFD 和 HSAKD 在教师和学生之间附加了几个辅助分支,以促进知识互动。然而,这些方法为训练图引入了额外的架构,并增加了训练成本。
1.1.3 通过自适应蒸馏减少教师-学生性能差距
一些工作试图研究样本自适应蒸馏以提高性能。WSL 从偏差-方差权衡的角度提出了样本加权软标签。ATKD 使用基于标准偏差的自适应温度来缩小教师和学生之间的锐度差距。MKD 利用元学习来搜索可学习的温度参数。
SCKD 从梯度相似性的角度研究了不匹配问题,使学生自适应地学习其有益的知识。PAD 提出了一种具有数据不确定性的自适应样本加权机制,该机制基于困难实例可能对 KD 难以处理的这一现象。
除了探索依赖于样本的蒸馏外,Song 等人和 Li 等人还提出了一种混合前向传播方案,使学生通过联合训练隐式学习教师的知识。在课程学习的驱使下,RCO 引导学生从头开始模仿老师的训练轨迹,直至收敛。ESKD 提前停止教师训练,以产生更柔和的逻辑分布。
▲ 表1 基于响应的 KD 方法实验结果对比
**总结。**我们在表 1 中对各种基于响应的 KD 方法进行了实验结果对比。大多数方法都应用于卷积神经网络,而最近的 MKD 进一步旨在改进视觉 Transformer。基于响应的 KD 的核心思想是结果驱动学习,并且很容易应用于现有的深度学习任务。
对于目标检测,Chen 等人建议引导学生模仿老师的目标概率和回归边界框。对于语义分割,结果驱动的知识是逐像素的类概率分布。类似地,对于自然语言处理中的 Bert 压缩,DistilBERT 传递掩码词汇的类预测。
尽管基于响应的 KD 已成功应用于许多任务,但性能差距仍然是一个值得探索的问题。当教师和学生之间的性能差距很大时,学生可能无法吸收有意义的知识,这可能会导致不利的监管效果。此外,基于响应的 KD 忽略了神经网络隐藏层中编码的中间信息,导致性能提升有限。
1.2 基于特征的知识蒸馏
正如我们上面讨论的,基于响应的 KD 忽略了中层监督。为了解决这一缺陷,基于特征的 KD 侧重于探索中间特征信息,以提供全面的监督,如特征图及其提取的信息。基于特征的蒸馏损失可以公式化为:
其中 和 表示来自学生和教师的中间特征图, 和 是产生蒸馏信息的转换函数,如注意力机制、激活边界、神经元选择性和概率分布等, 是一个距离函数,用于衡量匹配特征信息的相似性,例如,均方误差损失和 KL 散度损失。
主要讲解三个方面的工作内容:
1.2.1 知识探索:转换中间层特征图得到有意义的知识
开创性的 FitNet 是第一种基于特征的 KD 方法,其核心思想是在教师和学生之间以逐层的方式对齐从隐藏层生成的中层特征图。这项简单直观的工作可能不需要高级知识。
后续的方法试图探索从原始特征图中编码更有意义的信息。AT 将特征图转换为空间注意力图,作为有价值的信息。NST 提取激活热图作为神经元转移的选择性。Srinivas 等人在特征图之间应用了雅可比匹配。
PKT 将特征图表示为概率分布,并由 KL 散度模拟。FSP 引入了 Gramian 矩阵来测量不同层特征图之间的求解过程流。Seung 等人使用奇异值分解来解析特征知识。
FT 引入了自动编码器,以无监督的方式将教师的特征图解析为“因素”,并引入了翻译器,将“因素”转换为易于理解的知识。AB 考虑隐藏特征空间中的激活边界,并迫使学生学习与老师一致的边界。Overhaul 重新思考了蒸馏特征位置,使用新设计的 ReLU 和 L2 距离函数来过滤冗余信息。
最近,TOFD 和 HSAKD 将辅助分类器附加到由额外任务监督的中层特征图上,以产生信息丰富的概率分布。前者利用了原始的监督任务,而后者引入了有意义的自监督增强任务。
MGD 使用自适应通道分配算法执行细粒度特征提取。ICKD 从包含特征空间多样性和同源性的特征图中挖掘通道间相关性。在通道维度之外,TTKD 使用自注意力机制进行空间级特征匹配。总之,以前的方法通常会为 KD 提取更丰富的特征信息,从而获得比经典 FitNet 更好的性能。
1.2.2 知识迁移:好的模仿算法让学生学得更好
除了知识探索,另一个有价值的问题是如何有效地迁移知识。大多数基于特征的 KD 方法使用简单的均方误差损失进行知识对齐。
除此之外,VID 还引用了信息论框架,认为 KD 是教师和学生之间互信息的最大化。Wang 等人将学生视为生成器,并应用了一个额外的鉴别器来区分学生或老师产生的特征,这种对抗过程引导学生学习与教师相似的特征分布。Xu 等人提出对倒数第二层的特征嵌入进行归一化,以抑制噪声的负面影响。
除了研究模仿度量损失外,在教师和学生之间使用共享分类器还可以帮助学生隐式地对齐教师的特征。
1.2.3 视觉 Transformer 方面的蒸馏工作
Vision Transformer(ViT)在图像识别方面表现出了卓越的性能。然而,基于 ViT 的网络需要很高的计算成本。KD 为训练具有理想性能的小型 ViT 提供了出色的解决方案。
在关系层次上,流形蒸馏将逐块关系作为 ViT 蒸馏的知识类型进行探索。在特征级别上,AttnDistill 将注意力图从教师转移到学生。ViTKD 为 ViT 特征蒸馏提供了实用指南。
除了同质 ViT 之间的特征模仿外,一些工作还试图从 CNN 中提取到的归纳偏置蒸馏到 ViT。一些有前景的知识类型仍值得进一步挖掘,如中间特征、注意力关系和蒸馏位置。
▲ 表2 基于特征的 KD 方法实验结果对比
**总结。**我们在表 2 中对各种基于特征的 KD 方法进行了实验结果对比。一般来说,基于特征的 KD 是对基于响应的 KD 的全面补充,它提供了封装学习过程的中间特征。
然而,简单地在教师和学生之间对齐相同的阶段性特征信息可能会导致负面监督,特别是在性能差距或架构差异较大的情况下。一个更有价值的方向可能是基于学生友好的特征 KD,它提供了语义一致的监督。
1.3 基于关系的知识蒸馏
基于响应和基于特征的 KD 通常考虑从单个样本中提取知识。相反,基于关系的 KD 将跨样本或跨层关系视为有意义的知识。
主要讲解两个方面的工作内容:
1.3.1 Relation-based Cross-Sample Knowledge Distillation(跨样本的知识蒸馏)
基于关系的跨样本蒸馏损失公式一般为:
其中 和 分别表示教师和学生的特征集, 和 是第 个和第 个样本的特征嵌入, , 。 和 是 和 的相似度度量函数。 是一个距离函数,用于衡量实例图的相似性,例如,均方误差损失和 Kullback-Leibler 散度损失。
1.3.1.1 利用不同的边权重构建关系图
基于关系的 KD 知识可以看作是一个实例图,其中节点表示样本的特征嵌入。大多数基于关系的 KD 研究各种相似性度量函数来计算边权重。
DarkRank 是第一种基于深度度量学习嵌入的欧几里德距离来建模交叉样本相似性的方法。MHGD 使用多头注意力网络处理基于图的表示。RKD 使用相互关系的距离和角度相似性作为结构化知识。
CCKD 使用基于核的高斯 RBF 捕获实例之间的相关性。SP 在给定一个批数据的情况下构建成对相似性矩阵。IRG 通过顶点和边变换对实例关系图进行建模。REFILLED 引导老师重新加权对于学生困难的三元组样本权重,以进行关系匹配。
所有方法都侧重于在样本级特征嵌入上对关系图进行建模,但在各种边权重生成策略上有所不同。
1.3.1.2 利用有意义的转换构建关系图
使用简单的度量函数直接对边权重进行建模可能无法有意义地捕捉相关性或高阶依赖性。CRD 引入了有监督对比学习,基于 InfoNCE 的误差形式,使得老师和学生的表征对齐。在 CRD 上,CRCD 根据特征及其梯度提出了互补关系对比蒸馏。
为了在原始监督学习的基础上提取更丰富的知识,SSKD 遵循 SimCLR 框架,并利用图像旋转的自监督对比蒸馏。为了利用标签中的类别信息,CSKD 构建了类内和类间的结构化关系。
以前的方法通常关注实例级特征及其关系,但忽略了局部特征和细节。因此,LKD 利用类感知注意力模块来捕获重要区域,然后使用局部补丁对局部关系矩阵进行建模。GLD 构造了一个关系图,其中包含由局部空间池化层提取的局部特征。
1.3.2 跨层的知识蒸馏
除了在数据样本上建立关系外,模型内的跨层交互信息编码也是一种有价值的知识形式。基于关系的跨层蒸馏损失公式为:
其中 和 分别代表从教师和学生不同层中提取的特征集合, 和 是来自第 层和第 层的特征嵌入,。 和 是 和 的层聚合函数。 是距离函数来衡量跨层特征的相似度。
FSP 是捕获 KD 跨层特征图之间关系的开创性方法,它引入了 Gramian 矩阵,将求解过程的流程表示为知识。Passalis 等人指出,具有不同性能的教师和学生网络之间的同一层可能会出现语义抽象差距。
以前的方法通常依赖于手工制作的一对一的层分配策略,然而,这种简单的对齐可能会导致成对师生层之间的语义不匹配问题。许多后续工作考虑在多个特征层上建模有意义的知识。Jang 等人引入了用于加权层级特征匹配的元网络。在自注意力机制的启发下,一些工作利用基于注意力的权重进行自适应层分配。
除了研究层匹配问题外,一些工作还试图聚合所有阶段特征图,以构建更具信息量的特征作为监督信号。ReviewKD 利用教师的多层次特征,根据各种特征融合模块指导学生的每一层。LONDON 总结了多层次特征图,以模拟 Lipschitz 连续性。除了手工策略外,DFA 还应用了搜索方法来自动找到合适的特征聚合。
▲ 表3 基于关系的 KD 方法实验结果对比
**总结。**我们在表 3 中对各种基于关系的 KD 方法进行了实验结果对比。不同于基于特征和基于响应的 KD,基于关系的方法旨在捕捉各种样本或不同层之间的高阶关系。
关系图捕获了整个数据集的结构化依赖关系。跨层特征关系对语义过程的信息进行编码。如何使用更有意义的节点转换和度量函数或聚合适当的层信息来建模更好的关系仍然是需要进一步研究的核心问题。
02.蒸馏机制
蒸馏机制通常分为离线知识蒸馏、在线知识蒸馏和自知识蒸馏,如图 2 所示:
▲ 图2 离线知识蒸馏、在线知识蒸馏和自知识蒸馏机制示意图
2.1 离线知识蒸馏
离线 KD 是所谓的基于教师和学生的学习,之前的研究已经对其进行了广泛的研究。离线 KD 的核心思想是将知识从一个高性能的大型预训练教师网络转移到一个小型快速的学生网络。
在实践中,离线 KD 通常会进行两阶段的训练:1)教师网络在任务上进行预训练,以实现卓越的性能;以及 2)在训练阶段引导学生模仿老师的信息。当离线 KD 使用公开的预训练模型来训练学生网络时,离线 KD 也可以被视为一个单阶段的训练流程。由于教师网络是预先训练和冻结的,我们将基于教师-学生的学习称为离线 KD。
离线知识蒸馏的工作主要在第一章节 “Categories of response-based, feature-based, and relation-based knowledge distillation(基于响应、特征、关系的知识蒸馏划分)” 进行讲解。因此在这里仅展示了不同蒸馏方法对于蒸馏性能和蒸馏时间的权衡,如表 4 所示。我们全面比较了代表性的离线 KD 方法在准确性和蒸馏时间方面的表现。
我们可以观察到,各种 KD 方法具有不同的性质。传统的 KD 蒸馏时间最短,但仅能获得适度的增益。相比之下,HSAKD 实现了最佳的蒸馏性能,甚至与教师的准确率相匹配,但时间比传统 KD 高出 3 倍。DKD 是传统 KD 的改进版本,在精度和蒸馏时间之间达到了理想的平衡。
从模型压缩的角度来看,最佳蒸馏的 ResNet-20 的参数和 FLOP 减少了 3 倍,但与教师 ResNet-56 相比,性能仅下降了 0.1%。在实践中,我们可以根据实际需求和计算资源选择合适的 KD 算法。
▲ 表4 不同离线知识蒸馏方法在 CIFAR-100 数据集上性能和训练时间的权衡
2.2 在线知识蒸馏
▲ 图3 两个学生网络基于响应、特征、关系的在线知识蒸馏整体示意图
在线 KD 旨在从零开始同时训练一组学生网络,并在训练阶段相互传递知识。与离线 KD 不同,在线 KD 是一个端到端的优化过程,不需要事先明确的预训练教师网络。根据知识类型,当前的在线 KD 主要分为基于响应、基于特征和基于关系的方法,如图 3 所示。我们在表 5 中提供了各种在线 KD 方法的实验结果。
▲ 表5 不同在线知识蒸馏方法在 CIFAR-100 上的准确率对比
在线知识蒸馏按照迁移的知识类型分为基于响应、特征和关系的在线知识蒸馏:
2.2.1 基于响应的在线知识蒸馏
在线 KD 可以追溯到深度相互学习(Deep Mutual Learning, DML)。DML 表明,在传统学习方案中,将每个学生的类别后验与其他学生的类别后验对齐比单独训练更好。
Song 等人将这一想法进一步扩展到具有共享浅层和分离的高层分支的分层架构。Anil 等人将相互蒸馏应用于大规模分布式神经网络。DCML 通过在隐藏层中添加精心设计的辅助分类器来增强相互学习。MutualNet 使用不同输入分辨率对应的不同宽度的子网络进行相互学习,以探索多尺度特征。
MMT 和 PCL 为每个对等体引入了一个时间均值教师,为相互学习生成更好的伪标签。除了同伴教学方式,ONE 还组装了集成概率分布,构建了一个虚拟教师角色,以提供软标签。
OKDDip 利用自注意力机制来提高同伴多样性,然后将辅助同伴的集合知识传递给组长。KDCL 研究了从两个数据增强视图中使用各种聚合策略生成软集成目标。一些工作考虑使用特征融合和额外的分类器来输出有意义的标签。
2.2.2 基于特征的在线知识蒸馏
以前的在线 KD 方法通常侧重于学习类概率,主要在各种策略或架构上有所不同,但忽略了在线学习的特征级信息。Walawalkar 等人对模型压缩的中间特征图进行了在线蒸馏。Zhang 等人表明,直接对齐特征图可能会减小群体多样性并损害在线 KD。
许多方法都提出了在线对抗特征提取来相互学习特征分布。对抗性在线 KD 的想法是为每个网络添加一个鉴别器,该鉴别器可以将自身的特征图分类为伪造,或将另一个网络的特征图分类为真实。
2.2.3 基于关系的在线知识蒸馏
相互对比学习(Mutual Contrastive Learning,MCL)将每个网络视为一个单独的视图,并从对比表征学习的角度引入了基于相互关系的蒸馏。
与之前的工作相比,MCL 帮助每个网络学习更好的视觉特征表示。先前在线知识蒸馏方法的一个共同点是从单个原始任务中提取知识。HSSAKD 在特征映射后附加分类器,以学习额外的自监督增强任务,并引导网络相互蒸馏自监督分布。
2.3 自知识蒸馏
Self-KD 旨在从网络中提取知识并自学。与离线和在线 KD 不同,Self-KD 没有额外的教师或同伴网络进行知识交流。因此,现有的 Self-KD 方法通常利用辅助架构,数据增强或序列快照蒸馏来探索外部知识以实现自我提升。
此外,通过手动设计正则化分布来代替教师,Self-KD 也可以与标签平滑联系起来。我们在表 6 中提供了各种 Self-KD 方法的实验结果对比。除了将 Self-KD 应用于传统的监督学习之外,最近的研究还试图借鉴 Self-KD 的思想进行自监督学习。
▲ 表6 不同自知识蒸馏方法在 CIFAR-100 上的准确率对比
2.3.1 基于辅助结构的自知识蒸馏
这种方法的想法是附加辅助架构来捕获额外的知识,以补充主网络。DKS 插入几个辅助分支,并在这些分支和主骨干之间进行成对的知识转移。BYOT 将概率和特征信息从网络的较深部分转移到较浅部分。SAD 使用来自深层的注意力图,以逐层的方式监督浅层的注意力图。
除了点对点传输,MetaDistiller 还通过自上而下的方式融合特征图来构建标签生成器,并使用元学习对其进行优化。FRSKD 以类似 BiFPN 的方式聚合特征图,以构建一个自学网络,提供高质量的特征图和软标签。一个问题是,基于辅助架构的方法高度依赖于人工设计的网络,其可扩展性较差。
2.3.2 基于数据增强的自知识蒸馏
基于数据增强的方法通常会强制从两个不同的增强视图生成类似的预测。沿着这一思路,DDGSD 对同一图像应用了两种不同的增强算子。CS-KD 从同一类别中随机抽取两个不同的实例。MixSKD 将 Mixup 图像视为特征和概率空间中的一个视图,将线性插值图像视为另一个视图。
为了挖掘跨图像知识,BAKE 试图通过加权聚合其他样本的知识,形成一个软目标。一般来说,与基线相比,基于数据增强的 Self-KD 需要多个正向过程,因此提高了训练成本。
2.3.3 基于序列快照的自知识蒸馏
这一思路考虑利用训练轨迹上的网络快照来提供监督信号。BAN 在先前受过训练的网络快照监督下,以连续的方式逐步改进网络。SD 从早期时代获取网络快照,以教导其后期时代。
PS-KD 建议通过总结真实标签和过去的预测来逐步完善软目标。DLB 在上一个和当前的小批量数据之间执行一致性正则化。一般来说,基于快照的 Self-KD 需要保存训练模型的多个副本,因此增加了内存成本。
2.3.4 自监督学习和自知识蒸馏
自监督学习侧重于给定未标注数据学习到好的特征表示。Self-KD 和自监督学习之间有一些有趣的联系。
在自监督的场景中,该框架通常构建两个角色:在线和目标网络。前者是训练网络,后者是平均教师,具有来自在线网络的移动平均权重。目标网络与在线网络具有相同的架构,但权重不同。目标网络通常用于提供监督信号来训练在线网络。MoCo 利用目标网络生成一致的正负对比样本。
一些自监督方法将目标网络视为一个自教师来提供回归目标,如 BYOL、DINO 和 SimSiam。受 BYOT 的启发,SDSSL 引导中间特征嵌入,以对比最终层的特征。
尽管之前的方法在自监督表示学习方面取得了理想的性能,但可能仍存在两个值得探索的方向。首先,目标网络是以移动平均的方式从在线网络中构建的。我们是否有更有意义的方法来构建目标网络?其次,损失通常是为了对齐最终的特征嵌入,未来可以进一步挖掘在线网络和目标网络之间的一些中间特征或对比关系。
2.4 三种知识蒸馏综合比较
▲ 表7 三种知识蒸馏方法在不同方面的比较,其中*代表预训练的教师是现成的
如表 7 所示,本文展示三种知识蒸馏方法在不同方面的比较。离线蒸馏需要一个额外的教师模型来训练学生,而在线蒸馏或自蒸馏通过端到端优化训练一组模型或单个模型。
当公开可用的预训练教师模型不可用时,离线蒸馏需要预先训练一个高性能的教师网络,因此训练代价较高。自蒸馏利用单一模型实现自我提升,通常具有较低的计算复杂度。值得注意的是,离线蒸馏在预训练教师模型为公开模型时也具有较低的训练复杂性,因为训练过程中教师网络是不需要梯度传播训练的。
03.蒸馏算法
3.1 多教师知识蒸馏
在传统的 KD 中,知识从一个高性能的老师转移到一个轻量的学生身上,但在这种情况下,知识的多样性和有效性是有限的。不同的老师可以为学生提供他们独特而有价值的知识。
通过这种方式,学生可以从多个教师网络中学习各种知识表示。遵循传统的 KD,逻辑分布或中层特征形式的知识可以用作监督信号。多教师 KD 的示意图如下图 4 所示。
▲ 图4 多教师知识蒸馏基本思想示意图
3.1.1 从集成的逻辑分布中蒸馏
模型集成的逻辑分布是多教师知识蒸馏的直接方法之一。基于这一理念,引导学生学习教师集成逻辑的软输出。然而,对多教师的预测进行简单平均可能会忽视教师群体多样性。因此,一些工作提出了通过自适应地模仿教师的输出并使用各种聚合权重来学习学生模型。
3.1.2 从集成的特征表达中蒸馏
除了从逻辑分布中提取外,中间层特征的集成可以为学生提供更多的语义信息。然而,从特征表示中提取更具挑战性,因为教师池中的每个成员在特定层中都有不同的特征表示。
为了解决这个问题,Park 等人在特征图级别对多个教师网络应用了非线性变换。Wu 等人提出通过最小化教师和学生的相似性矩阵之间的距离来提取知识。刘等人提出让学生网络学习教师模型的可学习转换矩阵。为了利用逻辑和中间特征,Chen 等人引入了双教师网络,分别提供响应级和特征级知识。
3.1.3 从子网络得到计算高效的蒸馏
使用多教师引入了额外的训练计算成本,因此一些方法从单个教师网络中创建了一些子教师。Nguyen 等人利用随机块和跳过教师网络上的连接来生成多个教师角色。一些方法设计了多头架构,以产生多个教师角色。
3.1.4 多任务多教师蒸馏
在大多数情况下,多教师 KD 是基于同一任务的。知识融合旨在通过从所有接受过不同任务训练的教师那里学习知识,来培养一个多才多艺的学生。
Luoemph 等人旨在学习一个能够从异质教师那里吸收全面知识的多人才学生网络。Ye 等人将目标网络集中用于定制任务,由从不同任务中预先训练的多名教师指导。学生从异质教师那里继承了理想的能力,因此可以同时执行多项任务。Rusu 等人引入了一种多教师策略蒸馏方法,将代理的多种策略转移到单个学生网络。
**总结。**总之,由于不同的教师提供不同的知识,因此可以通过多教师蒸馏来培养多才多艺的学生。然而,仍有几个问题需要解决。一方面,教师数量是训练成本和性能提高之间的权衡问题。另一方面,有效整合多教师的各种知识仍然是一个值得探索的问题。
3.2 跨模态知识蒸馏
在常见的 KD 方法中,教师和学生往往具有相同的模态。然而,另一种模态的训练数据或标签可能是不可用的。在不同模态之间转移知识是一个有价值的实践领域。跨模态 KD 的核心思想是将知识从受过数据模态训练的教师转移到另一种数据模态的学生网络。跨模态 KD 的示意图如图 5 所示。
▲ 图5 跨模态知识蒸馏基本思想示意图
给定一个在具有良好标记样本的一种模态上预先训练的教师模型,Gupta 等人利用无监督配对样本在带注释的 RGB 图像和未带注释的光流图像之间传递信息。
通过标签引导的成对样本范式已被广泛应用于跨模态 KD。Thoker 等人使用配对样本将 RGB 视频中的知识转移到 3D 人体动作识别模型中。Roheda 等人提出了使用 GANs 从可用模态到缺失模态的跨模态蒸馏。Do 等人探索了一种基于 KD 的视觉问答方法,并依靠监督学习使用真实标签进行跨模态迁移。Passalis 等人提出了概率 KD,将知识从文本模态转移到视觉模态。
**总结。**一般来说,KD 在跨模式场景中表现良好。然而,当存在显著的模态缺失时,跨模态 KD 很难对知识交互进行建模。
3.3 基于注意力的知识蒸馏
基于注意力的蒸馏利用注意力信息进行有效的知识转移。目前的工作遵循两条主线:(1)提取从特征图中提炼出的注意力图,以及(2)基于自注意力机制的加权提取,如下图 6 所示。
▲ 图6 基于注意力机制的知识蒸馏基本思想示意图
3.3.1 蒸馏注意力图
注意力图通常反映有价值的语义信息,并抑制不重要的部分。开创性的 AT 通过计算通道维度上特征图的统计数据来构建空间注意力图,并在教师和学生网络之间对注意力图进行对齐。
空间注意力图包含类别感知语义区域,帮助学生捕捉辨别特征。CD 采用压缩和激活模块生成通道注意力图,让学生学习老师的通道注意力权重。CWD 为每个通道提取一个空间注意力图,表示密集预测的语义掩码。
TinyBert 转移 Transformer 层蒸馏的自注意力矩阵。LKD 引入了一个类别感知注意力模块,用于捕获类相关区域以构建局部相关矩阵。
3.3.2 自注意力机制加权蒸馏
自注意力技术是一种捕获特征之间相似关系的机制。一些方法应用基于注意力的权重进行自适应层间语义匹配。
SemCKD 自动为每个学生层分配从合适的教师层聚合的目标,这些目标具有基于注意力的相似性。AFD 提出了一种基于注意力的元网络来模拟教师和学生特征之间的相对相似性。ALP-KD 将教师端的信息与基于注意力的层投影融合,用于 Bert 蒸馏。与特征层分配正交,TTKD 应用自注意力机制进行空间级特征匹配。
**总结。**基于注意力图捕捉显著区域并过滤冗余信息,帮助学生学习最关键的特征。然而,注意力图压缩了特征图的维度,可能会丢失有意义的知识。此外,注意力图有时可能不会聚焦在正确的区域,从而导致负面的监督影响。
3.4 无需数据的知识蒸馏
传统的 KD 方法通常需要大量的训练样本。然而,出于隐私或安全考虑,训练数据集有时可能是不可得到的。现有工作已经提出了一些方法来处理这个问题,主要分为无数据 KD 和数据集 KD。无数据 KD 的示意图如下图 7 所示。
▲ 图7 无需数据的知识蒸馏基本思想示意图
3.4.1 无需数据的蒸馏
训练样本通常是使用生成对抗网络(GAN)合成的。教师网络以生成的样本作为输入来监督学生网络。Lopes 等人使用不同类型的激活记录来重建原始数据。DeepInversion 探索存储在批归一化层中的信息,以生成无数据 KD 的样本。Nayak 等人通过将 softmax 空间建模为教师参数的狄利克雷分布,从而引入了一种样本提取机制。
除了最终输出之外,还可以使用教师特征表示的信息生成目标数据。Paul 等人优化了一个对抗生成器来搜索困难的图像,然后使用这些图像来训练学生。CMI 引入了对比学习,使合成实例与已经合成的实例区分开来。FastDFKD 优化了元合成器,以重用共享的通用功能,实现更快的无数据KD。
3.4.2 数据集知识蒸馏
除了无数据 KD 之外,数据集蒸馏是合成小数据集以表示原始完整数据集而不会降低精度的重要方向。
为了利用全监督设置,Radosavovic 等人通过单个模型从未标记数据的多次转换中组装预测,以产生新的训练注释。DDFlow 提出学习光流估计,并从教师模型中提取预测,以监督学生网络进行光流学习。未标记的数据可能会阻碍图卷积网络(GCN)学习基于图的数据。
一般来说,未标记数据的伪标签可以为训练 GCN 提供额外的监督。RDD 提出了一种可靠的数据驱动的半监督 GCN 训练方法,它可以更好地使用高质量的数据,并通过定义节点和边的可靠性来改进图表示学习。Cazenavette 等人沿着提取的合成数据和真实数据之间的训练轨迹进行了长距离参数匹配。
**总结。**在大多数无数据 KD 方法中,合成数据通常是从预训练的教师网络的特征表示中生成的。尽管当前的无数据 KD 工作在处理数据不可用问题方面表现出了显著的性能,但生成更高质量和多样化的训练样本仍然是一个有待研究的挑战。
3.5 对抗蒸馏
对抗蒸馏是利用生成对抗网络的基本思想来改进 KD,主要分为三条主线:(1)使用 GAN 生成额外的数据样本,(2)对抗机制来辅助 KD 算法,(3)压缩 GAN 以高效生成图像。对抗性 KD 的示意图如下图 8 所示。
▲ 图8 对抗知识蒸馏基本思想示意图
3.5.1 使用对抗生成网络产生额外的数据样本
几乎现有的 KD 算法都是数据驱动的,即依赖于原始或替代数据,这在现实世界中可能是不可用的。生成对抗网络可以应用于学习真实的数据分布并解决这个问题。DFAD 让教师和学生网络共同发挥鉴别器的作用,以减少差异。同时,它添加了一个额外的生成器来产生困难样本,以对抗性地放大它。
一些方法引入了条件 GAN(CGAN)来生成数据。Roheda 等人使用 CGAN 在给定其他可用模态的前提下从缺失模态中蒸馏知识。终身 GAN 将以前网络中学习到的知识转移到新网络中,以持续生成有条件的图像。
3.5.2 对抗机制来辅助知识蒸馏
传统的 KD 通常通过调整知识分布来缩小教师和学生之间的差距。对抗机制可以作为提高模仿难度的辅助方法。一般来说,核心思想是引入一个额外的鉴别器来对教师或学生网络中的特征表示进行分类。
Wang 等人利用鉴别器作为教学助手,使学生与教师学习相似的特征分布,以进行图像分类。Wang 等人采用对抗性 KD 进行单阶段目标检测。Liu 等人将逐像素的类概率以对抗的方式应用于语义分割蒸馏中。除了基于师生的对抗学习外,一些方法还应用了在线对抗 KD 在多个学生网络之间相互提取特征图。
3.5.3 压缩对抗生成网络来进行高效的图像生成
Aguinaldo 等人引导一个较小的“学生” GAN 对齐更大的“教师” GAN。Chen 等人让学生生成器从相应的老师那里学习低阶和高阶知识。
此外,学生鉴别器由教师网络通过 triplet 损失进行监督。Li 等人通过从中间表示中转移知识并通过神经架构搜索探索高效架构,提出了一种用于条件 GAN 的通用压缩框架。Zhang 等人指出,小型 GAN 通常难以生成所需的高频信息。小波 KD 通过离散小波变换将图像分解为不同的频带,然后只传输有价值的高频带。
**总结。**尽管基于对抗的 KD 有助于知识模仿,但在实践中可能很难确保 GAN 网络的收敛性。对于 GAN 压缩,从特征中提取哪些信息适合蒸馏 GAN 仍然是一个值得探索的问题。
总结
本篇综述首先按照基于响应、特征和关系三种层面的知识类型总结了离线知识蒸馏的工作。通过剖析离线知识蒸馏需要预训练教师的问题,引出了在线知识蒸馏和自知识蒸馏。
面向实际场景中,本文又引入了跨模态知识蒸馏和无数据的知识蒸馏。此外,本文展示了一些用于提升知识蒸馏效果的扩展机制,例如多教师知识蒸馏、注意力机制知识蒸馏和对抗知识蒸馏。
本文对以上领域的代表性相关工作进行调研,并总结核心思想与贡献,对未来知识蒸馏的挑战进行展望。相比于先前发布的知识蒸馏综述 [2,3],本文包含了更多发表于 2022 年以后的工作,以及介绍了一些先进的知识蒸馏方向,例如自监督蒸馏和 ViT 蒸馏。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。