量化神经网络

网络量化通过减少表示每个权重所需的比特数来压缩原始网络。Gong et al. 对参数值使用 K-Means 量化。Vanhoucke et al. 使用了 8 比特参数量化可以在准确率损失极小的同时实现大幅加速。Han S 提出一套完整的深度网络的压缩流程:首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享量化连接的权重,再对量化后的权重和码本进行霍夫曼编码,以进一步降低压缩率。

简介

训练神经网络是通过将许多微小的改进加到权重来完成的, 这些小增量通常需要浮点精度来工作。神经网络模型可以在磁盘上占用大量的空间,例如,原始的alexnet在浮动格式上超过200MB。一个神经网络模型通常需要数百万甚至千万的权值参数,它们连接了不同层级的神经元,占据了模型储存的几乎全部空间。因为它们只有微小差别,简单的压缩格式像zip,不能很好地压缩它们。它们排列在大的层次,并且在每一层中,权重通常分布在一定范围内,例如-3.0至6.0。

最简单的量化的动机是在网络权值保存为文件时,将每层最小值、最大值存储下来,然后将每个浮点数值采用 8-bit 整数表示。例如,在- 3.0到6.0范围内, 0字节表示- 3.0 ,255表示6.0 ,128表示大约1.5。这意味着可以在磁盘上缩减75%的储存开销,然后在加载后转换回浮点数,现有的浮点代码可以不做任何更改。

量化神经网络(QNN)是一种使用低于全精度(32bit)的权重和激活值的神经网络。当QNN使用1bit的权重和激活值时,会得到一种二值化神经网络(BNN)。在这样的网络中,所有乘法累加运算(multiply-accumulate operations,MAC)都可以用异或非(XNOR)和集体计数(即,计算二进制数中的1的数量)操作来代替。在正向传递期间,量化神经网络会大大减少内存大小和访问时间,并用逐位操作替换大多数算术运算,相对于使用全精度权重训练的深度神经网络,量化神经网络的功耗将大幅降低。当每个权重仅使用1位并激活时,会生成二值化神经网络(BNN)。量化神经网络有利于加快实现神经元重量比非常大的卷积网络,以及模型的压缩/加速,和功耗的降低。它能带来深度模型在低功耗设备上的应用普及。如手机,嵌入式设备,iot设备,可穿戴设备,以及其他不能装配强gpu算力,又不适合依赖通过网络访问云端分析的应用。

Miyashita et al. (2016) 指出,量化方案主要有两种:

1.线性量化

image.png

$$\mathbf{L}{\mathbf{I}}^{.}\mathbf{nearQuant}(x,bitwidth)=\grave{\mathrm{Ch}}\mathrm{p}(\mathbf{rOund}(\frac{x}{2^{\mathrm{bit}\mathbb{W}\mathbf{idth}}-1})\times 2{1}^{\mathbf{b\imath }\mathbf{IW}1\mathbf{\imath dIh}-_{,\mathrm{m}}}\mathbf{\imath }^{\blacktriangledown }\mathrm{nV},\mathrm{maxv})$$

2.对数量化

image.png $$\mathbf{LogQuant}(x,bitwidth)(\mathrm{x})=\ \mathrm{Cl\imath }^{\blacktriangledown }\mathrm{p}(\mathrm{LOgAP}2(x),-(2^{\mathbf{bit}\mathbb{W}\mathbf{idIh}-1}-1),2_{1}^{\mathbf{b\imath }\mathbf{IW}1^{\mathbf{\imath }}\mathbf{dth}-)}$$

其中minV和maxV分别是最小和最大比例范围,LogAP2(x)是x的近似幂2的对数。

描述来源:

Hubara, I., Courbariaux, M., Soudry, D., El-Yaniv, R., & Bengio, Y. (2017). Quantized neural networks: Training neural networks with low precision weights and activations. The Journal of Machine Learning Research, 18(1), 6869-6898.

Miyashita, D., Lee, E. H., & Murmann, B. (2016). Convolutional neural networks using logarithmic data representation. arXiv preprint arXiv:1603.01025.

发展历史

描述

2016年,Zhou, S., Wu, Y., Ni, Z., Zhou, X., Wen, H., & Zou, Y. 提出了DoReFa net,第一次对量化网络的前向和后向计算,以及不同的bit,进行评估。

2016年,Rastegari, M., Ordonez, V., Redmon, J., & Farhadi, A. 提出了Xnor net,第一次在imagenet上做二值化评估工作。它提出了使用scaling factor来缩小二值化的权值及激活值和它们的全精度版本之间的距离,进而通过增大模型feature value的值域来增强其表达能力的方法。

2016年,Daisuke Miyashita等提出了量化神经网络的两种主要量化方案。

2016年 - 2018年,Itay Hubara等综述了量化神经网络的应用以及与二值化神经网络(BNN)的关系。

