Learning both Weights and Connections for Efficient Neural Networks

Learning both Weights and Connections for Efficient Neural Networks

在這裏插入圖片描述

摘要

神經網絡是計算密集型和內存密集型的,這使得它們很難部署在嵌入式系統上。此外,傳統的網絡在訓練開始前就確定了架構;因此,訓練不能改善網絡結構。爲了解決這些限制,我們提出了一種方法,通過只學習重要的連接參數,來減少存儲和計算所需的神經網絡數量級,而不影響其準確性。我們的方法使用三步方法刪除冗餘連接。首先,我們訓練網絡瞭解哪些連接是重要的。接下來,我們修剪不重要連接。最後,我們對網絡進行重新訓練,以微調剩餘連接的權重。在ImageNet數據集上,我們的方法將AlexNet的參數數量減少了9倍,從6100萬個減少到670萬個,而不會造成準確性損失。VGG-16的類似實驗發現,總參數可以減少13倍,從1.38億減少到1030萬,同樣沒有丟失精度。

引言

神經網絡在從計算機視覺到語音識別和自然語言處理的應用中無處不在。我們考慮卷積神經網絡用於隨着時間的推移而增長的計算機視覺任務。1998年Lecun等設計了參數小於1M的CNN模型LeNet-5對手寫數字進行分類,2012年Krizhevsky等以60M參數贏得ImageNet競賽。Deepface用120M的參數對人臉進行分類,Coates等將網絡縮放到10B的參數。
雖然這些大型神經網絡非常強大,但它們的大小消耗了相當大的存儲空間、內存帶寬和計算資源。對於嵌入式移動應用程序,這些需要的資源是非常難以滿足的。圖1顯示了45nm CMOS過程中基本算術和內存操作的能量消耗。從這些數據中我們看到,每次連接的能量主要由內存訪問決定,範圍從片上SRAM中的32位係數的5pJ到片外DRAM中的32位係數的640pJ。大型網絡不適合芯片存儲,因此需要更昂貴的DRAM訪問。例如,運行一個10億連接的神經網絡,在20Hz時,僅DRAM訪問就需要(20Hz)(1G)(640pJ) = 12.8W,這遠遠超出了典型移動設備的功率範圍。模型尺寸的削減也有利於存儲和傳輸的移動應用合併了DNNs。
在這裏插入圖片描述
爲了實現這一目標,我們提出了一種以保持原始精度的方式裁剪網絡連接的方法。在初始訓練階段之後,我們刪除所有權值低於閾值的連接。這種修剪將稠密的、完全連接的層轉換爲稀疏層。第一階段學習網絡的拓撲結構,學習哪些連接是重要的,並刪除不重要的連接。然後我們對稀疏網絡進行重新訓練,這樣剩餘的連接就可以彌補被刪除的連接。修剪和再訓練階段可以重複進行,以進一步降低網絡的複雜性。實際上,這個訓練過程不僅學習了權重,還學習了網絡連接——就像哺乳動物的大腦一樣,在兒童發育的最初幾個月裏,突觸就在那裏形成,然後逐漸刪除很少使用的連接,下降到典型的成人價值。

相關工作

神經網絡通常都是過參數化的,而且深度學習模型存在顯著的冗餘。這會導致計算和內存的浪費。有各種各樣的建議來消除冗餘:Vanhoucke等人探索了8位整數(32位浮點)激活的定點實現。Denton等人利用了神經網絡的線性結構,找到了參數的合適低秩近似,並將精度保持在原始模型的1%以內。在類似精度損失的情況下,Gong等人使用矢量量化對深度卷積網絡進行了壓縮。這些近似和量化技術與網絡剪枝是正交的,它們可以共同使用以獲得更好的效果。
還有其他一些嘗試,通過用全局平均池代替全連接層來減少神經網絡的參數數量。網絡架構和GoogLenet採用了這一思想,在幾個基準測試中都取得了最先進的結果。然而,這種方法更難實現遷移學習,即重用在ImageNet數據集上學習到的特徵,並僅通過微調完全連接的層將它們應用到新的任務中。Szegedy等人注意到了這個問題,並促使他們在其網絡頂部添加一個線性層,以實現遷移學習。
網絡剪枝被用於降低網絡複雜度和減少過擬合。早期的修剪方法是重差衰減。最佳腦損傷和最佳腦外科醫生根據損失函數的Hessian對網絡進行修剪以減少連接的數量,這表明這種修剪比基於數量的修剪(如權重衰減)更準確。但是二階導數需要額外的計算。
HashedNets是一項最新的技術,通過使用散列函數將連接權重隨機分組到散列桶中,從而使同一個散列桶中的所有連接共享一個參數值,從而減少模型大小。這種技術可以從修剪中受益。正如Shi和Weinberger等人等人指出的那樣,稀疏性將使哈希衝突最小化,使得特徵哈希更加有效。HashedNets可以與修剪一起使用,以提供更好的參數節省。
在這裏插入圖片描述

除了權重之外還要學習連接方式

我們的修剪方法採用了一個三步過程,如圖2所示,首先通過常規的網絡訓練來學習連接性。然而,與傳統的訓練不同,我們不是在學習權重的最終值,而是在學習哪些聯繫是重要的。然而,與傳統的訓練不同,我們不是在學習權重的最終值,而是在學習哪些聯繫是重要的。第二步是修剪低重量的連接。將權值低於閾值的所有連接從網絡中移除,將密集網絡轉換爲稀疏網絡,如圖3所示。最後一步是對網絡進行重新訓練,以學習剩餘稀疏連接的最終權值。這一步至關重要。如果不進行再訓練而使用修剪後的網絡,準確率會受到很大影響。

正則化

選擇正確的正則化方法會影響剪枝和再訓練的性能。L1正則化懲罰非零參數,導致更多的參數接近零。這在修剪之後,重新訓練之前,提供了更好的準確性。然而,其餘的連接不如L2正規化的好,導致再訓練後精度較低。總的來說,L2正則化給出了最好的剪枝結果。這將在實驗部分進一步討論。

Dropout 比例調整

Dropout被廣泛用於防止過擬合,這也適用於再訓練。然而,在再訓練期間,dropout比率必須根據模型容量的變化進行調整。在dropout中,每個參數在訓練過程中概率性的切除,但在推理過程中會返回。在剪枝過程中,參數在剪枝後被永久刪除,並且在訓練和推理過程中都沒有機會返回。隨着參數的稀疏化,分類器選擇信息最豐富的預測器,預測方差更小,減少了過擬合。由於裁減已經降低了模型容量,再訓練的dropout率應該更小。
定量, CiC_iii層的連接數,CioC_io原始網絡連接數,CirC_ir再訓練後的連接數,NiN_i是第ii層的神經元數量。因此當dropout作用與神經元之後,CiC_iNiN_i成二次方變化,根據方程1因此,dropout比例修剪後的參數應該遵循方程2,DoD_o代表原始的輟學率,DrD_r代表培訓期間的輟學率。
在這裏插入圖片描述

局部剪枝和參數協同適應

在再訓練期間,保留那些在初始訓練階段倖存下來的連接的權值,要比重新初始化修剪後的層要好。cnn包含脆弱的協同適應特徵:梯度下降在網絡初始訓練時能夠找到很好的解決方案,但在對一些層進行重新初始化和再訓練後則不能。因此,當我們重新訓練修剪過的層時,我們應該保留倖存的參數,而不是重新初始化它們。
從保留權重開始重新訓練修剪過的層需要較少的計算量,因爲我們不需要在整個網絡中反向傳播。同時,隨着網絡深度的增加,神經網絡容易出現梯度消失問題,這使得深度網絡的剪枝錯誤更難恢復。爲了防止這種情況發生,我們固定CONV層的參數,並且只在修剪了FC層之後再訓練FC層,反之亦然。

迭代剪枝

學習正確的連接方式是一個反覆的過程。修剪後再訓練是一次迭代,多次這樣的迭代後,可以找到最小連接數。在不損失準確率的情況下,該方法在AlexNet上的剪枝率由5倍提高到9倍。每次迭代都是一次貪婪的搜索,因爲我們要找到最好的連接。我們也實驗了基於絕對值的概率剪枝參數,但這給出了更糟糕的結果。

