训练神经网络是通过将许多微小的改进加到权重来完成的, 这些小增量通常需要浮点精度来工作。神经网络模型可以在磁盘上占用大量的空间,例如,原始的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.线性量化
$$\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.对数量化
$$\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 |
2016 | DoReFa 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. |
2016 | Xnor 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. |
2016 | Daisuke Miyashita等提出了量化神经网络的两种主要量化方案。 | Miyashita, D., Lee, E. H., & Murmann, B. (2016). Convolutional neural networks using logarithmic data representation. arXiv preprint arXiv:1603.01025. |
2016 - 2018 | Itay 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 |
2017 | X. 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 |
2018 | Y. 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. |
2018 | Z. 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