2017年,基于apache mxnet的二值化神经网络的开源实现 BMXNet 诞生,它是当时第一个可以将二值化模型压缩并储存,进而成功的发布在iso以及andriod设备上应用的工具包。

2017年,X. Lin, C. Zhao, and W. Pan.试图通过建立多个1bit的二值话模块,并以其组合的形式来逼近全精度模型的权值和激活值的分布,其结果达到了很高的精度,但是模型大小的压缩比不能被很好的保证,其并未真正解决1bit下的模型精度如何提高的问题。

2018年,Y. Zhou, S. M. Moosavi Dezfooli, N.-M. Cheung, and P. Frossard.提出自适应的量化方法,可以灵活的以不同的设置来量化模型的不同层。

2018年, Z. Liu, B. Wu, W. Luo, X. Yang, W. Liu, and K.-T. Cheng.通过在resnet中加入全精度的下采样连接,有效提升了1bit二值网络的精度,达到了新的技术发展水平。

主要事件

年份事件相关论文/Reference
2016DoReFa net第一次对量化网络的前向和后向计算,以及不同的bit,进行评估。Zhou, S., Wu, Y., Ni, Z., Zhou, X., Wen, H., & Zou, Y. (2016). Dorefa-net: Training low bitwidth convolutional neural networks with low bitwidth gradients. arXiv preprint arXiv:1606.06160.
2016Xnor net第一次在imagenet上做二值化评估工作。Rastegari, M., Ordonez, V., Redmon, J., & Farhadi, A. (2016, October). Xnor-net: Imagenet classification using binary convolutional neural networks. In European Conference on Computer Vision (pp. 525-542). Springer, Cham.
2016Daisuke Miyashita等提出了量化神经网络的两种主要量化方案。Miyashita, D., Lee, E. H., & Murmann, B. (2016). Convolutional neural networks using logarithmic data representation. arXiv preprint arXiv:1603.01025.
2016 - 2018Itay Hubara等综述了量化神经网络的应用以及与二值化神经网络(BNN)的关系。Hubara, I., Courbariaux, M., Soudry, D., El-Yaniv, R., & Bengio, Y. (2017). Quantized neural networks: Training neural networks with low precision weights and activations. The Journal of Machine Learning Research, 18(1), 6869-6898.
2017基于apache mxnet的二值化神经网络的开源实现 BMXNet 诞生。H. Yang, M. Fritzsche, C. Bartz, and C. Meinel. Bmxnet: An open-source binary neural network implementation based on mxnet. In Proceedings of the 2017 ACM on Multimedia Conference, pages 1209–1212. ACM, 2017
2017X. Lin, C. Zhao, and W. Pan.试图通过建立多个1bit的二值话模块,并以其组合的形式来逼近全精度模型的权值和激活值的分布。X. Lin, C. Zhao, and W. Pan. Towards accurate binary convo lutional neural network. In Advances in Neural Information Processing Systems, pages 344–352, 2017
2018Y. Zhou, S. M. Moosavi Dezfooli, N.-M. Cheung, and P. Frossard.提出自适应的量化方法,可以灵活的以不同的设置来量化模型的不同层。Y. Zhou, S. M. Moosavi Dezfooli, N.-M. Cheung, and P. Frossard. Adaptive quantization for deep neural network. In AAAI, number CONF, 2018.
2018Z. Liu, B. Wu, W. Luo, X. Yang, W. Liu, and K.-T. Cheng.通过在resnet中加入全精度的下采样连接,有效提升了1bit二值网络的精度。Z. Liu, B. Wu, W. Luo, X. Yang, W. Liu, and K.-T. Cheng. Bi-real net: Enhancing the performance of 1-bit cnns with improved representational capability and advanced training algorithm. In The European Conference on Computer Vision (ECCV), September 2018

发展分析

瓶颈

最大瓶颈是在大规模数据集上精度的损失大。和全精度模型比较,8bit及以上的量化模型基本可以做到精度不受损失。但是,低bit,尤其是二值化模型会造成精度大幅下降。以imagenet为例,二值化模型(不包含ABC-Net那种多模块的二值网络设计结构)的精度叫全精度模型大约要掉10%以上。这在很多对精度要求较高的应用中是不可接受的,例如自动驾驶辅助系统。因此精度的缺失是制约量化/二值化深度模型应用的最大瓶颈。

未来发展方向

量化神经网络作为压缩神经网络空间,提升神经网络效率的一种发展趋势和方向,目前研究重点逐渐转向于二值化神经网络。在解决精度提升问题后,二值化网络将会有极为宽广的应用场景。此外,到目前为止所有的优化都是软件层面的,如果能为二值化或量化模型的运算量身打造硬件级别的优化,可以更大的提升运算速度和降低功耗。

Contributor: Tiange Wang 

相关人物
Itay Hubara
Itay Hubara
Ali Farhadi
Ali Farhadi
Daisuke Miyashita
Daisuke Miyashita
简介
相关人物