前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >二值网络--XNOR-Net: ImageNet Classification Using Binary Convolutional

二值网络--XNOR-Net: ImageNet Classification Using Binary Convolutional

作者头像
用户1148525
发布2019-05-27 19:08:22
7980
发布2019-05-27 19:08:22
举报
文章被收录于专栏:机器学习、深度学习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1436693

XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks

ECCV2016

http://allenai.org/plato/xnornet

本文介绍了两种二值网络: Binary-Weight-Networks 和 XNOR-Networks,Binary-Weight-Networks 只对滤波器 filters 进行二值化,XNOR-Networks 同时对 滤波器 和滤波器的输入进行二值化,这里的滤波器输入就是其他文献中说的 响应 activation

3 Binary Convolutional Neural Network

3.1 Binary-Weight-Networks

对于一个 real-value weight filter W,我们用一个 binary filter B 和 scaling factor α 来近似:W ≈ αB,那么一个卷积运算就可以被近似表示为:I ∗ W ≈ (I ⊕ B)α ,⊕ indicates a convolution without any multiplication

Estimating binary weights: 通过最优化函数公式推导得到的结论是:

1)B∗ = sign(W),二值滤波器 B 就是通过符号函数得到的,W 对应的值大于0 , B 对应的值为 +1, W 对应的值小于0 ,

B 对应的值为 -1, taking the sign of weight values

2)α 的最优值为 滤波器绝对值的均值,optimal scaling factor is the average of absolute weight values

Training Binary-Weights-Networks:

CNN网络训练的每个迭代步骤包括三个部分: forward pass, backward pass and parameters update

我们只在 forward pass 和 backward propagation 进行 权重参数 weights 的二值化。在计算符号函数的梯度时,我们采用文献【11】策略,因为符号函数基本不可导,所以采用在+1/-1 区间线性化近似表示,这样在 +1/-1 区间 导数为 1. 对于参数的跟新,这里我们使用 高精度的实数权重参数来进行。

3.2 XNOR-Networks

一个卷积包括重复的 shift operation 平移 和 dot product 点积。dot product 点积 里面主要是乘法算法,如果我们将这个 dot product 点积 可以用 二值操作表示,那么整个卷积就可以用 XNOR-Bitcounting operations 位运算,不需要乘法了。

假定 the dot product between X,W,X ≈ βH W≈αB, where H,B 为二值参数矩阵,令 Y=XW, C=HB,二值化近似问题变为一个最优化问题: argmin||Y − γC||

最优解为: C∗ = sign(Y) = sign(X) .* sign(W) = (H∗) .* (B∗)

.* indicates element-wise product

γ 的最优值 为 X 和 W 的绝对值均值 乘积

Binary Convolution: 在做卷积时,我们在滑动滤波器时,需要计算滤波器对应的 I 的近似二值参数,相邻的 I 存在区域重叠,所以存在大量的冗余计算,这里我们采用积分图的思想,实现将所有需要计算的 输入二值参数 一次性计算后,后面就不需要重复计算,直接查表使用

传统的一个 CNN 经典模块包括四个部分,按照以下顺序进行:1-Convolutional, 2-Batch Normalization, 3-Activation and 4-Pooling。 这里为了降低二值带来的信息丢失,我们调整了一下顺序结构:1-Batch Normalization,2-BinActivation,3-BinConv,4-Pool。

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

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

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

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

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