当前位置:网站首页>深度学习模型压缩与加速技术(一):参数剪枝
深度学习模型压缩与加速技术(一):参数剪枝
2022-04-23 06:11:00 【小风_】
深度学习模型的压缩和加速是指利用神经网络参数的冗余性和网络结构的冗余性精简模型,在不影响任务完成度的情况下,得到参数量更少、结构更精简的模型。被压缩后的模型计算资源需求和内存需求更小,相比原始模型能够满足更加广泛的应用需求。在深度学习技术日益火爆的背景下,对深度学习模型强烈的应用需求使得人们对内存占用少、计算资源要求低、同时依旧保证相当高的正确率的“小模型”格外关注。利用神经网络的冗余性进行深度学习的模型压缩和加速引起了学术界和工业界的广泛兴趣,各种工作也层出不穷。
本文参考2021发表在软件学报上的《深度学习模型压缩与加速综述》进行了总结和学习。
相关链接:
深度学习模型压缩与加速技术(二):参数量化
深度学习模型压缩与加速技术(三):低秩分解
深度学习模型压缩与加速技术(四):参数共享
深度学习模型压缩与加速技术(五):紧凑网络
深度学习模型压缩与加速技术(六):知识蒸馏
深度学习模型压缩与加速技术(七):混合方式
总结
| 模型压缩与加速技术 | 描述 |
|---|---|
| 参数剪枝(A) | 设计关于参数重要性的评价准则,基于该准则判断网络参数的重要程度,删除冗余参数 |
| 参数量化(A) | 将网络参数从 32 位全精度浮点数量化到更低位数 |
| 低秩分解(A) | 将高维参数向量降维分解为稀疏的低维向量 |
| 参数共享(A) | 利用结构化矩阵或聚类方法映射网络内部参数 |
| 紧凑网络(B) | 从卷积核、特殊层和网络结构3个级别设计新型轻量网络 |
| 知识蒸馏(B) | 将较大的教师模型的信息提炼到较小的学生模型 |
| 混合方式(A+B) | 前几种方法的结合 |
A:压缩参数 B:压缩结构
参数剪枝
定义
参数剪枝是指在预训练好的大型模型的基础上,设计对网络参数的评价准则,以此为根据删除“冗余”参数。
分类
-
非结构化剪枝
非结构化剪枝的粒度比较细,可以无限制地去掉网络中期望比例的任何“冗余”参数,但这样会带来裁剪后网络结构不规整、难以有效加速的问题(对神经元之间的连接重要性设计评价准则,删除冗余连接,可达到模型压缩的目的)。
-
结构化剪枝
结构化剪枝的粒度比较粗,剪枝的最小单位是 filter 内参数的组合,通过对 filter 或者 feature map 设置评价因子,甚至可以删除整个 filter 或者某几个 channel,使网络“变窄”,从而可以直接在现有软/硬件上获得有效加速,但可能会带来预测精度(accuracy)的下降,需要通过对模型微调(fine-tuning)以恢复性能。
非结构化剪枝
- LeCun 在 20 世纪 80 年代末提出的 ==OBD(optimal brain damage)算法[19]==使用 loss 对参数求二阶导数,以判断参数的重要程度。
- 在此基础上,Hassibi 等人不再限制于 OBD 算法[19]的对角假设,提出了 OBS(optimal brain surgeon)算法[20],除了将次重要权重值置 0 以外,还重新计算其他权重值以补偿激活值,压缩效果更好。
- 与 OBS 算 法类似,Srinivas 等人[21]提出了删除全连接层稠密的连接,不依赖训练数据,极大地降低了计算复杂度。
- 最近, Dong 等人[22]提出了逐层 OBS 算法,每一层都基于逐层 loss 函数对相应参数的二阶导数独立剪枝,修剪后,经过轻量再训练以恢复性能。
- Han 等人[23]提出,根据神经元连接权值的范数值大小,删除范数值小于指定阈值的连接,可重新训练恢复性能。
- 为了避免错误删除重要连接,Guo 等人[24]提出了 ==DNS(dynamic network surgery)==方法,恢复被误删的重要连接。
- Lin 等人[25]利用生物学上的神经突触概念,定义突触强度为 BatchNormalization(BN)层放缩因子 γ \gamma γ和 filter 的 Frobinus 范数的乘积,用突触强度来表示神经元之间连接的重要性。
- 不同于其他方法在预训练模型上做剪枝,Lee 等人提出的 SNIP(single-shot network pruning)方法[26]在模型初始化阶段,通过对训练集多次采样判断连接的重要性,生成剪枝模板再进行训练,无需迭代进行剪枝-微调的过程。
- 除了对神经元之间的连接进行评估以外,也可直接对神经元权重进行评估,相比原始权重,3个 filter 各自进行权重置零操作,置零的神经元可能各不相同。行列式点过程(determinantal point process,简称 DPP)[27]常用来解决机器学习中的子集选择问题
- Mariet 等人[28]将 DPP 应用于神经元的选择,再通过重新加权将删除神经元的信息直接融合到剩余神经元中,这种方法不需要再微调模型。
- 受Kingma 等人提出的变分 dropout 技术[29]的启发,Molchanov 等人[30]将其用于模型压缩,同时对卷积层和全连接层进行稀疏化。另外,正则化项作为机器学习中 loss 函数的惩罚项常用于对某些参数进行限制,所以关于权重参数的正则化项也可以用于惩罚次重要参数的存在,达到模型压缩的目的。
- 由于参数的 L0 范数不可微分,很难与loss 共同优化,Louizos 等人[31]对权重设置非负随机门来决定哪些权重设置为 0,转化为可微问题,门上参数可以与原始网络参数共同优化。
- Tartaglione 等人[32]量化权重参数对于输出的敏感度,将其作为正则化项,逐渐降低敏感度较低的参数值。
- 延迟、能耗等硬件约束条件也可以作为模型压缩的惩罚项,Chen 等人[13]引入硬件约束(例如延迟),使任务目标(如分类精度)最大化,基于权重大小删除范数值较低的权重。
- Yang 等人[14]利用加权稀疏投影和输入遮蔽来提供可量化的能耗,将能耗预算作为网络训练的优化约束条件,并且由于手工设置的压缩阈值对网络的自适应性不好,使用能恢复误删重要连接的动态剪枝法可获得稀疏网络。
- Carreira-Perpinán 等人[33]提出交替使用“学习”和“压缩”步骤,探索使 loss 最小化的权重子集的方法。
- Liu 等人[34]证明卷积可以通过 DCT 域乘法来实现,然后对 filter 的 DCT 系数进行动态剪枝。
结构化剪枝
1.Group级别剪枝
- group 级别剪枝是指对每一层的 filter 设置相同的稀疏模式,变成结构相同的稀疏矩阵,
- Wen 等人[35]利用 group Lasso 回归进行正则化规约,探索 filter、channel等不同层次的结构稀疏性。
- Alvarez 等人[36]提出不需要预训练模型,加入组稀疏正则化项,而是在网络训练的同时自动选择各层神经元数目。
- Figurnov 等人[37]提出 Perforatedcnns,使用不同策略遮蔽激活值,被遮蔽的值用邻近值表示。
- Lebedev 等人[38]利用文献[19]中提出的 OBD 算法,将卷积操作视作矩阵乘法计算,以 group 方式稀疏化卷积核,变为稀疏矩阵乘法,提高运算速度。
- Zhou 等人[39]提出引入稀疏约束,减少最后一个全连接层的参数数量。
2.filter级别剪枝
对filter 的评价准则可分为以下 4 种:
-
基于 filter 范数大小
- Li 等人[40]提出计算 filter 的 L1 范数,过滤掉较小 L1 范数的 filter 对应的 feature map,剪枝后再训练。
- Yang等人[15]利用 Chen 等人的工作[41]提出的模型能耗工具Eyeriss 计算每一层能耗,对能耗大的层优先剪枝;同时,为了避免不正确的剪枝,保留剪枝后精确度下降最大的权重。
- Yang 等人在其另一项工作[42]中提出的 Netadapt 同样也是将硬件度量指标(延迟和能耗等)作为剪枝评价准则,但与文献[15]不同的是:使用经验度量来评估,不需要对平台有详细的了解。算法在移动平台上自动迭代对预训练网络进行剪枝,直到满足资源预算
- He 等人[43]提出设置剪枝概率删去 L2 范数最小的几个卷积核,即将该 filter 置 0。其特殊之处在于:每次训练完一个 epoch 进行剪枝,但在上一个 epoch 中被剪枝的 filter 在当前 epoch 训练时仍然参与迭代。
-
自定义 filter 评分因子
- Hu 等人[17]提出了 Network trimming 方法,他们认为激活值为 0 的神经元是冗余的,所以统计每一个 filter中激活值为 0 的数量,将其作为判断一个 filter 是否重要的标准。
- Liu 等人[44]根据 ==BN 层放缩因子 γ \gamma γ==来判断 channel的重要性。
- Huang 等人的工作[45]可以看作是文献[44]的泛化,引入了额外的放缩因子对 channel 加以评价。
- Ye 等 人[46]在文献[45]的基础上进行优化,提出了基于ISTA 和重标技术的梯度学习算法。
- Dai 等人[47]提出了基于变分信息瓶颈剪枝方法,在每一层只提取与任务相关的信息,将冗余神经元的激活值推向 0。
- He 等人[48]利用==强化学习(reinforcement learning)==提供压缩策略,相比于手动启发式方法,效果更好。
-
最小化重建误差
设神经网络中某一卷积层权重为 W,通道数为 C,输入为 X,输出为 Y,忽略偏置项 B,则有
Y = ∑ c = 1 C ∑ k 1 = 1 K 1 ∑ k 2 = 1 K 2 W c , k 1 , k 2 × C c , k 1 , k 2 Y=\sum_{c=1}^{C} \sum_{k_{1}=1}^{K 1} \sum_{k_{2}=1}^{K_{2}} W_{c, k_{1}, k_{2}} \times C_{c, k_{1}, k_{2}} Y=c=1∑Ck1=1∑K1k2=1∑K2Wc,k1,k2×Cc,k1,k2
令
X ^ c = ∑ k 1 = 1 K 1 ∑ k 2 = 1 K 2 W c , k 1 , k 2 × C c , k 1 , k 2 \hat{X}_{c}=\sum_{k_{1}=1}^{K 1} \sum_{k_{2}=1}^{K_{2}} W_{c, k_{1}, k_{2}} \times C_{c, k_{1}, k_{2}} X^c=k1=1∑K1k2=1∑K2Wc,k1,k2×Cc,k1,k2
则有
Y = ∑ c = 1 K 1 X ^ c Y=\sum_{c=1}^{K1} \hat{X}_{c} Y=c=1∑K1X^c
令 S 作为从 C 个通道中取得的最优子集,裁剪过程其实就是使子集 S 的最终输出与原始 C 个通道的最终输出 Y 的差别最小。即:
arg min S ( Y − ∑ j ∈ S X ^ j ) \underset{S}{\arg \min }\left(Y-\sum_{j \in S} \hat{X}_{j}\right) Sargmin⎝⎛Y−j∈S∑X^j⎠⎞- Luo 等人[49]提出了 Thinet,“贪婪地”剪去对下一层激活值影响最小的 channel
- He 等人[50]并没有像文献[49]那样直接使用贪心策略,而是通过 Lasso 回归对 channel 进行选择性删除,然后利用最小二乘法重构 feature map。
- Yu 等人[51]定义最后一个与 softmax 层相连的 hidden layer 为 final response layer(FRL),通过特征选择器来确定各个特征的重要性得分,反向传播,得到整个网络各层的得分,再根据裁剪比率进行裁剪。裁剪的原则是,FRL 输出的重建误差小。
- Zhuang 等人[52]引入额外的识别感知 loss,辅助选择真正有助于识别的 channel,联合重建误差共同优化。
-
其他方法
- Molchanov 等人[53]将剪枝问题当作一个优化问题,从权重参数中选择一个最优组合,使得 loss 的损失最小,认为剪枝后预测精度衰减小的参数是不重要的。
- Lin 等人[54]工作的独特之处在于:能够全局性地评估各个 filter的重要度,动态地、迭代地剪枝,并且能够重新调用之前迭代中错误剪枝的 filter。
- Zhang 等人[55]将剪枝问题视为具有组合约束条件的非凸优化问题,利用交替方向乘法器(ADMM)分解为两个子问题,可分别用 SGD 和解析法求解。
- Yang 等人[16]的工作与文献[55]的工作相比,加入能耗作为约束条件,通过双线性回归函数进行建模。
参考文献
主要参考:高晗,田育龙,许封元,仲盛.深度学习模型压缩与加速综述[J].软件学报,2021,32(01):68-92.DOI:10.13328/j.cnki.jos.006096.
[19]LeCun Y, Denker JS, Solla SA. Optimal brain damage. In: Advances in Neural Information Processing Systems. 1990. 598-605.
[20] Hassibi B, Stork DG. Second order derivatives for network pruning: Optimal brain surgeon. In: Advances in Neural Information Processing Systems. 1993. 164-171.
[21] Srinivas S, Babu RV. Data-free parameter pruning for deep neural networks. arXiv Preprint arXiv: 1507.06149, 2015.
[22] Dong X, Chen S, Pan S. Learning to prune deep neural networks via layer-wise optimal brain surgeon. In: Advances in Neural Information Processing Systems. 2017. 4857-4867.
[23] Han S, Pool J, Tran J, et al. Learning both weights and connections for efficient neural network. In: Advances in Neural Information Processing Systems. 2015. 1135-1143.
[24] Guo Y, Yao A, Chen Y. Dynamic network surgery for efficient DNNs. In: Advances in Neural Information Processing Systems. \2016. 1379-1387.
[25] Lin C, Zhong Z, Wei W, et al. Synaptic strength for convolutional neural network. In: Advances in Neural Information Processing Systems. 2018. 10149-10158.
[26] Lee N, Ajanthan T, Torr PHS. Snip: Single-shot network pruning based on connection sensitivity. arXiv Preprint arXiv: 1810.02340, 2018.
[27] Macchi O. The coincidence approach to stochastic point processes. Advances in Applied Probability, 1975,7(1):83-122.
[28] Mariet Z, Sra S. Diversity networks: Neural network compression using determinantal point processes. arXiv Preprint arXiv: 1511. 05077, 2015.
[29] Kingma DP, Salimans T, Welling M. Variational dropout and the local reparameterization trick. In: Advances in Neural Information Processing Systems. 2015. 2575-2583.
[30] Molchanov D, Ashukha A, Vetrov D. Variational dropout sparsifies deep neural networks. In: Proc. of the 34th Int’l Conf. on Machine Learning, Vol.70. JMLR.org, 2017. 2498-2507.
[31] Louizos C, Welling M, Kingma DP. Learning sparse neural networks through $ L_0 $ regularization. arXiv Preprint arXiv: 1712. 01312, 2017.
[32] Tartaglione E, Lepsøy S, Fiandrotti A, et al. Learning sparse neural networks via sensitivity-driven regularization. In: Advances in Neural Information Processing Systems. 2018. 3878-3888.
[33] Carreira-Perpinán MA, Idelbayev Y. “Learning-Compression” algorithms for neural net pruning. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 8532-8541.
[34] Liu Z, Xu J, Peng X, et al. Frequency-domain dynamic pruning for convolutional neural networks. In: Advances in Neural Information Processing Systems. 2018. 1043-1053.
[35] Wen W, Wu C, Wang Y, et al. Learning structured sparsity in deep neural networks. In: Advances in Neural Information Processing Systems. 2016. 2074-2082.
[36] Alvarez JM, Salzmann M. Learning the number of neurons in deep networks. In: Advances in Neural Information Processing Systems. 2016. 2270-2278.
[37] Figurnov M, Ibraimova A, Vetrov DP, et al. Perforatedcnns: Acceleration through elimination of redundant convolutions. In: Advances in Neural Information Processing Systems. 2016. 947-955.
[38] Lebedev V, Lempitsky V. Fast convnets using group-wise brain damage. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2016. 2554-2564.
[39] Zhou H, Alvarez JM, Porikli F. Less is more: Towards compact cnns. In: Proc. of the European Conf. on Computer Vision. Cham: Springer-Verlag, 2016. 662-677.
[40] Li H, Kadav A, Durdanovic I, et al. Pruning filters for efficient convnets. arXiv Preprint arXiv: 1608.08710, 2016.
[41] Chen YH, Emer J, Sze V. Eyeriss: A spatial architecture for energy-efficient dataflow for convolutional neural networks. ACM SIGARCH Computer Architecture News, 2016,44(3):367-379.
[42] Yang TJ, Howard A, Chen B, et al. Netadapt: Platform-aware neural network adaptation for mobile applications. In: Proc. of the European Conf. on Computer Vision (ECCV). 2018. 285-300.
[43] He Y, Kang G, Dong X, et al. Soft filter pruning for accelerating deep convolutional neural networks. arXiv Preprint arXiv: 1808. 06866, 2018.
[44] Liu Z, Li J, Shen Z, et al. Learning efficient convolutional networks through network slimming. In: Proc. of the IEEE Int’l Conf. on Computer Vision. 2017. 2736-2744.
[45] Huang Z, Wang N. Data-driven sparse structure selection for deep neural networks. In: Proc. of the European Conf. on Computer Vision (ECCV). 2018. 304-320.
[46] Ye J, Lu X, Lin Z, et al. Rethinking the smaller-norm-less-informative assumption in channel pruning of convolution layers. arXiv Preprint arXiv: 1802.00124, 2018.
[47] Dai B, Zhu C, Wipf D. Compressing neural networks using the variational information bottleneck. arXiv Preprint arXiv: 1802.10399, 2018.
[48] He Y, Lin J, Liu Z, et al. AMC: Automl for model compression and acceleration on mobile devices. In: Proc. of the European Conf. on Computer Vision (ECCV). 2018. 784-800.
[49] Luo JH, Wu J, Lin W. Thinet: A filter level pruning method for deep neural network compression. In: Proc. of the IEEE Int’l Conf. on Computer Vision. 2017. 5058-5066.
[50] He Y, Zhang X, Sun J. Channel pruning for accelerating very deep neural networks. In: Proc. of the IEEE Int’l Conf. on ComputerVision. 2017. 1389-1397.
[51] Yu R, Li A, Chen CF, et al. Nisp: Pruning networks using neuron importance score propagation. In: Proc. of the IEEE Conf. on Computer Vision and Pattern Recognition. 2018. 9194-9203.
[52] Zhuang Z, Tan M, Zhuang B, et al. Discrimination-aware channel pruning for deep neural networks. In: Advances in Neural Information Processing Systems. 2018. 875-886.
[53] Molchanov P, Tyree S, Karras T, et al. Pruning convolutional neural networks for resource efficient transfer learning. arXiv Preprint arXiv: 1611.06440, 2016.
[54] Lin S, Ji R, Li Y, et al. Accelerating convolutional networks via global & dynamic filter pruning. In: Proc. of the IJCAI. 2018. 2425-2432.
[55] Zhang T, Ye S, Zhang K, et al. A systematic DNN weight pruning framework using alternating direction method of multipliers. In: Proc. of the European Conf. on Computer Vision (ECCV). 2018. 184-199.
版权声明
本文为[小风_]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_33952811/article/details/124324564
边栏推荐
- MySQL5.7插入中文数据,报错:`Incorrect string value: ‘\xB8\xDF\xAE\xF9\x80 at row 1`
- Handler进阶之sendMessage原理探索
- [2021 book recommendation] Red Hat Certified Engineer (RHCE) Study Guide
- MySQL notes 4_ Primary key auto_increment
- ProcessBuilder工具类
- [2021 book recommendation] kubernetes in production best practices
- 杂七杂八的学习
- Tiny4412 HDMI显示
- Android清除应用缓存
- 第三篇:docker安装mysql容器(自定义端口)
猜你喜欢

