论文:https://arxiv.org/abs/1707.06168
源码:https://github.com/yihui-he/channel-pruning
本篇论文来自ICCV2017年的论文,是旷世的工作。因为之复现AMC的论文发现源码中使用了权重重构 (weight reconstruction)的方法,于是乎查了出处发现来源于这篇论文。本文的思想算是channel prune早期的idea,作者试图从channels中找到最具代表性的weight,然后使用 Lasso 回归来选择保留权重,然后重构剩下的权重使其能尽可能的还原原始的输出。
简介
CNN模型加速的方法目前可以分为三种方式
1、optimized implementation:FFT 计算层面优化,针对GPU进行一些矩阵计算的优化
2、quantization:模型量化,将float类型使用整型integer表示,例如哈夫曼编码、二值化网络…
3、structured simplification:结构简化,本文就是基于这种方式,(张量分解,稀疏连接,裁剪通道的粗粒度剪枝)
裁剪通道的方式存在一种问题,当我们对当前层裁剪之后改变了通道数量,因为要保证通道对齐,所以就会导致下一层的通道被强制裁剪,因此作者考虑使用reconstruction的方式重构权重。
相关工作
该章节再次介绍了这三类的CNN加速的一些代表性算法:optimized implementation,quantization ,structured simplification 在此处不进行赘述。
方法
剪枝方法分两步走
one step :使用Lasso 回归裁剪多余的通道
具体做法,当裁剪一个 c 个通道的权重时,待裁剪权重W的shape为 ,从feature map中采样 尺寸的 X, 的 Y。其中 c’ (),定义列向量 为mask层(决定保留哪些channel)。因此为了最小化裁剪前后的误差,可将问题建模如下
事实上这个问题属于NP-hard问题,为了便于求解论文中给等式加入了l1正则项
并且提出了两步走求解的方法
首先固定再求解,固定了W之后这个问题可以用Lasso回归解决
其中
经过上一步求解后,此时可以固定求解W,此时问题就变成了简单地最小二乘法可以解决的了
实验结果
作者对VGG Resnet Xception 分别在 ImageNet ,Cifar10 , 和 VOC2007数据集上进行了实验
分别于 first k 和 max response 对比有着更优秀的效果
first k 就是 ranking 截取前k个
max response 就是所谓的绝对值求和比大小排序
论文中使用这种裁剪方式在不同的模型和不同的任务上进行了大量的对比试验,详情可以看论文。
结论
综上所述,论文提出了一种用于减少深度学习网络的推理时间通道修剪方法。提升网络处理效率,同时保持准确性。在ImageNet、CIFAR-10和PASCAL VOC上,VGG网和类resnet网都具有令人信服的速度和准确性。
这种权重重构的方法的优势在于使用了数学工具进行了建模优化,相较于其他直接裁剪而影响下层通道的方法具备优势,重构后的权重让输出更接近原始featuremap。