微软联合创始人都看好,这项技术有什么过人之处?

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

前言

本文针对当下深度学习模型太大的问题进行了技术改进,首次提出了XNOR-Net的概念。文章提出二值网络的两个版本,Binary-Weight-Network及XNOR-Net,可以通过二值化神经网络的技术方法,对网络规模进行压缩,节省32倍的存储空间,进而使神经网络在便携设备上运行成为可能。并且由于浮点数权重被二值化,运算得到了约58倍的速度加成,这使得网络在CPU上的实时运行成为可能。

值得一提的是,该篇文章的创作团队于2017年在美国西雅图成立了AI公司XNOR.AI,并得到了微软联合创始人Paul Allen个人的种子轮投资。代码开源,值得大家学习下。

在这里插入图片描述
论文链接:
https://sci-hub.yncjkj.com/https:/link.springer.com/chapter/10.1007/978-3-319-46493-0_32#

代码链接: http://allenai.org/plato/xnornet

论文信息及当前被引量: Rastegari M, Ordonez V, Redmon J, et al. Xnor-net: Imagenet classification using binary convolutional neural networks[C]//European conference on computer vision. Springer, Cham, 2016: 525-542.
【当前被引:3646】


1. 概述

在本文中,有:

  • 文章提出了二值网络的两个版本,分别叫Binary-Weight-Network以及XNOR-Net。其中,XNOR-Net的输入以及卷积核的参数都是二值的,Binary-Weight-Network只有卷积核的参数是二值的;

  • 该方法相对于之前的SOTA来说,最大的改变有两个,一个是提出了尺度因子,再一个是改变了CNN基础block的顺序;

  • 对卷积进行近似的二值表达,使得文章所提的网络有在CPU上跑实时的潜力;

  • 首次尝试在大数据集上进行二值网络的评估,具体为ImageNet分类任务。在该任务中,AlexNet的Binary-Weight-Network版本几乎不掉点;

  • 相对于SOTA代表BinaryConnect以及BinaryNets,文章所提出的方法在ImageNet上的top1指标高出它们16个点;

2. 二值卷积神经网络

在这里插入图片描述
不妨设L层的CNN架构为 ⟨ I , W , ∗ ⟩ \langle\mathcal{I}, \mathcal{W}, *\rangle I,W, I \mathcal{I} I是一系列tensor的集合,对于 I \mathcal{I} I中的每一个元素 I = I l ( l = 1 , . . . , L ) I = \mathcal{I}_{l(l=1,...,L)} I=Il(l=1,...,L),表示第 l l l层网络的输入,如Fig. 1中的绿色三维体所示。 W \mathcal{W} W也是一系列tensor的集合,但其中的每一个元素表示 W = W l k ( k = 1 , . . . , K l ) W = \mathcal{W}_{lk(k=1,...,K^l)} W=Wlk(k=1,...,Kl),表示第 l l l层的第 k k k个权重, K l K^l Kl则是第 l l l层的卷积核的个数。 ∗ * 表示 I I I W W W之间的卷积操作,在该文章中,假设卷积操作不包含偏置。具体地, I ∈ R c ∗ w i n ∗ h i n I \in \mathbb{R}^{c * w_{in} * h_{in}} IRcwinhin,而 W ∈ R c ∗ w ∗ h W \in \mathbb{R}^{c * w * h} WRcwh

文章提供二值CNN的两个变种,分别为:

  • Binary-weights: W \mathcal{W} W中的元素为二值;
  • XNOR-Networks I \mathcal{I} I W \mathcal{W} W都是二值。

2.1 Binary-Weight-Networks

为了使得Binary-Weight-Networks能够拥有二值的权重,文章首先通过一个二值滤波器 B ∈ { + 1 , − 1 } c ∗ w ∗ h B \in \{+1,-1\}^{c * w *h} B{+1,1}cwh,以及一个尺度因子 α ∈ R + \alpha \in \mathbb{R}^+ αR+估计出浮点数的权重 W ∈ W W \in \mathcal{W} WW,使得 W ≈ α B W \approx \alpha B WαB,进而,卷积操作可以近似为:
I ∗ W ≈ ( I ⊕ B ) α \mathbf{I} * \mathbf{W} \approx(\mathbf{I} \oplus \mathbf{B}) \alpha IW(IB)α
其中, ⊕ \oplus 表示不使用任何矩阵乘法的卷积操作。

不妨使用 ( I , B , A , ⊕ ) (\mathcal{I}, \mathcal{B}, \mathcal{A},\oplus) (I,B,A,)表示有二值权重的CNN,其中 B \mathcal{B} B表示一系列的二值 t e n s o r tensor tensor A \mathcal{A} A表示一系列正的浮点数的标量,进而, B = B l k \mathbf{B} = \mathcal{B}_{lk} B=Blk表示二值的卷积核, α = A l k \alpha = \mathcal{A}_{lk} α=Alk则为所谓的尺度因子,且有 W l k ≈ A l k B l k \mathcal{W}_{lk} \approx \mathcal{A}_{lk} \mathcal{B}_{lk} WlkAlkBlk

