BinaryConnect: Training Deep Neural Networks with binary weights during propagations

来源:互联网 发布:网络心理咨询师招聘 编辑:程序博客网 时间:2024/04/29 18:03

BinaryConnect : Training Deep Neural Networks with binary weights during propagations

Code: https://github.com/MatthieuCourbariaux/BinaryConnect

当前CNN网络主要的运算集中在 实数权值乘以实数激活量或 者 实数权值乘以实数梯度。本文提出 BinaryConnect 将用于前向传播和后向传播计算的实数权值二值化(-1,1),从而将这些乘法运算变为加减运算。这样即压缩了网络模型大小,有加快速度。

下面两条使其具有可行性:
1)足够的精度对于累计和平均大量随机梯度是必须的,但是噪声梯度对于 深度学习主流优化算法的随机梯度下降SGD是可兼容的。SGD通过做出小的噪声尝试来探索参数空间,对于每个权值通过累加随机梯度贡献消除了噪声的影响。所以对于这些累加器保持足够的精度是必须的。文献【14,15】显示随机取整可以用于 unbiased discretization,文献【14,16,17】显示可以用6-12位就可以满足精度需求。

2)噪声权值实际上可以看做一种镇定形式,使系统泛化能力更好,正如文献variational weight noise【18】】Dropout【19,20】DropConnect【21】所显示。所以以前工作说明: only the expected value of the weight needs to have high precision, and that noise an actually be beneficial. 仅仅需要将权值的期望值用高精度位表示,噪声是有益的。

2 BinaryConnect

2.1 +1 or −1 这里我们选择 +1,-1将原来网络中的乘法运算变为加减运算。

2.2 Deterministic vs stochastic binarization 确定性 vs 随机二值化

确定性二值化定义如下:
这里写图片描述

随机二值化定义如下:
这里写图片描述

2.3 Propagations vs updates 参数传播和更新
这里写图片描述

这里我们在前向传播和后向传播计算是采用二值权值参数,对于参数更新采用实数权值。在参数更新采用实数参数值,这样做是为了SGD能正常工作。

2.4 Clipping
我们将用于参数更新的实数权值取值范围约束在【-1,1】之间,处于镇定权值的目的。太大的权值对二值参数不产生任何影响。

2.5 A few more tricks
我们采用 Batch Normalization (BN) ,ADAM learning rule
这里写图片描述

2.6 Test-Time Inference
对于 test-time inference 采用下面三种形式:
1 对于确定性 BinaryConnect 采用二值权值计算
2 使用实数权值计算,二值权值只用于加速训练
3 对于随机二值情况,我们可以将多个随机二值权值系统组合起来得到一个大系统。

这里写图片描述

0 0
原创粉丝点击