前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二值网络--Bi-Real Net: Enhancing the Performance of 1-bit CNNs

二值网络--Bi-Real Net: Enhancing the Performance of 1-bit CNNs

作者头像
用户1148525
发布2019-05-29 15:38:37
9480
发布2019-05-29 15:38:37
举报
文章被收录于专栏:机器学习、深度学习

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档