Bi-Real Net——XNOR-net的增強與演進(Binary Neural Network)

"Bi-Real Net: Enhancing the Performance of 1bit CNNs with Improved Representational Capacity and Advanced Training Algorithm"這篇文章針對XNOR-net的缺陷,在網絡結構及優化訓練方面做了一系列增強與改進,具體包括引入one layer per block形式的shortcut連接、採用二次函數擬合實數激活的sign操作、在更新實數權重時引入實數權重的幅度、以及預訓練模型採用clip函數替代ReLU予以訓練,從而在實現網絡權重與激活輸出二值化的同時,確保了較高的推理精度,尤其是在大型數據集(ILSVRC ImageNet)上的表現。

如上圖所示,深度網絡的權重與激活經二值化之後,能夠極大降低參數與激活對存儲的佔用消耗(memory footprint),其次卷積計算也簡化爲XNOR與bit-counting操作,因而非常有利於深度網絡的推理部署,尤其是在資源受限、能效要求極高的移動設備上。XNOR-net、ABC-net等是目前較爲領先的二值化網絡,文章所提出的Bi-Real Net則是XNOR-net的後續演進與增強,首先網絡結構上實現了one layer per block形式的shortcut連接,即當前1bit convolution或BN輸出的實數結果與下一個1bit convolution或BN輸出的實數結果直接相加,從而增加了網絡的數值表示範圍(Value Range),該shortcut結構如下所示:

在二值網絡中,激活A與權重W的二值化通常採用Sign操作實現:

文章所提出的二值網絡的訓練框架如下圖所示,包括forward過程(實數激活的Sign操作、實數權重的Magnitude-aware Sign操作、1bit Conv、BN等)以及backward過程(二值權重、二值權重求導以及實數權重的更新等):

在訓練階段直接更新網絡的實數權重,而Loss關於實數權重的梯度可按鏈式法則展開(乘積項分別爲Loss關於二值權重的梯度、以及二值權重關於實數權重的梯度):

其中Loss關於二值權重的梯度可按鏈式法則展開如下(乘積項分別爲Loss關於實數激活的梯度、BN層Gamma係數、以及二值激活):

此時首先需要求解Loss關於實數激活的梯度(可按鏈式法則表示爲Loss關於二值激活的梯度與二值激活關於實數激活的梯度的乘積),但由於Sign函數不可微(導數爲單位衝激響應),因此需要設計Sign函數的擬合函數F(可微)作爲直接近似:

對Sign函數的近似會引起反向傳播階段求得的近似梯度與實數激活之間的失配(mismatch),因此擬合函數與Sign函數的近似程度影響着模型性能。XNOR-net選擇分段線性函數clip(-1,x,1)作爲Sign函數的近似,存在較大的偏差。文章設計了二次函數作爲Sign函數的直接近似,能夠進一步減少偏差、增強模型性能,且相應的導數曲線爲三角形狀,更適合模擬脈衝信號:

在訓練階段,由於Loss關於二值權重的梯度通常很小,因此較難引起實數權重的變化。文章爲此引入了實數權重的幅度信息,即在訓練時將實數權重的Sign操作替換爲Magnitude-aware Sign操作,能夠增加二值權重關於實數權重的梯度,從而增加實數權重更新的步長,有助於加快模型的收斂速度:

最終用於更新實數權重的遞歸公式如下:

其中更新步長中的乘積項爲Loss關於實數激活的梯度、BN層Gamma係數、二值激活、以及Magnitude-aware Sign操作的梯度。Magnitude-aware Sign操作的梯度,即二值權重關於實數權重的梯度表示爲(Sign函數的求導仍然採用Clip函數近似):

由於模型在推理部署階段,實數權重的二值化仍然採用常規的Sign操作,因此採用Magnitude-aware Sign操作訓練模型並收斂之後,需要採用Sign操作額外訓練若干epoch更新BN層moving參數(此時learning rate置零),以適應實際部署的需求。

另外,由於二值網絡的二值化輸出爲{-1,1},不包含零元素,故在更新預訓練模型的參數時,選擇clip函數替代ReLU作爲非線性激活函數能夠獲得更好的初始化效果。同時在二值網絡的訓練階段,weight decay置零,即不需要對實數權重作L1或L2正則化約束。並且兩個one layer per block的shortcut結構要優於一個two layer per block的shortcut結構,具體見實驗分析。

實驗結果表明Bi-Real Net在CIFAR10/100、ImageNet等數據集上的表現優於XNOR-net、ABC-net等,且參數量更少,非常適合移動端部署,並藉助NEON指令集加速:

Paper地址:https://arxiv.org/abs/1808.00278

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