2.1.1 二值权重估计

我们现在假设 W \mathbf{W} W B \mathbf{B} B均为 R n \mathbb{R}^n Rn的向量,其中 n = c ∗ w ∗ h n = c * w * h n=cwh

我们希望,约等式 W ≈ α B \mathbf{W} \approx \alpha \mathbf{B} WαB的两边尽可能地相等,换成数学表达,即为求解下式的最优解:
J ( B , α ) = ∥ W − α B ∥ 2 α ∗ , B ∗ = argmin ⁡ α , B J ( B , α ) \begin{array}{r} J(\mathbf{B}, \alpha)=\|\mathbf{W}-\alpha \mathbf{B}\|^{2} \\ \alpha^{*}, \mathbf{B}^{*}=\underset{\alpha, \mathbf{B}}{\operatorname{argmin}} J(\mathbf{B}, \alpha) \end{array} J(B,α)=WαB2α,B=α,BargminJ(B,α)
对上式进行展开,有:
J ( B , α ) = α 2 B ⊤ B − 2 α W ⊤ B + W ⊤ W J(\mathbf{B}, \alpha)=\alpha^{2} \mathbf{B}^{\top} \mathbf{B}-2 \alpha \mathbf{W}^{\top} \mathbf{B}+\mathbf{W}^{\top} \mathbf{W} J(B,α)=α2BB2αWB+WW
由于 B ∈ { + 1 , − 1 } n \mathbf{B} \in \{+1,-1\}^n B{+1,1}n B T B = n \mathbf{B}^T\mathbf{B} = n BTB=n 为一个常数。此外,由于 W \mathbf{W} W是已知的变量,因此 W T W \mathbf{W}^T\mathbf{W} WTW的结果同样也是一个常数,我们不妨假设 c = W T W \mathbf{c} = \mathbf{W}^T \mathbf{W} c=WTW。进而,式(3)可以被改写为:
J ( B , α ) = α 2 n − 2 α W ⊤ B + c J(\mathbf{B}, \alpha)=\alpha^{2} n-2 \alpha \mathbf{W}^{\top} \mathbf{B}+\mathbf{c} J(B,α)=α2n2αWB+c
有了式(4)后,我们如何调整 B \mathbf{B} B,使得整体式子的值最小呢?由于 α \alpha α为正值, c \mathbf{c} c为常数,因此我们可以通过最大化以下的约束优化问题,即:
B ∗ = argmax ⁡ B { W ⊤ B } s.t.  B ∈ { + 1 , − 1 } n \mathbf{B}^{*}=\underset{\mathbf{B}}{\operatorname{argmax}}\left\{\mathbf{W}^{\top} \mathbf{B}\right\} \quad \text { s.t. } \mathbf{B} \in\{+1,-1\}^{n} B=Bargmax{WB} s.t. B{+1,1}n
上式的调整是比较好解决的,因为 B \mathbf{B} B只能是 + 1 +1 +1或者 − 1 -1 1,所以我们直接在 W i ≥ 0 \mathbf{W_i} \ge 0 Wi0时令 B i = + 1 \mathbf{B_i} = +1 Bi=+1,反之则令 B i = − 1 \mathbf{B_i}=-1 Bi=1简洁一点讲,求解最佳 B \mathbf{B} B的方式就是 B ∗ = s i g n ( W ) \mathbf{B}^* = sign(\mathbf{W}) B=sign(W)

至于最佳的尺度因子 α ∗ \alpha^* α的估计,我们可以求 J J J α \alpha α的偏导,并将该结果设为0,即:
α ∗ = W ⊤ B ∗ n \alpha^{*}=\frac{\mathbf{W}^{\top} \mathbf{B}^{*}}{n} α=nWB
将上式中的 B ∗ \mathbf{B^*} B替换成 s i g n ( W ) sign(\mathbf{W}) sign(W),则有:
α ∗ = W ⊤ sign ⁡ ( W ) n = ∑ ∣ W i ∣ n = 1 n ∥ W ∥ ℓ 1 \alpha^{*}=\frac{\mathbf{W}^{\top} \operatorname{sign}(\mathbf{W})}{n}=\frac{\sum\left|\mathbf{W}_{i}\right|}{n}=\frac{1}{n}\|\mathbf{W}\|_{\ell 1} α=nWsign(W)=nWi=n1W1
即,最优的尺度因子 α \alpha α就是权重绝对值的平均值。

2.1.2 二值权重网络的训练

CNN的一次训练基本包含三个步骤,即前向推理,反向传播,参数更新。

