模型剪枝

一俗孝、剪枝方法簡介

剪枝就是通過去除網(wǎng)絡(luò)中冗余的channels,filters, neurons, or layers以得到一個(gè)更輕量級的網(wǎng)絡(luò)赋铝,同時(shí)不影響性能。 代表性的工作有:
奇異值分解SVD(NIPS 2014): Exploiting linear structure within convolutional networks for efficient evaluation
韓松(ICLR 2016): Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding
(NIPS 2015): Learning both weights and connections for efficient neural network
頻域壓縮(NIPS 2016): Packing convolutional neural networks in the frequency domain
剪Filter Reconstruction Error(ICCV 2017): Thinet: A filter level pruning method for deep neural network compression
LASSO regression(ICCV 2017): Channel pruning for accelerating very deep neural networks
Discriminative channels(NIPS 2018): Discrimination-aware channel pruning for deep neural networks
剪枝(ICCV 2017): Channel pruning for accelerating very deep neural networks
neuron level sparsity(ECCV 2017): Less is more: Towards compact cnns
Structured Sparsity Learning(NIPS 2016): Learning structured sparsity in deep neural networks
網(wǎng)絡(luò)剪枝的步驟神經(jīng)網(wǎng)絡(luò)中的一些權(quán)重和神經(jīng)元是可以被剪枝的,這是因?yàn)檫@些權(quán)重可能為零或者神經(jīng)元的輸出大多數(shù)時(shí)候?yàn)榱阒欤砻鬟@些權(quán)重或神經(jīng)元是冗余的巍实。

模型剪枝是一個(gè)新概念嗎?并不是瓦盛,其實(shí)我們從學(xué)習(xí)深度學(xué)習(xí)的第一天起就接觸過原环,Dropout和DropConnect代表著非常經(jīng)典的模型剪枝技術(shù)嘱吗,
模型剪枝不僅僅只有對神經(jīng)元的剪枝和對權(quán)重連接的剪枝俄讹,根據(jù)粒度的不同患膛,至少可以粗分為4個(gè)粒度。
1.細(xì)粒度剪枝(fine-grained):即對連接或者神經(jīng)元進(jìn)行剪枝跃捣,它是粒度最小的剪枝。
2.向量剪枝(vector-level):它相對于細(xì)粒度剪枝粒度更大娶聘,屬于對卷積核內(nèi)部(intra-kernel)的剪枝趴荸。
3.核剪枝(kernel-level):即去除某個(gè)卷積核顿涣,它將丟棄對輸入通道中對應(yīng)計(jì)算通道的響應(yīng)涛碑。
4.濾波器剪枝(Filter-level):對整個(gè)卷積核組進(jìn)行剪枝歹篓,會(huì)造成推理過程中輸出特征通道數(shù)的改變庄撮。


image.png

細(xì)粒度剪枝(fine-grained)毡庆,向量剪枝(vector-level),核剪枝(kernel-level)方法在參數(shù)量與模型性能之間取得了一定的平衡蝇刀,但是網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)本身發(fā)生了變化,需要專門的算法設(shè)計(jì)來支持這種稀疏的運(yùn)算徘溢,被稱之為非結(jié)構(gòu)化剪枝吞琐。
而濾波器剪枝(Filter-level)只改變了網(wǎng)絡(luò)中的濾波器組和特征通道數(shù)目,所獲得的模型不需要專門的算法設(shè)計(jì)就能夠運(yùn)行甸昏,被稱為結(jié)構(gòu)化剪枝顽分。除此之外還有對整個(gè)網(wǎng)絡(luò)層的剪枝,它可以被看作是濾波器剪枝(Filter-level)的變種卒蘸,即所有的濾波器都丟棄。

深度學(xué)習(xí)網(wǎng)絡(luò)模型從卷積層到全連接層存在著大量冗余的參數(shù)翻默,大量神經(jīng)元激活值趨近于0缸沃,將這些神經(jīng)元去除后可以表現(xiàn)出同樣的模型表達(dá)能力,這種情況被稱為過參數(shù)化修械,而對應(yīng)的技術(shù)則被稱為模型剪枝趾牧。

