卷积网络的压缩方法
- 一,低秩近似
- 二,剪枝与稀疏约束
- 三,参数量化
- 四,二值化网络
- 五,知识蒸馏
- 六,浅层网络
- 前端压缩,是指在不改变原网络结构的压缩技术 , 主要包括
知识蒸馏、轻量级网络(紧凑的模型结构设计)以及滤波器(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)而言,微调会占用大量的计算资源,因此对网络微调到什么程度,是需要斟酌的
- 返回第一步,循环进行下一轮剪枝
基于此方法,有学者尝试将剪枝的粒度提升到整个滤波器级别,即丢弃整个滤波器,但是如何衡量滤波器的重要程度是一个问题,其中一种策略是基于滤波器权重本身的统计量,如分别计算每个滤波器的 L1 或 L2 值,将相应数值大小作为衡量重要程度标准 。
利用稀疏约束来对网络进行剪枝也是一个研究方向,其思路是在网络的优化目标中加入权重的稀疏正则项,使得训练时网络的部分权重趋向于 0,而这些 0 值就是剪枝的对象 。
2.1,总结总体而言,剪枝是一项有效减小模型复杂度的通用压缩技术,其关键之处在于
如何衡量个别权重对于整体模型的重要程度
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- tensorflow-gpu版本安装及深度神经网络训练与cpu版本对比
- Learning Records 计算机网络
- Springboot 之 Filter 实现超大响应 JSON 数据压缩
- 手机网络怎么连接上电视(手机通过type-c连接电视)
- 一 网络安全主动进攻之DNS基础和ettercap实现DNS流量劫持
- TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践
- Go的网络编程详解
- 红米note11Pro怎么设置5G_设置5G网络方法
- Springboot 之 Filter 实现 Gzip 压缩超大 json 对象
- 对循环神经网络参数的理解|LSTM RNN Input_size Batch Sequence