为了训练一个权重为二值的CNN,我们仅仅在前向推理与反向传播的时候对二值进行传播。为了计算符号函数 s i g n ( r ) sign(r) sign(r)的梯度,我们遵循Denil等(2013)的方法,即 ∂ sign  ∂ r = r 1 ∣ r ∣ ≤ 1 \frac{\partial \text { sign }}{\partial r}=r 1_{|r| \leq 1} r sign =r1r1,经过尺度矫正后的 s i g n sign sign函数在反向传播时的梯度计算为:
∂ C ∂ W i = ∂ C W i ‾ ( 1 n + ∂ sign  ∂ W i α ) \frac{\partial C}{\partial W_{i}}=\frac{\partial C}{\overline{W_{i}}}\left(\frac{1}{n}+\frac{\partial \text { sign }}{\partial W_{i}} \alpha\right) WiC=WiC(n1+Wi sign α)
至于参数的更新,由于梯度下降的程度往往是微小的,因此我们使用高精度的浮点数的权值对参数进行更新。Denil等(2013)以及Courbariaux等(2015)同样也采用了这样的训练策略,具体见以下算法:
在这里插入图片描述
该算法具体地描述了如何使用二值权重对CNN进行训练。首先,我们通过计算 B \mathcal{B} B A \mathcal{A} A对卷积核进行二值化。其次,我们使用二值化的权重及其对应的尺度因子进行前向传播。再次,我们通过计算卷积核 W ~ \tilde{\mathcal{W} } W~的梯度进行反向传播的调用。最后,进行参数以及学习率的更新。

一旦网络训练结束,就不必要留着浮点数的权重,因为我们的前向推理只需要二值的权重。

2.2 XNOR-Networks

尽管我们现在找到了二值权重以及尺度因子的估计方式,进而尽可能地模拟真实的浮点数权重。但输入卷积网络的值仍然是实数的。如果我们能够使得输入也是二值的,那么整个网络就可以变得更加的高效,仅仅使用一些 X N O R XNOR XNOR p o p c o u n t popcount popcount的操作就可以完成网络的推理。

基于这样的思想,我们进一步地将输入也为二值的网络称之为 X N O R XNOR XNOR网络。为了限制一个卷积网络 ⟨ I , W , ∗ ⟩ \langle\mathcal{I}, \mathcal{W}, *\rangle I,W,既有二值的权重,又有二值的输入,我们需要在卷积操作的每一步中都强制进行二值操作。卷积本身包括了重复的位移操作以及点积。如果我们将点积表达为二值操作的形式,那么卷积就可以近似地变成一种二值操作。

在两个二值向量之间的点积可以使用 X N O R XNOR XNOR- B i t c o u n t i n g Bitcounting Bitcounting的方式进行等效替代。

在这一小节中,将会介绍如何通过两个取值为 { + 1 , − 1 } n \{+1,-1\}^n {+1,1}n的向量之间的点乘来近似两个在 R n \mathbb{R}^n Rn空间的向量的点乘。

其次,将介绍如何使用这样的近似方式来估计两个 t e n s o r tensor tensor之间的卷积操作。

2.2.1 二值点积

为了能够近似 X , W ∈ R n \mathbf{X},\mathbf{W} \in \mathbb{R}^n X,WRn之间的点积,我们使得约等式 X T W ≈ β H T α B \mathbf{X}^T\mathbf{W} \approx \beta \mathbf{H}^T\alpha\mathbf{B} XTWβHTαB的两边尽可能的相等,其中, H , B ∈ { + 1 , − 1 } n \mathbf{H},\mathbf{B} \in \{+1,-1\}^n H,B{+1,1}n,且 β , α ∈ R + \beta, \alpha \in \mathbb{R}^+ β,αR+。这也就相当于求解以下的优化式:
α ∗ , B ∗ , β ∗ , H ∗ = argmin ⁡ α , B , β , H ∥ X ⊙ W − β α H ⊙ B ∥ \alpha^{*}, \mathbf{B}^{*}, \beta^{*}, \mathbf{H} *=\underset{\alpha, \mathbf{B}, \beta, \mathbf{H}}{\operatorname{argmin}}\|\mathbf{X} \odot \mathbf{W}-\beta \alpha \mathbf{H} \odot \mathbf{B}\| α,B,β,H=α,B,β,HargminXWβαHB
其中, ⊙ \odot 表示逐点的乘法,我们定义:

  • Y ∈ R n \mathbf{Y} \in \mathbb{R}^n YRn,其中 Y i = X i W i \mathbf{Y_i} = \mathbf{X_i} \mathbf{W_i} Yi=XiWi
  • C ∈ { + 1 , − 1 } n \mathbf{C} \in \{+1, -1\}^n C{+1,1}n,其中 C i = H i B i \mathbf{C_i} = \mathbf{H_i}\mathbf{B_i} Ci=HiBi
  • γ ∈ R + \gamma \in \mathbb{R}^+ γR+,且 γ = β α \gamma = \beta \alpha γ=βα

