二值网络--Binarized Neural Networks

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjunhit/article/details/89377891

Binarized Neural Networks NIPS2016
https://github.com/MatthieuCourbariaux/BinaryNet

本文针对二值网络提出了 训练方法:首先定义一个二值化函数,其次搞定二值函数计算梯度反向传播问题,有了这两个就可以进行二值网络的训练了。

1 Binarized Neural Networks

Deterministic vs Stochastic Binarization 二值化函数
我们对 weights 和 activations 都做二值化处理,+/-1,这两个值从硬件角度来看是很有优势的
这里介绍了两种二值化函数:
1) deterministic binarization决定性二值化,当一个值大于等于 0,二值化为 1,否则为 -1。这个二值化函数很容易实现,实际工作中表现也不错;就是一个符号函数。
2)stochastic binarization 随机性二值化,以一定概率二值化为 1,否则为 -1,这个概率由 一个 hard sigmoid 决定,随机性二值化实现比较难,所以一般我们不用它。

Gradient Computation and Accumulation
尽管我们的 BNN 训练方法使用了 二值化的 weights 和 activation 来计算参数梯度,weights的实数梯度被保存在 实数变量中。 Stochasic Gradient Descent (SGD) 的正常工作是需要 实数值 weights。 SGD 以一个 small and noisy steps 来探索参数空间。 that noise is averaged out by the stochastic gradient contributions accumulated in each weight,这种噪声在 weights 中被平均了。 所以保持这些 accumulators 足够的位数是很重要的。

梯度使用实数来表示原因:
1)梯度的值很小
2)梯度具有累加效果,即梯度都带有一定的噪音,而噪音一般认为是服从正态分布的,所以,多次累加梯度才能把噪音平均消耗掉

此外 在计算参数梯度时,对 weights 和 activations 增加 噪声算是一种 正定化形式,a form of regularization,可以帮助提高系统泛化性能。Dropout 在计算参数梯度时, 随机的将一半的 activations 清零。我们的 BNN训练方法可以看做是一个 Dropout 变体,我们二值化了
weights 和 activations

Propagating Gradients Through Discretization
符号函数不好进行梯度的反向传播啊,因此就把它近似成了右边的Htanh(x)的函数,这样在[-1,1]区间内导数就等于1。
在这里插入图片描述
在具体的算法使用中,对于隐含层单元:
activations 直接使用决定式的二值化函数得到二值化的激活值。
weights 对于权重:
1) 在进行参数更新时,要时时刻刻把超出[-1,1]的部分给裁剪了。即权重参数始终是[-1,1]之间的实数。
2) 在使用参数是,要将参数进行二值化。

Batch Normalization,简称BN。所谓的BN是指在数据经过一层进入下一层之前,需要对数据进行归一化,使之均值为0,方差为1。这样可以使得各层的参数量级上没有太大的差别。

有三个优点:
1)加速训练
2)减小权重的值的尺度的影响
3)归一化所带来的噪声也有模型正则化的作用。

但是,BN有一个缺点,那就是在训练时,因为要对数据进行scale,所以有很多矩阵乘法,导致训练时间过长。

因为二值化这一特殊情况,所以可以对BN进行优化,可以在不进行乘法的情况下近似计算BN,这就是shift-based Batch Normalization。

输入层特征编码
整个过程基本就是这样。还有一点,输入层的特征是没有进行二值化的,那怎么办呢?由于图像像素值分布在[0,255]之间,所以可以用8比特来表示,这样就能将输入的实值像素值变成二值化的编码了。整体BNN的流程如下,将乘法运算都变成了XNOR运算,可想而知其运算会很快。

参考:
https://blog.csdn.net/stdcoutzyx/article/details/50926174
https://blog.csdn.net/elaine_bao/article/details/50950969

微信公众号:
在这里插入图片描述

11

猜你喜欢

转载自blog.csdn.net/zhangjunhit/article/details/89377891
今日推荐