Binarized Neural Networks:Training Deep Neural Networks with Weights and Activations -1,1
这是2016年的一篇关于模型量化的文章。
1、背景:
在网络量化中,有一种极为诱惑的量化方式:1bit量化——极致的压缩!但是1bit的网络在训练时有诸多细节需要完善。
2、方法:
2.1 Binarization Function
权值的量化有两种方式:sign和随机量化,虽然理论上随机要好一点,但实践中为了计算方便一般用sign
但是sign函数其没有不为0的梯度,所以用tanh来代替。
2.2 网络的传播
- 前向传播中权值都会与一个权重系数a相乘
反向传播中权值更新并不是二值的,都是在原32bit精度上进行更新再量化成2bit
2.3对输入图像的处理:
输入图像不是二值化的,但是由于图像像素值分布在[0,255]之间(8bit时),所以可以用8比特来表示,这样就能将输入的实值像素值变成二值化的编码了。
2.4 shift -based BN and Adamax
因为二值化后,BN操作和优化方式中的乘法计算都能用位移操作来代替,所以速度会快很多,具体算法如下:
2.5 将这种方法推广到 m bit
3、结果
只能说,作者尽力了,2bit的准确度方面确实不能和全精度的DNN作对比,特别是在大型的数据集上。后续的研究应该往优化量化更新方式或者是选择性量化的方面去。