【2020年BNN网络的SOTA—— ReActNet 】以简单的操作得到更高精度的二值神经网络

作者‖ Cocoon
编辑‖ 3D视觉开发者社区

导语:

本文是由香港科技大学发布于ECCV 2020的论文,是Bi-Real Net作者对二值化研究领域的最新成果,拥有着69.4%的精度,作者通过简单的优化激活函数的操作改进便取得了惊人的效果,本文将详细解读ReActNet的具体方法。

在这里插入图片描述

论文链接: https://arxiv.org/pdf/2003.03488.pdf

代码地址: https://github.com/liuzechun/ReActNet

概述

通常认为的二值神经网络,指模型权重以及激活值均为二进制数值的模型,被认为是最有前途的神经网络压缩方法之一。但显然,二值的表达与浮点数的表达存在着差距,而本篇所介绍的 R e A c t N e t ReActNet ReActNet,其目的就是希望在不引入额外计算开销的前提下,能够缩小这之间的差距。

论文首先构建了一个 B a s e l i n e Baseline Baseline网络,具体的构建方式为使用不引入参数的 s h o r t c u t shortcut shortcut修改某一浮点数网络,并将其二值化。该 B a s e l i n e Baseline Baseline网络在精度和效率上有较好的 t r a d e trade trade- o f f off off,比大多数已有的二值网络效果都要好。

通过大量的实验,文章发现,二值网络的性能对激活函数的分布非常敏感。基于该发现,文章提出将传统的 S i g n Sign Sign以及 P R e L U PReLU PReLU函数进行“推广”,并将“推广”后的函数分别命名为 R S i g n RSign RSign以及 R P R e L U RPReLU RPReLU,这样做的目的是希望在不引入额外计算开销的前提下,显式地学习分布的“ r e s h a p e reshape reshape”和“ s h i f t shift shift”。

最后,文章提出了所谓的“ D i s t r i b u t i o n a l L o s s Distributional Loss DistributionalLoss”来进一步地对二值网络进行强化,目的是使其与浮点数网络学到近似的输出分布。

合并了上述想法后所攒出来的网络即命名为 R e A c t N e t ReActNet ReActNet,其性能远超出当时已有的二值网络。

方法

一比特卷积

对于权重已经一比特化的卷积层来说,其乘法运算可以被按位运算 X N O R XNOR XNOR以及 p o p c o u n popcoun popcount操作替换,具体为:
X b ∗ W b = popcount ⁡ ( XNOR ⁡ ( X b , W b ) ) \mathcal{X}_{b} * \mathcal{W}_{b}=\operatorname{popcount}\left(\operatorname{XNOR}\left(\mathcal{X}_{b}, \mathcal{W}_{b}\right)\right) XbWb=popcount(XNOR(Xb,Wb))

其中 W b \mathcal{W_b} Wb以及 X b \mathcal{X_b} Xb分别表示二值权重矩阵以及二值激活。具体地,权重和激活通过以下的方式进行二值化:
x b = Sign ⁡ ( x r ) = { + 1 ,  if  x r > 0 − 1 ,  if  x r ≤ 0 , w b = ∥ W r ∥ l 1 n Sign ⁡ ( w r ) = { + ∥ W r ∥ l 1 ∥ ,  if  w r > 0 − ∥ W r n ∥ l 1 n ,  if  w r ≤ 0 x_{b}=\operatorname{Sign}\left(x_{r}\right)=\left\{\begin{array}{l} +1, \text { if } x_{r}>0 \\ -1, \text { if } x_{r} \leq 0 \end{array}, \quad w_{b}=\frac{\left\|\mathcal{W}_{r}\right\|_{l 1}}{n} \operatorname{Sign}\left(w_{r}\right)=\left\{\begin{array}{l} +\frac{\left\|\mathcal{W}_{r}\right\|_{l 1}}{\|}, \text { if } w_{r}>0 \\ -\frac{\left\|\mathcal{W}_{r}^{n}\right\|_{l 1}}{n}, \text { if } w_{r} \leq 0 \end{array}\right.\right. xb=Sign(xr)={ +1, if xr>01, if xr0,wb=nWrl1Sign(wr)={ +Wrl1, if wr>0nWrnl1, if wr0
其中,下标 b b b和下标 r r r分别指代二值和浮点数。 ∥ W r ∥ l 1 n \frac{\left\| \mathcal{W}_{r}\right\|_{l 1}}{n} nWrl1表示权重绝对值的平均值,其作用为作为尺度因子减少浮点数与二值之间的差距,在 X N O R − N e t XNOR-Net XNORNet(Rastegari 等,2016)中,也应用了类似的尺度因子。然而,随着后续所谓的 R e A c t ReAct ReAct操作的引入,这个尺度因子将变得不再重要。

Baseline网络

许多二值化工作选择的浮点数网络是<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值