天天看點

BinaryConnect: Training Deep Neural Networks with binary weights during propagations1 Introduction2 BinaryConnect

1 Introduction

      深度神經網絡(DNN)大大推動了廣泛的任務的state-of-the-art,特别是在語音識别[1,2]和計算機視覺方面,特别是圖像中的物體識别[3,4]。最近,深度學習在自然語言處理方面取得重要進展,特别是統計機器翻譯[5,6,7]。有趣的是,造成這一重大進展的關鍵因素之一是圖形處理單元(GPU)的出現,加速10到30倍,從[8]開始,類似的改進與分布式訓練[9,10]。事實上,在更多資料上訓練大型模型的能力使得觀察到了過去幾年中的這種突破。今天,設計新的深度學習算法和應用程式的研究人員和開發人員經常發現自己受到計算能力的限制。随着在低功耗裝置(不同于GPU)放置深度學習系統的推動,大大增加了針對深層網絡的專業硬體研發的興趣[11,12,13]。

       在深層網絡的訓練和應用過程中進行的大部分計算都考慮了實值權重乘以實值激活(在識别或者反向傳播算法的前向傳播階段)或梯度(在反向傳播算法的後向傳播階段)。本文提出了一種稱為BinaryConnect的方法,通過強制将這些正向和反向傳播中使用的權重二值化,即僅限于兩個值(不一定是0和1)來消除對這些乘法的需要。我們展示了可以在置換不變的MNIST,CIFAR-10和SVHN上,BinaryConnect實作state-of-the-art的結果。

       下面兩條使其具有可行性:(不懂)

       1.需要足夠的精度來積累和平均大量的随機梯度,但是噪聲權重(我們可以将離散化視為一種噪聲形式的少數值,特别是如果我們使這種離散化随機)與深度學習的主要優化算法--随機梯度下降(SGD)是可相容的。 SGD通過進行小的噪聲嘗試來探索參數空間,并通過每個權重累積的随機梯度貢獻來平均噪聲。是以,重要的是要為這些累加器保持足夠的精度,這一切都是絕對需要高精度的。 [14]和[15]表明可以使用随機或随機舍入來提供無偏離的離散化。[14]已經表明,SGD需要精度至少為6到8位的權重,[16]成功地訓練了具有12位動态定點計算的DNN。此外,腦突觸的估計精度在6位和12位之間變化[17]。

      2.噪聲權重實際上提供了一種正則化形式,可以幫助泛化能力更好,如先前所示的變分權重噪聲[18],Dropout [19,20]和DropConnect [21],這增加了激活或權重的噪聲。例如,最接近BinaryConnect的DropConnect [21]是非常有效的正則化器,它在傳播過程中随機地用0替換一半的權重。以前的工作表明,隻有權重的預期值需要高精度,而噪聲實際上是有益的。

    本文的主要貢獻如下。

•我們引入了BinaryConnect,它是一種在正向和反向傳播期間用二值化權重訓練DNN的方法(第2節)。

•我們顯示BinaryConnect是一個正則化器,我們在置換不變的MNIST,CIFAR-10和SVHN(第3節)上獲得近似最先進的結果。

•我們使BinaryConnect的代碼公開

2 BinaryConnect

        在本節中,我們給出BinaryConnect的更詳細的視圖,考慮選擇哪兩個值,如何離散化,如何訓練以及如何執行inference。

2.1 +1或-1

       應用DNN主要包括卷積和矩陣乘法。 是以,DL的關鍵算術運算是乘加運算。 人工神經元基本上是計算其輸入的權重和的乘加器。

       BinaryConnect在傳播過程中将權重限制為+1或-1。 結果,許多乘加操作被簡單的加法(和減法)代替。 這是一個巨大的增益,因為固定點加法器在面積和能量方面比定點乘加器要便宜得多[22]。(不懂)

2.2 Deterministic vs stochastic binarization

     二值化操作将實值權重轉換為兩個可能的值。 一個非常簡單的二值化操作将基于符号函數:

BinaryConnect: Training Deep Neural Networks with binary weights during propagations1 Introduction2 BinaryConnect

其中wb是二值化權重,w是實值權重。 雖然這是一個确定性操作,但對隐藏單元的許多輸入權重的這種平均離散化可以彌補資訊的丢失(不懂)。 允許進行更精細和更正确的平均過程的另一種方法是随機二值化:

BinaryConnect: Training Deep Neural Networks with binary weights during propagations1 Introduction2 BinaryConnect

我們使用這樣一個hard sigmoid而不是soft版本,因為它在計算上要少得多(在軟體和專門的硬體實作中),并且在我們的實驗中産生了出色的結果。 它類似于[23]引入的“hard tanh”非線性。 它也是分段線性的,對應于ReLU的有界形式[24]。

2.3 Propagations vs updates

       讓我們考慮與SGD更新的反向傳播不同的步驟,以及在這些步驟中離散權重是否有意義。

       1.給定DNN輸入,逐層計算神經元激活,直到頂層,這是DNN在給定輸入下的輸出。該步驟被稱為正向傳播。

       2.給定DNN目标,計算訓練目标的梯度,考慮每層的激活,從頂層開始,逐層下移直到第一個隐藏層。該步驟被稱為反向傳播或反向傳播的反向階段。

       3.計算梯度,考慮每層的參數,然後使用其計算的梯度及其先前的值更新參數。此步驟稱為參數更新。

BinaryConnect: Training Deep Neural Networks with binary weights during propagations1 Introduction2 BinaryConnect

            了解BinaryConnect的一個關鍵點是,我們隻在前向和後向傳播(步驟1和2)中二值化權重,而不是在參數更新(步驟3)期間進行二值化,如算法1所示。在更新過程中權重保持良好的精度是SGD能夠工作所需要的。由于通過梯度下降獲得的這些參數變化很小,即SGD在最大程度改善訓練目标的方向上執行大量幾乎無窮小的變化(加上噪音)。執行所有這一切的方法是假設在訓練結束時最重要的是權重的符号w *,但是為了弄清楚,我們對連續值的數量進行了很多小的改變w,隻有到最後才考慮它的符号:

BinaryConnect: Training Deep Neural Networks with binary weights during propagations1 Introduction2 BinaryConnect

繼續閱讀