1.剪枝步驟

網(wǎng)絡(luò)剪枝的過程主要分以下幾步:

①訓(xùn)練網(wǎng)絡(luò);
②評估權(quán)重和神經(jīng)元的重要性:可以用L1肯污、L2來評估權(quán)重的重要性翘单,用不是0的次數(shù)來衡量神經(jīng)元的重要性;
③對權(quán)重或者神經(jīng)元的重要性進(jìn)行排序然后移除不重要的權(quán)重或神經(jīng)元蹦渣;
④移除部分權(quán)重或者神經(jīng)元后網(wǎng)絡(luò)的準(zhǔn)確率會(huì)受到一些損傷哄芜,因此我們要進(jìn)行微調(diào),也就是使用原來的訓(xùn)練數(shù)據(jù)更新一下參數(shù)柬唯,往往就可以復(fù)原回來认臊;
⑤為了不會(huì)使剪枝造成模型效果的過大損傷,我們每次都不會(huì)一次性剪掉太多的權(quán)重或神經(jīng)元锄奢,因此這個(gè)過程需要迭代失晴,也就是說剪枝且微調(diào)一次后如果剪枝后的模型大小還不令人滿意就回到步驟后迭代上述過程直到滿意為止
image.png

2.為什么可以進(jìn)行網(wǎng)絡(luò)剪枝

在實(shí)踐過程中我們可以感受到大的網(wǎng)絡(luò)比小的網(wǎng)絡(luò)更容易訓(xùn)練剧腻,而且也有越來越多的實(shí)驗(yàn)證明大的網(wǎng)絡(luò)比小的網(wǎng)絡(luò)更容易收斂到全局最優(yōu)點(diǎn)而不會(huì)遇到局部最優(yōu)點(diǎn)和鞍點(diǎn)的問題。解釋這一想象的一個(gè)假設(shè)是大樂透假設(shè)(Lottery Ticket Hypothesis)涂屁。

(1)大樂透假設(shè)

在下圖中书在,首先我們使用一個(gè)大的網(wǎng)絡(luò)然后隨機(jī)初始化一組參數(shù),這組參數(shù)用紅色表示胯陋,然后訓(xùn)練后得到紫色的參數(shù)蕊温,接著進(jìn)行網(wǎng)絡(luò)剪枝。我們再嘗試使用剪枝的網(wǎng)絡(luò)結(jié)構(gòu)隨機(jī)初始化一組參數(shù)然后訓(xùn)練發(fā)現(xiàn)這種方式?jīng)]能取得剪枝得到的效果遏乔,而如果用大的網(wǎng)絡(luò)中對應(yīng)的初始化參數(shù)來初始化這個(gè)剪枝的網(wǎng)絡(luò)結(jié)構(gòu)然后再進(jìn)行訓(xùn)練义矛,就發(fā)現(xiàn)可以取得較好的效果:


image.png

大樂透假設(shè)可以用來解釋這個(gè)現(xiàn)象,在買大樂透時(shí)買得越多就越容易中獎(jiǎng)盟萨,同樣的這里我們假設(shè)一個(gè)大的網(wǎng)絡(luò)中包含很多小的網(wǎng)絡(luò)凉翻,這些小的網(wǎng)絡(luò)結(jié)構(gòu)有的可以訓(xùn)練成功而有的不可以訓(xùn)練成功,只要有一個(gè)訓(xùn)練成功捻激,整個(gè)大的網(wǎng)絡(luò)結(jié)構(gòu)就可以訓(xùn)練成功制轰,因此我們可以把多余的網(wǎng)絡(luò)結(jié)構(gòu)剪枝掉。

(2)不需要剪枝胞谭,直接來訓(xùn)練小模型

