美文网首页
Network Compression

Network Compression

作者: 没日没夜醉心科研的九天 | 来源:发表于2020-11-17 09:37 被阅读0次

背景

        类似于智能手表等移动设备,资源、空间有限,大而深的网络显然不能直接应用,因此需要Network Compression。

OUTLINE

        Network Pruning

        Knowledge Distillation

        Parameter Quantization

        Architecture Design

        Dynamic Computation

Network Pruning 

        神经网络很多都是over-parameters,很多neuron没有起作用(输出为0)、很多weight接近0,对输出结果影响不大,因此可以将神经网络简化(prune)。

Pruning 的步骤

     Pruning的步骤

        将不太重要的结点(neuron)删掉,会导致准确度有所下降,然后再用训练集进行fine-tuning(微调),帮助神经网络恢复准确度。

     为什么不直接用小的神经网络呢?

        大型的神经网络比小型的神经网络更容易optimize(梯度下降过程更容易调整参数从而找到全局最优解)。

      相关理论

          1.Lottery Tickets Hypothesis

        神经网络剪枝技术可以将受过训练的网络的参数计数减少90%以上,在不影响准确性的情况下,降低存储要求并提高计算性能。然而,目前的经验是通过剪枝产生的稀疏架构很难从头训练,也很难提高训练性能。

        作者发现标准的剪枝技术自然地揭示了子网络,其初始化使它们能够有效地进行训练。基于这些结果,作者提出了彩票假设:任何密集、随机初始化的包含子网络(中奖彩票)的前馈网络 ,当隔离训练时,可以在相似的迭代次数内达到与原始网络相当的测试精度。并提出了一种算法来识别中奖彩票和一系列支持彩票假设的实验。结果中奖彩票的size仅为MNIST和CIFAR10几种全连接和卷积式前馈架构的10-20%,同时比原始网络学得更快,并达到更高的测试精度。

“彩票假设”阅读笔记:https://zhuanlan.zhihu.com/p/65161889

论文链接:https://arxiv.org/pdf/1803.03635.pdf

        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

        这两篇论文与前后研究有所矛盾。

      实际问题

实际问题1

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

实际问题2

        但是对neuron进行prune,直接将某个neuron拿掉,前后的weight直接去掉,network还是规则的,比较容易加速。

Knowledge Distillation

        Knowledge distillation是先训练一个较大的网络(Teacher Net),然后再用这个较大的网络去训练一个较小的网络(Student Net)。

Knowledge Distillation 1

      Why?

        1.Student Net可以从Teacher Net处学习到更多的知识。比如上图,若用数字“1”去训练网络,那么最后网络只知道这是数字“1”。但是用Teacher Net的结果去训练,Student Net则不仅知道是数字“1”,还知道数字“7”、“9”和“1”很接近,这样即使没有见过“7”、“9”,也能识别出来;

        2.可以以较小的网络架构学习到复杂的关系。如下图所示,若Teacher Net是多层网络ensemble的,Student Net可以凭借着简单的网络结构来学习到复杂的关系。

Knowledge Distillation 2

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

Knowledge Distillation 3

Parameter Quantization

Architecture Design

low rank approximation

        在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

standard CNN

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

      Depthwise Separable Convolution

         1. Depthwise Convolution

Depthwise Convolution

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

        2.Pointwise Convolution

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.参数从哪里减少?

再分析1

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

        2.定量分析减少的参数

再分析2

        kernel size即filter的size。

Dynamic Computation

     背景

        动态分配计算资源。

背景

     解决方案

        train多个classifiers。除了最终的classifier,还可以在hidden layer中间加一个classifier,这样当资源不充足时,神经网络可以不需要运算到最后一步即可得出结果。

        classifer的位置对于中间classifier及最终的classifier的准确度的影响如下图所示。实际效果还是会有一些消极的影响。

solution

相关文章

网友评论

      本文标题:Network Compression

      本文链接:https://www.haomeiwen.com/subject/uwmabktx.html