剪枝神經元

在修剪連接之後,輸入連接爲零或輸出連接爲零的神經元可以被安全地修剪。這種修剪通過刪除與修剪後的神經元之間的所有連接來進一步進行。再訓練階段會自動達到這樣的結果,即死神經元的輸入連接和輸出連接都爲零。這是由於梯度下降和正則化。一個輸入連接爲零(或輸出連接爲零)的神經元對最終的損失沒有貢獻,導致其輸出連接(或輸入連接)的梯度分別爲零。只有正則化項會將權重推到零。因此,在再訓練時,死亡的神經元會被自動移除。

實驗

我們在Caffe中實現了網絡剪枝。對Caffe進行了修改,增加了一個掩碼,該掩碼在對每個權值張量進行網絡操作時忽略了剪枝參數。選擇剪枝閾值作爲質量參數乘以一層權重的標準差。我們在Nvidia TitanX和GTX980 gpu上進行了實驗。
我們修剪了四個代表性的網絡:MNIST數據集上的Lenet-300-100和Lenet-5。ImageNet數據集上的AlexNet和VGG-16。網絡參數和精度修剪前後見表1。
在這裏插入圖片描述

MNIST數據集上案例

我們首先用LeNet-300-100和LeNet-5網絡對MNIST數據集進行了實驗。LeNet -300-100是兩個隱含層的全連接網絡,每個隱含層有300和100個神經元,在MNIST上錯誤率爲1.6%。LeNet-5是一個卷積網絡,有兩個卷積層和兩個全連接層,在MNIST上誤差率爲0.8%。修剪後,網絡以原網絡初始學習率的1/10重新訓練。表2表明剪枝可以減少這些網絡中12倍的參數。每一層的網絡表顯示(左到右)原始數量權重、所有層的激活函數浮點運算數量,非零激活函數的百分比,修剪後非零權重的百分比,實際上需要浮點運算的百分比。
一個有趣的副產品是,網絡剪枝檢測視覺注意力區域。圖4顯示了透鏡LeNet-300-100的第一完全連接層的稀疏模式,矩陣大小爲784∗300。它有28個頻帶,每個頻帶的寬度爲28,對應於輸入像素的28×28。圖形的彩色區域,表示非零參數,對應於圖像的中心。因爲數字寫在圖像的中心,這些是重要的參數。圖的左右是稀疏的,對應於t的頂部和底部的不那麼重要的區域。剪枝後,神經網絡發現圖像中心更重要,與不重要區域連接神經元被剪枝更多。
在這裏插入圖片描述

AlexNet在ImageNet數據集上實驗

我們進一步檢查了ImageNet ILSVRC-2012數據集上剪接的性能,該數據集有1.2M訓練集和50k驗證集。我們使用AlexNet Caffe模型作爲參考模型,該模型在5個卷積層和3個完全連接層上擁有6100萬個參數。AlexNet Caffe模型的 top-1準確率爲57.2%, top-5的準確率爲80.3%。最初的AlexNet在NVIDIA Titan X GPU上花了75個小時進行訓練。修剪後,整個網絡以原網絡初始學習率的1/100重新訓練。它花了173個小時再次訓練剪枝的 AlexNet。在迭代地構建模型原型時不使用剪枝,而是在模型準備部署時用於模型精簡。因此,再訓練時間就不那麼重要了。從表1可以看出,AlexNet可以在不影響精度的情況下被修剪到原來大小的1/9,計算量可以減少3倍。

VGG-16在ImageNet數據集上實驗

在AlexNet上有了很好的結果,我們也在同一個ILSVRC-2012數據集上研究了一個更大的,更新的網絡,VGG-16。VGG -16有更多的卷積層,但仍然只有三個完全連接的層。採用類似的方法,我們積極地修剪卷積層和全連接層,以實現權值的顯著減少,見表5所示。我們對再訓練進行了五次修剪。VGG-16的結果和AlexNet一樣,非常有希望。整個網絡的大小已經減少到原來的7.5%(比原來小13倍)。特別要注意的是,兩個最大的完全連接層都可以被修剪到原來大小的4%以下。這種減少對於實時圖像處理至關重要,因爲在實時圖像處理中,幾乎沒有跨圖像的完全連接層的重用(不像訓練期間的批處理)。
在這裏插入圖片描述

