Bi-Real Net: Enhancing the Performance of 1-bit CNNs With Improved Representational Capability and Advanced Training Algorithm
ECCV2018
https://github.com/liuzechun/Bi-Real-net
本文在 借鉴残差网络的 shortcut思想,将其应用到 XNOR-Net 的网络结构中
3 Methodology
3.1 Standard 1-bit CNNs and Its Representational Capability
1-bit CNN 网络主要指 在 CNN网络中间的卷积层中 权重参数和响应值都是二值的。二值化是通过 sign 函数完成的。
ar and wr indicate the real activation and the real weight
real activation 实数值响应存在于 1-bit CNN 中的训练和推理阶段,因为 卷积和 batch normalization(如果使用的话)。图2显示给定一个 二值 响应图和 一个二值的卷积权重核,则输出的响应是位于正负9的一个奇数。如果batch normalization 使用了,那么整数响应将被映射为实数。在训练阶段实数权重被用于更新二值权重。
和32位的权重参数表示的实数CNN模型相比较,1-bit CNN网络模型大小减少了 32倍多。更重要的是,因为响应也是二值的,所以卷积操作可以通过位运算 XNOR操作和一个 bit-count operation。实数CNN模型中的卷积操作是通过实数乘法完成的。所以 1-bit CNN模型计算量减少了 近 64倍。
但是二值网络的精度下降的比较多,尤其在大型数据库上如 ImageNet。我们认为这主要是因为 二值网络的表征能力较差 low representational capacity。实数可以表示更多的 possible configurations,而二值网络相比于实数网络能够表示的 configurations 要少很多。
3.2 Bi-Real Net Model and Its Representational Capability
这里我们 在使用二值化符号函数之前 使用一个简单的 shortcut 来保留 实数响应 real activations,这样可以增加 1-bit CNN的 表征能力 representational capability
We denote R(x) as the representational capability of x
因为实数响应和二值响应都被保留,所以我们称这个模型为 Bi-Real net
As both real and binary activations are kept, we call the proposed model as Bi-Real net
因为这个简单的 identity shortcut,1-bit CNN 的表征能力得到显著提升,
The representational capability of each block in the 1-bit CNN is significantly enhanced due to the simple identity shortcut
额外增加的计算量很少。
3.3 Training Bi-Real Net
因为 activations 和 weight parameters 都是二值的,连续函数优化方法如 stochastic gradient descent(SGD) 不能被直接用于训练 1-bit CNN。主要存在两个问题:1)在 activations 上如何计算符号函数的梯度,因为其 non-differentiable;2)二值权重的损失函数梯度因为太小导致难以改变 权重的符号。对于问题1,文献【7】提出使用 piecewise linear function 的梯度来近似 gradient of the sign function on activations。对于问题2,文献【7】使用 real-valued weights 来进行权重更新计算。这里我们提出一个新的训练算法和一个新的初始化方法
Approximation to the derivative of the sign function with respect to activations 关于响应的符号函数导数的近似
这里我们使用一个 piecewise polynomial function 来代替文献【7】中的 clip function 近似估计 derivative of the sign function
Magnitude-aware gradient with respect to weights
这里我们介绍如何更新二值权重参数。
标准的梯度下降算法不能被直接应用,因为梯度值太小,不能改变二值权重。为了解决这个问题,文献【7】在训练阶段引入一个实数权重矩阵和一个符号函数,那么对这个实数权重矩阵进行二值化就可以得到二值权重参数矩阵。在 backward pass 时,实数参数矩阵就可以通过 梯度下降方法进行更新。
在文献【7】的梯度更新计算中,梯度只和实数参数矩阵的符号相关,和实数参数矩阵的幅值无关。 基于这个观察,我们提出一个 magnitude-aware function 来代替 上面的 符号函数 sign function。这样梯度和实数参数矩阵的符号和幅值都相关。
Initialization 初始化方法
文献【14】中 1-bit CNNs 的初始值 由 在 ImageNet 预训练的实数网络参数得到。但是 ReLU 的影响是非负的,但是符号函数取值 正负1。因为这个差异,使用 ReLU 的实数CNN 可能不适合用于 1-bit CNNs 的初始化,所以我们我们使用一个 clip(−1,x,1) 代替 ReLU 来预训练实数 CNN 网络模型,因为 clip function 的响应比 ReLU 更接近 符号函数的响应。这个有效性在实验中也得到验证。
最后如果将 Ensemble 和 Bi-Real Net 结合起来,不知道最后的精度是多少?
11