與大樂透假設(shè)不同的是《Rethinking the Value of Network Pruning》這篇得出了與其看似矛盾的假設(shè)垃杖。在下表中的實(shí)驗(yàn)中使用了不同的模型進(jìn)行試驗(yàn),表中Fined-tuned表示剪枝后的模型丈屹,Scratch-E和Scratch-B表示隨機(jī)初始化剪枝網(wǎng)絡(luò)的參數(shù)后訓(xùn)練的模型调俘,只是Scratch-B訓(xùn)練了更多的epoch⊥荩可以看到隨機(jī)初始化剪枝網(wǎng)絡(luò)的參數(shù)后訓(xùn)練的模型也取得了不錯(cuò)的效果彩库,這樣就看起來和大樂透假設(shè)的實(shí)驗(yàn)結(jié)果相矛盾。事實(shí)上兩篇paper的作者均對這種結(jié)果進(jìn)行了回應(yīng)先蒋,可以在網(wǎng)上找到回應(yīng)的內(nèi)容骇钦,這里不做贅述。

3.剪枝權(quán)重還是剪枝神經(jīng)元

在進(jìn)行網(wǎng)絡(luò)剪枝時(shí)我們可以選擇剪枝權(quán)重或者剪枝神經(jīng)元竞漾。下圖中進(jìn)行了權(quán)重的剪枝:


image.png

剪枝權(quán)重的問題是會(huì)造成網(wǎng)絡(luò)結(jié)構(gòu)的不規(guī)則眯搭,在實(shí)際操作中很難去實(shí)現(xiàn)也很難用GPU去加速。下圖展示了對AlexNet進(jìn)行weight pruning后使用不同的GPU加速的效果业岁,折線表示了對每一層的權(quán)重的剪枝的比例鳞仙,被剪掉的權(quán)重大約占比95%左右,然后使用不同GPU加速發(fā)現(xiàn)加速效果并不好叨襟,這是因?yàn)榧糁ψ龀闪司W(wǎng)絡(luò)結(jié)構(gòu)的不規(guī)則,因此難以用GPU進(jìn)行加速幔荒。在進(jìn)行實(shí)驗(yàn)需要使用weight pruning時(shí)可以使用將被剪枝的權(quán)重設(shè)置成0的方法糊闽。

image.png

而使用Neuron pruning就不會(huì)遇到上述問題梳玫,Neuron pruning后的網(wǎng)絡(luò)結(jié)構(gòu)仍然是規(guī)則的,因此仍然可以使用GPU進(jìn)行加速右犹。


image.png

二提澎、常見剪枝方法

(一)、細(xì)粒度連接剪枝(連接和神經(jīng)元)

image.png

其中重點(diǎn)在于兩個(gè)念链,一個(gè)是如何評估一個(gè)連接的重要性盼忌,另一個(gè)是如何在剪枝后恢復(fù)模型的性能。

1掂墓、如何評估一個(gè)連接的重要性

基于度量標(biāo)準(zhǔn)的剪枝通常是提出一個(gè)判斷神經(jīng)元是否重要的度量標(biāo)準(zhǔn)谦纱,依據(jù)這個(gè)標(biāo)準(zhǔn)計(jì)算出衡量神經(jīng)元重要性的值,將不重要的神經(jīng)元剪掉君编。在神經(jīng)網(wǎng)絡(luò)中可以用于度量的值主要分為3大塊:Weight / Activation / Gradient跨嘉。各種神奇的組合就產(chǎn)出了各種metric玩法。

(1)基于連接幅度

基于結(jié)構(gòu)化剪枝中比較經(jīng)典的方法是Pruning Filters for Efficient ConvNets(ICLR2017)吃嘿,基于L1-norm判斷filter的重要性祠乃。Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration(CVPR2019) 把絕對重要性拉到相對層面,認(rèn)為與其他filters太相似的filter不重要兑燥。