討論

精度與參數的權衡曲線如圖5所示。刪除的參數越多,精度越低。我們用L1和L2正則化進行了實驗,有再訓練的也有無再訓練的,再加上迭代修剪,得到了5條權衡曲線。比較實線和虛線,再訓練的重要性很明顯:不進行再訓練,準確性下降得更快——原來連接的1/3,而不是1/10。有趣的是,我們有免費的午餐,減少聯繫而不損失準確性,甚至無需再培訓;而通過再培訓,我們可以巧妙地將聯繫減少9倍。
在這裏插入圖片描述
L1正則化比L2在經過剪枝(藍色點和紫色線)後直接得到更好的精度,因爲它將更多的參數推向接近於零的位置。但是,通過比較黃線和綠線可以看出,L2在再訓練後的表現要優於L1,因爲進一步將值推向零沒有任何好處。一種擴展是使用L1正則化進行剪枝,然後使用L2進行再訓練,但這並不是簡單地在兩個階段使用L2。一種模式的參數與另一種模式的參數不太適應。

最大的收穫來自於迭代剪枝(實心圓圈的實心紅線)。這裏,我們採取剪枝和再訓練網絡(實心綠線和圓圈),剪枝和再訓練它。曲線最左邊的點對應於修剪到80%(5倍修剪)時綠線上的點8,9倍沒有精度損失。直到10倍精度纔開始急劇下降。

兩個綠點的精度略優於原始模型。我們認爲,這種精度的提高是由於尋找合適的網絡容量,從而減少過擬合。

CONV和FC層都可以被剪枝,但靈敏度不同。圖6顯示了各層對網絡剪枝的敏感性。該圖顯示了隨着參數逐層修剪,準確性如何下降。CONV層(左邊)比完全連接的層(右邊)對修剪更敏感。第一卷積層直接與輸入圖像交互,對剪枝最敏感。我們懷疑這種靈敏度是由於輸入層只有3信道,因此冗餘比其他卷積層少。我們利用靈敏度結果找到每一層的閾值:例如,最小的閾值應用於最敏感的層,即第一卷積層。

將修剪後的層存儲爲稀疏矩陣的存儲開銷僅爲15.6%。存儲相對索引而不是絕對索引可以將FC層索引佔用的空間減少到5位。同樣的,CONV層索引只能用8位表示。
修剪後,存儲需求AlexNet和VGGNet足夠小,所有的重量都可以存儲在芯片上,而不是片外DRAM以數量級的更多的能量來訪問(表1)。我們針對修剪方法固定功能硬件專門用於稀疏款,鑑於通用硬件的限制在稀疏的計算。

圖7顯示了修剪之前(左)和之後(右)權重分佈的直方圖。權重來自AlexNet的第一個全連接層。這兩個面板有不同的y軸刻度。權值的原始分佈以零爲中心,尾部迅速下降。幾乎所有的參數都在[- 0.015,0.015]之間。修剪後去除較大的中心區域。網絡參數在再訓練階段進行自我調整。結果是,參數形成了雙峯分佈,並在x軸[- 0.025,0.025]之間分佈得更廣。
在這裏插入圖片描述

結論

我們提出了一種方法,以提高能源效率和存儲的神經網絡,而不影響準確性找到正確的連接。在某種程度上,我們的方法是由哺乳動物大腦中學習的運作方式所激發的,通過學習哪些連接是重要的,剔除不重要的連接,然後再訓練剩餘的稀疏網絡。我們在ImageNet上的AlexNet和VGGNet上的實驗表明,完全連接層和卷積層都可以被修剪,連接數從9倍減少到13倍而不損失準確性。這使得實時圖像處理所需的內存容量和帶寬更小,更容易部署在移動系統上。

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