【论文笔记】二值化神经网络(Binarized Neural Network)

文章链接:Binarized Neural Networks: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1 是2016年2月份新出的一篇文章。

文章的主要思想是通过二值化weights和activations,来提高NN的速度和减少其内存占用。

1. Binarization Function

首先是如何对weights和activations进行二值化。如下图左,Binarization function 很简单,就是一个符号函数。但是作者就想了啊,符号函数不好进行梯度的反向传播啊,因此就把它近似成了右边的Htanh(x)的函数,这样在[-1,1]区间内导数就等于1。 
这里写图片描述

2. 网络前向传播

那么除第一层(输入层)以外,每一层的前向传播过程如下: 
这里写图片描述

首先权重 Wk  经过二值化,然后与上层二值化后的激活值 abk1 相乘,再进项BatchNormalization得到这一层的激活值 ak ,由于BatchNorm的参数 θk 不是二值的,因此 ak 也不是二值的,我们需要再对它做二值化得到二值化后的激活值 abk

3. 网络反向传播

然后反向传播过程如下,要注意的是权重和激活值的更新并不是二值的,因为如果这样做的话误差会很大。 
这里写图片描述

4. 输入层特征编码

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

5. 实验结果

实验结果如下,Baseline是32bit float的DNN方法,其他两个是在不同平台上运行的BNN方法,虚线表示训练的error rate,实线表示验证的error rate。可以看出BNN在训练时会比较慢,但是精度和DNN差不太多。 
这里写图片描述

BNN的优势主要在于其测试速度快,占用内存小。与32bit DNN相比,它的内存占用减少了32倍,并且运行速度在GPU上快了7倍。It is amazing! 接下来的考虑就是能否在更复杂的数据库上得到和普通DNN差不多的精度,同时保持效率上的优势了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值