ABCnet——高精度二值化网络(Binary Neural Network)

"Towards Accurate Binary Convolutional Neural Network"这篇文章提出了ABCnet,是一种表示精度较高的二值化网络结构(作为XNORnet的演进)。有关XNORnet及其优势可以参考论文:"XNORNet: ImageNet Classification Using Binary Convolutional Neural Networks"。

论文地址:https://arxiv.org/abs/1711.11294

ABCnet GitHub:https://github.com/layog/Accurate-Binary-Convolution-Network

XNORnet GitHub:https://github.com/ayush29feb/Sketch-A-XNORNet

 

1、权重参数二值化的线性组合

文章采用一组二值化基(binary filter base)的线性组合来表示网络层参数:

线性组合系数与二值化基的求解问题如下:

针对每个网络层,文章采用一组固定数值的矢量表示二值化基,并且由网络层参数的均值与标准差决定:

由此便可以获得单一求解线性组合系数的优化问题:

 

2、权重参数的STE求导

当参数二值化之后,由于估计取值的离散性,不能直接求解损失函数关于原参数的导数,只能用STE(Straight Through Estimator)方法近似求解:

其中为损失函数,表示网络层输出。

 

3、网络层输入的量化

当网络参数二值化之后,便可以消除卷积或矩阵乘法涉及的乘法操作(multiplier-free),若进一步将网络层输入量化为1bit,那么卷积或矩阵乘法便可以简化为bit-wise XNOR与bit-count运算:

实施二值化操作时,网络层输入仍然采用一组二值化基的线性组合予以估计:

其中scale系数(beta)、shift系数(v)是可训练参数,类似于Batch Normalization的仿射变换系数。最终二值化网络层的构造及计算方式如下:

若网络层同时包含pooling、batch normalization及activation操作,则类似于XNORnet的做法,网络层可构造为bn -> conv2d -> pooling -> activation的形式:

并且BN(仿射变换)与网络层输入的二值化可以合并在一起:

 

4、实验结果

针对ImageNet2012分类任务,以Resnet18为例,ABCnet结构相比于原网络、以及其他二值化网络的推理精度对比如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章