网络压缩-量化方法对比

转自:http://blog.csdn.net/shuzfan/article/details/51678499

本次介绍的是一种压缩神经网络模型大小的方法,来自《2014 arxiv:Compressing Deep Convolutional Networks using Vector Quantization》。该方法和很多之前的神经网络压缩方法一样,基本只对全连接层有效,因此这里权作了解。

由论文名可以看出,主要是对密集权重矩阵进行量化编码来实现压缩。

论文做了很多种量化方法的对比试验,不过都只针对全连接层,至于为什么不处理卷积层,大家可以考虑一下。下面就简单介绍一下这些方法。

SVD分解

全连接层的权重矩阵记作  WRm×n  ,首先对  W  进行  SVD  分解,如下:

W=USVT

为了能够用两个较小的矩阵来表示  W  ,我们可以取奇异值的前  K  个分量。于是,W可以通过下式重建:

W^=U^S^V^T,U^Rm×kV^Rn×k

我们唯一需要保存的就是3个比较小的矩阵  U,S,V  ,我们可以简单算一下压缩比为  mn/k(m+n+1)

二值化

这种量化方法的想法来自于Dropconnect,量化如下:

二值化

假设原来的  W  是  float  型数据,则压缩比为 32

K-Mmeans 标量量化

首先把  WRm×n  整成标量  wR1×mn ,然后进行K均值,于是每一个  Wij  都可以用距离其最近的聚类中心表示,于是我们需要存储的只有  m×n 个索引,以及  K  个聚类中心。

乘积量化

乘积量化就是把原始数据划分成若干个子空间,在每个子空间中分别进行K-Means。

比如原来的  W  是  m×n  维的,我们可以把列(or 行)分成S份,即  W=[W1WS]  ,然后对每一个  Ws  进行K-Means。

残差量化

残差量化可以看做是一种分层量化、迭代量化。

首先对原始的  W  使用K-Means的,然后用聚类中心对其进行表示  Wc1  ,然后计算残差  W=WWc1 。对  W  继续K-means,重复上述过程。于是,  Wi  可以表示为多级聚类中心之和:

Wi=c1j+c2j++ctj

对比试验

接下来就是大量的对比试验,这里只列举一部分:(试验都在AlexNet的全连接层进行操作)

下图的横坐标是PQ的子空间分割数,K代表子空间中聚类的个数。

PQ参数

下图是不同方法的对比,结果发现PQ较好。此外为了综合考量准确率与压缩比,这里PQ中K=8。

对比

总结

论文是Facebook投到2015ICLR的,估计是被拒了,因为通篇只有对比试验而没有自己原创内容。此外,我们唯一可以收获的是了解了一些简单的量化方法,而这些方法是可以作为其它高级方法的基础的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值