原文:https://arxiv.org/pdf/2006.05467v1.pdf
代码:https://github.com/ganguli-lab/Synaptic-Flow
总结
解决的问题
- 现有的gradient-based的剪枝方法在初始化时会遭遇layer-collapse的问题——即导致过早的剪去一整个layer使得网络模型无法训练的现象;
- 彩票假设提出后,对模型到底是否需要pre-trained提出了质疑,很自然有这样一个问题:能不能不训练,甚至不借助于任何数据输入,而直接地detect the wining lottery ticket? 对此目前没有有效的算法;
方法的新颖之处
- 不依赖于训练数据(所以不需要loss,也不需要反向传播)就能够识别wining ticket,效率高。对于别的算法,随着数据集的复杂化,需要1000、2000甚至10000次前馈,而SynFlow只需要100次,与数据集无关;
- 对于确定的网络 f ( x ; θ 0 ) f(x;\theta_{0}) f(x;θ0)和给定压缩率 ρ \rho ρ,只需一个额外超参数,即迭代次数n。
研究范围
在VGG, ResNet等模型,对于CIFAR-10/100和Tiny ImageNet等数据集。
效果
99.9%的最大稀疏率 (which means the accuracy drops exactly to zero).
缺点
只提升了剪枝曲线后半段的能力 (大约在压缩率大于 1 0 3 10^{3} 103时) ,在前半段精度损失还是比较明显。故此算法之在极限情形下有优秀表现,但实际上,像精度损失超过20%的情形,或许不能够得到很好的实际应用。
贡献
- Maximal Critical Compression的提出,分析了以往工作为什么不能够达到极限剪枝率;
- synaptic saliency概念的归纳;
- SynFlow算法的提出。
有意思的引文
本篇的related works部分比较全面,概括得很有条理,建议研究一下。
引文15, 16, 17-新颖的微架构设计
引文25-https://arxiv.org/pdf/2002.04809v1.pdf
引文29, 30, 31-基于更多复杂变量
正文
Layer-collapse: 阻止初始化时就剪枝的关键障碍
几个定义:
- compression ratio ρ = N o r i g i n a l N r e m a i n a f t e r p r u n i n g \rho=\frac{N_{original}}{N_{remain\text{ }after\text{ }pruning}} ρ=Nremain after pruningNoriginal;
- Max compression ρ m a x \rho_{max} ρmax: 刚好不引发layer-collapse的最大压缩率,即每层留一个参数(?一个参数怎么前后连接)
- Critical compression ρ c r \rho_{cr} ρcr: 对于不同算法的压缩率上界,对任意 ρ c r \rho_{cr} ρcr都有 ρ c r ≤ ρ m a x \rho_{cr}\le \rho_{max} ρcr≤ρmax。
文章认为有如下公理成立:
文章比较的对象有random scoring, soring based on weight magnitudes, 以及另外两个state-of-the-art的single-shot剪枝方法——SNIP(连接敏感度)和GraSP(梯度信号保留)。这两者都是基于梯度的、at initialization的剪枝方法。
突触显著性守恒定理
随机剪枝以相同的数额修剪每一层,因此小的层先被剪完。所以此算法偏好最小层。
magnitude-based的方法则相反,以不同的比率修剪每一层。当使用某些初始化方法时,此方法偏好最宽层,权值的大小与层宽度W成反比,因此越大的网络越早被全部剪完。
基于梯度的SNIP和GraSP方法同样是变剪枝比,其这种偏好的根源不太清晰。但是事实上,这两种方法都相当偏好修剪最大层,即带有最多的可训练参数的层。
基于此守恒,我们假设一层之内基于梯度的平均评分与layer size成反比关系。
基于梯度的得分的一般表达式
突触依赖性就是一类能用下式概括的度量值:
S
(
θ
)
=
∂
R
∂
θ
⊙
θ
S(\theta)=\frac{\partial R}{\partial \theta} \odot \theta
S(θ)=∂θ∂R⊙θ
当 R R R取训练损失 L L L的时候,就退化为 − ∂ L ∂ θ ⊙ θ -\frac{\partial L}{\partial \theta} \odot \theta −∂θ∂L⊙θ,这在Skeletonization中经常被用到;
这个度量同时与SNIP使用的 ∣ ∂ L ∂ θ ⊙ θ ∣ |\frac{\partial L}{\partial \theta} \odot \theta| ∣∂θ∂L⊙θ∣,GraSP使用的 − ( H ∂ L ∂ θ ) ⊙ θ -(H\frac{\partial L}{\partial \theta}) \odot \theta −(H∂θ∂L)⊙θ,Taylor-FO(需预训练)中使用的 ( ∂ L ∂ θ ⊙ θ ) 2 (\frac{\partial L}{\partial \theta} \odot \theta)^2 (∂θ∂L⊙θ)2都密切相关。而当 R = < ∂ L ∂ y , y > R=<\frac{\partial L}{\partial y}, y> R=<∂y∂L,y>,度量值就与OBD中使用的 d i a g ( H ) θ ⊙ θ diag(H)\theta \odot \theta diag(H)θ⊙θ高度相关。