type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
其实网上已经有关于此的解读了,大致都说到了。我是先囫囵了一遍,再走马观花看了下解读,我觉得还是写点什么吧,毕竟我不一定懂了精髓。
Motivation
现有的Knowledge Distillation(下文简称KD)工作倾向于将teacher模型压缩成浅or宽的student模型。未充分利用深度的优势(作者倾向于thiner and deeper)。
至于为什么要deeper呢?
- 首先,作者根据已有的工作阐述了top-performing systems通常wide and deep,且参数量大,也是缺点(推理耗时)。
- 其次,depth的representation learning的基本要素,其鼓励feature的重用并使得高层特征具有更abstract and invariant的表示。
Related Work
针对deep architectures的训练,现有工作可分为三个方向:
- 预训练策略。使得深度模型的初始参数就潜在的好。
- 对中间层特征提供监督信息来帮助网络学习。
- 使用curriculum learning(CL)策略,从简单知识到较难知识的持续学习。
Core Idea
- 作者也针对depth这个点,在Hinton的KD[1]工作上扩展,提出用teacher和student模型的(多层)中间特征(作者称为hints)来进行feature mimicking,而不单纯是logit mimicking。
- 另外作者也引入了CL策略,简单而言就是:训练初期,teacher模型的guide权重较大(手把手指导),到后期,teacher模型的guide权重持续衰减(直到放养)。
Method
- 首先回归Hinton的KD工作[1]:
其中分别是teacher与student的output logits。是温度系数,若,则teacher的logits被soften,否则sharpen。代表交叉熵损失,表示teacher的guide权重。
尽管Hinton的KD方法确实有效果,但对deep architectures而言,是难以优化的。
- 作者的做法(在Hinton工作基础上)添加Hints guiding:
其中是nested functions,具体指卷积层(作者认为使用线性层会带来更大参数量),其参数为。指regressor function,其参数为。
- 网络训练流程:
Experiments
作者说其固定了参数量(fixed computational budget),通道数会随网络深度的增加而递减。更多分析见原文。
Personal Reflection
- 作者总结别人KD工作中网络普遍结构wide and shallow,因此探究网络的depth,结合已有工作,提出了中间特征蒸馏,很具有启发性。因此也引来了许多基于intermediate feature的KD工作。
- curriculum learning strategy似乎在KD中比较常见了,不知道是不是因为这篇工作的原因。
Reference of this note: