知识蒸馏 论文笔记(一)Search for Better Students to Learn Distilled Knowledge:搜索更优秀的学生

文章题目:Search for Better Students to Learn Distilled Knowledge
链接:link https://arxiv.org/abs/2001.11612

论文阅读笔记,帮助记忆的同时,方便和大家讨论。因能力有限,可能有些地方理解的不到位,如有谬误,请及时指正。

论文内容

尽管近年来深度学习取得了显著的成功,但是DNN庞大的参数量限制了其在端侧的使用。因为关于网络压缩的需求应运而生,降低参数的方法有很多,例如参数量化、低秩优化、模型剪枝和知识蒸馏。其中知识蒸馏格外引人注目,与传统的人为设计学生网络结构不同,本文搜索最优的学生结构。利用L1正则,从老师的拓扑结构中选取子结构,训练过程中不断的降低师生输出之间的KL散度。
 由于子网络的组合数太多,如果直接用人力或者随机搜索,很难取到最优解。因为本文搜索的策略是基于梯度搜索,搜索空间为老师网络结构本身,每个channel都是一个节点。该技术途径有点像模型剪枝,但其实是知识蒸馏与模型剪枝的结合体。
 在老师结构的每个channel中设立一个个门来表示channel的重要性。其中channel是点,weight是边,定义一个高效简单的蒸馏loss来选取学生。在老师结构中用具有L1正则的门优化,来获取稀疏结构。其中看不懂的是,作者提到将loss中KL散度换成交叉熵就是剪枝了?难道是因为老师结构的信息熵在波动???
 
知识蒸馏 论文笔记(一)Search for Better Students to Learn Distilled Knowledge:搜索更优秀的学生 
 在训练的过程中,删掉系数为0的门结构,同时加了early stop防止过拟合。由于L1正则的门优化不可微,故作者采用了加速近端梯度下降算法来指导训练。
 知识蒸馏 论文笔记(一)Search for Better Students to Learn Distilled Knowledge:搜索更优秀的学生
  通常训练loss的时候,往往希望loss越小越好,为了防止无限接近0,作者对KL散度加了个超参,作为保护。
  知识蒸馏 论文笔记(一)Search for Better Students to Learn Distilled Knowledge:搜索更优秀的学生 
 本文中以Densenet作为教师网络,搜索出的学生在Cifar10和Cifar100数据集中,无论从网络参数还是Flops维度来看,都表现不错。
 知识蒸馏 论文笔记(一)Search for Better Students to Learn Distilled Knowledge:搜索更优秀的学生
 从结果可以看出,搜出的学生网络确实学到了教师的结构知识。而如何编码更多不同的教师结构,将是后续比较有趣的工作。