Paper Reading :模型剪枝

在入坑模型壓縮與加速(即求解最優子網絡,)後,閱讀相關論文的個人總結。

神經網絡結構化剪枝方面的問題大體可以分爲三個步驟:

  1. 剪多少?即剪枝比例的確定,也即是確定子網絡結構,實際是在大模型結構的搜索空間中,求模型結構的最優解。目前的方法有人工實驗逐層確定比例(偷懶整個模型就一個比例),把結構當作一個超參數使用貝葉斯優化,RL,AutoML中的NAS和Metalearning 等進行自動搜索。當然,剪多少的問題是在有大模型的框架下存在,爲了擺脫這個框架依賴,可以大量使用NAS對於結構的最優解求解(不過擺脫後模型可靠性有待研究,需要CNN可解釋)。得到子網絡結構後可以通過訓練得到子網絡權重。
  2. 剪哪些?即剪枝評判標準,在冗餘大模型上找到相對重要權值作爲子網絡的權值。有範數上的,距離相關性上的,BN層上的gama參數引導稀疏,泰勒展開式等。通過權值的重要性來剪掉冗餘參數,實現輕量化,求解子網絡的最優解。之前是通過閾值來實現確定子網絡結構,不過閾值設定較爲複雜,後來通過剪枝比例來確定。
  3. 怎麼剪?即剪枝流程,在確定目標剪枝比例過後,使用什麼流程進行實現。比如使用軟剪枝比使用硬剪枝要好,模型容量上損失小,不依賴預訓練模型。還有使用one-shot剪枝,iterative剪枝等。當然更重要的是全局剪枝局部剪枝,全局剪枝把整個網絡的所有過濾器進行排序後裁剪,如BN層gamma指導剪枝(稀疏+全局)。局部剪枝如同設置每一層剪枝比例的L1剪枝等。一般來說,全局剪枝的效果都比局部剪枝更好。因爲這樣很好的解決了每層冗餘情況不同的問題。

但最近有研究指出繼承大模型的權值的方式不是必須的(Pruning from scratch等)即合理的初始權重不重要,可以在得到最優子網絡結構後通過訓練得到子網絡權值,並且在確定剪枝評判標準後還是要確定剪枝比例。也可能是因爲最優子網絡的結構要比權重更容易固定並找到,因此越來越多的研究在剪枝比例上做研究。但結構化剪枝(隱式結構搜索)還是有必要的,在過參導致的泛化強或者如:https://www.zhihu.com/search?type=content&q=%E6%A8%A1%E5%9E%8B%E5%8E%8B%E7%BC%A9%E5%89%AA%E6%9E%9D

也有人提出了一些邊訓練邊剪枝(軟剪枝)的方法,可以省去預訓練的操作,但是網絡的權重是在訓練過程中隨時變化的,按照評判標準的方法去剪枝只能在網絡收斂時(需要預訓練模型)才知道需要剪掉哪些部分,邊訓練邊剪枝的方法必須要預先確定好剪枝的比例,然後再邊訓練邊剪枝,預先定比例就是說不知道剪哪些filter,先把比例定好。對於其他比例的剪枝又要重新邊訓練邊剪枝。

不同的剪枝比例上對結構(隱式結構)還是權重(預熱權重)的依賴程度不一樣。在剪枝比例相對較低時,網絡對結構和權重的丟失都不是很敏感,重新訓練之後都可以使得模型恢復精度(估計因爲還在過參狀態)。相對來說低剪枝比例下,擁有合理初始權值的網絡比丟失權重信息的網絡收斂更快。在剪枝比例較大時(0.9,丟失過參化),收斂快慢相反。因此,無論怎樣,若存在預訓練模型給出的合理權重和基於規則產生的稀疏合理結構,則至少會讓收斂加快。首先要保證參數的過參化(結構),然後再保證合理的參數,加速收斂。

第一階段:閱讀綜述,從綜述或者碩博畢業論文入門是很好的選擇。

1.深度神經網絡壓縮與加速綜述_紀榮嶸 (很不錯)

2.深度神經網絡壓縮綜述_李青華

3.深度網絡模型壓縮綜述_雷傑

第二階段:剪枝論文閱讀,由於非結構化剪枝無法在通用環境下進行加速和壓縮,所以看的結構化剪枝比較多。

1.韓松-Deep Compression(ICLR2016) :非結構化剪枝,這篇論文主要是介紹了怎麼存儲加速非結構化剪枝後的網絡,將低於某閾值的權重置爲0,使用CSC,CSR進行存儲,然後使用量化進行參數共享,最後使用霍夫曼進行編碼。在專用的硬件和加速包下對於非結構化稀疏網絡加速效果很好。但通用平臺上,無法實現相應加速效果。

2.PRUNING_FILTERS_FOR_EFFICIENT_CONVNETS (ICLR2017):結構化剪枝,使用L1準判斷每個filter的重要性,論文認爲對每層的敏感度是不同的,中間的敏感度較低,可以剪掉更多filter。還提出了逐層剪枝(剪一層訓練一次),和多層剪枝等剪枝策略。通過逐層剪枝可以找到最好的剪枝比例結構。在VGG和Resnet上都有實現,是比較經典的一篇文章。