由于特征的輸出是由輸入與權(quán)重相乘后進(jìn)行加權(quán)亮瓷,權(quán)重的幅度越小,對輸出的貢獻(xiàn)越小降瞳,因此一種最直觀的連接剪枝方法就是基于權(quán)重的幅度嘱支,如L1/L2范數(shù)的大小。這樣的方法只需要三個(gè)步驟就能完成剪枝

  • 第一步:訓(xùn)練一個(gè)基準(zhǔn)模型力崇。
  • 第二步:對權(quán)重值的幅度進(jìn)行排序斗塘,去掉低于一個(gè)預(yù)設(shè)閾值的連接,得到剪枝后的網(wǎng)絡(luò)亮靴。
  • 第三步:對剪枝后網(wǎng)絡(luò)進(jìn)行微調(diào)以恢復(fù)損失的性能馍盟,然后繼續(xù)進(jìn)行第二步,依次交替茧吊,直到滿足終止條件贞岭,比如精度下降在一定范圍內(nèi)

當(dāng)然這類框架還有可以改進(jìn)之處,比如Dynamic network surgery框架[4]觀察到一些在當(dāng)前輪迭代中雖然作用很小搓侄,但是在其他輪迭代中又可能重要瞄桨,便在剪枝的基礎(chǔ)上增加了一個(gè)spliciing操作,即對一些被剪掉的權(quán)重進(jìn)行恢復(fù)讶踪,如下:


image.png

(2)基于損失函數(shù)

這類方法通常從Loss出發(fā)尋找對損失影響最小的神經(jīng)元芯侥。將目標(biāo)函數(shù)用泰勒展開的方法可以追溯到上世紀(jì)90年代初,比如Lecun的Optimal Brain Damage 和 Second order derivatives for network pruning: Optimal Brain Surgeon 。近年來比較有代表性的就是Pruning Convolutional Neural Networks for Resource Efficient(ICLR2017)柱查,對activation在0點(diǎn)進(jìn)行泰勒展開廓俭。(是否prune一個(gè)卷積核只需要計(jì)算這個(gè)卷積核中每個(gè)權(quán)值的梯度與其之積,求和之后再求均值)原作者也很好的向我們展現(xiàn)了如何優(yōu)雅地進(jìn)行方法遷移 Importance Estimation for Neural Network Pruning(CVPR2019)唉工,換成weight的展開再加個(gè)平方研乒。類似的方法還有 Faster gaze prediction with dense networks and Fisher pruning,用Fisher信息來近似Hessian矩陣淋硝。SNIP: Single-shot Network Pruning based on Connection Sensitivity(ICLR2019)則直接利用導(dǎo)數(shù)對隨機(jī)初始化的權(quán)重進(jìn)行非結(jié)構(gòu)化剪枝雹熬。相關(guān)工作同樣可以追溯到上世紀(jì)80年代末Skeletonization: A Technique for Trimming the Fat from a Network via Relevance Assessment(NIPS1988)。歷史總是驚人的相似:

image.png

基于權(quán)重幅度的方法原理簡單谣膳,但這是比較主觀的經(jīng)驗(yàn)竿报,即認(rèn)為權(quán)重大就重要性高,事實(shí)上未必如此参歹。而另一種經(jīng)典的連接剪枝方法就是基于優(yōu)化目標(biāo)仰楚,根據(jù)剪枝對優(yōu)化目標(biāo)的影響來對其重要性進(jìn)行判斷,以最優(yōu)腦損傷(Optimal Brain Damage, OBD)方法為代表犬庇,這已經(jīng)是上世紀(jì)90年代的技術(shù)了僧界。

Optimal Brain Damage首先建立了一個(gè)誤差函數(shù)的局部模型來預(yù)測擾動(dòng)參數(shù)向量對優(yōu)化目標(biāo)造成的影響。具體來說用泰勒級數(shù)來近似目標(biāo)函數(shù)E臭挽,參數(shù)向量U的擾動(dòng)對目標(biāo)函數(shù)的改變使用泰勒展開后如下:


image.png
image.png