进而,可以将式(9)改写为:
γ ∗ , C ∗ = argmin ⁡ γ , C ∥ Y − γ C ∥ \gamma^{*}, \mathbf{C}^{*}=\underset{\gamma, \mathbf{C}}{\operatorname{argmin}}\|\mathbf{Y}-\gamma \mathbf{C}\| γ,C=γ,CargminYγC

而在式(2)中,我们可以知道:
C ∗ = sign ⁡ ( Y ) = sign ⁡ ( X ) ⊙ sign ⁡ ( W ) = H ∗ ⊙ B ∗ \mathbf{C}^{*}=\operatorname{sign}(\mathbf{Y})=\operatorname{sign}(\mathbf{X}) \odot \operatorname{sign}(\mathbf{W})=\mathbf{H}^{*} \odot \mathbf{B}^{*} C=sign(Y)=sign(X)sign(W)=HB
由于 ∣ X i ∣ |\mathbf{X_i}| Xi以及 ∣ W i ∣ |\mathbf{W_i}| Wi都是独立的,且 Y i = X i W i \mathbf{Y_i} = \mathbf{X_i}\mathbf{W_i} Yi=XiWi,那么自然有:
E [ ∣ Y i ∣ ] = E [ ∣ X i ∥ W i ∣ ] = E [ ∣ X i ∣ ] E [ ∣ W i ∣ ] \mathbf{E}\left[\left|\mathbf{Y}_{i}\right|\right]=\mathbf{E}\left[\left|\mathbf{X}_{i} \| \mathbf{W}_{i}\right|\right]=\mathbf{E}\left[\left|\mathbf{X}_{i}\right|\right] \mathbf{E}\left[\left|\mathbf{W}_{i}\right|\right] E[Yi]=E[XiWi]=E[Xi]E[Wi]
进而有:
γ ∗ = ∑ ∣ Y i ∣ n = ∑ ∣ X i ∥ W i ∣ n ≈ ( 1 n ∥ X ∥ ℓ 1 ) ( 1 n ∥ W ∥ ℓ 1 ) = β ∗ α ∗ \gamma^{*}=\frac{\sum\left|\mathbf{Y}_{i}\right|}{n}=\frac{\sum\left|\mathbf{X}_{i} \| \mathbf{W}_{i}\right|}{n} \approx\left(\frac{1}{n}\|\mathbf{X}\|_{\ell 1}\right)\left(\frac{1}{n}\|\mathbf{W}\|_{\ell 1}\right)=\beta^{*} \alpha^{*} γ=nYi=nXiWi(n1X1)(n1W1)=βα

2.2.2 二值卷积

对于卷积核 W ∈ R c ∗ w ∗ h \mathbf{W} \in \mathbb{R}^ {c * w * h} WRcwh,以及输入tensor I ∈ R c ∗ w i n ∗ h i n \mathbf{I} \in \mathbb{R}^{c * w_{in} * h_{in}} IRcwinhin,需要对 I \mathbf{I} I中的每一个子tensor(大小与卷积核 W \mathbf{W} W一致)都计算对应的尺度因子 β \beta β。在下图中的第二行,用 X 1 \mathbf{X_1} X1以及 X 2 \mathbf{X_2} X2示意了两个子tensor。由于子tensor之间的重叠,对所有可能的子tensor进行尺度因子 β \beta β的计算的时候将会导致大量的冗余计算。

针对该问题,首先,文章计算了矩阵 A = ∑ ∣ I : , : , i ∣ c \mathbf{A} = \frac{\sum{|\mathbf{I}:,:,i|}}{c} A=cI:,:,i,物理含义为输入 I \mathbf{I} I中跨通道的元素的绝对值的平均值。然后,我们对矩阵 A \mathbf{A} A进行2D的卷积,2D核的表达为 k ∈ R w ∗ h , K = A ∗ k , 其 中 ∀ i j k i j = 1 w × h k \in \mathbb{R}^{w * h}, \mathbf{K} = \mathbf{A} * k,其中\forall i j \mathbf{k}_{i j}=\frac{1}{w \times h} kRwh,K=Akijkij=w×h1

K \mathbf{K} K包含了所有的子tensor的尺度因子 β \beta β K i j \mathbf{K_{ij}} Kij对应了子tensor中心位置在 i j ij ij的对应尺度因子 β \beta β

