[京哥读论文]之Bi-Real Net:Enhancing the Performance of 1-bit CNNs With Improved Representational Capabilit

本文针对1-bit CNN在大型数据集上精度下降的问题,提出Bi-Real Net,通过引入shortcut连接、改进sign操作和考虑实数权重幅度来增强网络表达能力和训练算法,从而提高推理精度。在ImageNet上展示了显著效果。
摘要由CSDN通过智能技术生成

论文题目:Bi-Real Net: Enhancing the Performance of 1-bit CNNs With Improved Representational Capability and Advanced Training Algorithm_ECCV2018
引用量:27
code:caffe版:https://github.com/liuzechun/Bi-Real-net

这篇文章针对XNOR-net的缺陷,在网络结构及优化训练方面做了一系列增强与改进,具体包括借鉴残网络的shortcut思想、采用二次函数拟合实数激活的sign操作、在更新实数权重时引入实数权重的幅度、以及预训练模型采用clip函数替代ReLU予以训练,从而在实现网络权重与激活输出二值化的同时,确保了较高的推理精度,尤其是在大型数据集(ILSVRC ImageNet)上的表现。

发现问题

然而现有的二值化压缩方法在Imagenet这样的大数据集上会有较大的精度下降。本文认为,这种精度的下降主要是有两方面造成的。

  • 1-bit CNN 的表达能力本身很有限,不如实数值的网络。
  • 1-bit CNN 在训练过程中有导数不匹配的问题导致难以收敛到很好的精度。

####解决方案

[外链图片转存失败(img-clKOuAlk-1565881618477)(https://i.loli.net/2019/08/12/DTFLoAvqw3f2pZs.png)]
左图是传统神经网络,连续灰度的特征图每次经过 1-bit 卷积的时候,都会被二值化。所以我们提出在特征图在被二值化之前,利用 shortcut 来传递这些实数值的特征图,这样就可以大大地保留网络中的信息量,提高网络的表达能力。

针对这两个问题,本文分别提出了解决方案:

  • 通过分析本文发现(上图),尽管输入 1-bit 卷积层的参数和激活值都是二值化的,但经过 xnor 和 bitcout 之后,网络内部会产生实数值,但是这个实数值的输出如果经过下一层 1-bit 卷积就又会被二值化,造成极大的信息丢失

  • 除此之外,本文分析了原有的二值化网络的训练方法,发现原有训练方法在对于激活值的求导和对于参数的更新存在导数不匹配的问题。我们针对激活值的求导和参数更新问题分别提出了解决方案。
    • 对于激活函数:用分段多项式函数近似sign
      在对激活值求导的时候,由于二值化激活值的 sign 函数不可导,所以Binary Net[1]采用的方法是利用 clip(-1,x,1) 的导数来拟合 sign 的导数,但是这样造成的效果就是,网络在正向计算 loss 的时候所看到的是一个以 sign 为非线性函数的网络,而在反向计算 gradients 的时候是根据一个以 clip 为非线性函数的网络进行计算的。由于 clip 函数与 sign 函数有差距,这种计算方式会带来所谓的导数值不匹配的问题。基于这个,我们提出用二阶拟合 sign 的 ApproxSign 的导数来作为 sign 的导数,从而缩小导数值的不匹配问题。这个带来了约 12% 的性能提升。

      20190813075336.png
      图 2 图2 2
      上图a所示,sign函数的导数是一个脉冲函数,不能直接在training中用,
      ∂ L ∂ A r l , t = ∂ L ∂ A b l , t ∂ A b l , t ∂ A r l , t = ∂ L ∂ A b l , t ∂ S i g n ( A r l , t ) ∂ A r l , t ≈ ∂ L ∂ A b l , t ∂ F ( A r l , t ) ∂ A r l , t ( 1 ) \frac{\partial L}{\partial {A_r^{l,t}}}=\frac{\partial L}{\partial {A_b^{l,t}}} \frac{\partial {A_b^{l,t}}}{\partial {A_r^{l,t}}}= \frac{\partial L}{\partial {A_b^{l,t}}} \frac{\partial Sign(A_r^{l,t})}{\partial {A_r^{l,t}}} \approx \frac{\partial L}{\partial {A_b^{l,t}}} \frac{\partial F(A_r^{l,t})}{\partial {A_r^{l,t}}} \quad (1) Arl,tL=Abl,tLArl,tAbl,t=Abl,tLArl,tSign(Arl,t)Abl,tLArl,tF(Arl,t)(1)
      F ( A r l , t ) F(A_r^{l,t}) F(Arl,t)是不可微分 S i g n ( A r l , t ) Sign(A_r^{l,t}) Sign(Arl,t)函数的一个可微分近似函数,在Binarynect[1]中 F ( A r l , t ) F(A_r^{l,t}) F(Arl,t)就是clip函数,如图b所示.本文利用分段多项式函数来作为近似函数,如公式2所示:
      F ( a r ) = { − 1 a r < − 1 2 a r + a r 2 − 1 ≤ a r < 0 2 a r − a r 2 0 ≤ a r < 1 1 o t h e r w i s e , ∂ F ( a r ) ∂ a r = { 2 + 2 a r − 1 ≤ a r < 0 2 − 2 a r 0 ≤ a r < 1 0 o t h e r w i s e ( 2 ) F(a_r)= \begin{cases} -1 & \quad a_r < -1 \\\\ 2a_r+a_r^2 & \quad -1 \leq a_r < 0 \\\\ 2a_r-a_r^2 & \quad 0 \leq a_r < 1 \\\\ 1 & \quad otherwise \end{cases}, \quad \frac{\partial F(a_r)}{\partial a_r}= \begin{cases} 2 + 2a_r & \quad -1 \leq a_r < 0 \\\\ 2 - 2a_r & \quad 0 \leq a_r < 1 \\\\ 0 & \quad otherwise \end{cases} \quad (2) F(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值