剪枝
分类
迭代
通常,每次迭代的剪枝率大概在20%左右,总共需要进行20~30轮剪枝迭代(最终仅仅保留1%未被剪掉的网络权重)。
文章
过程
单次剪枝会极大地受到噪声的影响,而迭代式剪枝方法则会好很多,因为它在每次迭代之后只会删除掉少量的权重,然后周而复始地进行其他轮的评估和删除,这就能够在一定程度上减少噪声对于整个剪枝过程的影响。
文章
在模型收敛后,我们重复该剪枝过程(屏蔽额外的s的权值),并使用新一轮剪枝后发现的掩模设置初始化权值。
文章
如果IMP算法成功执行,它就能找到「中奖网络」,即经过迭代式的剪枝过程后留下的子网络。
文章
1、调优:在剪枝过程结束之后,算法对剩余的权重使用较小的学习率继续进行学习,从而得到最终的权重取值。
文章
org/abs/2003.02389)中,他们比较了三种不同的剪枝过程:
文章
算法
一般来说,优秀的网络剪枝算法必须解决以下4个基本问题:
文章
其中常见并且有效的经验是,网络中权重取值较大的连接或者说神经元对网络的表达能力和函数拟合能力更加重要,剪枝算法应该尽量避免剪掉这些权值。
文章
除了从结构化角度来对剪枝算法进行分类,我们还能够从局部和全局剪枝的角度进行另一种分类。
文章
但是和其它剪枝算法相比,IMP的剪枝算法流程有何异同呢?
文章
模型
在准确率、压缩比和搜索成本效率方面,权值回放LTH网络是目前性能最优的对初始网络进行剪枝的模型。
文章
权值
非结构化修剪不考虑剪枝的权值之间的任何关系。
文章
3、学习率回放:该方法并未回放权值或将学习率调整策略设置为初始状态,学习率回放使用的是最终未剪枝的权值,并且只将学习率调成策略调整到第k轮迭代的状态。
文章
方法
其中,在训练收敛后进行剪枝的方法通常会降低模型的泛化能力,所以很多工作需要重新对模型再次进行微调。
文章
其中,局部剪枝方法会强制从网络的每一层剪掉一定比例的权值参数。
文章
尽管非结构化的剪枝方法往往能在保持较高性能的同时剪掉数量更多的权值,但是这种方法并不一定会真正加速在标准硬件上的计算过程。
文章
我们知道,网络剪枝方法可以分为单次剪枝(One-Shot)和迭代式(Iterative)剪枝。
文章
然而,从头开始训练一个稀疏的网络几乎是不可能的,所以「训练前」剪枝的方法很少被使用。
文章
请注意,我们也可能通过简单的单次剪枝方法实现这一目的,但是当执行额外的计算时,我们可以获得更好的结果(详见原始论文的图4)。
文章
除了训练后的剪枝,训练中的剪枝方法也很常用,这种方法通常是跟正则化、Dropout、强化分布式表征等思想相关联。
文章
掩模
这种对于权值处理的矛盾也催生出了相关的技术,这些技术使用基于梯度的方法或者更高阶的曲率信息来学习剪枝掩模。
文章
这种思想比较朴素,实现也很简单,只要将权值W和一个二元剪枝掩模M按对应元素相乘即可。
文章
剪枝
他们认为在网络剪枝之后,生成的子网络会被随机初始化。
文章
图2:深度学习网络剪枝要考虑的因素:剪掉哪些部分、如何剪枝、何时剪枝、剪枝频率如何?
文章
如果我们回顾一下前面提到的网络剪枝中普遍存在的问题,那么IMP需要满足以下条件:
文章
之前
但是,如果我们能在生成裁剪网络之后,将子网络的权重重新初始化为它们的原始权重(在剪枝后已经被掩模屏蔽了),那么在经历较少轮的迭代之后,网络就有可能恢复到它在剪枝之前的性能,甚至可能达到更好的性能。
文章
效果
其中,在训练收敛后进行剪枝的方法通常会降低模型的泛化能力,所以很多工作需要重新对模型再次进行微调。
文章