该过程如下图的第三行所示:
在这里插入图片描述
一旦我们得到了对应于权重的尺度因子 α \alpha α以及对应于所有子tensor的尺度因子 β \beta β,我们就可以使用二值操作来近似地估计输入 I \mathbf{I} I以及卷积核权重 W \mathbf{W} W 之间的卷积操作,具体为:
I ∗ W ≈ ( sign ⁡ ( I ) ⊛ sign ⁡ ( W ) ) ⊙ K α \mathbf{I} * \mathbf{W} \approx(\operatorname{sign}(\mathbf{I}) \circledast \operatorname{sign}(\mathbf{W})) \odot \mathbf{K} \alpha IW(sign(I)sign(W))Kα
其中,$ ⊛ ⁡ 表 示 使 用 \circledast \operatorname\ 表示使用  使XNOR 以 及 以及 bitcount$的卷积操作。该操作的示意图可见上图中的最后一行。

2.2.3 训练 X N O R XNOR XNOR网络

对于CNN来说,典型的block包括:卷积、BN、激活、池化,如Fig3. 中的左图所示。

实际上在二进制输入上进行池化,会导致严重的信息丢失,因此,我们将池化层放在卷积的后面。为了进一步减少二值化所引入的信息损失,我们在进行二值化之前对输入进行归一化,这样的好处是使得数据尽可能地保持零均值,进而减少量化误差。二值化CNN的block如下图中的右图所示。
在这里插入图片描述
二值激活层 B i n A c t i v BinActiv BinActiv计算 K \mathbf{K} K以及符号函数 s i g n ( I ) sign(\mathbf{I}) sign(I)。对于下一层 B i n C o n v BinConv BinConv来说,已经给定了 K \mathbf{K} K以及 s i g n ( I ) sign(\mathbf{I}) sign(I),即可以计算二值卷积。最后一层,即 p o o l pool pool层,则直接应用池化操作。此外,我们也可以在二值卷积后插入非线性的激活层,比如说 R e L U ReLU ReLU

一旦我们构建出基本的CNN架构后,就可以使用与二值权重网络训练一致的方式进行网络训练。

2.2.3.1 二值梯度

在反向传播过程中的计算瓶颈是:计算卷积核 w w w与输入的梯度 g i n g^{in} gin之间的卷积。类似于前向传播过程中的二值化,我们也可以在反向传播过程中对 g i n g^{in} gin进行二值化,这样的二值化会导致非常高效的训练过程。为了保持所有梯度下降时在所有维度上的最大变化,我们使用 m a x i ( ∣ g i i n ∣ ) max_i(|g_i^{in}|) maxi(giin)作为尺度因子。

2.2.3.2 k比特的量化

到目前为止,前面介绍的都是一比特的量化。其实这个过程可以很方便地推广至其他比特的量化的,只要将 s i g n sign sign函数替换成:$q_{k}(x)=2\left(\frac{\left[\left(2{k}-1\right)\left(\frac{x+1}{2}\right)\right]}{2{k}-1}-\frac{1}{2}\right) 就 可 以 了 , 其 中 就可以了,其中 [.] 表 示 表示 rounding 操 作 , 且 有 操作,且有 x \in [-1,1]$。

3. 实验

3.1 效率分析

在一个标准卷积中,总操作次数为 c N w N I cN_w N_I cNwNI,其中 c c c为通道数, N w = w h N_w =wh Nw=wh, N I = w i n h i n N_I=w_{in}h_{in} NI=winhin

值得注意的是,一些现代的cpu可以将乘法和加法融合为单个循环操作。在这些cpu上,二进制权重网络不能提供速度提升。

文章所提出的网络的二值近似有 c N w N I cN_wN_I cNwNI个二进制运算和 N I N_I NI个非二进制运算。在现在的CPU中,我们可以在一个CPU时钟时间内中执行64个二进制运算,因此加速的倍数可以通过该式进行计算:
S = c N W N I 1 64 c N W N I + N I = 64 c N W c N W + 64 S=\frac{c N_{\mathrm{W}} N_{\mathrm{I}}}{\frac{1}{64} c N_{\mathrm{W}} N_{\mathrm{I}}+N_{\mathrm{I}}}=\frac{64 c N_{\mathrm{W}}}{c N_{\mathrm{W}}+64} S=641cNWNI+NIcNWNI=cNW+6464cNW
显然,加速与通道数以及卷积核的大小有关系,与输入的尺寸没有关系。
在这里插入图片描述
在Fig4中的(b)和©中,为不同数量的通道以及卷积核尺寸输入所带来的加速比的区别。当对一个参数进行改变的时候,我们修正了其他的参数为: c = 256 , n I = 1 4 2 , n W = 3 2 c= 256, n_{\mathbf{I}} = 14^2, n_{\mathbf{W}} = 3^2 c=256,nI=142,nW=32(对于ResNet来说,大多数的卷积都是这样的参数)。

使用这种卷积的近似结构,理论上能够获得62.27倍的加速,实际上考虑到内存分配还有访存的一些时间消耗,真正在一个卷积操作中得到的加速倍数为58倍。

