Deep Neural Network Compression by In-Parallel Pruning-Quantization 論文筆記
摘要
深度神經網絡在視覺識別任務(如圖像分類和物體檢測)上實現了最先進的精確度。然而,現代網絡包含數百萬個已學習的連接,並且當前的趨勢是朝向更深和更密集連接的體系結構。這對在資源受限的系統(例如智能手機或移動機器人)上部署最先進的網絡提出了挑戰。通常,更有效地利用計算資源將有助於從嵌入式平臺到運行網絡集合的計算集群的部署方案。在本文中,我們提出了一種深度網絡壓縮算法,它可以聯合執行權重修剪和量化,與微調並行執行。我們的方法利用了修剪和量化的互補性質,並從過早的修剪錯誤中恢復,這是兩階段方法所不可能的。在ImageNet上的實驗中,CLIP-Q(通過並行修剪 - 量化的壓縮學習)改進了AlexNet,VGGNet,GoogLeNet和ResNet上的網絡壓縮的最新技術。我們還通過壓縮MobileNet和ShuffleNet來證明CLIP-Q是對高效網絡架構設計的補充,並且CLIP-Q通過壓縮存儲網絡來進行視覺問答,從而超越卷積網絡。
簡介
網絡修剪是一種壓縮策略,其中網絡連接被減少或稀疏化; 權重量化是另一種策略,其中連接權重被約束到一組離散值,允許使用較少的比特來表示權重。 本文介紹了CLIP-Q(並行剪枝 - 量化壓縮學習),一種深度網絡壓縮方法,(1)將網絡剪枝和權重量化結合在一個學習框架中,共同解決了權重修剪和量化問題; (2)隨著網絡結構的變化,隨著時間的推移做出靈活的修剪和量化決策; (3)通過微調全精度權重並行進行修剪和量化(圖1)。 用於ImageNet分類的六個現代網絡的實驗證明了所提出的方法的潛力。
本文的初步版本出現在[27]中。 本文件包括擴展的相關工作; 通過貝葉斯優化進行剪枝量化超參數預測的附加可視化; VGGNet的新壓縮實驗[16]; 使用MobileNet [28]和ShuffleNet [29]進行新的壓縮實驗,證明CLIP-Q是對高效網絡架構設計的補充; 用於視覺問答的記憶網絡的新壓縮實驗[14],表明CLIP-Q超越卷積網絡進行圖像分類。
相關工作
- 參數修剪
網絡修剪是深度網絡壓縮的常見且直觀的方法。修剪方法從預先訓練的網絡中刪除“不重要”的連接,然後微調稀疏網絡以恢復準確性。最早的修剪方法基於網絡損失的二階導數去除了連接[30],[31]。無數據參數修剪[32]使用與數據無關的技術發現並移除冗余神經元。深度壓縮[18]消除了具有最低幅度權重的連接,其直覺是如果設置為零,則低幅度權重可能對計算結果的影響較小。然後通過量化剩余權重並應用霍夫曼編碼來實現進一步壓縮。我們的方法不同之處在於我們聯合執行修剪和量化而不是順序執行。這使我們能夠利用這些任務的互補性質,並從早期的修剪錯誤中恢復,這是兩種方法無法實現的。
由於神經元之間復雜的相互作用,確定連接的重要性很困難:當刪除其他連接時,最初似乎不重要的連接可能變得很重要。 這對修剪算法提出了重大挑戰,因為大多數人在優化過程中做出了硬(永久)修剪選擇[17]。 動態網絡手術[17]另外執行權重拼接,其存儲先前修剪的連接。 連接根據其權重的大小進行修剪和拼接。 本著類似的精神,CLIP-Q提供靈活的修剪選擇,可以在訓練期間適應網絡隨時間的變化。 與動態網絡手術不同,我們在優化中結合網絡修剪和權重量化,共同解決修剪量化參數。
廣義卷積通常在現代深度學習框架中通過重塑濾波器和補丁矩陣以及使用高度優化的BLAS庫執行大型矩陣乘法來實現。 結構化修剪方法修剪整個過濾器而不是單個連接,從那些大型矩陣中消除整個行或列並減少推理時間[33],[34],[35]。 例如,ThiNet [35]通過貪婪地確定下一層輸入要素圖中的哪些通道可以被移除,同時最小化下一層的重建錯誤來修剪濾波器。 但是,如果允許任意(非結構化)稀疏模式,結構化稀疏性約束可能會阻礙壓縮級別[36]。 非結構化修剪可以受益於專用硬件引擎[37]或有效的稀疏密集矩陣乘法[36],以實現實際的測試時間加速。
除了壓縮之外,網絡修剪還被用於規範更精確的全尺寸網絡的訓練[38],減少傳輸學習中的過度擬合[39],並為電池供電的設備生產節能網絡[40]。
- 參數量化和二值化
權重量化是指對權重值範圍進行離散化的過程,以便可以使用更少的比特來表示每個權重。 例如,如果權重只能采用16個離散值(量化級別),那麽對於單精度值,每個權重可以編碼為4位而不是通常的32位。
深度壓縮[18]與兩階段方法中的修剪與權重量化分開執行。量化水平線性分布以覆蓋權重範圍。 軟權重共享[41]重新訓練網絡,同時將權重擬合到高斯混合模型之前。 量化水平對應於高斯混合模型中的中心,並且可以通過在零處強制混合分量來合並修剪。 雖然在理論上是有原則的,但該方法計算量大且僅適用於小型網絡[41]。 基於加權熵的量化[42]使用加權熵測量來分配量化級別,該加權熵測量鼓勵將較少量化級別分配給接近零和非常高的權重,並且將量化級別的更均衡分布分配給遠離這些極端的權重。
量化卷積網絡[43]表示卷積和全連接層的前向通道作為內積,可以使用乘積量化來近似。 我們的方法執行標量量化[18],[41],[42]而不是乘積或矢量量化。
在極限中,權重可以量化為單個比特,以形成二元權重網絡[44],[45]。 網絡草圖[46]通過用二進制濾波器的加權組合近似實值濾波器來對預訓練的網絡進行二值化。 局部二進制卷積網絡[47]用一個受本地二進制模式啟發的可學習模塊取代卷積層[48]。
- 結構矩陣
結構化投影方法取代了完全連接的卷積網絡層,可以將其視為非結構化投影,具有可以使用較少權重指定的有效結構化投影。 例如,循環神經網絡[49]用學習的循環投影取代完全連接的層,可以使用快速傅裏葉變換快速計算,而深度fried網[50]用快速變換的自適應版本替換完全連接的層。
- 低秩分解
低秩分解方法利用濾波器和特征映射響應中的冗余[51],[52],[53]。 例如,Jaderberg等人使用卷積層的低秩結構 [52],通過將全秩卷積分解為具有水平基濾波器的卷積,然後使用垂直基濾波器的卷積。
- 知識蒸餾
知識蒸餾[54]使用真實標簽和更大更昂貴的教師網絡的軟輸出的加權組合來訓練緊湊的學生網絡。 FitNets [55]通過使用教師網絡中間層的輸出指導學生網絡中間層之一的訓練,為知識蒸餾增加了進一步的正規化。 N2N學習[56]使用強化學習來訓練政策網絡,以便從教師網絡中導出學生網絡。
- 有效框架
正交研究方向是高效網絡架構的設計。 SqueezeNet [57]將3x3卷積濾波器替換為1x1濾波器,將輸入通道的數量減少到3x3濾波器,並在網絡中稍後進行縮減采樣。 Xception [58]用深度可分離的卷積替換了初始模塊[2]。 MobileNet [28]針對嵌入式應用程序並堆疊多層深度可分離卷積。 ShuffleNet [29]采用帶有通道“shuffling”的逐點組卷積。 Multiscale DenseNet [59]使用早期退出分類器來實現任何時間分類和預算批次分類。 我們通過實驗證明,修剪和量化是對高效網絡架構設計的補充。
- 測試時間加速
在移動或嵌入式平臺上運行深度網絡時,推理速度是另一個重要考慮因素。 專用於在測試時加速深度網絡推理的方法(沒有預先壓縮)專註於減少所需的精確計算量。 穿孔卷積層[22]在空間位置的子集中執行精確計算,並使用最近的空間鄰居對剩余部分進行插值。 由於ReLU激活消除了負面反應這一事實,低成本協作層[20]預測哪些空間位置會產生負面反應並跳過這些位置。 空間自適應計算時間[21]通過學習預測停止分數來加速殘余網絡,該分數允許計算在剩余單元塊內提前停止。
方法
我們的方法的目標是通過微調預訓練的深度網絡來學習壓縮的深度網絡,同時(a)去除連接(權重)和(b)減少編碼剩余連接所需的比特數。 為實現這一目標,我們將網絡修剪和權重量化結合在一個操作中,並一起學習修剪後的網絡結構和量化權重。 隨著網絡結構的發展,我們的方法執行修剪量化,以適應訓練過程。 隨著網絡學習更有效的結構,可以在稍後的叠代中移除和恢復連接。 量化級別和連接分配同樣適應網絡結構隨時間的變化。
- 並行修剪量化
我們的方法概述如圖1所示。與網絡微調並行,我們對每個層執行修剪量化操作,包括三個步驟:
裁剪
我們放置兩個“clip”標量c-和c +,使得層中的(pX100)%的正權重小於或等於c +,並且(pX100)%的負權重大於等於c-,所有的c-和c +之間的權重在下一個前向傳遞中設置為零。 這會在處理下一個小批量時從網絡中刪除相應的連接。 請註意,此修剪決策不是永久的:在下一次叠代中,我們再次對更新的權重應用規則,並且先前已修剪的連接可以返回。 雖然超參數p是常數,但閾值c-和c +在每次叠代中都會發生變化。c-和c +可以在權重值的一維軸上靈活地“moved”。 裁剪由圖1中的紅色三角形表示。
分區
在第二步中,我們將權重值的1-D軸的非限幅部分劃分為量化間隔。 這些間隔在圖1中顯示為不同的顏色範圍。給定每權重b位的精確預算,該步驟產生將1-D軸劃分為2^b-1個間隔,加上剪輯c-和c+之間的零間隔。 為簡單起見,我們在c -的左邊和c +的右邊執行線性(均勻)分區[18]; 其他分區策略(例如加權熵[42])也可用於提高準確性。
量化
我們接下來更新量化級別 - 允許權重在壓縮網絡中采用的離散值。 通過平均落在相應量化間隔(圖1中的彩色範圍)內的全精度權重來計算每個量化等級。 然後,我們通過在下一個前向傳遞中將它們設置為新的量化級別來量化權重。 與修剪類似,量化適用於下一個小批量,然後重新評估。 隨著學習的進行,量化級別和權重級別的分配隨著時間的推移而發展。
圖2示出了使用具有16個權重的層的修剪和量化操作。 假設修剪率p = 0:25且比特預算b = 2.我們首先應用限幅,它將兩個最低幅度的負權重和兩個最低幅度的正權重設置為零,實際上從網絡中刪除了相應的連接 。 然後,我們對權重值的1-D軸進行線性劃分。 最後,我們通過平均每個分區內的權重值來計算量化級別,並將權重設置為這些離散值。 使用新的全精度權重,使用下一個訓練小批量重復這些步驟。
在訓練期間,跟蹤量化和全精度權重。 全精度權重用於修剪量化更新以及反向傳播[42],[45],而正向傳遞使用量化權重,模擬壓縮網絡的輸出。 訓練過程總結見論文算法。
訓練完成後,丟棄全精度權重,只需要存儲量化權重。 我們使用標準的稀疏編碼方案存儲壓縮網絡的權重[18],[41]。 簡而言之,稀疏權重矩陣的結構使用索引差異來編碼,並且每個未修剪的權重存儲其量化級別的b比特標識符。 完整的實現細節可以在[18]中找到。
總而言之,我們會更新每個訓練小批量的修剪狀態、量化級別和量化級別分配,以便根據需要隨時調整。 例如,一旦修剪了其他連接,先前修剪的連接可能再次變得相關,在這種情況下,它可以被拼接回網絡。 此外,連接可以重新分配量化級別,並且量化級別本身隨時間演變。 在訓練期間對全精度權重進行微調,並在訓練完成後丟棄。
- 修剪量化超參數預測
修剪量化操作由兩個超參數引導:修剪率p和比特預算b。 我們使用貝葉斯優化為網絡中的每個層i獨立地預測一組修剪量化超參數(pi; bi)
貝葉斯優化提供了一個最小化黑盒目標函數的通用框架,這些函數通常很難評估,非凸,不能以封閉形式表示,並且可能不容易區分[60]。 通過學習先前探索的結果,它可以有效地搜索聯合參數空間。 貝葉斯優化叠代地構造目標函數的概率模型,同時確定參數空間中最有希望的候選者以進行下一步評估。 每次評估的結果用於優化模型。
為了指導我們搜索有前途的剪枝量化超參數,我們進行了優化(公式見論文)
對於每個層我獨立地保持其他層未壓縮。 我們通過在訓練數據的子集上測試壓縮網絡來獲得粗略的質量估計。對於速度,我們在應用此預期修剪和量化後不執行網絡的微調.ci測量將修剪量化超參數應用於層i的整體壓縮優勢,公式見論文
我們將目標函數建模為高斯過程[61]並選擇修剪量化超參數空間中最有希望的候選者,以使用預期的改進標準進行評估,該標準可以以封閉形式計算。 我們簡要概述下面的標準解決方案,並在[61],[62],[63]中將感興趣的讀者引到更全面的解決方法。
Deep Neural Network Compression by In-Parallel Pruning-Quantization 論文筆記