其中g(shù)i是優(yōu)化目標(biāo)對參數(shù)u的梯度捂襟,而h是優(yōu)化目標(biāo)對參數(shù)u的海森矩陣。對模型剪枝的過程是希望找到一個(gè)參數(shù)集合欢峰,使得刪除掉這個(gè)參數(shù)集合之后損失函數(shù)E的增加最小葬荷,由于上面的式子需要求解損失函數(shù)的海森矩陣H,這是一個(gè)維度為參數(shù)量平方的矩陣纽帖,幾乎無法進(jìn)行求解宠漩,為此需要對問題進(jìn)行簡化,這建立在幾個(gè)基本假設(shè)的前提上:

  • 參數(shù)獨(dú)立懊直。即刪除多個(gè)參數(shù)所引起的損失的改變扒吁,等于單獨(dú)刪除每個(gè)參數(shù)所引起的損失改變的和,因此上式第三項(xiàng)可以去除室囊。
  • 局部極值雕崩。即剪枝是發(fā)生在模型已經(jīng)收斂的情況下,因此第一項(xiàng)可以去除融撞,并且hii都是正數(shù)盼铁,即剪枝一定會(huì)帶來優(yōu)化目標(biāo)函數(shù)的增加,或者說帶來性能的損失尝偎。
  • 二次近似假定饶火。即上式關(guān)系為二次項(xiàng),最后一項(xiàng)可以去除。

經(jīng)過簡化后只剩下了第二項(xiàng)肤寝,只需要計(jì)算H矩陣的對角項(xiàng)牧挣。它可以基于優(yōu)化目標(biāo)對連接權(quán)重的導(dǎo)數(shù)進(jìn)行計(jì)算,復(fù)雜度就與梯度計(jì)算相同了醒陆,如下:


image.png

計(jì)算完之后就可以得到連接對優(yōu)化目標(biāo)改變的貢獻(xiàn),這就是它的重要性裆针,因此可以進(jìn)行剪枝刨摩,整個(gè)流程如下:


image.png

(3)基于激活值

Network trimming: A data-driven neuron pruning approach towards efficient deep architectures 用activations中0的比例 (Average Percentage of Zeros, APoZ)作為度量標(biāo)準(zhǔn),[輸入一張圖世吨,經(jīng)過一層卷積澡刹,得到右邊的feature map,我們計(jì)算耘婚,也就是輸出的第一個(gè)通道的APOZ罢浇,也就是右邊紅色。假設(shè)紅色的部分一半是0沐祷,那么這張圖計(jì)算就等于50%嚷闭。我們需要輸入多張圖,假如輸入了1W張圖赖临,最后計(jì)算紅色部分都是50%胞锰,那么就等于50%。下面那張table1兢榨,計(jì)算每一層的mean APOZ的時(shí)候嗅榕,就是把所有通道的都計(jì)算出來取平均值]
An Entropy-based Pruning Method for CNN Compression 則利用信息熵進(jìn)行剪枝。

(二)吵聪、粗粒度剪枝核心技術(shù)(通道剪枝)

相對于連接權(quán)重剪枝凌那,粗粒度剪枝其實(shí)更加有用,它可以得到不需要專門的算法支持的精簡小模型吟逝。對濾波器進(jìn)行剪枝和對特征通道進(jìn)行剪枝最終的結(jié)果是相同的帽蝶,篇幅有限我們這里僅介紹特征通道的剪枝算法代表。

通道剪枝算法有三個(gè)經(jīng)典思路澎办。第一個(gè)是基于重要性因子嘲碱,即評估一個(gè)通道的有效性,再配合約束一些通道使得模型結(jié)構(gòu)本身具有稀疏性局蚀,從而基于此進(jìn)行剪枝麦锯。第二個(gè)是利用重建誤差來指導(dǎo)剪枝,間接衡量一個(gè)通道對輸出的影響琅绅。第三個(gè)是基于優(yōu)化目標(biāo)的變化來衡量通道的敏感性扶欣。下面我們重點(diǎn)介紹前兩種。

1. 基于重要性因子

(1)將激活的稀疏性當(dāng)做重要性因子

