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結構相比於原網絡、以及其他二值化網絡的推理精度對比如下:

 

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