知识蒸馏方法的演进历史综述

作者:Nishant Nikhil
编译:ronghuaiyang
导读
带你回顾知识蒸馏的6篇文章 , 了解知识蒸馏的演进历史 。
历史2012年 , AlexNet在ImageNet数据上的表现超过了所有现有模型 。 神经网络即将被广泛采用 。 到2015年 , 许多SOTA都被打破了 。 业界的趋势是在你能找到的任何场景上都使用神经网络 。 VGG Net的成功进一步肯定了采用可以使用更深层次模型或模型集成来提高性能 。
(模型集合只是一个花哨的术语 。 它意味着对多个模型的输出进行平均 。 比如 , 如果有三个模型 , 两个模型预测的是“A” , 而一个模型预测的是“B” , 那么就把最终的预测作为“A”(两票对一票)) 。
但是这些更深层次的模型和模型的集合过于昂贵 , 无法在推理过程中运行 。 (3个模型的集成使用的计算量是单个模型的3倍) 。
思想Geoffrey Hinton, Oriol Vinyals和Jeff Dean想出了一个策略 , 在这些预先训练的集成模型的指导下训练浅层模型 。 他们称其为知识蒸馏 , 因为你将知识从一个预先训练好的模型中提取到一个新的模型中 。 这就像是老师在指导学生 , 所以也被称为师生学习: 。
知识蒸馏方法的演进历史综述文章插图
在知识蒸馏中 , 他们使用预训练模型的输出概率作为新的浅层模型的标签 。 通过这篇文章 , 你可以了解到这项技术的演进 。
Fitnets2015年出现了FitNets: hint for Thin Deep Nets(发布于ICLR'15)除了KD的损失 , FitNets还增加了一个附加项 。 它们从两个网络的中点获取表示 , 并在这些点的特征表示之间增加均方损失 。
经过训练的网络提供了一种新的学习-中间-表示让新的网络去模仿 。 这些表示有助于学生有效地学习 , 被称为hints 。
知识蒸馏方法的演进历史综述文章插图
FitNet能够压缩模型 , 同时保持几乎相同的性能
回过头看看 , 使用单点给出hints的选择不是最优的 。 随后的许多论文都试图改进这些hints 。
Paying more attention to attentionPaying more attention to attention: Improving the performance of convolutional neural networks via Attention Transfer发布于ICLR 2017 。
知识蒸馏方法的演进历史综述文章插图
【知识蒸馏方法的演进历史综述】它们的动机与FitNets类似 , 但它们不是使用网络中某个点的表示 , 而是使用注意力图作为hints 。 (老师和学生的注意力图) 。 它们还使用网络中的多个点来提供hints , 而不是FitNets中的单点hints 。
A Gift from Knowledge Distillation同年 , A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning发布于CVPR 2017 。
这和FitNets和注意力转移的论文也很类似 。 但是 , 与表示和注意力图不同的是 , 它们使用Gram矩阵给出了hints 。
他们在论文中对此进行了类比:
“如果是人类的话 , 老师解释一个问题的解决过程 , 学生学习解决问题的过程 。 学生DNN不一定要学习具体问题输入时的中间输出 , 但可以学习遇到具体类型的问题时的求解方法 。 通过这种方式 , 我们相信演示问题的解决过程比讲授中间结果提供了更好的泛化 。 ”
知识蒸馏方法的演进历史综述文章插图
为了度量这个“解决流程” , 他们在两个层的特征图之间使用了Gram矩阵 。 因此 , 它没有使用FitNets中的中间特征表示作为hints , 而是使用特征表示之间的Gram矩阵作为hints 。
Paraphrasing Complex Network然后到了2018年 , Paraphrasing Complex Network: Network Compression via Factor Transfer发布于NeurIPS 2018 。


推荐阅读