对于比较小的通道( c = 3 c = 3 c=3)以及比较小的卷积核大小 N W = 1 ∗ 1 N_{\mathbf{W}}= 1 *1 NW=11来说,加速没有那么好。这使得我们不由地想到,对于第一层和最后一层,是不是没有必要进行二值化。第一层的通道数通常是3,而最后一层的卷积核大小通常是1 * 1 。在BNN(Courbariaux等, 2016)中,也采用了类似的策略。

在Fig 4(a)中,表示了对于AlexNet、VGG-19、ResNet-18三种CNN的网络结构分别进行二值量化所需要的内存占用与不进行量化所需要的内存占用的对比。显然,Binary-weight-networks非常非常的小,可以轻易的适应便携式设备。在Fig 4中,给出了二值卷积的计算效率以及内存占用的分析。这样的分析也适用于BNN(Courbariaux等, 2016)和BinaryConnect(Courbariaux等,2015)。

而该文与之前方法的主要区别就在于使用了尺度因子,在不增加计算负担的前提下,大大地提高了精度。

3.2 影像分类任务

文章评估了二值化方法在图像分类任务上的性能。

当时,二值网络已经在比较小的数据集(如CIFAR-10、MNIST、SVHN)上给出了对应的评估结果。

为了与SOTA进行比较,文章首次在大型的数据集ImageNet (ILSVRC2012)上进行方法的评估。ImageNet有大约1.2 M的训练图像,其来自1K个类别,且有着50k张验证图像。与CIFAR和MNIST这些小数据集相比,ImageNet中的图像是分辨率较高的自然图像。

实验使用Top-1和Top-5来作为评估指标。

实验采用三种不同的CNN架构作为二值化的基本架构,分别是AlexNet(Krizhevsky 等, 2012)、ResNet(He等,2015)以及GoogLenet(Szegedy等,2015)的一个变体。

实验比较了文章所提出的二值权重网络(Binary-weight-network, 简称BWN)、BinarvConnect(简称BC)、文章所提出的XNOR-Networks(XNOR-Net)以及BinaryNeuralNet(简称BNN)这几个方法之间的性能。

BC在正向推理和反向传播过程中均使用二值权值训练深度神经网络。与文章所提出的方法类似,BC在参数更新步骤中保留了浮点数的权值。然而,文章所采用的二值化方法和BC不同。在BC中,二值化可以是确定性的,也可以是随机的,而在本对比实验中,对BC采用了确定性二值化的方式,因为随机二值化并非很有效,关于随机化二值化为什么不好用的原因,在BNN中是有所讨论的。

BNN是一种在推理时采用二值的权重与激活,且在训练的时候进行梯度计算的二值化方法。概念上来看,这是一种类似于XNOR-Network的方法,但BNN中的二值化方法和以及网络结构与XNOR-Net。其训练算法与BC类似,在评估时同样使用了确定性二值化。

3.2.1 CIFAR-10数据集结果

BC和BNN在CIFAR-10、MNIST、SVHN上的表现已经是SOTA了。

当BWN和XNOR-Net采用与BC和BNN相同的网络结构时,在CIFAR-10上的错误率分别为9.88%和10.17%。

在接下来的实验中,则探索了在一个更大、更具挑战性的数据集(ImageNet)上获得SOTA效果的可能性。

3.2.2 AlexNet

AlexNet有5个卷积层和2个全连接层。这个架构是第一个在ImageNet分类任务中体现CNN强大能力的架构。网络有约61 M个参数。

实验将AlexNet与BN层结合使用。

  • 训练: 在每次迭代中,图像先沿着较短的边resize为256,然后再随机裁剪成224 x 224大小,作为训练图像。使用训练算法训练了共16轮,bs为512。实验使用输出的softmax上的负对数似然作为分类损失函数。
    在AlexNet的复现中,没有使用Local-Response-Normalization (LRN) 层。用于更新BWN和BC参数的优化器采用了带动量的SGD,动量设为0.9。对于XNOR-Net和BNN,优化器采用ADAM ,因为ADAM收敛更快,而且对于二值的输入往往也能达到更好的精度。学习率调整策略为,从0.1开始,每隔4轮学习率衰减0.01。

  • 推理结果:使用224 x224的图像进行前向推理。

Figure 5展示了在训练和推理时的top-1和top-5变化曲线:
在这里插入图片描述
虚线表示训练精度,实线表示验证精度。在所有轮,文章所提的方法都大大超过了BC和BNN(~17%)。

下表将文章所提方法的最终精度与BC和BNN进行了比较:
在这里插入图片描述

表中可见,权重的尺度因子 α \alpha α比输入的尺度因子 β \beta β似乎有效的多。

3.2.3 ResNet以及GoogleNet 变种

