XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks

1 Introduction

     深層神經網絡(DNN)已經在包括計算機視覺和語音識別在內的幾個應用領域顯示出顯着的改進。在計算機視覺中,稱爲卷積神經網絡(CNN)的特定類型的DNN已經證明了在目標識別[1,2,3,4]和檢測[5,6,7] 中最先進的結果。

     卷積神經網絡顯示出可以在現實世界應用的物體識別和檢測的可靠結果。與最近的識別進展同步,在虛擬現實(Oculus的VR)[8],增強現實(HoloLens的AR)[9]和智能可穿戴設備中已經發生了有趣的進步。把這兩件事放在一起,我們認爲這是在智能便攜式設備上裝備最先進識別系統的正確時機。然而,CNN-Based識別系統需要大量的內存和計算能力。雖然它們在昂貴的基於GPU的機器上表現良好,但它們通常不適用於像手機和嵌入式電子設備這樣的小型設備。

    例如,AlexNet [1]具有61M參數(249MB內存)並執行1.5B高精度操作來分類一個圖像。對於較深的CNN,例如VGG [2](見4.1節),這些數字甚至更高。這些模型快速超過了諸如手機之類的小型設備的有限存儲,電池電量和計算能力。

       在本文中,我們介紹通過二值化權重,甚至CNN的中間表示,來實現簡單,高效,準確的CNN近似。我們的二值化方法旨在使用二值操作找到卷積的最佳近似。我們證明了我們的二值化神經網絡的方法可以產生與標準全精度網絡相當的ImageNet分類精度值,同時顯着減少內存和浮點運算的需求。
       我們研究兩個近似:具有二值化權重的神經網絡和XNOR Networks。在二值化權重網絡中,所有權重值都用二值近似。具有二值化權重的CNN顯着小於具有單精度權重值的等效網絡(〜32×)。另外,當權重值是二值時,僅通過加法和減法來估計卷積運算(不需要乘法),從而導致〜2倍的加速。二值化權重近似的大型CNN可以適應甚至小型便攜式設備的存儲器,同時保持相同的精度水平(見第4.1和4.2節)。
       爲了進一步理解這個想法,我們引入了XNOR-Networks,其中權重和卷積層和完全連接層的輸入都用二值化近似。二值化權重和二值化輸入允許實現卷積運算的高效方式。如果卷積的所有操作數都是二值的,則可以通過XNOR和位計數操作估計卷積[11]。 XNORNets可以實現CNN的精確近似,同時在CPU中提供〜58倍的加速(高精度運算的數量)。這意味着XNOR-Nets可以在具有小內存和無GPU的設備中實現實時inference(XNOR-Nets中的inference可以在CPU上非常高效地完成)。
       據我們所知,本文是第一次提出在大型數據集如ImageNet上評估二值神經網絡。我們的實驗結果表明,我們提出的二值化卷積神經網絡的方法在ImageNet挑戰ILSVRC2012中,在top-1圖像分類上,大幅度(16.3%)優於[11]的最先進的網絡二值化方法。我們的貢獻是雙重的:首先,我們引入了一種在卷積神經網絡中二值化權重值的新方法,並展示了我們的解決方案與最先進的解決方案相比的優勢。其次,我們介紹了XNOR-Nets,一種具有二值化權重和二值化輸入的深層神經網絡模型,並且顯示出與標準網絡相比,XNOR-Nets可以獲得與標準網絡相似的分類準確度,同時顯着提高效率。我們的代碼可從以下網址獲得:http://allenai.org/plato/xnornet