Network Trimming通過激活的稀疏性來判斷一個(gè)通道的重要性,認(rèn)為擁有更高稀疏性的通道更應(yīng)該被去除料祠。它使用batch normalization中的縮放因子γ來對不重要的通道進(jìn)行裁剪骆捧,如下圖:


image.png

具體實(shí)現(xiàn)起來,就是在目標(biāo)方程中增加一個(gè)關(guān)于γ的正則項(xiàng)髓绽,從而約束某些通道的重要性敛苇。

image.png

(2)將幾何中位數(shù)對范數(shù)當(dāng)做重要性因子Geometric Median

image.png

(3)其他方法

類似的框架還有

  • 《Rethinking the smaller-norm-less-informative assumption in channel pruning of convolution layers》
  • 《Data-Driven Sparse Structure Selection

2.基于輸出重建誤差

與基于權(quán)重幅度的方法來進(jìn)行連接剪枝一樣,基于重要性因子的方法主觀性太強(qiáng)顺呕,而另一種思路就是基于輸出重建誤差的通道剪枝算法枫攀,它們根據(jù)輸入特征圖的各個(gè)通道對輸出特征圖的貢獻(xiàn)大小來完成剪枝過程,可以直接反映剪枝前后特征的損失情況株茶。

這類方法通過最小化特征輸出的重建誤差來確定哪些filters要進(jìn)行剪裁来涨,即找到當(dāng)前層對后面的網(wǎng)絡(luò)層輸出沒啥影響的信息。ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression 采用貪心法启盛,Channel Pruning for Accelerating Very Deep Neural Networks(ICLR2017) 則采用Lasso regression蹦掐。NISP: Pruning Networks using Neuron Importance Score Propagation(CVPR2018) 通過最小化網(wǎng)絡(luò)倒數(shù)第二層的重建誤差,并將反向傳播的誤差累積考慮在內(nèi)僵闯,來決定前面哪些filters需要裁剪卧抗。


image.png

(1)經(jīng)典方法

image.png

如上圖,基于重建誤差的剪枝算法鳖粟,就是在剪掉當(dāng)前層B的若干通道后颗味,重建其輸出特征圖C使得損失信息最小。假如我們要將B的通道從c剪枝到c'牺弹,要求解的就是下面的問題浦马,第一項(xiàng)是重建誤差,第二項(xiàng)是正則項(xiàng)张漂。


image.png

第一步:選擇候選的裁剪通道晶默。

我們可以對輸入特征圖按照卷積核的感受野進(jìn)行多次隨機(jī)采樣,獲得輸入矩陣X航攒,權(quán)重矩陣W磺陡,輸出Y。然后將W用訓(xùn)練好的模型初始化漠畜,逐漸增大正則因子币他,每一次改變都進(jìn)行若干次迭代,直到beta穩(wěn)定憔狞,這是一個(gè)經(jīng)典的LASSO回歸問題求解蝴悉。

第二步:固定beta求解W,完成最小化重建誤差瘾敢,需要更新使得下式最小拍冠。


image.png

(2)ThiNet

(三)基于稀疏訓(xùn)練的剪枝

這類方法采用訓(xùn)練的方式尿这,結(jié)合各種regularizer來讓網(wǎng)絡(luò)的權(quán)重變得稀疏,于是可以將接近于0的值剪掉庆杜。Learning Structured Sparsity in Deep Neural Networks 用group Lasso進(jìn)行結(jié)構(gòu)化稀疏射众,包括filters, channels, filter shapes, depth。Data-Driven Sparse Structure Selection for Deep Neural Networks(ECCV2018)通過引入可學(xué)習(xí)的mask晃财,用APG算法來稀疏mask達(dá)到結(jié)構(gòu)化剪枝叨橱。A Systematic DNN Weight Pruning Framework using Alternating Direction Method of Multipliers(ECCV2018) 的思想類似,用約束優(yōu)化中的經(jīng)典算法ADMM來求解断盛。由于每個(gè)通道的輸出都會(huì)經(jīng)過BN雏逾,可以巧妙地直接稀疏BN的scaling factor,比如 Learning Efficient Convolutional Networks through Network Slimming(ICCV2017) 采用L1 regularizer郑临,Rethinking the Smaller-Norm-Less-Informative Assumption in Channel Pruning of Convolution Layers(ICLR2018) 則采用ISTA來進(jìn)行稀疏。MorphNet: Fast & Simple Resource-Constrained Structure Learning of Deep Networks(CVPR2018) 也是直接利用L1 regularizer屑宠,但是結(jié)合了MobileNet中的width-multiplier厢洞,加上了shink-expand操作,能夠更好的滿足資源限制典奉。


