优化CNNs--量化方法进展介绍

卷积神经网络优化

卷积神经网络在减少计算量,加快训练和/或inference的速度,减少存储空间等方面的优化主要有以下几种方案:

改进网络结构

ResNet网络中的bottleneck结构就是这种方法的典型例子。bottleneck首先通过1x1的卷积层压缩通道数,然后使用3x3的卷积层计算,最后又用1x1的卷积层恢复到原来的通道数(ResNet中通道数压缩比为4)。这种方法大量减少了参数数量,提高了准确率。

压缩预训练好的网络

(在保证准确率大致不变的情况下,)压缩预训练好的全精度网络模型,达到减少存储空间和加快测试速度的效果。例如 [Deep Compression][DeepCompression] 去除冗余连接,量化参数,并使用Huffman编码进一步压缩参数。

量化

理论依据是:高精度的参数在表现优异的网络中起到的作用并不是非常重要。方法是:通过量化函数将全精度的数(激化量,参数,甚至是梯度值)映射到有限的整数空间,如:n-bit,三值化 (1,0,+1) , 二值化 (1,+1) (0,1) 。使用量化的网络需要重新训练。随着量化范围(指取值范围)的减少,分类准确率一般会随之降低。一般而言,量化之后网络的需要定制的硬件才能发挥其功效,比较适用于FPGA,ASIC。

二值化

一类比较特殊的量化的方式,只有 (1,1) (0,1) , 可以通过XNOR/AND/POPCNT等位操作指令来替代乘法指令。一方面,二值化网络只有两种取值,相比与等价全精度网络,减少了32倍所需的存储空间。另一方面,替代乘法操作,可以大幅度减少计算量。当然,二值化网络的准确率与全精度网络相比还有一定的差距。

最新进展介绍

BinaryNet

Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1

BNN的激活量和参数都被二值化了, 反向传播时使用全精度梯度。
有确定性(sign()函数)和随机(基于概率)两种二值化方式。使用sign函数时,sign函数不可导,使用直通估计(straight-through estimator)(即将误差直接传递到下一层): ….

gr=gq1|r|1

BNN中同时介绍了基于移位(而非乘法)的BatchNormailze和AdaMax算法。
实验结果:
在MNIST,SVHN和CIFAR-10小数据集上几乎达到了顶尖的水平。
在ImageNet在使用AlexNet架构时有较大差距(在XNOR-Net中的实验 Δ=29.8%
在GPU上有7倍加速

XNOR-Net与BWN

XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
BWN(Binary-Weights-Networks) 仅有参数二值化了,激活量和梯度任然使用全精度。XNOR-Net是BinaryNet的升级版。
主要思想:
1. 二值化时增加了缩放因子,同时梯度函数也有相应改变:

WW^=αB=1n|W|1×sign(W)
CW=CW^(1n+signWα)

2. XNOR-Net在激活量二值化前增加了BN层
3. 第一层与最后一层不进行二值化
实验结果:
在ImageNet数据集AlexNet架构下,BWN的准确率有全精度几乎一样,XNOR-Net还有较大差距( Δ=11% )
减少 32× 的参数大小,在CPU上inference阶段最高有 58× 的加速。

QNN

Quantized Neural Networks: Training Neural Networks with Low Precision Weights and Activations
对BNN的简单扩展,量化激活函数,有线性量化与log量化两种,其1-bit量化即为BinaryNet。在正向传播过程中加入了均值为0的噪音。
BNN约差于XNOR-NET(<3%),QNN-2bit activation 略优于DoReFaNet 2-bit activation

TWN

Ternary weight networks
主要思想就是三值化参数(激活量与梯度精度),参照BWN使用了缩放因子。由于相同大小的filter,三值化比二值化能蕴含更多的信息,因此相比于BWN准确率有所提高。

TNN

Ternary Neural Networks for Resource-Efficient AI Applications
训练时激活量三值化,参数全精度 –> infernce时,激活量,参数都三值化(不使用任何乘法)
用FPGA和ASIC设计了硬件

TTQ

Trained Ternary Quantization
与TWN类似,只用参数三值化,但是正负缩放因子不同,且可训练,由此提高了准确率。ImageNet-18模型仅有3%的准确率下降。

小结

以下是Efficient Processing of Deep Neural Networks: A Tutorial and Survey 中对2016年中通过减少精度的方法来优化网络的方法总结。其中,准确率是指使用AlexNet模型在ImageNet的分类任务中得到的准确率,*是指第一层和/或最后一层仍是全精度的。

总结


[DeepCompression]: Han, S., Mao, H., Dally, W.J.: Deep compression: Compressing deep neural networks with
pruning, trained quantization and huffman coding. arXiv preprint arXiv:1510.00149 (2015)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值