背景
类似于智能手表等移动设备,资源、空间有限,大而深的网络显然不能直接应用,因此需要Network Compression。
OUTLINE
Network Pruning
Knowledge Distillation
Parameter Quantization
Architecture Design
Dynamic Computation
Network Pruning
神经网络很多都是over-parameters,很多neuron没有起作用(输出为0)、很多weight接近0,对输出结果影响不大,因此可以将神经网络简化(prune)。

Pruning的步骤
将不太重要的结点(neuron)删掉,会导致准确度有所下降,然后再用训练集进行fine-tuning(微调),帮助神经网络恢复准确度。
为什么不直接用小的神经网络呢?
大型的神经网络比小型的神经网络更容易optimize(梯度下降过程更容易调整参数从而找到全局最优解)。
相关理论
1.Lottery Tickets Hypothesis
神经网络剪枝技术可以将受过训练的网络的参数计数减少90%以上,在不影响准确性的情况下,降低存储要求并提高计算性能。然而,目前的经验是通过剪枝产生的稀疏架构很难从头训练,也很难提高训练性能。
作者发现标准的剪枝技术自然地揭示了子网络,其初始化使它们能够有效地进行训练。基于这些结果,作者提出了彩票假设:任何密集、随机初始化的包含子网络(中奖彩票)的前馈网络 ,当隔离训练时,可以在相似的迭代次数内达到与原始网络相当的测试精度。并提出了一种算法来识别中奖彩票和一系列支持彩票假设的实验。结果中奖彩票的size仅为MNIST和CIFAR10几种全连接和卷积式前馈架构的10-20%,同时比原始网络学得更快,并达到更高的测试精度。
“彩票假设”阅读笔记:https://zhuanlan.zhihu.com/p/65161889
2.Rethinking the value of network pruning
论文的中心思想其实就一句话:在通过Prune算法得到了压缩模型后,使用来自大网络的权重进行fine-tune,还不如直接随机初始化训练压缩模型。但需要注意的是,随机初始化训练压缩模型,需要比训练大模型使用更多的epochs,才能获得更好的效果。
阅读笔记:https://blog.csdn.net/qq_19784349/article/details/107202447论文链接:https://arxiv.org/pdf/1810.05270.pdf
这两篇论文与前后研究有所矛盾。
实际问题

对weight进行prune后,网络结构变得不太规则,因此会比较难加速。

但是对neuron进行prune,直接将某个neuron拿掉,前后的weight直接去掉,network还是规则的,比较容易加速。
Knowledge Distillation
Knowledge distillation是先训练一个较大的网络(Teacher Net),然后再用这个较大的网络去训练一个较小的网络(Student Net)。

Why?
1.Student Net可以从Teacher Net处学习到更多的知识。比如上图,若用数字“1”去训练网络,那么最后网络只知道这是数字“1”。但是用Teacher Net的结果去训练,Student Net则不仅知道是数字“1”,还知道数字“7”、“9”和“1”很接近,这样即使没有见过“7”、“9”,也能识别出来;
2.可以以较小的网络架构学习到复杂的关系。如下图所示,若Teacher Net是多层网络ensemble的,Student Net可以凭借着简单的网络结构来学习到复杂的关系。

3.通过控制蒸馏温度T,Student Net学习的效果与gound truth更加接近,如下图所示。

Parameter Quantization



Architecture Design

在hidden layer中,从N到M层的(fully-connected)参数可以表示为W。Low rank approximation的方法就是在M和N层之间引入一个线性的hidden layer K,当K的值不算太大时,参数就会由原来的M*N显著下降到K*(M+N)。但是这样也有一定的不足,就是rank会变小,而且M*K和K*N不完全能够实现M*N的所有功能。
回顾CNN

要点:input的channel=每个filter的channel,每个filter与input做内积运算,output的channel=filter的个数。
Depthwise Separable Convolution
1. Depthwise Convolution

input的数量决定filter的数量(均为1个channel),然后分别用一个filter对input的对应的channel做内积,得到中间结果(中间结果的channel=input的channel)。
2.Pointwise Convolution

对于产生的中间结果,再分别4个1*1的filter,按照standard convolution运算后就得到完全依赖于standard convolution的结果。但是与standard相比,其参数由72(2*3*3*4)显著降低为26(3*3*2+2*1*1*4)。
再分析depthwise
1.参数从哪里减少?

上面是standard convolution,下面是depthwise。可以发现,depthwise相当于实现了参数的共享,以黑框部分为例,仅计算一次,但其结果后来反复被使用,depthwise节省的就是重复计算的参数。
2.定量分析减少的参数

kernel size即filter的size。
Dynamic Computation
背景
动态分配计算资源。

解决方案
train多个classifiers。除了最终的classifier,还可以在hidden layer中间加一个classifier,这样当资源不充足时,神经网络可以不需要运算到最后一步即可得出结果。
classifer的位置对于中间classifier及最终的classifier的准确度的影响如下图所示。实际效果还是会有一些消极的影响。

网友评论