3.MetaPruning (ICCV2019):將meta-learning 引入結構化剪枝,實現自動剪枝,把不同結構的編碼作爲輸入的訓練任務,傳到MetaPruing輔助網絡,輸出相應的權值,不斷訓練輔助網絡輸出權值的能力,使得輔助網絡輸出的權重越來越少,以此來代替傳統剪枝的不停的finetune。在搜索階段使用遺傳算法和網格搜索進行優化,找出相應條件下最佳的結構。得到結構然後再重頭開始訓練。這個方法在VGG和Resnet上都有實現。使用元學習的方法產生權值,是引用的HyperNetwork的方法。整個方法是一個自動搜索剪枝結構的方法,不需要人爲去試驗來找到最好的比例和不停的finetune。

4.Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks:同樣將元學習引入結構化剪枝,實現在每次剪枝(剪枝和訓練相結合,每次對整個網絡)時,根據當前Filter的分佈(從自身範數和相關性距離)自適應地去調整評判標準,打破傳統的剪枝前預先定義剪枝標準的方式,融合了多種方式,動態進行選擇。借鑑的SFP進行的訓練剪枝,只是在剪枝時根據Filter分佈進行了相應的評判標準的選擇。

5.Soft Filter Pruning (IJCAI 2018):提出了軟剪枝的方法,相比之前的逐層剪枝等硬剪枝方法,不會降低模型的容量大小,因此模型會有更好的特徵表達。同時,由於是訓練和剪枝相結合的一種方法,每次整個模型的每層根據L2(L1會受到一些小的值的影響)實現目標剪枝比例的剪枝,可以從頭邊訓練,邊剪枝或者使用預訓練模型邊剪枝邊finetune,從而可以省略預訓練的過程。

6.Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration(CVPR2019):這篇文章和SFP以及Meta Filter Pruning 是一個作者,本文提出了除了範數大小以外還有過濾器之間相關性距離的評判標準,文末也採用了與L2混合的方式,直接指定L2和相關距離各剪枝多少。

7.An Entropy-based Pruning Method for CNN Compression:局部剪枝方法,最多剪掉50%。假如考慮下面的過程,從第l層feature-map(輸入)要通過卷積核卷積得到計算得到l+1層的feature-map(輸出),我們要得到I+1層卷積核的重要性.那麼需要計算l+1層feature-map的信息熵(一個特徵圖對應一個過濾器).首先,將設l+1層feature-map大小爲 C*h*w, 將每一個channel特徵圖做Global-average-pooling得到一個1*C的向量.然後,爲了計算信息熵我們必須得到在不同輸入下得到的1*C的集合,這裏可以用整個訓練集也可以用訓練集的子集來作爲輸入,以此得到在不同輸入下的對應的1*C向量,假設輸入圖像有n張,那麼最後我們可以得到一個n*C的矩陣M,考慮矩陣M的每一列,即每個通道對應的n*1向量,要計算每個通道的信息熵,論文上的方法(按自己的理解),將這一個向量中元素值的範圍進行分塊,這裏應該是平均分塊,假如其分爲m塊,(可能是灰度值,256)則統計每一塊中的數據個數,計算出頻率,再通過信息熵公式進行計算,即:

由於每個過濾器對於不同特徵提出能力不一樣,論文使用n張來計算,同時爲了體現過濾器的綜合能力和減少計算,使用了GAP。通過計算特徵圖的所含信息大小來衡量過濾器的提取信息的能力,是很直觀的一個標準,但在論文中的效果一般,而且只在ImageNet 上做了實驗,感覺這個方法的效率不是很高,不是一種直接衡量過濾器重要性的方法,需要圖片輸入得出結果。嘗試將此方法於SFP結合,但是在剪去過濾器的操作方面沒有找到其他更好的方法,只是單純結合,感覺創新性不大。

8.COP: Customized Deep Model Compression via Regularized Correlation-Based Filter-Level Pruning(IJCAI-19):基於特徵圖的剪枝,本質也是剪過濾器。這篇論文認爲一些過濾器激活可以被其他所代替,進而特徵圖可以被其他特徵圖所替代的,產生的特徵圖與其他的過濾器產生的特徵圖存在線性關係,即權重之間也存在着線性關係。因此,推斷出使用特徵圖相關性來進行剪枝。作者使用概率統計中的皮爾森相關係數,如下2式,計算權值間的相關性,將KxKxM的過濾器變成KxK形式(全連接層看做1x1xMxN),然後3式計算兩個特徵圖的相關性。如果一個特徵圖與很多其他的特徵圖相關性較高則可以移除。因此,計算出該層特徵圖與該層其他特徵圖的相關性累加作爲一個過濾器的重要性。由於整個網絡相關性分佈不均,有的層相關的較多,有的較少,因此採用的全局剪枝的方法。文章後來將重要性進行normalize從而全局排序。在normalize時避免採用除以l1,l2這中歸一化,因爲這兩種會讓全局剪掉過濾器個數多的層剪掉更多。同時文章還提出在不同的地方剪去相同的參數量減少的計算量和參數量不一樣。因此,對特徵圖的全局重要性也加上了約束。同時該論文也對Depth-Separable Convolutional Layer和Residual Block
剪枝設計了相應策略。

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