卷积网络的压缩方法
- 一,低秩近似
- 二,剪枝与稀疏约束
- 三,参数量化
- 四,二值化网络
- 五,知识蒸馏
- 六,浅层网络
- 前端压缩,是指在不改变原网络结构的压缩技术,主要包括
知识蒸馏
、轻量级网络(紧凑的模型结构设计)以及滤波器(filter)层面的剪枝(结构化剪枝)
等; - 后端压缩,是指包括
低秩近似
、未加限制的剪枝(非结构化剪枝/稀疏)、参数量化
以及二值网络等,目标在于尽可能减少模型大小,会对原始网络结构造成极大程度的改造 。
一,低秩近似简单理解就是,卷积神经网络的权重矩阵往往稠密且巨大,从而计算开销大,有一种办法是采用低秩近似的技术将该稠密矩阵由若干个小规模矩阵近似重构出来,这种方法归类为低秩近似算法 。
一般地,行阶梯型矩阵的秩等于其“台阶数”-非零行的行数 。低秩近似算法能减小计算开销的原理如下:
给定权重矩阵 \(W\in \mathbb{R}^{m\times n}\) , 若能将其表示为若干个低秩矩阵的组合,即 \(W=\sum_{i=1}^{n}\alpha_{i}M_{i}\) , 其中 \(M_{i}\in \mathbb{R}^{m\times n}\) 为低秩矩阵,其秩为 \(r_{i}\) , 并满足 \(r_{i}\ll min(m,n)\) ,则其每一个低秩矩阵都可分解为小规模矩阵的乘积,\(M_{i}=G_{i}H_{i}^{T}\) ,其中 \(G_{i}\in \mathbb{R}^{m\times r_{i}}\) ,\(H_{i}\in \mathbb{R}^{m \times r_{i}}\) 。当 \(r_{i}\) 取值很小时,便能大幅降低总体的存储和计算开销 。
基于以上想法,
Sindhwani
等人提出使用结构化矩阵来进行低秩分解的算法,具体原理可自行参考论文 。另一种比较简便的方法是使用矩阵分解来降低权重矩阵的参数,如 Denton 等人提出使用奇异值分解
(Singular Value Decomposition,简称 SVD)分解来重构全连接层的权重 。1.1,总结低秩近似算法在中小型网络模型上,取得了很不错的效果,但其超参数量与网络层数呈线性变化趋势,随着网络层数的增加与模型复杂度的提升,其搜索空间会急剧增大,目前主要是学术界在研究,工业界应用不多 。
二,剪枝与稀疏约束给定一个预训练好的网络模型,常用的剪枝算法一般都遵从如下操作:
- 衡量神经元的重要程度
- 移除掉一部分不重要的神经元,这步比前 1 步更加简便,灵活性更高
- 对网络进行微调,剪枝操作不可避免地影响网络的精度,为防止对分类性能造成过大的破坏,需要对剪枝后的模型进行微调 。对于大规模行图像数据集(如ImageNet)而言,微调会占用大量的计算资源,因此对网络微调到什么程度,是需要斟酌的
- 返回第一步,循环进行下一轮剪枝
经验总结扩展阅读
- 起猛了是什么意思网络用语
- 网络语自来水是什么意思?
- tensorflow-gpu版本安装及深度神经网络训练与cpu版本对比
- 土豪是什么意思?
- 咸鱼网络语是什么意思?
- 来时路一年桃花一孤独是什么歌
- none网络是什么意思
- m什么意思网络流行语
- 鱼越大鱼越小梗出自哪里
- 抽烟抽骆驼是什么梗