1、韩松的deep_compression:稀疏化、kmeans聚类、哈夫曼压缩编码三个角度压缩模型
2、Pruning Filters for efficient converts
使用l1-norm来作为通道权重的重要性进行剪枝,提出了通道敏感度这一思想,边剪边训练最终达到最佳值
3、Network training:a data driven neuron pruning approach torwards efficient deep archtectures
使用一种新的评价参数判断是否需要被裁剪,称之为AP0Z,剪完微调再继续剪
4、An Entroy-based pruningmethodb for dnn compression
基于熵值裁剪,将feature_map通过gap变成c个(filters)向量,n张图片则由n*c的矩阵,对于每一个filter,将其分为m个bin,统计每个bin的概率,计算熵值,利用熵值来判断filters重要性
5、networks sliming-learning efficient convolutional networks through network sliming
此方法应用很广,因此此处重点介绍,并且给出我的理解。
首先,如何理解l1正则化得到稀疏解这个问题,假定只有一个参数w,损失函数为L(w),分别加上l1和l2正则化项后有:
假定L(w)在0处的导数为d0,即上右图,则可以推导使用l1正则和l2正则时的导数,如下所示,分别为l2和l1:
由上图所示,引入l2后,loss在0处的导数依旧是d0,而引入l1正则后,loss在0处的导数有一个突变,即d0-r和d0+r,如果d0+r和d0-r异号,则在0处会有一个极小值点,因此,优化时,可能优化到该极小值点上。
而各个bn剪枝的源码中,对bn本身的梯度就是grad+s*sign(weight.data),其实就是符合上述公式,其中r值即为设定的正则化超参数,符合定义,直指本质。
https://blog.csdn.net/qq_26598445/article/details/82844393
6、data-driven sparse structer selectin for deep neural networks
针对特定的神经元、block等进行剪枝,天生适合目前流行的block堆叠式网络,为每一个神经元或者block增加一个缩放因子,利用随机加速近端梯度APG来优化和稀疏化这些缩放因子。当缩放因子为0时,则可以移除这些block,大幅度缩减网络结构
此处重点是如何利用sgd推导出APG,