知识迁移
整理知识迁移(knowledge transfer
)相关的文章、论文和实现。
概念
- 知识蒸馏(
knowledge distillation
):将教师网络输出作为软标签参与到学生网络的训练,以期学生网络能够学习得到更好的性能; - 软目标(
soft targets
):使用大模型输出的类概率进行训练,称为软目标。如果有多个大模型,那么使用它们输出的类概率的算术平均或者几何平均; - 硬目标(
hard targets
):使用类标签生成的类概率进行训练(one-hot
向量,正确标签设为1
,其余设为0
),成为硬目标; logits
:模型的输出结果,即softmax
层输入向量;- 一阶段蒸馏训练:结合蒸馏损失和正常的任务损失一起进行训练;
- 二阶段蒸馏训练:首先利用教师网络特征对学生网络进行知识迁移训练以获取良好初始化空间,然后学生网络进行正常训练或者结合教师网络进行知识蒸馏训练。
文章
- 讨论
- 博客
- 自定义:相关论文、实现算法解析
- 知识迁移/knowledge transfer
论文
2021
- Distilling Knowledge via Knowledge Review
- 设计灵感来自于人类学习曲线,幼年期的学生只能理解一小部分知识,在成长的过程中,越来越多过去的知识可能会逐渐被理解和保存为经验。不同于之前使用同一阶段特征进行蒸馏训练,提出跨级连接训练的方式,利用教师网络的低级特征来训练学生网络更深级别的特征。整体蒸馏算法设计类比于
Overhaul
,划分为教师网络特征变换、学生网络特征变换、蒸馏位置以及距离函数设计- 针对教师网络特征变换,保留原始大小,不执行任何变换
- 针对学生网络特征变换,设计了残差学习框架,保证其转换到不同级别教师网络特征大小;同时设计了基于融合的注意力(
attentation based fusion (ABF)
)模块,以实现学生网络不同层特征的融合 - 针对特征蒸馏位置,将其放置在
ReLU
函数之前,保留教师网络所有的负值特征 - 针对距离函数,设计了层次上下文损失(
hierarchical context loss (HCL)
)函数,对教师-学生特征执行金字塔池化操作,分别计算L2
距离后进行求和得到最终损失
ABF
以及HCL
的使用暗含了分离-融合-选择
的设计思想
2019
- A Comprehensive Overhaul of Feature Distillation
- 将蒸馏算法设计为教师网络特征变换、学生网络特征变换、蒸馏位置以及距离函数设计
- 针对教师网络特征变换,设计了新的转换函数
margin ReLU
,不对正值特征(论文认为是有益的)进行转换,同时对负值特征进行抑制 - 针对学生网络特征变换,采用了之前论文实现的一种方法,使用卷积层对学生特征进行转换,扩大其特征图大小以匹配教师特征
- 针对特征蒸馏位置,将其放置在
ReLU
函数之前,保留教师网络所有的负值特征 - 针对距离函数,设计了
partial L2
,抑制了学生网络对于教师网络负值特征的学习
- 针对教师网络特征变换,设计了新的转换函数
- 另外发现了一个训练
trick
,就是在学生网络训练过程中,设置教师网络的BN
层为训练模式能够进一步提升性能
2017
- A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning
- 来自于现实生活中教师给学生讲课的情景,利用教师网络两层之间的特征关系(使用
Gramian
矩阵对不同层提取的特征进行内积计算)对学生网络进行预训练,得到一个很好的初始化参数,然后学生网络按照正常方式进行训练能够更快速的收敛以及得到更高的性能。本文也验证了教师网络先在更大数据集上进行训练,然后在小数据集上对学生网络进行蒸馏训练的有效性
2016
- Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer
- 利用教师网络中间层输出的空间注意力图(基于激活或者基于梯度)对学生网络进行预训练,然后使用这个初始化参数进行知识蒸馏训练
2014
- FitNets: Hints for Thin Deep Nets
- 利用教师网络中间层特征(
hints
)进行蒸馏训练。首先利用教师网络中间层特征预训练学生网络前半部分模型,然后使用第一阶段学生网络训练得到的前半部分参数值作为初始化,对整个学生网络进行蒸馏训练。KD
和HT
惟一差别在于其拥有不同的初始化参数空间,实验结果表明HT
可以引导学生网络在参数空间中找到一个更好的初始位置 - Distilling the Knowledge in a Neural Network
- 首次提出知识蒸馏的概念。设置高蒸馏温度平滑对大模型输出概率,然后结合大模型输出概率(
soft targets
)以及小模型类标签(hard targets
)进行小模型训练
实现
- 实现
- dvlab-research/ReviewKD
2021
年论文Distilling Knowledge via Knowledge Review
的官方实现- clovaai/overhaul-distillation
2019
年论文A Comprehensive Overhaul of Feature Distillation
的官方实现- szagoruyko/attention-transfer
2017
年论文Paying More Attention to Attention
的官方实现- adri-romsor/FitNets
2014
年论文FitNets: Hints for Thin Deep Nets
的官方实现
- 自定义
- ZJCV/KnowledgeReview
- 复现了论文
Distilling Knowledge via Knowledge Review
- ZJCV/overhaul
- 复现了论文
A Comprehensive Overhaul of Feature Distillation