知识蒸馏简介

知识蒸馏

——黄震华, 杨顺志, 林威,等. 知识蒸馏研究综述[J]. 计算机学报, 2022, 45(3):30.

概念

知识蒸馏是一种教师-学生(Teacher-Student)训练结构,通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师的知识. 它可以以轻微的性能损失为代价将复杂教师模型的知识迁移到简单的学生模型中. 在后续的研究中,学术界和工业界扩展了知识蒸馏的应用范畴,提出了利用知识蒸馏来实现模型性能的增强. 基于此根据应用场景划分出基于知识蒸馏的模型压缩模型增强这两个技术方向。模型压缩是教师网络在相同的带标签的数据集上指导学生网络的训练来获得简单而高效的网络模型;模型增强则强调利用其它资源(如无标签或跨模态的数据)或知识蒸馏的优化策略(如相互学习和自学习)来提高一个复杂学生模型的性能。如右图中,一个无标签的样本同时作为教师和学生网络的输入,性能强大的教师网络通常能预测出该样本的标签,然后利用该标签去指导复杂的学生网络训练。

知识类型

原始知识蒸馏(Vanilla Knowledge Distillation)[2]仅仅是从教师模型输出的软目标中学习出轻量级的学生模型. 然而,当教师模型变得更深时,仅仅学习软目标是不够的. 因此,我们不仅需要获取教师模型输出的知识,还需要学习隐含在教师模型中的其它知识,可以使用的知识形式有输出特征知识、中间特征知识、关系特征知识和结构特征知识. 知识蒸馏的 4 种知识形式的关系如图 5 所示. 从学生解题的角度,这 4种知识形式可以形象比喻为:输出特征知识提供了解题的答案,中间特征知识提供了解题的过程,关系特征知识提供了解题的方法,结构特征知识则提供了完整的知识体系.

知识蒸馏方法

从知识利用的方式,归纳和分析知识蒸馏的主要方法,包括知识合并、多教师学习、教师助理、跨模态蒸馏、相互蒸馏、终身蒸馏以及自蒸馏.

知识合并

知识合并(Knowledge Amalgamation,KA)是将多个教师或多个任务的知识迁移到单个学生模型中,从而使其可以同时处理多个任务. 知识合并的重点是学生应该如何将多个教师的知识用于更新单个学生模型参数,并且训练结束的学生模型能处理多个教师模型原先的任务.

多教师学习

知识合并和多教师学习(Learning from Multiple Teachers)都属于“多教师-单学生”的网络训练结构. 它们的相同点是,知识合并和多教师学习都是学习多个教师模型的知识,但是它们的目标却是不一样的. 知识合并是要促使学生模型能同时处理多个教师模型原先的任务,而多教师学习是提高学生模型在单个任务上的性能.

教师助理

教师和学生模型由于容量差异大导致它们存在着“代沟”. “代沟”既可以通过传递教师的特征知识去缓解,也可以使用教师助理(Teacher Assistant)网络去协助学生模型学习.

跨模态蒸馏

在许多实际应用中,数据通常以多种模态存在,一些不同模态的数据均是描述同一个事物或事件,我们可以利用同步的模态信息实现跨模态蒸馏(Cross Modal Distillation)。其中有代表性的是Albanie等人[60]提出的的跨模态情感识别方法。人在说话时脸部的情感和语音情感是一致的,利用这种同步对齐的模态信息将无标签的视频作为输入数据进行训练,视频中的图片进入预训练的人脸教师模型中产生软目标来指导学生的语音模型训练.

相互蒸馏(深度互学习)

相互蒸馏(Mutual Distillation)是让一组未经训练的学生模型同时开始学习,并共同解决任务. 它是一种在线的知识蒸馏,即教师和学生模型是同时训练并更新的. 相互蒸馏的思想由 Zhang 等人[81]于 2017 年提出,其意义在于没有强大教师的情况下,学生模型可以通过相互学习的集成预测来提高性能.相互蒸馏避免了对强大教师模型的依赖,同时学生模型能通过相互学习受益. 通过相互蒸馏,各种模型的原始组合能够演变为具有更好性能的新组合。

终身蒸馏

深度学习网络在学习新任务时,对旧任务的性能就会急剧下降,这个现象被称为灾难性遗忘[85]. 这就需要使用终身学习来减轻这种影响,终身学习也称为持续学习或增量学习. 目前,有些工作使用知识蒸馏方法来实现终身学习,称之为终身蒸馏(Lifelong Distillation). 终身蒸馏就是通过知识蒸馏来保持旧任务和适应新任务的性能,其重点是训练新数据时如何保持旧任务的性能来减轻灾难性遗忘. 知识蒸馏能够较好地解决这一问题,即能最大程度地减少新旧网络对旧类响应之间的差异[85].

自蒸馏

自蒸馏(Self-Distillation)是单个网络被同时用作教师和学生模型,让单个网络模型在自我学习的过程中通过知识蒸馏去提升性能。自蒸馏主要分为两类,第一类是使用不同样本信息进行相互蒸馏. 其它样本的软标签可以避免网络过度自信的预测,甚至能通过最小化不同样本间的预测分布来减少类内距离[90]. 另外一些工作使用增强样本的信息,如利用数据在不同失真状态下的特征一致性来促进类内鲁棒性学习[91]. 另一类是单个网络的网络层间进行自蒸馏. 最通常的做法是使用深层网络的特征去指导浅层网络的学习[92],其中深层网络的特征包括了网络输出的软目标. 在序列特征的任务中,则是将先前帧中的知识传递给后续帧进行学习[93]. 单个网络的各个网络块学习也可以是双向的,每一个块间可以进行协作学习,并在整个训练过程中互相指导学习.

知识蒸馏与其它技术的融合

生成对抗网络

知识蒸馏和 GAN 的结合就是要在知识蒸馏的学习中引入对抗性学习策略. GAN 是通过对抗性学习来生成新图像,即学习生成无法被判别器网络区分的图像. 它的主要结构包括一个生成器和一个判别器,生成器用来生成尽可能接近真实数据的样本来使判别器无法辨别. 在知识蒸馏中,GAN 判别器的主要任务是区分不同网络的特征映射分布或数据分布,而生成器的主要任务是生成给定实例的相关特征映射分布或数据分布. 生成器一般是学生模型[94]或师生模型共同担任[95]. 具体来说,基于 GAN 的知识蒸馏使用判别器来实现教师和学生模型的知识趋于一致,从而使判别器无法辨别知识是来自教师还是学生模型.

神经架构搜索

NAS 在给定的搜索空间下,使用某种策略搜索出最优网络结构. 与普通的 NAS 相比,基于知识蒸馏的 NAS 产生的软目标包含着更多的信息. 通过利用软目标的附加信息,能够加快 NAS 搜索网络结构的速度. 知识蒸馏产生的附加信息也能指导 NAS 搜索到最佳的学生模型框架,即提高学生模型的性能. 网络结构是一种很重要的知识形式.

强化学习

强化学习(Reinforcement Learning)的目的是使智能体根据环境状态、行动和奖励,学习出最佳策略. 强化学习的环境在已设置完毕的情况下,使用知识蒸馏传递的知识能产生性能更好的学生智能体. 基于强化学习的知识蒸馏主要有两种目的,第一种是用来加强深度学习网络模型的策略,其主要思想是通过知识蒸馏结合一个或多个教师的策略. 教师和学生模型都需要在环境的约束下,最大程度地获得学生模型的回报. 从而,学生模型能从多个教师智能体中获得更高性能的策略[103],不同策略的学生模型也能在相互蒸馏中继续强化策略[104]. 第二种目的是用来获取更轻量级的网络模型. 强化学习和知识蒸馏的结合能将强化学习网络模型中的策略知识迁移到轻量级的单个网络中[105],或利用教师的策略知识来逐步减少学生模型中的冗余[106].

图卷积

图卷积(Graph Convolutional Network,GCN)是以一组节点及节点间的关系为特征的卷积网络,由于其具有强大的建模能力而受到广泛的应用. 图卷积的网络模型具有拓扑结构,知识蒸馏可以将图卷积教师模型的拓扑结构知识传递到学生模型中[107]. 同时,图卷积也能促进知识迁移. 知识蒸馏主要利用了图卷积强大的建模能力,将图卷积捕捉到教师模型某些领域的知识迁移到学生模型中,如空间的几何形状[108],目标在空间和时间上的相互作用和多教师间的互补性知识 。

自动编码器

自动编码器(Autoencoder, AE)是一种无监督的神经网络模型. 由于它在压缩比和迁移学习的性能较好,已被广泛应用在降维和生成模型的训练. 自动编码器通过特征的重构,从数据样本中自动学习隐含的特征,它的这一特性可协助知识蒸馏提高学生网络的性能. 同样,知识蒸馏作为一种辅助性的技术,能帮助自动编码器学习到更具有鲁棒性的特征表示.

集成学习

集成学习(Ensemble Learning)的核心思想是“三个臭皮匠,顶一个诸葛亮”. 它使用多个网络对同一个任务进行处理,其性能通常会比单个网络好. 集成学习和知识蒸馏相融合的一个重要应用方向是:使一个简单模型的性能能够和多个集成的网络相媲美;此外,知识蒸馏也能用于增强具有多个学生网络组成的集成模型. 它主要是使多个学生网络通过同伴教学的方式,从头开始进行相互指导学习,最后融合成推理性能更强的集成网络.

联邦学习

知识蒸馏可用于减少分布式的联邦学习训练时所占用的带宽,它在联邦学习的各个阶段,通过减少部分参数或者样本的传输的方式实现成本压缩. 一些工作通过只传输模型的预测信息而不是整个模型参数,各个参与者利用知识蒸馏,学习服务器聚合全局模型的预测信息来提高性能. 知识蒸馏和联邦学习通过只传输各个局部模型和全局模型的预测值,可以减少网络带宽、允许模型异构和保护数据的隐私.另有工作关注于利用知识蒸馏高效地融合各个参与者的异构局部模型知识. 例如,Shen 等人[128]使用相互蒸馏,在联邦学习本地更新的过程中训练不同架构的模型. Lin 等人[129]利用未标记的数据或伪样本聚合所有异构参与者的模型知识。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值