基于此方法,有学者尝试将剪枝的粒度提升到整个滤波器级别,即丢弃整个滤波器,但是如何衡量滤波器的重要程度是一个问题,其中一种策略是基于滤波器权重本身的统计量,如分别计算每个滤波器的 L1 或 L2 值,将相应数值大小作为衡量重要程度标准 。
利用稀疏约束来对网络进行剪枝也是一个研究方向,其思路是在网络的优化目标中加入权重的稀疏正则项,使得训练时网络的部分权重趋向于 0 ,而这些 0 值就是剪枝的对象 。
2.1,总结总体而言,剪枝是一项有效减小模型复杂度的通用压缩技术,其关键之处在于如何衡量个别权重对于整体模型的重要程度
。剪枝操作对网络结构的破坏程度极小,将剪枝与其他后端压缩技术相结合,能够达到网络模型最大程度压缩,目前工业界有使用剪枝方法进行模型压缩的案例 。
三,参数量化相比于剪枝操作,参数量化则是一种常用的后端压缩技术 。所谓“量化”,是指从权重中归纳出若干“代表”,由这些“代表”来表示某一类权重的具体数值 。“代表”被存储在码本(codebook)之中,而原权重矩阵只需记录各自“代表”的索引即可,从而极大地降低了存储开销 。这种思想可类比于经典的词包模型(bag-of-words model) 。常用量化算法如下:
- 标量量化(
scalar quantization
) 。 - 标量量化会在一定程度上降低网络的精度,为避免这个弊端,很多算法考虑结构化的向量方法,其中一种是乘积向量
(Product Quantization, PQ)
,详情咨询查阅论文 。 - 以PQ方法为基础,Wu等人设计了一种通用的网络量化算法:
QCNN(quantized CNN)
,主要思想在于Wu等人认为最小化每一层网络输出的重构误差,比最小化量化误差更有效 。
k-均值(k-means)聚类
算法快速完成:\[\underset{c}{arg min}\sum_{i}^{mn}\sum_{j}^{k}\begin{Vmatrix}?w_{i}-c_{j}\end{Vmatrix}_{2}^{2}\]这样,只需将 \(k\) 个聚类中心(\(c_{j}\),标量)存储在码本中,而原权重矩阵则只负责记录各自聚类中心在码本中索引 。如果不考虑码本的存储开销,该算法能将存储空间减少为原来的 \(log_{2}(k)/32\) 。基于 \(k\) 均值算法的标量量化在很多应用中非常有效 。参数量化与码本微调过程图如下:

文章插图
这三类基于聚类的参数量化算法,其本质思想在于将多个权重映射到同一个数值,从而实现权重共享,降低存储开销的目的 。
3.1,总结参数量化是一种常用的后端压缩技术,能够以很小的性能损失实现模型体积的大幅下降,不足之处在于,量化的网络是“固定”的,很难对其做任何改变,同时这种方法通用性差,需要配套专门的深度学习库来运行网络 。
这里,权重参数从浮点转定点、二值化等方法都是是试图避免浮点计算耗时而引入的方法,这些方法能加快运算速率,同时减少内存和存储空间的占用,并保证模型的精度损失在可接受的范围内,因此这些方法的应用是有其现实价值的 。更多参数量化知识,请参考此 github仓库 。
四,二值化网络
- 二值化网络可以视为量化方法的一种极端情况:所有的权重参数取值只能为 \(\pm 1\) ,也就是使用
1bit
来存储Weight
和Feature
。在普通神经网络中,一个参数是由单精度浮点数来表示的,参数的二值化能将存储开销降低为原来的经验总结扩展阅读
- 起猛了是什么意思网络用语
- 网络语自来水是什么意思?
- tensorflow-gpu版本安装及深度神经网络训练与cpu版本对比
- 土豪是什么意思?
- 咸鱼网络语是什么意思?
- 来时路一年桃花一孤独是什么歌
- none网络是什么意思
- m什么意思网络流行语
- 鱼越大鱼越小梗出自哪里
- 抽烟抽骆驼是什么梗