image.png

(四) 個(gè)性化剪枝

通常來說躺翻,模型在剪枝完后進(jìn)行推理時(shí)不會(huì)發(fā)生變化,即對于所有的輸入圖片來說都是一樣的計(jì)算量卫玖,但是有的樣本簡單公你,有的樣本復(fù)雜,以前我們給大家介紹過動(dòng)態(tài)推理框架假瞬,它們可以對不同的輸入樣本圖配置不同的計(jì)算量陕靠,剪枝框架也可以采用這樣的思路,以Runtime Neural Pruning [12]為代表脱茉。


image.png

(五)Random and Rethinking

有采用各種剪枝方法的就有和這些剪枝方法對著干的剪芥。Recovering from Random Pruning: On the Plasticity of Deep Convolutional Neural Networks 就表明了度量標(biāo)準(zhǔn)都沒啥用,隨機(jī)賽高琴许。Rethinking the Value of Network Pruning(ICLR2019) 則表示剪枝策略實(shí)際上是為了獲得網(wǎng)絡(luò)結(jié)構(gòu)税肪,挑戰(zhàn)了傳統(tǒng)的 train-prune-finetune的剪枝流程。Pruning from Scratch 則直接用Network Slimming的方法對訓(xùn)練過程中的剪枝結(jié)構(gòu)進(jìn)行了一波分析榜田,發(fā)現(xiàn)直接采用random初始化的網(wǎng)絡(luò)權(quán)重能夠獲得更豐富的剪枝結(jié)構(gòu)益兄。

(六)自動(dòng)化剪枝

剪枝中我們通常遵循一些基本策略:比如在提取低級特征的參數(shù)較少的第一層中剪掉更少的參數(shù),對冗余性更高的FC層剪掉更多的參數(shù)箭券。然而净捅,由于深度神經(jīng)網(wǎng)絡(luò)中的層不是孤立的,這些基于規(guī)則的剪枝策略并不是最優(yōu)的辩块,也不能從一個(gè)模型遷移到另一個(gè)模型灸叼,因此AutoML方法的應(yīng)用也是非常自然的神汹,AutoML for Model Compression(AMC)是其中的代表


image.png

從AMC: AutoML for Model Compression and Acceleration on Mobile Devices[ECCV2018]開始將強(qiáng)化學(xué)習(xí)引入剪枝,剪枝的研究開始套上各種Auto的帽子古今,玩法更是層出不窮屁魏。AutoSlim: Towards One-Shot Architecture Search for Channel Numbers先訓(xùn)練出一個(gè)slimmable model(類似NAS中的SuperNet Once for All: Train One Network and Specialize it for Efficient Deployment),繼而通過貪心的方式逐步對網(wǎng)絡(luò)進(jìn)行裁剪捉腥。


image.png

Network Pruning via Transformable Architecture Search(NIPS2019) 則把NAS可導(dǎo)的一套遷移過來做剪枝氓拼。Approximated Oracle Filter Pruning for Destructive CNN Width Optimization(ICML2019)平行操作網(wǎng)絡(luò)的所有層,用二分搜索的方式確定每層的剪枝數(shù)抵碟。Fine-Grained Neural Architecture Search 把NAS的粒度降到了通道桃漾,包含了空的操作即剪枝。還有各種拿進(jìn)化來做的也就不提了拟逮。
此外撬统,還有基于信息瓶頸的方法Compressing Neural Networks using the Variational Information Bottleneck(ICML2018),聚類的方法Centripetal SGD for Pruning Very Deep Convolutional Networks with Complicated Structure(CPVR2019)敦迄,等等等等等......

