【知识蒸馏】常见的知识蒸馏⽅式(⼆)
1、Distilling the Knowledge in a Neural Network
Hinton的⽂章"Distilling the Knowledge in a Neural Network"⾸次提出了知识蒸馏(暗知识提取)的概念,通过引⼊与教师⽹络(teacher network:复杂、但推理性能优越)相关的软⽬标(soft-target)作为total loss的⼀部分,以诱导学⽣⽹络(student network:精简、低复杂度)的训练,实现知识迁移(knowledge transfer)。
如上图所⽰,教师⽹络(左侧)的预测输出除以温度参数(Temperature)之后、再做softmax变换,可以获得软化的概率分布(软⽬标),数值介于0~1之间,取值分布较为缓和。Temperature数值越⼤,分布越缓和;⽽Temperature数值减⼩,容易放⼤错误分类的概率,引⼊不必要的噪声。针对较困难的分
类或检测任务,Temperature通常取1,确保教师⽹络中正确预测的贡献。硬⽬标则是样本的真实标注,可以⽤one-hot⽮量表⽰。total loss设计为软⽬标与硬⽬标所对应的交叉熵的加权平均(表⽰为KD loss与CE loss),其中软⽬标交叉熵的加权系数越⼤,表明迁移诱导越依赖教师⽹络的贡献,这对训练初期阶段是很有必要的,有助于让学⽣⽹络更轻松的鉴别简单样本,但训练后期需要适当减⼩软⽬标的⽐重,让真实标注帮助鉴别困难样本。另外,教师⽹络的推理性能通常要优于学⽣⽹络,⽽模型容量则⽆具体限制,且教师⽹络推理精度越⾼,越有利于学⽣⽹络的学习。
教师⽹络与学⽣⽹络也可以联合训练,此时教师⽹络的暗知识及学习⽅式都会影响学⽣⽹络的学习,具体如下(式中三项分别为教师⽹络softmax输出的交叉熵loss、学⽣⽹络softmax输出的交叉熵loss、以及教师⽹络数值输出与学⽣⽹络softmax输出的交叉熵loss):日文翻译罗马音
2、Exploring Knowledge Distillation of Deep Neural Networks for Efficient Hardware Solutions
这篇⽂章将total loss重新定义如下:
快乐的英文怎么写total loss的Pytorch代码如下,引⼊了精简⽹络输出与教师⽹络输出的KL散度,并在诱导训练期间,先将teacher network的预测输出缓存到CPU内存中,可以减轻GPU显存的overhead:
def loss_fn_kd(outputs, labels, teacher_outputs, params):
"""
Compute the knowledge-distillation (KD) loss given outputs, labels.
"Hyperparameters": temperature and alpha
NOTE: the KL Divergence for PyTorch comparing the softmaxs of teacher
and student expects the input tensor to be log probabilities! See Issue #2
"""
兴趣爱好英文
alpha = params.alpha
T = perature
KD_loss = nn.KLDivLoss()(F.log_softmax(outputs/T, dim=1),
F.softmax(teacher_outputs/T, dim=1)) * (alpha * T * T) + \
utilities>pastreturn KD_loss
unequivocal3、Enmble of Multiple Teachers
第⼀种算法:多个教师⽹络输出的soft label按加权组合,构成统⼀的soft label,然后指导学⽣⽹络的训练:
tingclass第⼆种算法:由于加权平均⽅式会弱化、平滑多个教师⽹络的预测结果,因此可以随机选择某个教师⽹络的soft label作为guidance:
第三种算法:同样地,为避免加权平均带来的平滑效果,⾸先采⽤教师⽹络输出的soft label重新标注样本、增⼴数据、再⽤于模型训练,该⽅法能够让模型学会从更多视⾓观察同⼀样本数据的不同功能:
Paper地址:
4、Hint-bad Knowledge Transfer(这个不是很懂)
为了能够诱导训练更深、更纤细的学⽣⽹络(deeper and thinner FitNet),需要考虑教师⽹络中间层的Feature Maps(作为Hint),⽤来指导学⽣⽹络中相应的Guided layer。此时需要引⼊L2 loss指导训练过程,该loss计算为教师⽹络Hint layer与学⽣⽹络Guided layer输出Feature Maps之间的差别,若⼆者输出的Feature Maps形状不⼀致,Guided layer需要通过⼀个额外的回归层,具体如下:
具体训练过程分两个阶段完成:第⼀个阶段利⽤Hint-bad loss诱导学⽣⽹络达到⼀个合适的初始化状态(只更新W_Guided与W_r);第⼆个阶段利⽤教师⽹络的soft label指导整个学⽣⽹络的训练(即知识蒸馏),且total loss中soft target相关部分所占⽐重逐渐降低,从⽽让学⽣⽹络能够全⾯辨别简单样本与困难样本(教师⽹络能够有效辨别简单样本,⽽困难样本则需要借助真实标注,即hard target):
5、Attention to Attention Transfer(这个不是很懂)
通过⽹络中间层的attention map,完成teacher network与student network之间的知识迁移。考虑给定
的tensor A,基于activation的attention map可以定义为如下三种之⼀:
7的英文
随着⽹络层次的加深,关键区域的attention-level也随之提⾼。⽂章最后采⽤了第⼆种形式的attention map,取p=2,并且activation-bad attention map的知识迁移效果优于gradient-bad attention map,loss定义及迁移过程如下:
6、Flow of the Solution Procedure
训练的第⼀阶段:最⼩化教师⽹络FSP矩阵与学⽣⽹络FSP矩阵之间的L2 Loss,初始化学⽣⽹络的可训练参数:
训练的第⼆阶段:在⽬标任务的数据集上fine-tune学⽣⽹络。从⽽达到知识迁移、快速收敛、以及迁移学习的⽬的。
Paper地址:
7、Knowledge Distillation with Adversarial Samples Supporting Decision Boundary(这个不是很懂)
黑色孤儿第二季从分类的决策边界⾓度分析,知识迁移过程亦可理解为教师⽹络诱导学⽣⽹络有效鉴别决策边界的过程,鉴别能⼒越强意味着模型的泛化能⼒越好:
⽂章⾸先利⽤对抗攻击策略(adversarial attacking)将基准类样本(ba class sample)转为⽬标类样本、且位于决策边界附近(BSS: boundary supporting sample),进⽽利⽤对抗⽣成的样本诱导学
kline⽣⽹络的训练,可有效提升学⽣⽹络对决策边界的鉴别能⼒。⽂章采⽤迭代⽅式⽣成对抗样本,需要沿loss function(基准类得分与⽬标类得分之差)的梯度负⽅向调整样本,直到满⾜停⽌条件为⽌:
loss function:
沿loss function的梯度负⽅向调整样本:
停⽌条件(只要满⾜三者之⼀):
结合对抗⽣成的样本,利⽤教师⽹络训练学⽣⽹络所需的total loss包含CE loss、KD loss以及boundary supporting loss(BS loss):
8、Label Refinery:Improving ImageNet Classification through Label Progression
这篇⽂章通过迭代式的诱导训练,主要解决训练期间样本的crop与label不⼀致的问题,以增强label的质量,从⽽进⼀步增强模型的泛化能⼒:
诱导过程中,total loss表⽰为本次迭代(t>1)⽹络的预测输出(概率分布)与上⼀次迭代输出(Label Refinery:类似于教师⽹络的⾓⾊)的KL散度: