【Paper Reading】二值化网络——BNN

Binarized Neural Networks: Training Neural Networks withWeights and Activations Constrained to +1 or -1

论文链接:https://arxiv.org/abs/1602.02830
代码地址:https://github.com/MatthieuCourbariaux/BinaryNet
2016 NIPS
蒙特利尔 以色列理工

背景

深度神经网络(DNNs)在很大程度上推动了人工智能的发展,但如今DNNs几乎只能在快速和高功耗的GPU上进行训练,神经网洛由于采用浮点计算,需要较大的存储空间和计算量,严重阻碍在移动端的应用,而二值化神经网络有着高模型压缩率和快计算速度的潜在优势。文章介绍了训练二元神经网络(BNNs)的方法,二进制的权值和激活,前向传播的计算以及在方向传播中参数如何的更新,如何利用二进制位操作实现GPU加速计算的。

方法

二值化方法

确定性方法:基于符号函数Sign的确定性(deterministic )方法,即大于0就为+1,小于0则为-1。
在这里插入图片描述
在这里插入图片描述
随机二值化(stochastic )方法:基于概率的方法,当x在-1到1之间,取1和-1的是按照一定概率存在的,这和上一篇文章的随机舍入是一个思想。
在这里插入图片描述
在这里插入图片描述
随机二值化比符号函数更具吸引力,但难以实现,二值化的目的就是为了实现在嵌入式设备上部署模型,但随机二值化需要硬件在产生随机比特,这比较难实施。所以论文中的实验用的是确定性方法。

前向计算

前向计算过程和一般网络模型的计算差不多,只是多了一个权重二值化和激活二值化的过程。由于现在是权重是二值化的值,在“卷积”计算和批量归一化的计算上,有了更简便快捷的方法。
在这里插入图片描述
XNOR(同或运算)代替卷积运算
+1,-1的乘法运算真值表和Xnor(同或)真值表
(在计算机的存储中,1bit值其实只能是0或1,这里所说的“-1”,在计算机里表示就是0)
卷积=-(2×Popcount(a^w)-len)
举个例子:a=[1,-1, 1, 1, -1],b=[-1,1,1,-1,-1]
正常卷积计算:W=ab= a1b1+a2b2+a3b3+a4b4+a5b5=1(-1)+(-1)1+11+1*(-1)±(1)(-1)=-1
同或计算:先计算a和b的按位异或运算,统计其中1的个数,把“0”看作为-1,1的个数为Popcount(a^w),-1的个数为:5- Popcount(aw),累加为:2*Popcount(aw)-5,由于我们算的应该是异或的累加,取反就是同或的累加,得到为-1.
ab=[10,01,11,10,00]=[1,1,0,1,0]
Popcount(a^w)=3
W=-(2
Popcount(a^w)-5) = -1
用移位操作进行批量归一化运算
在这里插入图片描述
用移位操作近似代替乘法
AP2(x)的作用是求与x最接近的2的幂次方,如AP2(3.14)=4,AP2(2.5)=2;而<<>>操作就是位移操作

反向传播

梯度计算,由于Sign(x)函数的梯度,几乎处处为0,这显然不利于反向传播,作者采用尺度缩放的策略
在这里插入图片描述
权值更新,权重和激活值的更新并不是二值的,因为如果这样做的话误差会很大
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基于移位的AdaMax
ADAM能减少权重尺度的影响,由于ADAM需要多次乘法运算,因此作者建议使用算法AdaMax。作者在实验中发现,使用基于移位的AdaMax算法而不是使用vanilla ADAM算法时,没有观察到精度损失。
在这里插入图片描述

实验

精度损失
在这里插入图片描述
内存和计算能耗
在这里插入图片描述
• 内存访问耗时比计算耗时要多
• 相对于32bit的DNN,BNN内存需求量减少为原来的1/32还少,使得能源使用减少31/32

结论

二值化网络对于一些简单的应用和简单的网络结构,应该还是可以有很高的精度,能够大大减小内存的占用和功耗的损失,但对于复杂的应用和更深的网络结构,精度损失会很严重。

参考资料

【深度学习——BNN】:二值神经网络BNN——学习与总结
深度学习【6】二值网络(Binarized Neural Networks)学习与理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值