Be Your Own Teacher 论文阅读

Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self Distillation论文阅读

 这是一篇ICCV2019的论文,提升模型精度一直是DL界在追求的目标。一般情况下,在模型结构上面的改进可以归纳为三个方面:depthwidthcardinality。但这样一味地将模型结构复杂化,也会让计算成本呈指数级上升。本论文则提出了一种叫做self distillation训练方式,在没有增加任何推理计算成本的情况下,显著提升模型的精度。.

Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self Distillation

1. Introdution

 传统的方法要么关注于提升精度,要么关注于减少计算成本。例如,一般通过将模型结构复杂化去提升精度,通过知识蒸馏去压缩模型从而减少计算成本。但是传统的方法仍有它的不足之处,前者提升一点精度的代价可能就是计算成本会指数级地增加,例如:ResNet100和ResNet150;后者也面临着精度下降、Teacher模型选择较为困难和过多超参数需要调整的问题。

 有了以上的motivations,这篇论文就提出了self distillation这种训练方式。总体而言,作者的contributions如下:

  • 提出了一种one-step的自我知识蒸馏的框架,不仅能够显著增加精度,还不会增加任何推理时的计算成本

  • 作者在五种卷积网络架构和两种数据集上跑了实验,验证了self distillation这种方法的泛化能力。

2. Related work

 这篇论文引的一些Related work比较有意思,所以在这里记录一下。主要分为以下三类:

  • Knowledge Distillation:知识蒸馏就不解释了,可以看看Hinton的Distilling the Knowledge in a Neural Network以及Romero的FitNets(第一次提出了hint learning,本文也借鉴到了这个思想)

  • Adaptive Computation:一些researchers会选择性地去掉模型中的一些计算过程从而达到节省计算资源的目的。可去掉的过程主要是以下三类:layers, channels and images

  • Deep Supervision:深度监督这个和本论文的self distillation最为相似,主要的不同就在于self distillation浅层的classifiers是通过distillation来学习的,而Deep Supervision则是通过label来学习

3. Self Distillation


 如上图所示,整体来看整个训练过程的思想就是最深层layer去蒸馏和监督浅层的各个Blocks。黑色虚线下方的Bottlenecks、FC Layers、Softmaxs这些都是训练时为了方便蒸馏和监督时加入的模块,在inference的时候是不需要这些的,因此不会增加任何推理计算成本。

 整个模型的监督和蒸馏的loss分为三大部分:

Loss source 1: Cross entropy loss from labels(绿色线),公式如下:

l 1 = ( 1 − α ) ∗ C r o s s E n t r o p y ( q i , y ) (1) l_1 = (1 - \alpha) * CrossEntropy(q^i, y) \tag{1} l1=(1α)CrossEntropy(qi,y)(1)
 其中, q i q^i qi就是第i个softmax层分类器的输出(包括最深一层softxmax)。

Loss source 2: KL divergence loss from distillation(蓝色线),公式如下:

l 2 = α ∗ K L ( q i , q C ) (2) l_2 = \alpha * KL(q^i, q^C) \tag{2} l2=αKL(qi,qC)(2)

 其中, q i q^i qi就是第i个softmax层分类器的输出, q C q^C qC是最深层softmax层分类器的输出。

Loss source 3: L2 loss from hints(from features)(灰色线),这一部分是用来监督bottlenecks的,公式如下:

l 3 = λ ∗ ∣ ∣ F i − F C ∣ ∣ 2 2 (3) l_3 = \lambda * || F_i - F_C ||_2^2 \tag{3} l3=λFiFC22(3)

 其中, F i F_i Fi就是第i个bottleneck的feature输出, F C F_C FC就是最深bottleneck的feature输出。

 综上,总体的loss公式如下:

l o s s = ∑ i C l o s s i = ∑ i C ( l 1 + l 2 + l 3 ) loss = \sum_i^Closs_i = \sum_i^C(l_1 + l_2 + l_3) loss=iClossi=iC(l1+l2+l3)

 当i=C,即最后一层时, α , λ \alpha, \lambda α,λ为0。

4. Marks

 上面已经将self distillation的原理全部讲完了,但是博主觉得这篇论文中有关Flat Minimum和Sharp Minimum的实验与SSE/SSB的讨论十分有意思,这里mark一下,说不定以后可以用上。

PS:SSE: Sum of squares due to error; SSB: Sum of squares between groups.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值