知识蒸馏(Knowledge Distillation)
从大型、深层的教师网络中提炼知识并转移到小型、简单的学生网络中
更深更广→更浅更薄
知识(Knowledge)
-
基于响应的知识(Response-Based Knowledge)
① 简单、有效、仅限于监督学习
② 直接模拟教师网络的输出
③ 未能解决教师模型的中级监督问题
-
基于特征的知识(Feature-Based Knowledge)
①特征图:网络中间层和最后一层的输出
② 利用特征图作为知识监督学生模型的训练
③ 基于特征的知识是对基于响应的知识的良好拓展
-
基于关系的知识(Relation-Based Knowledge)
①关注不同层或不同数据样本之间的关系
②探索不同特征图之间的关系:FSP矩阵
③利用多个教师的知识
蒸馏方案(Distillation Schemes)
-
离线蒸馏
简单、有效
过程分为两个阶段:① 教师模型在蒸馏前线在一组训练样本上进行训练
② 教师以输出或中间特征的形式提取知识,然后在蒸馏过程中用于指导学生模型的训练
教师模型训练时间长,复杂度高。 教师和学生之间的能力差距一直存在
-
在线蒸馏
学生和教师模型同时更新
多个神经网络协作学习:任一网络可以作为学生模型,其余网络作为教师
-
自蒸馏
① 教师和学生使用相同的模型(可以看作在线蒸馏的一个特例)
② 网络较深部分的知识被蒸馏到浅层部分
③ Snaoshot distillation: 将网络较早时期的知识转移到后期时期,以支持同一网络内的监督训练。
-
师生结构(Teacher-Student Architecture)
教师和学生模型设置在蒸馏过程中预先固定不变的尺寸和结构容易造成模型容量差距
学生网络的选择:① 教师网络的简化版本,层数和通道数更少
② 教师网络的量化版本,保留了网络结构
③ 具有高效基本操作的小型网络
④ 具有全局优化网络结构的小型网络
⑤ 与教师相同的网络
大小型神经网络之间的容量差距会降低知识转移的效率:
① 引入教师助理:通过残差学习来缩小差距(使用辅助结构来学习残差)
② 最小化教师与学生模型的结构差异
蒸馏算法(Distillation Algorithms)
-
对抗性蒸馏(Adversarial Distillation)
生成对抗性网络(GAN):① GAN中的鉴别器估计样本来自训练数据分布的概率
② 生成器试图使用生成的数据样本欺骗鉴别器
联合GAN和KD可以生成有价值的数据以提高KD性能并克服无法使用和无法访问数据的限制
a)对抗生成器被训练以生成合成数据,该数据直接用作训练数据或用于扩充训练集
b)使用网络输出或特征来区别学生和教师模型的样本
c) 在线方式进行,教师和学生在每次迭代中联合优化
-
多教师蒸馏(Multi-teacher Distillation)
多个教师可以单独集成用于蒸馏,使用多位教师的平均反应作为监督信号(最简单的方法)
进一步结合中间层的特征:一位教师传递基于响应的知识,一位教师传递基于特征的知识
重生网络:t步的学生被用于t+1步学生的教师
-
跨模式蒸馏(Cross-Modal Distillation)
某些模态的数据或标签在训练或测试期间不可用→在不同模态之间转移知识
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G8Qr7dFy-1631343439047)(F:\Blog\image\跨模式蒸馏.PNG)]
-
基于图的蒸馏(Graph-Based Distillation)
① 以图作为教师知识的载体
② 使用图控制教师知识的消息传递
-
基于注意力的蒸馏(Attention-Based Distillation)
注意力可以很好的反映卷积神经网络的激活,在知识蒸馏中使用一些注意力机制可以提高学生网络的性能
注意力转移:定义神经网络层中特征嵌入的注意力图(即特征嵌入的知识是使用注意力图函数传递的)
-
无数据蒸馏(Data-free Distillation)
由于数据不可用问题(隐私性、安全性、合法性、机密性):数据是新生成或合成生成的
使用教师模型生成的未标记数据的新训练注释来训练学生
合成数据通常由预训练教师模型的特征表示生成
-
量化蒸馏(Quantized Distillation)
网络量化:将高精度网络转化为低精度网络
将知识转移到权重量化的学生网络中:① 高精度教师网络将知识转移到小型低精度网络中
② 在特征图上量化全精度教师网络,再将知识从量化教师网络转移到量化学生网络
-
终生蒸馏(Lifelong Distillation)
终生学习:包括持续学习、元学习,积累以前学到的知识并将学到的知识转移到未来的学习中
知识蒸馏提供了一种有效的方法来保存和转移所学知识,不会造成灾难性的遗忘
-
基于NAS的蒸馏(NAS-Based Distillation)
神经架构搜索(NAS):自动识别深度神经网络模型并自适应地学习合适的深度神经结构
采用NAS来解决教师模型和学生模型之间的能力差距
知识蒸馏被用来提高神经架构搜索的效率
性能比较(Performance Comparsion)
- 知识蒸馏可以在不同的深度模型上实现
- 不同深度模型的模型压缩可以通过知识蒸馏实现
- 通过协作学习的在线知识蒸馏可以显著提高深度模型的性能
- 自知识蒸馏可以很好提高模型的性能
- 离线和在线蒸馏通常分别传输基于特征的知识和基于响应的知识
- 轻量级深度模型(学生)的性能可以通过来自高容量教师模型的知识转移来提高
应用(Applications)
-
视觉识别(Visual Recognition)
-
人脸识别:注重高效部署和识别准确性
提高低分辨率人脸识别准确性→使用高分辨率人脸识别教师和低分辨率人脸识别学生的架构→
将高分辨率人脸识别的教师网络通过稀疏图优化将其信息丰富的面部特征选择性地转移到低分辨率的学生人脸识别网 络中
-
动作识别、物体检测、车道检测、行人检测、图像/视频分割
-
-
自然语言处理(NLP)
- 神经机器翻译(NMT)、文本生成、问答系统、事件检测、文本检索、文本识别
-
语音识别(Speech Recognition)
- 口语识别、音频分类、语音增强、声学事件检测、语音合成
-
其他应用
富的面部特征选择性地转移到低分辨率的学生人脸识别网 络中
- 动作识别、物体检测、车道检测、行人检测、图像/视频分割
-
自然语言处理(NLP)
- 神经机器翻译(NMT)、文本生成、问答系统、事件检测、文本检索、文本识别
-
语音识别(Speech Recognition)
- 口语识别、音频分类、语音增强、声学事件检测、语音合成
-
其他应用
- 推荐系统、解决深度模型的对抗性攻击或扰动