論文題目:Forward and Backward Information Retention for Accurate Binary Neural Networks
文獻地址:https://arxiv.org/abs/1909.10788
源碼地址: https://github.com/htqin/IR-Net
IR-Net應用中的效果
作者使用了兩個基准數據集:CIFAR-10和ImageNet(ILSVRC12)進行了實驗。在兩個數據集上的實驗結果表明,IR-Net比現有的最先進方法更具競爭力。
為了進一步驗證IR-Net在實際移動設備中的部署效率,作者在1.2GHz 64位四核ARM Cortex-A53的Raspberry Pi 3B上進一步實現了IR-Net,並在實際應用中測試了其真實速度。
從上表可以看出,IR-Net的推理速度要快得多,模型尺寸也大大減小,而且IR-Net中的位移操作幾乎不會帶來額外的推理時間和存儲消耗。
二值化網絡的現狀與動機
權值和激活二值化是一種有效的深度神經網絡壓縮方法,可以利用位操作加速推理。並且,在實際使用中,二進制神經網絡以其微小的存儲空間和高效的推理能力受到了社會的廣泛關注。雖然許多二值化方法通過最小化前向傳播的量化誤差來提高模型的精度,但二值化模型與全精度模型之間仍存在明顯的性能差距。
二進制神經網絡的性能退化主要原因是由於其表示能力有限和二值化的離散性,導致其在前向和反向傳播中都存在嚴重的信息丟失。在前向傳播中,當激活量和權值限制為兩個值時,模型的多樣性急劇下降,而多樣性被證明是神經網絡[54]的高精度的關鍵。
多樣性意味着在前向傳播的過程中會有攜帶足夠信息的能力,同時,在反向傳播的過程中,精准的梯度會給優化提供正確的信息。然而,二值化網絡在訓練過程中,離散的二值往往帶來不准確的梯度和錯誤的優化方向。所以,作者認為二值化網絡中的量化損失是信息在前向傳播和反向傳播兩個方面丟失造成的。
因此,提出了信息保持網絡IR-Net(Information Retention Network):
- 在前向傳播中引入了一種稱為Libra參數二值化(Libra-PB)的平衡標准化量化方法,通過量化參數的信息熵最大和量化誤差最小,使正向傳播中的信息損失最小;
- 在反向傳播中采用誤差衰減估計器(EDE)來計算梯度,通過更好地逼近 sign 函數來最小化信息損失,保證訓練開始時的充分更新和訓練結束時的精確梯度。
如下圖所示,第一幅中描繪了Libra-PB在前向過程中改變權重分布的示意圖;第二幅圖中描繪了Libra-PB和EDE在真個訓練過程中的使用情況;第三幅圖中描繪了EDE通過逼近sign函數來最小化信息損失的過程。
IR-Net
Preliminaries
a. 常規運算
在深度神經網絡中,主要的運算可以表達為:
其中,w表示權重向量;a表示輸入的激活向量。
b. 二值化的過程
需要對權重w和輸入a進行二值化,下述Qx(x)是分別進行權重w和輸入a二值化的過程,即要么是Qw(w),要么是Qa(a)。α為各自的標量系數。
網絡二值化的目標是用1-bit表示浮點權值和各層經過激活函數后的輸出。一般來說,量化可以表述為:
其中,x為浮點參數,包括浮點權值w和激活輸出a,Bx∈{-1, +1}表示二值,包括二值權重Bw和激活輸出Ba。α表示為二值標量,包括權重標量αw和輸出激活叫來那個αa。通常使用sign函數獲取Bx:
c. 二值化網絡的運算
當獲得二值化后的權重Qw(w)和二值化后的輸入Qa(a)后,便可以沿用常規運算的形式計算二值化網絡的運算,如下所示:
其中,包含的操作為XNOR運算。
采用符號函數進行量化,在反向傳播過程中就會存在一個問題:符號函數的導數幾乎處處為0,這和反向傳播不相符。因為在離散化(預激活或權值)之前原始值的精確梯度將為零。因此,通常使用"直通估計器(STE)[5]"來訓練二元模型,模型通過恆等或Hardtanh函數來傳播梯度。
前向傳播中的Libra-PB (Libra Parameter Binarization)
傳統最小化量化誤差的目標函數
在前向傳播過程中,量化操作會帶來信息損失。在許多卷積神經網絡二值化的量化中,都將最小化量化誤差的方式作為優化的目標函數:
其中,x表示全精度參數;Qx(x)表示量化參數;J(Qx(x))表示量化損失。
對於二值模型,其參數的表示能力被限制為兩個值,使得神經元攜帶的信息容易丟失。二值神經網絡的解空間與全精度神經網絡的解空間也有很大的不同。因此,如果不通過網絡保持信息,僅通過最小化量化誤差來保證良好的二值化網絡是不夠的,也是困難的。
因此,作者結合量化損失和信息損失,在前向計算過程中,提出Libra-PB保持信息的同時最小化信息損失。
Libra-PB目標函數
對於隨機數b∈{-1, +1},服從伯努利分布,此處的b實際上就是量化后的Qw(w)和Qa(a)。其概率分布可以表示為如下形式:
參數二值化的過程本質上是權重的初始化和輸入的二值化。作者希望二值化得到的權重能夠分布均衡,也就是說,讓Qx(x)的信息熵越大越好,越大則越混亂,分布也就越均衡。
對於二值化結果Qx(x)進行信息熵的求取,實際上也就是Bx的信息熵的求取(由網絡二值化過程的公式可得)。因此,可以表達為如下形式:
並且,當p=0.5時,信息熵最大。也就意味着量化后的值均勻分布。
Libra-PB的目標函數定義為:
此外,為了使訓練更加穩定,避免因權值和梯度而產生的負面影響,進一步對平衡權值進行了歸一化處理。
其中,σ( · )為標准差。
權重w^具有兩個特點:
(1) 零均值,使獲得的二值化權重信息熵最大。
(2) 單位范數,這使得二值化所涉及的全精度權重更加分散。
從下圖中可以看出,權重是從全精度權重變換到二值權重,Libra-PB二值化后的權重相較於傳統的二值化具有更高的信息熵,分布更加均衡。
因此最終,針對正向傳播的Libra參數二值化可以表示如下:
R-Net的主要運算操作可以表示為:
其中,<<>>表示左移右移操作。s可由下述表達式計算得到:
反向傳播中的EDE(Error Decay Estimator)
由於二值化的不連續性,梯度的近似是后向傳播不可避免的。因此,量化的影響無法用近似准確地建模,造成了巨大的信息損失。近似可以表示為:
其中,L(w)表示損失函數,g(w)表示sign 函數的近似表達式。對於g(w)通常有兩種近似方法:
- Identity:y = x
Identity 函數直接將輸出值的梯度信息傳遞給輸入值,完全忽略了二值化的影響。如圖 3(a) 的陰影區域所示,梯度誤差很大,並且會在反向傳播過程中累積。利用隨機梯度下降算法,要求保留正確的梯度信息,避免訓練不穩定,而不是忽略由 Identity 函數引起的噪聲。
- Clip: y=Hardtanh(x)
Clip 函數考慮了二值化的截斷屬性,減少了梯度誤差。但它只能在截斷間隔內傳遞梯度信息。從圖 3(b) 中可以看出,對於 [-1,+1] 之外的參數,梯度被限制為 0。這意味着一旦該值跳出截斷間隔,就無法再對其進行更新。這一特性極大地限制了反向傳播的更新能力,證明了 ReLU 是一個比 Tanh 更好的激活函數。因此,在實際應用中,Clip 近似增加了優化的難度,降低了精度。確保足夠的更新可能性至關重要,特別是在訓練過程開始時。
Identity 函數丟失了量化的梯度信息,而 Clip 函數則丟失了截斷間隔之外的梯度信息。這兩種梯度信息損失之間存在矛盾。
為了保留反向傳播中由損失函數導出的信息,EDE 引入了一種漸進的兩階段近似梯度方法。
第一階段:保留反向傳播算法的更新能力。我們將梯度估計函數的導數值保持在接近 1 的水平,然后逐步將截斷值從一個大的數字降到 1。利用這一規則,我們的近似函數從 Identity 函數演化到 Clip 函數,從而保證了訓練早期的更新能力。
第二階段:保持參數的精確梯度在 0 左右。我們將截斷值保持為 1,並逐漸將導數曲線演變到階梯函數的形狀。利用這一規則,我們的近似函數從 Clip 函數演變到 sign 函數,從而保證了前向和反向傳播的一致性。
各階段EDE的形狀變化如圖3(c)所示。通過該設計,EDE減小了前向二值化函數和后向近似函數之間的差異,同時所有參數都能得到合理的更新。