Caffe深度学习进阶之Cifar-10分类任务(下)

Caffe深度学习进阶之Cifar-10分类任务(上)

模型压缩

接上一章,在实际工程中,我们往往希望在保证一定性能的基础上,尽量的降低运算量和参数量,从而最大可能的利用计算资源。当我们拿到一个性能比较优越的模型,却又苦于它巨大的参数运算量时,我们往往会采取一些模型压缩的手段,这是因为,当模型很大时,它一定是会有很多信息是冗余的,比如说某些参数在你这个任务中所起到的作用很小,而这种参数又很多时,就可以通过将它剔除以达到模型压缩的效果。

常见的模型压缩方法有:模型裁剪(prune)、权值量化(Quantization)、稀疏化(sparsity)、特殊编码(coding)等等。有不少文章对这些方法进行了研究,比较有名的有,HanSong在2016年ICLR的best paper:Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding、以及他们团队今年的Exploring the Regularity of Sparse Structure in Convolutional Neural Networks,还有关于模型裁剪的PRUNING FILTERS FOR EFFICIENT CONVNETS、Structural Compression of Convolutional Neural Networks Based on Greedy Filter Pruning等等。

这里大家可以根据自己的需求和判断选择具体的方法,以上任何方法都是值得尝试的,而且主要是让大家有个基本的概念,就是在工程项目中,一定是以资源利用最大化为主的。在这里我们尝试了PRUNING FILTERS FOR EFFICIENT CONVNETS 的方法对训练好的4倍宽度的Wide ResNet进行了裁剪,大致的裁剪过程如下:
Caffe深度学习进阶之Cifar-10分类任务(下)_第1张图片
Caffe深度学习进阶之Cifar-10分类任务(下)_第2张图片
裁剪过程中有很多细节在这里就不多说了,裁剪过后模型的运算量和参数量相比之前减少了很多,而且在re-train之后,模型的性能也并没有相比之前损失太多,准确率依然在96%以上。

教师-学生机制

本来整个过程在上一部分就差不多可以结束了,但是在这里我还是想多提一点,也就是教师-学生的训练机制。所谓教师-学生机制就是,你训练好了一个性能很好、很strong、同时参数运算量都很大的模型,我们可以让它作为一个老师,来指导一个weak的小模型进行训练,因此很形象的成为教师-学生机制,这就很像在学校里,老师在课堂上对学生进行指导,不一定把所有知识都交给你,但是可以把和你的任务(也就是考试)最相关的知识交给你,这样训练得到的一个学生网络可以在该任务上达到和教师网络非常近似的效果,同时本身学生网络参数运算量比较小,那么也就达到了一个节省计算资源同时提升模型性能的效果。这也是近年来非常火的一个研究方向。

在这里向大家推荐一篇非常好的论文:Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer,它也是利用了教师-学生的机制,利用Attention Transfer的方式,来指导学生网络的训练,这篇论文的作者也是Wide ResNet的作者,他在文章中提出了两种attention,一种是activation-based的attention,一种是gradient-based的attention,作者任务这两种attention可以作为一种监督信号,从一个很strong的网络中提取出的attention可以监督一个很weak的网络进行训练,这称之为attention transfer,如下图。
Caffe深度学习进阶之Cifar-10分类任务(下)_第3张图片作者在Wide ResNet上进行了实验,使用一个更宽、更深的网络来指导一个更窄、更浅的网络进行训练,最终这个更窄、更浅的网络获得了比单独训练更好的效果。这个思路是非常值得大家去学习和尝试的,之后我也会给出这篇论文的笔记和大家一起交流。

总结

关于Cifar-10的分类任务到这里可以告一段落了。如果你是一个刚开始、并有很浓厚兴趣的人,我建议你进行这样的尝试,不一定要按照我所提供的的思路来,因为我也只是一个刚开始接触深度学习的小白,很多东西都理解不到位。如果你能完成整个流程的实验,可能会花上你好几个月的时间,但是在这个过程中你能够收获到:资料查找、论文阅读、模型筛选、框架理解以及常用的实验方式等种种技能,可以把这些技能归为三点:文献、实践和思维,我相信这对你今后的深度学习之路是非常有帮助的,各位加油!

你可能感兴趣的:(deeplearning,caffe,The,Path,to,Deep,Learning)