2 Related Work

       深度神經網絡通常在模型中遭受過度參數化和大量冗餘。這通常導致計算效率低下和內存使用[12]。已經提出了幾種方法來解決深層神經網絡中的高效訓練和inference。
       Shallow networks:用較淺的模型估計深層神經網絡,從而減小網絡的大小。 Cybenko的早期理論工作表明瞭具有足夠大單個隱藏層的sigmoid單元的網絡可以近似任何決策邊界[13]。然而,在若干領域(例如視覺和語音),淺層網絡不能與深層模型競爭[14]。 [15]在SIFT特徵上訓練一個淺層網絡,以對ImageNet數據集進行分類。他們顯示出很難訓練具有大量參數的淺網絡。 [16]提供了在小數據集上(例如,CIFAR-10)關於淺網絡能夠學習與深層網絡相同的函數的經驗證據。爲了得到相似的準確性,淺網絡中的參數數量必須接近於深度網絡中的參數數量。他們通過首先訓練最先進的深層模型,然後訓練淺模型來模仿深層模型來實現。這些方法與我們的方法不同,因爲我們使用標準的深層架構,而不是淺層的估計。
      Compressing pre-trained deep networks:在預訓練的網絡中修剪冗餘,非信息權重減小了在inference時網絡的大小。權重衰減[17]是修剪網絡的早期方法。Optimal BrainDamage [18] and Optimal Brain Surgeon [19]使用損失函數的Hessian矩陣,通過減少連接數來修剪網絡。最近[20]通過修剪使幾個最先進的神經網絡中的參數數量降低了一個數量級。 [21]提出爲了壓縮和加速減少激活的次數。Deep Compressing[22]減少了在大型網絡上運行inference所需的存儲空間和能量,從而可以部署在移動設備上。它們去除冗餘的連接並量化權重,使得多個連接共享相同的權重,然後使用霍夫曼編碼來壓縮權重。 Hashed Nets [23]使用hash函數並通過隨機分組權重來減少模型大小,從而使hash bucket中的連接使用單個參數值。 [24,25]已經使用矩陣分解。我們與這些方法不同,因爲我們不使用預訓練的網絡。我們從零開始訓練二值化網絡。
       Designing compact layers:在深層網絡的每一層設計緊湊的塊可以幫助節省內存和計算成本。在Network in Network網絡架構[26],GoogLenet [3]和Residual-Net [4]中評估了使用全局平均池化層替換完全連接層,它們在幾個基準上獲得了最先進的結果。殘差網絡[4]中的瓶頸結構被提出來用於減少參數的數量並提高速度。在[27]中使用了兩個1×1卷積的3×3卷積分解,並導致了對象識別的最先進的性能。在[28]中使用1×1卷積替換3×3卷積來創建一個非常緊湊的神經網絡,可以在獲得高精度的同時減少約50倍的參數。我們的方法與這個研究方向不同,因爲我們使用完整的網絡(而不是緊湊的版本),並且使用二值化參數。
       Quantizing parameters:在深層網絡中高精度的參數對於實現高性能並不重要。 [29]提出了通過矢量量化技術量化深層網絡中完全連接層的權重。他們顯示將權重值的閾值設爲0,ILSVRC2012的top-1精度僅降低小於10%。 [30]提出了一種用於訓練具有+ 1/0 / -1權值的稀疏網絡的可證明的多項式時間算法。在[31]中將8位整數的定點實現與32位浮點激活進行了比較。 [32]提出了具有三元權重和3位激活的另一個定點網絡。使用L2誤差最小化量化網絡在MNIST和CIFAR-10數據集中獲得更好的準確性[33]。 [34]通過量化網絡每一層的表示來提出反向傳播過程。爲了將一些剩餘的乘法轉換成二進制移位,神經元獲得二進制整數的限制值。在[34]中,它們在測試階段使用完整精度的權重,並且僅在反向傳播過程中量化神經元,而不是在正向傳播過程中量化。我們的工作類似於這些方法,因爲我們量化網絡中的參數。但是我們的量化是極端情況+ 1,-1。
Network binarization:這些工作與我們的方法最相關。一些方法嘗試二值化神經網絡中的權重和激活。高度量化的網絡(例如二值化)的性能被認爲非常差,由於二值量化的破壞性[35]。 [36]中的ExpectationBackPropagation(EBP)表現出,高性能可以通過具有二值化權重和二值化激活的網絡來實現。這是通過變分貝葉斯方法完成的,它推算具有二值化權重和神經元的網絡。在run time[37]中提出的完全二值化網絡使用與EBP類似的方法,顯示出,能效的顯着提高。在EBP中,二值化參數僅在inference期間使用。BinaryConnect [38]擴展了EBP背後的概念思想。與我們的方法類似,BinaryConnect使用實數版本的權重作爲二值化過程的關鍵參考。通過簡單地忽略更新過程中的二值化,使用反向傳播誤差更新了實值權重。 BinaryConnect在小數據集上獲得了最先進的結果(例如CIFAR-10,SVHN)。我們的實驗表明,這種方法在大規模數據集(例如,ImageNet)上不是非常成功。 BinaryNet [11]提出BinaryConnect的擴展,其中權重和激活都被二值化。我們的方法在二值化方法和網絡結構方面與他們的方法不同。我們還將我們的方法與BinaryNet在ImageNet上進行比較,我們的方法大大優於BinaryNet。[39]認爲通過權重二值化引入的噪聲提供了一種正則化形式,這有助於提高測試精度。該方法在保持全精度激活的同時對權重進行二值化。 [40]在一系列具有隨機輸入的聯合機器中提出了全面的二值化訓練和測試。 [41]重新訓練以前訓練過的具有二值化權重和二值化輸入的神經網絡。

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