[京哥读论文]之ABC-Net:Towards Accurate Binary Convolutional Neural Network

8 篇文章 0 订阅
8 篇文章 1 订阅

论文题目:Towards Accurate Binary Convolutional Neural Network_NIPS2017
引用量:98
code:https://github.com/layog/Accurate-Binary-Convolution-Network
https://github.com/cow8/ABC-Net-pytorch

由于之前二值化工作在ImageNet数据集上损失的精度很大,这篇文章是二值化领域第一次在ImageNet数据集与全精度最接近的文章.本文提出了一个ABC-Net,用多个二值函数的线性组合来近似浮点权重以及激活函数。在有足够多二值权值和激活值的情况下,ABC-Net 的准确率远比以往的二值网络更接近它们对应的浮点版本,甚至能在 ImageNet 和 forest trail 数据集上达到可以与浮点网络相比较的准确率。

Binarization methods
  • Weight aoproximation
    考虑一个L层的CNN,每一层weights用 ( w , h , c i n , c o u t ) (w,h,c_{in},c_{out}) (w,h,cin,cout)来表示,假设使用M个二值的线性组合。
    • Approximate weights as a whole
      本文采用一组二值化基(binary filter base)的线性组合来逼近W,
      W ≈ α 1 B 1 + α 2 B 2 + . . . + α M B M W \approx \alpha_1B_1 + \alpha_2B_2 + ... + \alpha_MB_M Wα1B1+α2B2+...+αMBM
      本文类似XNOR优化以下问题:
      min ⁡ α , B = ∣ ∣ w − B α ∣ ∣ 2 , s . t . B i j ∈ − 1 , + 1 ( 1 ) \min \limits_{\alpha,B}=||w-B\alpha||^2, \quad s.t.B_{ij} \in {-1, +1} \quad (1) α,Bmin=wBα2,s.t.Bij1,+1(1)
      B = [ v e c ( B 1 ) , v e c ( B 2 ) , . . . , v e c ( B M ) ] B=[vec(B_1),vec(B_2),...,vec(B_M)] B=[vec(B1),vec(B2),...,vec(BM)], w = v e c ( W ) w=vec(W) w=vec(W), α = [ α 1 , α 2 , . . . , α M ] T \alpha = [\alpha_1,\alpha_2,...,\alpha_M]^T α=[α1,α2,...,αM]T
      尽管(1)可以得到一个局部最优解,但是不能反向传播来更新参数,所以针对每个网络层,本文采用一组固定数值的矢量表示二值化基,并且由网络层参数的均值与标准差决定:
      B i = F u i ( W ) : = s i g n ( W ‾ + u i s t d ( W ) ) , i = 1 , 2 , . . . , M ( 2 ) B_i=F_{u_i}(W):=sign(\overline W + u_istd(W)), i=1,2,...,M \quad (2) Bi=Fui(W):=sign(W+uistd(W)),i=1,2,...,M(2)
      W ‾ = W − m e a n ( W ) \overline W=W-mean(W) W=Wmean(W), u i u_i ui是一个shift参数,比如: u i = − 1 + ( i − 1 ) 2 M − 1 , i = 1 , 2 , . . . , M u_i=-1+(i-1) \frac{2}{M-1},i=1,2,...,M ui=1+(i1)M12,i=1,2,...,M,将范围变为$[-std(W), std(W)] $.
      B固定后,优化变成了以下式子:
      min ⁡ α J ( α ) = ∣ ∣ w − B α ∣ ∣ 2 ( 3 ) \min \limits_{\alpha}J(\alpha)=||w-B\alpha||^2 \quad (3) αminJ(α)=wBα2(3)
      前向和反向如下:
      F o r w a r d : B 1 , B 2 , . . . , B M = F u 1 ( W ) , F u 2 ( W ) , . . . , F u M ( W ) ( 4 ) Forward:B_1,B_2,...,B_M=F_{u_1}(W),F_{u_2}(W),...,F_{u_M}(W) \quad (4) Forward:B1,B2,...,BM=Fu1(W),Fu2(W),...,FuM(W)(4)
      \quad \quad \quad \quad \quad \quad Solve (3) for α ( 5 ) \alpha \quad (5) α(5),
      O = ∑ m = 1 M α m C o n v ( B m , A ) ( 6 ) O=\sum_{m=1}^{M} \alpha_m Conv(B_m,A) \quad (6) O=m=1MαmConv(Bm,A)(6)
      B a c k w a r d : ∂ c ∂ W = ∂ c ∂ O ( ∑ m = 1 M α m ∂ O ∂ B m ∂ B m ∂ W ) = S T E ∂ c ∂ O ( ∑ m = 1 M α m ∂ O ∂ B m ) = ∑ m = 1 M α m ∂ c ∂ B m ( 7 ) Backward:\frac{\partial c}{\partial W}=\frac{\partial c}{\partial O}(\sum_{m=1}^{M} \alpha_m \frac{\partial O}{\partial B_m} \frac{\partial B_m}{\partial W}) \overset{STE}{=} \frac{\partial c}{\partial O}(\sum_{m=1}^{M} \alpha_m \frac{\partial O}{\partial B_m})=\sum_{m=1}^{M} \alpha_m \frac{\partial c}{\partial B_m} \quad (7) Backward:Wc=Oc(m=1MαmBmOWBm)=STEOc(m=1MαmBmO)=m=1MαmBmc(7)
      在测试时只用(6)即可。框图如下方左图所示:
      [外链图片转存失败(img-ACjOA54D-1565881699162)(https://i.loli.net/2019/08/14/hjevygPQqClV1FM.png)]
    • Approximate weights channel-wise
      本文没有实现,思想就是一个卷积核的channel用一组二值化的基来线性组合,这样会变得非常复杂。
  • Mutiple binary activations and bitwise convolution
    类似DoreFa[1]一样,本文也是确保激活输出的范围控制在 h ( x ) ∈ [ − 1 , 1 ] h(x) \in [-1,1] h(x)[1,1], 可以用下面公式来表示:
    h v ( x ) = c l i p ( x + v , 0 , 1 ) ( 8 ) h_v(x)=clip(x+v,0,1) \quad (8) hv(x)=clip(x+v,0,1)(8)
    v v v是一个shift参数,比如 v = 0 v=0 v=0, h v h_v hv就是Dorefa中的clip函数。
    二值化:
    H v ( R ) : = 2 I h v ( R ) ≥ 0.5 − 1 ( 9 ) H_v(R):=2I_{h_v(R) \geq 0.5}-1 \quad (9) Hv(R):=2Ihv(R)0.51(9)
    训练:
    F o r w a r d : A = H v ( R ) Forward:A=H_v(R) \quad Forward:A=Hv(R)
    B a c k w a r d : ∂ c ∂ R = ∂ c ∂ A ∘ I 0 ≤ R − v ≤ 1 . ( u s i n g    S T E ) Backward:\frac{\partial c}{\partial R}= \frac{\partial c}{\partial A} \circ I_{0 \leq R-v \leq 1}.\quad (using \; STE) Backward:Rc=AcI0Rv1.(usingSTE)
    ∘ \circ 代表Hadamard乘积,就是对应位置相乘。
    同样,用了一组不同参数的二值化激活函数,融合的参数仍然是可训练的:
    R ≈ β 1 A 1 + β 2 A 2 + . . . + β N A N R \approx \beta_1A_1+\beta_2A_2+...+\beta_NA_N Rβ1A1+β2A2+...+βNAN
    A 1 , A 2 , . . . , A N = H v 1 ( R ) , H v 2 ( R ) , . . . , H v N ( R ) A_1,A_2,...,A_N=H_{v1}(R), H_{v2}(R), ..., H_{vN}(R) A1,A2,...,AN=Hv1(R),Hv2(R),...,HvN(R)
    整个卷积过程:
    C o n v ( W , R ) ≈ C o n v ( ∑ m = 1 M α m B m , ∑ n = 1 N β n A n ) = ∑ m = 1 M ∑ n = 1 N α m β n C o n v ( B m , A n ) Conv(W,R) \approx Conv(\sum_{m=1}^M \alpha_m B_m, \sum_{n=1}^N \beta_n A_n)=\sum_{m=1}^M\sum_{n=1}^N \alpha_m \beta_n Conv(B_m, A_n) Conv(W,R)Conv(m=1MαmBm,n=1NβnAn)=m=1Mn=1NαmβnConv(Bm,An)
Results

20190814105317.png
可以看出输入时全精度,权重是二值的时候,M=5,结果接近全精度。
[外链图片转存失败(img-rai90K88-1565881699189)(https://i.loli.net/2019/08/14/dDaCBXOZRcgkyP1.png)]
20190814110102.png

本文贡献

本文提出了用线性组合来近似权重和激活值,是一个不限制bit数的量化算法,不同的组合情况准确率最终可以和FP相近

不足

虽然准确率很高,但是计算复杂度太高。

参考文献:
[1] S. Zhou, Y. Wu, Z. Ni, X. Zhou, H. Wen, and Y. Zou. Dorefa-net: Training low bitwidth convolutional neural
networks with low bitwidth gradients. arXiv preprint arXiv:1606.06160, 2016.


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值