在ResNet与GoogleNet变种实验中,具体的训练细节与推理细节与AlexNet类似,详见原论文,在此仅贴出对比结果,具体见下图及下表:
在这里插入图片描述
在这里插入图片描述

3.3 消融实验

该方法与以往的二值化方法有两个关键的区别:

  1. 二值化技术;

  2. 二值化CNN中的block结构。

对于二值化,在每次训练迭代中找到最优的缩放因子。对于block结构,对其中的层进行了重排序,目的是减少训练XNOR-Net的量化损失。

在消融实验中,评估了这两个关键区别对二进制网络性能的影响:

  1. 不使用公式(7)计算缩放因子 α \alpha α,直接将 α \alpha α视为网络参数。换句话说,二进制卷积之后的层使用每个卷积核的标量参数乘以卷积的输出。这类似于在BN中计算仿射参数。表3a比较了二值网络中这两种计算比例因子 α \alpha α的效果。
  2. 表3b比较了标准块结构C-B-A-P (卷积,BN ,激活,池化)和文章所采用的结构B-A-C-P(A为二值的激活)

在这里插入图片描述

4. 结论

本文介绍了一个简单、有效和精确的神经网络二值化的方式,这在理论上使得网络的规模减少了近32倍,进而提供了将神经网络加载到内存有限的便携设备的可能性。此外,文章所提出的XNOR-Net,其使用按位操作的方式来近似卷积,进而提供了约58倍的速度加成,这使得网络在CPU上的实时运行成为可能。

5. 参考文献

  1. Courbariaux, M., Bengio, Y., David, J.P.: Binaryconnect: training deep neural networks with binary weights during propagations. In: Advances in Neural Information Processing Systems, pp. 3105–3113 (2015)
  2. Courbariaux, M., Bengio, Y.: Binarynet: training deep neural networks with weights and activations constrained to +1 or −1. CoRR (2016)
  3. Krizhevsky, A., Sutskever, I., Hinton, G.E.: Imagenet classification with deep convolutional neural networks. In: Advances in neural information processing systems, pp. 1097–1105 (2012)
  4. He, K., Zhang, X., Ren, S., Sun, J.: Deep residual learning for image recognition. CoRR (2015)
  5. Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., Erhan, D., Vanhoucke, V., Rabinovich, A.: Going deeper with convolutions. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1–9 (2015)

版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。

3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。点击加入3D视觉开发者社区,和开发者们一起讨论分享吧~

或可微信关注官方公众号 3D视觉开发者社区 ,获取更多干货知识哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/71285.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

王朝的更迭:那个最不受微软员工待见的高管走了

西雅图IT圈:seattleit 【今日作者】Dexter 读书巨慢理事会会长 Reorg —— 一个让微软员工不寒而栗的词 业界公认把Reorg(业务重组)玩得最6的,非微软莫属。没办法,公司大员工多,高管们最喜欢时不时Reorg一把…

沈向洋终于也离开微软!曾是华人在美科技圈最高级高管

整理 | AI科技大本营 出品 | AI科技大本营(ID:rgznai100) 【导读】11 月 14 日,微软官方发布公告,宣布公司执行副总裁沈向洋将于 2020 年初离职。离职后,沈向洋表示将“探寻超越微软、超越商业的新挑战”。同时&#x…

微软重组变两大事业部:Windows主管离职

微软CEO纳德拉通过内部邮件宣布,整个公司进行重大重组,划分为两个新的事业部(部门),同时Windows业务主管Terry Myerson(特里梅尔森)将离开微软。 Terry Myerson最为人诟病的就是推倒了Windows Mobile而打造全新的Windows Phone,结…

淡马锡、欧莱雅、微软、礼来、港交所等公司高管变动

一周企业高管变动要闻。 全球 新加坡主权财富基金淡马锡(Temasek)发表声明称,何晶将从首席执行官和董事会职务上退休。狄澜(Dilhan Pillay Sandrasegara)将接替何晶担任执行董事和首席执行官,自10月1日起生效。李腾傑(Lee Theng Kiat)将继续担任淡马锡董…

微软中国换帅!原欣任中国区总裁

视学算法报道 编辑:桃子 好困 【导读】9月26日,微软正式宣布任命原欣为微软中国区总裁。 9月26日,微软正式宣布,任命原欣(Bessie Yuan)为微软中国区总裁。 原欣将直接向微软公司全球资深副总裁、大中华区…

潜入微软总部 感受微软企业文化

潜入微软总部 感受微软企业文化 【前 言】     对绝大多数从事IT行业的人来说,“微软”这个名字熟悉而又陌生。说它熟悉,是因为微软公司的产品早已深入到世界的各个角落,每一个从事IT行业的人,不论你是否喜欢微软&#xff0…

这才是 Chrome 控制台的正确使用方法!太重要了!