从0开始封装一套项目的网络请求框架

Binder机制原理

个人博客网站搭建

【2021年新书推荐】Red Hat Certified Engineer (RHCE) Study Guide

JVM basics you should know
![[2021 book recommendation] artistic intelligence for IOT Cookbook](/img/8a/3ff45a911becb895e6dd9e061ac252.png)
[2021 book recommendation] artistic intelligence for IOT Cookbook

Bottom navigation bar based on bottomnavigationview

Record WebView shows another empty pit

Component based learning (3) path and group annotations in arouter

Fill the network gap
随机推荐
Personal blog website construction
MySQL笔记3_约束_主键约束
Android清除应用缓存
launcher隐藏不需要显示的app icon
BottomSheetDialogFragment + ViewPager+Fragment+RecyclerView 滑动问题
【2021年新书推荐】Enterprise Application Development with C# 9 and .NET 5
org. xml. sax. SAXParseException; lineNumber: 141; columnNumber: 252; cvc-complex-type. 2.4. a: Found element 'B
[Exynos4412][iTOP4412][Android-K]添加产品选项
基于BottomNavigationView实现底部导航栏
【2021年新书推荐】Red Hat Certified Engineer (RHCE) Study Guide
iTOP4412 HDMI显示(4.0.3_r1)
WebView displays a blank due to a certificate problem
oracle清除sql的缓存
Markdown basic grammar notes
Recyclerview batch update view: notifyitemrangeinserted, notifyitemrangeremoved, notifyitemrangechanged
ViewPager2实现画廊效果执行notifyDataSetChanged后PageTransformer显示异常 界面变形问题
记录webView显示空白的又一坑
给女朋友写个微信双开小工具
Kotlin征途之data class [数据类]
sys.dbms_scheduler.create_job创建定时任务(功能更强大丰富)