文獻**:雷傑,高鑫,宋杰,王興路,宋明黎.深度網路模型壓縮綜述[j].軟體學報,2018,29(02):251-266.網路剪枝按剪枝粒度(pruning granularities)可分為4類,如圖所示。摘要: 深度網路近年來在計算機視覺任務上不斷重新整理傳統模型的效能,已逐漸成為研究熱點.深度模型儘管效能強大,然而由於引數數量龐大、儲存和計算代價高,依然難以部署在受限的硬體平台上(如移動裝置).模型的引數在一定程度上能夠表達其複雜性,相關研究表明,並不是所有的引數都在模型中發揮作用,部分引數作用有限、表達冗餘,甚至會降低模型的效能.首先,對國內外學者在深度模型壓縮上取得的成果進行了分類整理,依此歸納了基於網路剪枝、網路精餾和網路分解的方法;隨後,總結了相關方法在多種公開深度模型上的壓縮效果;最後,對未來的研究可能的方向和挑戰進行了展望.
其中,feature map/channel 都指網路中一層產生的特徵圖張量的乙個通道.filter是網路中的權重引數,feature map 是網路輸出,在網路剪枝中兩者等價,因為減去乙個filter 會導致少產生乙個feature map。
從剪枝目標上分類,可分為減少引數/網路複雜度、減小過擬合/增加泛化能力/提高準確率、減小部署執行時間(test run-time)/提高網路效率以及減小訓練時間等.不同的剪枝方法側重也會有所不同,有的剪枝方法完全依賴網路引數,剪枝後不需要調優恢復準確率;有的剪枝方法則只適用於全連線層剪枝.
2.1 單個權重粒度
將剪枝看作是將小權重置零的操作,手術恢復則相當於找到相似權重補償被置零的權重造成的啟用值損失.兩個權重的相似程度定義如下:
\[s_=\|\varepsilon_\|^2
\]其中:
整體剪枝步驟為:對所有可能權重向量的組合,初始化時計算\(s_\)構成的矩陣,找到矩陣中最小的一項\((i^′,j^′)\),刪去第\(j^′\)個神經元,並更新權重\(a_←a_+a_\);然後,再通過簡單的刪除與疊加操作更新s矩陣,就完成了一次剪枝與手術恢復.
2.2 核內權重粒度
在第2.1 節中,網路中的任意權重被看作是單個引數並進行隨機非結構化剪枝,該粒度的剪枝導致網路連線不規整,需要通過稀疏表達來減少記憶體占用,進而導致在前向傳播**時,需要大量的條件判斷和額外空間來標明零或非零引數的位置,因此不適用於平行計算。
anwer等人\(^\)提出了結構化剪枝的概念,可以很方便地使用現有的硬體和blas等軟體庫進行矩陣相乘,利用剪枝後網路的稀疏性來加速網路效率.粗粒度剪枝,如通道粒度和卷積核粒度本身就是結構化的,他的創新之處在於提出了核內定步長粒度(intra kernel strided sparsity),將細粒度剪枝轉化為結構化剪枝.
該方法首先隨機初始化步長m 和偏置n.考慮到卷積核一般選取\(k×k\) 的方陣,起始項的下標\((i,j)\)選為\(i=j=n\),則遍歷的位置如\((n,n),(n+m,n),(n,n+m)\)等.核內定步長粒度剪枝的關鍵思想在於:作用到同一輸入特徵圖上的kernel必須採用相同的步長和偏置.當卷積層不是稠密連線時,作用在不同特徵圖上的kernel步長與偏置可以不同,但是,如果卷積層的連線為一般的全連線(即乙個特徵圖需要被所有kernel作用一遍再加和生成新的特徵圖),那麼所有kernel必須採用相同的步長和偏置.這是由於只有相同的步長與偏置,才能在lowering(cudnn 中的im2col)操作時形成大小匹配的lowering kenrel matrix,從而減小核矩陣和特徵圖矩陣的大小,極大地節約計算資源.
2.3 卷積核粒度與通道粒度
具體步驟是減去第i層的filter,進而減去第i層產生的部分feature map和第i+1 層的部分kernel.
圖中第i層卷積層的卷積核矩陣可以看作由\(n_i×n_\)個k×k的卷積核組成(即圖中每乙個網格).乙個filter作用在全部\(n_i\)個輸入feature map(即為channel)上,產生1個新的feature map,因而\(n_\)個filter產生\(n_\)個feature map.從而filter將三維輸入\(x_i\)轉換為三維輸出\(x_\).
featuremap 粒度的顯著性度量也可以簡單地選取filter權重和作為顯著性度量,關鍵在於如何確定剪枝數量以及如何對網路整體剪枝\(^\).li 等人提出了全域性貪婪剪枝(holistic global pruning)\(^\),選取filter權重和作為顯著性度量.對每一層中的filter按照顯著性從大到小排序,進而畫出權重和關於排序後下標的曲線.若曲線陡峭,則在這一層減去更多的filter;若曲線平緩,則減去較少的filter,為剪枝數量提供了經驗性的指導.具體剪枝數量則作為超引數優化,在每一層剪枝數量確定之後,開始對整個網路進行全域性貪婪剪枝.全域性是指在全部剪枝完成後,再通過一次訓練恢復準確率;貪婪是指減去上一層filter後,更新下一層部分kernel內的權重,從而在下一層剪枝時,已經減掉的kernel不再對filter貢獻任何顯著性.
網路蒸餾是指利用大量未標記的遷移資料(transfer data),讓小模型去擬合大模型,從而讓小模型學到與大模型相似的函式對映.網路蒸餾可以看成在同乙個域上遷移學習\(^\)的一種特例,目的是獲得乙個比原模型更為精簡的網路。大模型作為教師模型(teacher model)是預先訓練好的,小模型作為學生模型(student model),由教師模型指導,步驟①首先由資料生成器生成大量的遷移資料(transfer data),分別送入教師模型和學生模型中.步驟②將教師模型的輸出作為真實值,衡量學生模型的輸出與它之間的損失.步驟③通過梯度下降等方法更新學生模型的權重,使得學生模型的輸出和教師模型的輸出更加接近,從而達到利用小模型擬合大模型的效果.
參考文獻
[1] anwar s, hwang k, sung w. structured pruning of deep convolutional neural networks. acm journal on emerging technologies in computing systems (jetc), 2017,13(3):article no.32. [doi: 10.1145/3005348]
[2] figurnov m, ibraimova a, vetrov dp, kohli p. perforatedcnns: acceleration through elimination of redundant convolutions. in:proc. of the advances in neural information processing systems (nips). barcelona: ieee, 2016. 947−955.
[3] li h, kad** a, durdanovic i, samet h, graf hp. pruning filters for efficient convnets. in: proc. of the int』l conf. on learning and representation (iclr). ieee, 2017. 34−42.
[4] pan sj, yang q. a survey on transfer learning. ieee trans. on knowledge and data engineering, 2010,22(10):1345−1359. [doi: 10.1109/tkde.2009.191]
深度學習模型壓縮方法綜述(一)
深度學習模型壓縮方法綜述 一 深度學習模型壓縮方法綜述 二 深度學習模型壓縮方法綜述 三 目前在深度學習領域分類兩個派別,一派為學院派,研究強大 複雜的模型網路和實驗方法,為了追求更高的效能 另一派為工程派,旨在將演算法更穩定 高效的落地在硬體平台上,效率是其追求的目標。複雜的模型固然具有更好的效能...
深度學習模型壓縮方法綜述(二)
深度學習模型壓縮方法綜述 一 深度學習模型壓縮方法綜述 二 深度學習模型壓縮方法綜述 三 上一章,將基於核的稀疏化方法的模型壓縮方法進行了介紹,提出了幾篇值得大家去學習的 本章,將繼續對深度學習模型壓縮方法進行介紹,主要介紹的方向為基於模型裁剪的方法,由於本人主要研究的為這個方向,故本次推薦的 數量...
深度學習模型壓縮方法綜述(二)
深度學習模型壓縮方法綜述 一 深度學習模型壓縮方法綜述 二 深度學習模型壓縮方法綜述 三 上一章,將基於核的稀疏化方法的模型壓縮方法進行了介紹,提出了幾篇值得大家去學習的 本章,將繼續對深度學習模型壓縮方法進行介紹,主要介紹的方向為基於模型裁剪的方法,由於本人主要研究的為這個方向,故本次推薦的 數量...