Chrome 控制台是很多开发者的必备工具之一,但你真的掌握了它的精髓吗?是否还是全靠 console.log() 排查问题? 其实,控制台的功能远比这更强大,用好控制台,能帮助我们更加准确高效地发现问题、定位问题&…

Google Chrome浏览器 控制台全解析

Google Chrome浏览器 控制台全解析 no comments Posted on 八 31 2011 by sunshine 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Firebug,对于前端开发可谓神器。 在Chrome…

谷歌浏览器控制台使用

原文出处: ctriphire 大家都有用过各种类型的浏览器,每种浏览器都有自己的特色,本人拙见,在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的…

chatgpt赋能python:利用Python加速百度网盘——SEO文章

利用Python加速百度网盘——SEO文章 随着互联网快速发展,越来越多的文件被上传至云端进行储存和分享。而百度网盘作为国内云存储市场的一员,具有较大的用户群体。然而,在实际使用过程中,用户可能会遇到一些不便。比如&#xff0c…

chatgpt赋能python:用Python自动化办公:优化SEO的关键

用Python自动化办公:优化SEO的关键 随着互联网的快速发展和人们对搜索引擎的依赖加深,SEO(搜索引擎优化)这个概念也逐渐受到人们的关注。SEO可以帮助网站排名更高,吸引更多的访客并提高转化率,成为了许多企…

chatgpt赋能python:用Python自动化办公在SEO中的应用

用Python自动化办公在SEO中的应用 在今天的数字化时代,SEO也成为了许多企业争相攻占的一块蛋糕。而在SEO中,数据分析和信息收集是无法避免的一环,而这些又是非常繁琐的任务,需要大量人力和时间来完成。但是,有没有一种…

chatgpt赋能python:Python能自动化办公吗?

Python能自动化办公吗? 在当今信息时代,办公工作中我们不可避免地要使用电脑,进行各种办公处理,比如文字处理、数据处理、图表制作等。这些操作看起来简单,但从事这些工作的人员都知道,日积月累之后&#…

鸿蒙os跳水,鸿蒙OS系统和华为Mate40即将登场,华为Mate30放弃挣扎价格跳水

原标题:鸿蒙OS系统和华为Mate40即将登场,华为Mate30放弃挣扎价格跳水 鸿蒙OS系统和华为Mate40即将登场,华为Mate30放弃挣扎价格跳水! 不管怎么说吧,这一次的曝光也是让大家觉得鸿蒙OS系统离大家越来越近了,…

面试题 16.11. 跳水板

原题链接: https://leetcode-cn.com/problems/diving-board-lcci/ 题目描述 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法&#x…

1051: 奥运会跳水比赛

// 输入输入有多行。第一行是球队数量n&#xff08;1<n<10&#xff09;接下来有n行&#xff0c;每行数据包含运动员的姓名&#xff08;不含空格&#xff0c;长度不超过30个字符&#xff09;和5个浮点数&#xff0c;分别表示5个裁判的评分&#xff08;0<评分<10&…

如何选择适合你的兴趣爱好(五十三),跳水

围城网的摇摇今天给大家带来了“如何选择适合你的兴趣爱好”系列专辑的第五十三讲——跳水。跳水是一项水上运动项目&#xff0c;它是从高处用各种姿势跃入水中或是从跳水器械上起跳&#xff0c;在空中完成一定动作姿势&#xff0c;并以特定动作入水的运动。跳水运动在跳水池中…

7金5银,中国跳水梦之队背后的“黑科技“是什么?

8月7日&#xff0c;中国跳水“梦之队”在东京奥运会上以7金5银收官&#xff0c;4个单项包揽全部冠亚军&#xff0c;4个双人项目收获3金。14岁小将全红婵惊艳上演“水花消失术”&#xff0c;满分夺金&#xff1b;男子跳水10米台决赛&#xff0c;曹缘再现“零水花”神操作&#x…

c语言 10米跳水,用VB进行编程:五位跳水高手将参加十米高台跳水决赛。有好事者让五个人根据实力预测比赛结果...

满意答案 rwqrdhhetb 2013.06.09 采纳率&#xff1a;48% 等级&#xff1a;12 已帮助&#xff1a;16687人 Private Sub Command1_Click() For a 1 To 5 For b 1 To 5 For c 1 To 5 For d 1 To 5 For e 1 To 5 a1 (b 2) Or (a 3) b1 (b 2) Or (e 4) c1 (c 1) Or …

新宝概述遇阻3600点关口遇公布12月经济数据

A股继续上演习惯性特色&#xff01;逢公布经济数据市场都要大跌&#xff0c;跳水做空当日公布数据一天最低点收盘习以为常了。无论是数据好与坏市场都要做空下跌&#xff01; 欧美股市上涨&#xff01;港股恒生指数早盘高开&#xff0c;A股市场的下跌拖累影响了港股恒生指数震…