三恋追、剪枝之外

  • 提升精度: 利用剪枝的方式來提升模型精度,比如DSD: Dense-Sparse-Dense Training for Deep Neural Networks(ICLR2017)利用非結(jié)構(gòu)化剪枝罚屋,階段性的砍掉某些權(quán)重再恢復(fù)苦囱。稀疏訓(xùn)練Sparse Networks from Scratch: Faster Training without Losing Performance在訓(xùn)練過程中保持網(wǎng)絡(luò)的稀疏率不變,動(dòng)態(tài)調(diào)整層間的稀疏率脾猛。
  • 動(dòng)態(tài)結(jié)構(gòu):不同的輸入圖片可以走網(wǎng)絡(luò)中的不同結(jié)構(gòu)撕彤。
    BlockDrop: Dynamic Inference Paths in Residual Networks(CVPR2018)引入一個(gè)Policy Network,以Block為單位進(jìn)行選擇猛拴。Dynamic Channel Pruning: Feature Boosting and Suppression(ICLR2019)引入SEBlock羹铅,以Channel為單位進(jìn)行選擇。Improved Techniques for Training Adaptive Deep Networks采用截?cái)嗍降倪x擇愉昆,簡單的圖片采用靠前的網(wǎng)路層解決睦裳,復(fù)雜的加入后面得網(wǎng)絡(luò)層。

四撼唾、總結(jié)

一脈梳理下來感覺做純的剪枝感覺很難了廉邑,對比人工設(shè)計(jì)的結(jié)構(gòu)和準(zhǔn)則,NAS出來的模型可以又小巧精度又高倒谷,剪枝也逐漸受其影響快蛛蒙、準(zhǔn)、狠地尋找結(jié)構(gòu)渤愁。這些效果好的結(jié)構(gòu)和權(quán)重背后到底還藏著些什么


常見論文
https://www.cnblogs.com/wujianming-110117/p/12702802.html
https://zhuanlan.zhihu.com/p/157562088
https://zhuanlan.zhihu.com/p/48269250
https://zhuanlan.zhihu.com/p/330575000

一牵祟、network slimming

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抖格,隨后出現(xiàn)的幾起案子诺苹,更是在濱河造成了極大的恐慌咕晋,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件收奔,死亡現(xiàn)場離奇詭異掌呜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坪哄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門质蕉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翩肌,你說我怎么就攤上這事模暗。” “怎么了念祭?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵兑宇,是天一觀的道長。 經(jīng)常有香客問我粱坤,道長隶糕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任比规,我火速辦了婚禮,結(jié)果婚禮上拦英,老公的妹妹穿的比我還像新娘蜒什。我一直安慰自己,他們只是感情好疤估,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布灾常。 她就那樣靜靜地躺著,像睡著了一般铃拇。 火紅的嫁衣襯著肌膚如雪钞瀑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天慷荔,我揣著相機(jī)與錄音雕什,去河邊找鬼。 笑死显晶,一個(gè)胖子當(dāng)著我的面吹牛贷岸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播磷雇,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼偿警,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唯笙?” 一聲冷哼從身側(cè)響起螟蒸,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盒使,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后七嫌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體少办,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年抄瑟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凡泣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡皮假,死狀恐怖鞋拟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惹资,我是刑警寧澤贺纲,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站褪测,受9級特大地震影響猴誊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侮措,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一懈叹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧分扎,春花似錦澄成、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至菲饼,卻和暖如春肾砂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宏悦。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工镐确, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饼煞。 一個(gè)月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓辫塌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親派哲。 傳聞我的和親對象是個(gè)殘疾皇子臼氨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容