[京哥读论文]之BNN:Training deep neural networks with weights and activations constrained to+ 1 or-1

这篇论文介绍了Binarized Neural Networks(BNN),它将权重和激活值限制在+1或-1,通过XNOR操作减少内存使用并提高计算效率。BNN在MNIST上保持精度的同时,减少了60%的硬件时间复杂度。论文提出饱和STE方法,限制梯度传播,实现二值矩阵乘法GPU kernel,速度比常规kernel快7倍。然而,BNN在更复杂数据集上的表现和训练稳定性仍有待提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文题目: Binarized neural networks: Training deep neural networks with weights and activations constrained to+ 1 or-1
引用量:908
code: https://github.com/itayhubara/BinaryNet

BNN作者与BinaryConnect是同一个人,还有一个论文名字是BinaryNet: Training Deep Neural Networks with Weights and Activations Constrained to +1 or -1,这两篇其实是一篇论文,拓展了BinaryConnect,前者只量化了weight权重,本篇论文一方面,进一步量化activations到1bit,大大减少了内存size以及访问,并且将大多数的乘加运算简化为按位bit-wise运算(xnor-count),提高了power-efficient。本文还实现了二值矩阵乘法GPU kernel,比普通kernel快7倍,而且在MNIST上不损失任何精度,二值化CNN能够减少60%的硬件时间复杂度。

另一方面本文对STE加了限制。具体来讲,在计算浮点型激活值的梯度时,如果该激活值在[-1,+1]范围里面,则按照STE,可以直接等于对应的二值激活值的梯度;如果在范围外,则梯度为0。用公式来讲,就是
20190812010306.png
这样,其实等效于在前向传播中,用了sign函数,而在后向传播中,用了hard tanh函数,也就是(我们暂且把它叫做饱和STE)
[外链图片转存失败(img-hqg8EZ1F-1565765151658)(https://i.loli.net/2019/08/12/5u3toSCG9kDgbAj.png)]
同样的,饱和STE可以用下图阐释(注意与前面标准STE的区别是反向传播时曲线被截断了):
[外链图片转存失败(img-IXcJHXQb-1565765151660)(https://i.loli.net/2019/08/12/EWOybtwPgzLs1nR.png)]
饱和STE实现了梯度截断,也就是当值超过某个范围时,取消对它的梯度传递(梯度传递是指将二值的梯度传递给对应的浮点值,也就是公式中q的梯度传递给r,记住我们要更新的是浮点型的r,而q的梯度是可以在反向传播中通过链式法则算出来的)。

算法其余部分和BinaryConnect一致,同样是对浮点型参数更新后将其截断成[-1,+1]的范围,这样其实也间接实现了梯度截断,因为参数的值始终被限制在[-1,+1],那么参数的梯度也就始终能被传递。算法如图1:
[外链图片转存失败(img-TaMymm8n-1565765151662)(https://i.loli.net/2019/08/12/u2O1VsXC5qyr8tH.png)]
[外链图片转存失败(img-tZUijX8M-1565765151663)(https://i.loli.net/2019/08/12/MsXHCoue3nyixaR.png)]
在训练过程中,需

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值