Coreset-Based Neural Network Compression简记
文章目录
参考
简记
-
一种新的基于滤波器coreset表示的卷积神经网络(CNN)压缩算法。
-
主题思路是低秩分解
三种方案
- 一共三种k-Means、Structured Sparse、Activation-weighted
k-Means Corests
- 利用k-Means聚类思想,然后这个问题等价于找滤波器矩阵的低秩逼近,典型的就是奇异值分解SVD
- 于是问题就变成了
Structured Sparse Corests
- 想要每一个非0的权重都很重要,那么就需要有稀疏化的措施,作者就是在原来的优化问题上加了L1正则,即
- λ 控 制 稀 疏 力 度 \lambda控制稀疏力度 λ控制稀疏力度
Activation-weighted Corests
-
但是上述方法没有考虑当前filter的重要程度(在某一层layer?),因此作者引入的激活函数出来的feature的F范数作为某个filter的重要程度,即
- 然后 i k ( f ) i_k^{(f)} ik(f)是当前层归一化后的结果
-
然后问题就变成了加权低秩分解的一个优化问题:
压缩流程
- 主要分两步:activation-based pruning + coreset-based compression,作者在fig1中形象地描述了过程
activation-based pruning
- 流程如下
- 1、计算layer的参数大小,并降序排序
- 2、对于每层layer执行:
- a、对每个训练集的输入计算激活函数输出A,存储最大值(对每个filter)
- b、根据上面的A排序
- c、找到最小的 N k ∗ N_k^* Nk∗,使得剪枝后的新能偏差<0.5%,方法是二分查找
coreset-based compression
- 流程如下:
- 1、根据所使用的coreset公式计算完全分解。
- 2、找到最小filters, N ^ k \hat N_k N^k,然后压缩网络,并保持性能偏差在0.5%,方法是二分查找
实验结果
- 实验结果看看就行,基本就是列了AlexNet/VGG剪枝前后的ACC/参数量的变化,来说明该方法的效果。具体的等看了代码再看看