Channel Pruning for Accelerating Very Deep Neural Networks 算法筆記

Channel Pruning for Accelerating Very Deep Neural Networks

論文地址:https://arxiv.org/abs/1707.06168

代碼地址:https://github.com/yihui-he/channel-pruning

作者將目前的CNN加速研究分為三類:

Optimized implementation :比如FFT?

Quantization :?代表為BinaryNet

Structured simplification: 作者又分為三類:

tensor factorization :mobilenet 為代表符糊,作者提出這種方法無(wú)法分解1*1的卷積扶欣,而1*1的卷積普遍用在GoogleNet ,ResNet 和Xception 上?

sparse connection:以deep compression 為代表荡含,這種方法缺點(diǎn)是被pruning 后的連接和神經(jīng)元會(huì)形成不規(guī)則的結(jié)構(gòu)瞻润,不容易在硬件上進(jìn)行配置實(shí)現(xiàn)?

channel pruning:本文采用的方法狮暑,優(yōu)點(diǎn)是直接減少不重要的通道數(shù)魏割,缺點(diǎn)是會(huì)對(duì)下游層產(chǎn)生影響,因此要reconstruction


文章的核心內(nèi)容是對(duì)訓(xùn)練好的模型進(jìn)行通道剪枝(channel pruning)滑进,而通道減枝是通過(guò)迭代兩步操作進(jìn)行的:第一步是channel selection犀忱,這一步是采用LASSO regression來(lái)做的,其實(shí)就是添加了一個(gè)L1范數(shù)來(lái)約束權(quán)重扶关,因?yàn)長(zhǎng)1范數(shù)可以使得權(quán)重中大部分值為0阴汇,所以能使權(quán)重更加稀疏,這樣就可以把那些稀疏的channel剪掉节槐;第二步是reconstruction鲫寄,這一步是基于linear least squares(也就是最小二乘,或者叫最小平方)來(lái)約束剪枝后輸出的feature map要盡可能和減枝前的輸出feature map相等疯淫,也就是最小二乘值越小越好〈撩担可以看出本文的通道剪枝是對(duì)訓(xùn)練好的模型進(jìn)行的熙掺,也就是文章說(shuō)的inference time,當(dāng)然作者在最后的conclusion中也提到以后會(huì)在train time中也引進(jìn)通道剪枝咕宿,希望能減少訓(xùn)練的時(shí)間币绩。

原文中作者列舉的加速效果:Our pruned VGG-16 achieves the state-of-the-art results by 5 speed-up along with only 0.3% increase of error. More importantly, our method is able to accelerate modern networks like ResNet, Xception and suffers only 1.4%, 1.0% accuracy loss under 2 speedup respectively, which is significant.

本文采用的通道剪枝(channel pruning)是模型壓縮和加速領(lǐng)域中一種簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)的操作,文中作者還列舉了其他兩種常見(jiàn)的簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)的操作:sparse connection和tensor factorization府阀,可以看Figure1的對(duì)比缆镣。(a)表示傳統(tǒng)的3層卷積操作。(b)表示sparse connection试浙,這是通過(guò)去掉一些參數(shù)很小的連接得到的董瞻,理論上是有明顯的加速效果的,但是在實(shí)現(xiàn)過(guò)程中并不容易田巴,主要因?yàn)橄∈柽B接層的形狀不規(guī)則钠糊。(c)表示tensor factorization,比如SVD分解壹哺,但是這種操作其實(shí)并不會(huì)減少channel數(shù)量抄伍,因此很難帶來(lái)明顯加速。(d)就是通道剪枝(channel pruning)管宵,也就是直接對(duì)channel做剪枝截珍,移除掉一些冗余的channel攀甚,相當(dāng)于給網(wǎng)絡(luò)結(jié)構(gòu)瘦身,而且各個(gè)卷積層的形狀還比較統(tǒng)一岗喉。?

Figure2是本文對(duì)卷積層做通道剪枝的一個(gè)示意圖秋度。先看左邊大的虛線框,其中字母B表示輸入feature map沈堡,同時(shí)c表示B的通道數(shù)量静陈;字母W表示卷積核,卷積核的數(shù)量是n诞丽,每個(gè)卷積核的維度是c*kh*kw鲸拥,kh和kw表示卷積核的size;字母C表示輸出feature map僧免,通道數(shù)是n刑赶。因此通道剪枝的目的是要把B中的某些通道剪掉,使得剪掉后的B和W的卷積結(jié)果能盡可能和C接近懂衩。當(dāng)要剪掉B中的一些feature map的通道時(shí)撞叨,相當(dāng)于剪掉了W中與這些通道對(duì)應(yīng)的卷積核(對(duì)應(yīng)W中3個(gè)最小的立方體塊),這也是后面要介紹的公式中β的含義和之所以用L1范數(shù)來(lái)約束β的原因浊洞,因?yàn)長(zhǎng)1范數(shù)會(huì)使得W更加稀疏牵敷。另外生成這些被剪掉通道的feature map的卷積核也可以刪掉(對(duì)應(yīng)Figure2中第二列的6個(gè)長(zhǎng)條矩形塊中的2個(gè)黑色虛線框的矩形塊)。?

因此最重要的就是如何判斷B中的哪些通道要剪掉法希,具體是分兩步來(lái)迭代進(jìn)行的:In one step, we figure out the most representative channels, and prune redundant ones, based on LASSO regression. In the other step, we reconstruct the outputs with remaining channels with linear least squares. We alternatively take two steps. Further, we approximate the network layer-by-layer, with accumulated error accounted.?

公式1就是優(yōu)化方程枷餐。首先字母c表示待剪枝的feature map的通道數(shù),待剪枝的feature map也就是該卷積層的輸入feature map苫亦;W表示卷積核毛肋,維度是n*c*kh*kw,因此n就是輸出feature map的通道數(shù)屋剑;X表示從輸入feature map中取出的N個(gè)維度為c*kh*kw的samples润匙。因此當(dāng)卷積核W去卷積X時(shí),得到的就是N*n大小的輸出Y唉匾,這里要解釋下N*n的含義孕讳,其實(shí)是輸出n個(gè)feature map,每個(gè)feature map的長(zhǎng)*寬等于N巍膘,因此這里相當(dāng)于把二維的feature map拉直成一個(gè)向量卫病,這樣Y就是二維的,方便公式1中計(jì)算平方典徘。β是一個(gè)向量蟀苛,里面的值只有0或者1,當(dāng)要丟掉某個(gè)channel的時(shí)候逮诲,β的對(duì)應(yīng)位置就是0. || ||F是F范數(shù)帜平。c’表示剪枝后feature map的通道數(shù)幽告,因此最終要達(dá)到的目的是將通道數(shù)從c剪到c‘。?

所以公式1的意思是:首先β的0范數(shù)要小于等于c‘裆甩,也就是說(shuō)β向量中非零值的數(shù)量要小于c’冗锁。然后最小二乘部分的Y表示未剪枝時(shí)的輸出feature map;求和部分表示按照β來(lái)剪枝后的輸出feature map嗤栓,因此這個(gè)優(yōu)化式子是希望二者之間的差異越小越好冻河,所以采取最小二乘(也就是最小平方)的方法來(lái)求β和權(quán)重W。?

當(dāng)然茉帅,上面的式子是沒(méi)有辦法直接優(yōu)化求解的叨叙,因此有了下面的公式2。公式2是將公式1中對(duì)β的約束加到公式中堪澎,同時(shí)使用L1范數(shù)代替原來(lái)β的L0范數(shù)擂错,因?yàn)長(zhǎng)0難以優(yōu)化,而且有數(shù)學(xué)證明L1范數(shù)可以替換L0范數(shù)樱蛤。參數(shù)λ用來(lái)控制β中非零值的數(shù)量钮呀,λ越大,β中的非零值越少昨凡,這樣加速比也越大爽醋。另外||Wi||F=1是用來(lái)約束W的唯一解。?

從前面的介紹可以看出最終這個(gè)優(yōu)化式子要求的是最優(yōu)的β和W便脊,因此具體優(yōu)化的時(shí)候是迭代進(jìn)行的:先固定W子房,求解β,然后固定β就轧,求解W。比如公式3就是固定W(XW用Z表示)田度,求解β的公式妒御。?

公式4就是固定β,求解W的公式镇饺。?

優(yōu)化中的一個(gè)細(xì)節(jié)是前面公式中的λ是在迭代過(guò)程中不斷增大的,直到||β||0穩(wěn)定以后就不增大了。?

一旦滿足β的約束:?


就得到了所需的β和W絮重。當(dāng)然作者在實(shí)驗(yàn)中發(fā)現(xiàn)這樣迭代操作比較耗時(shí)間碴开,因此采取的策略是先不斷優(yōu)化公式3,直到達(dá)到上面這個(gè)β的約束時(shí)再優(yōu)化公式4一次监右。

前面介紹的都是對(duì)于網(wǎng)絡(luò)沒(méi)有分支情況下的通道剪枝边灭,但是現(xiàn)在的ResNet、GoogleNet網(wǎng)絡(luò)都有多分枝健盒,對(duì)于這種網(wǎng)絡(luò)绒瘦,文中以ResNet為例也做了分析称簿,如圖Figure3。首先惰帽,在這個(gè)residual block中憨降,除了第一層和最后一層外的其他層都可以采用前面介紹的通道剪枝方式進(jìn)行剪枝。針對(duì)第一層该酗,因?yàn)樵瓉?lái)其輸入feature map的通道數(shù)是輸出的4倍授药,因此在剪枝之前先對(duì)輸入feature map做sample。針對(duì)最后一層的通道剪枝呜魄,由原來(lái)對(duì)Y2來(lái)優(yōu)化悔叽,改成對(duì)Y1-Y1‘+Y2來(lái)優(yōu)化(Y1和Y2表示剪枝之前的輸出),Y1’表示前面層剪枝后得到的結(jié)果(也就是該residual block的輸入耕赘,只不過(guò)和Y1不同的是該輸入是前面層剪枝后得到的結(jié)果)骄蝇,否者shortcut部分帶來(lái)的誤差會(huì)對(duì)結(jié)果影響較大。?

實(shí)驗(yàn)結(jié)果:?

Figure4是在VGG16網(wǎng)絡(luò)上對(duì)單層做不同的channel selection方式的實(shí)驗(yàn)結(jié)果對(duì)比操骡,用來(lái)證明本文的這種channel selection算法的有效性九火。圖例中fist k表示抽取前k個(gè)channel作為剪枝后的channel,max response表示選取卷積核權(quán)重的絕對(duì)值最大的一些channel作為剪枝后的channel册招〔砑ぃ可以看出隨著層數(shù)的增加,channel pruning的難度也增加是掰,這表明在淺層中存在更多的冗余channel虑鼎,這也是后面對(duì)模型做channel pruning時(shí)候?qū)\層和高層采取不同程度剪枝的依據(jù)(淺層剪枝得更加厲害,比如從conv1_x到conv3_x剪枝后剩余的通道數(shù)與conv4_x剪枝后剩余的通道數(shù)的比例是1:1.5键痛,而conv5_x是不剪枝的炫彩,一方面因?yàn)閏onv5_x計(jì)算量少,另一方面從實(shí)驗(yàn)結(jié)果看其冗余率已經(jīng)很低了)絮短。?

Table1是對(duì)整個(gè)VGG-16網(wǎng)絡(luò)做通道剪枝的結(jié)果江兢,可以看出在2倍加速的時(shí)候甚至沒(méi)有影響到準(zhǔn)確率。?

Table2是作者在VGG-16網(wǎng)絡(luò)上將本文的通道剪枝和spatial factorization丁频、channel factorization結(jié)合在一起(對(duì)應(yīng)表中的Our 3C)做加速的實(shí)驗(yàn)結(jié)果對(duì)比杉允,可以看出結(jié)合不同的加速算法的效果都要優(yōu)于某一種加速算法。?

Table5是作者將加速算法用在object detection算法上的表現(xiàn)席里,這里是以Faster RCNN為例子叔磷。?



比如對(duì)于ResNet和Xception的通道剪枝的實(shí)驗(yàn)結(jié)果、train from scratch等奖磁。

(1)LASSO regression based channel selection. (2)least square reconstruction.

first?k selects the first k channels. 這種方法太簡(jiǎn)單粗暴了改基。

max response 也就是選擇權(quán)值和最大的信道,認(rèn)為擁有的信息最多咖为。


個(gè)人覺(jué)得這篇文章的主要貢獻(xiàn)在于:相較于原來(lái)那種暴力的pruning寥裂,利用數(shù)學(xué)方法優(yōu)化目標(biāo)函數(shù)嵌洼,使得pruning前后的輸出差異最小,取得了一定效果封恰。

缺點(diǎn)在于:我還是覺(jué)得人工加入的限定太多麻养,而且這種方法引入了很多調(diào)節(jié)參數(shù),調(diào)整和優(yōu)化都麻煩诺舔,實(shí)用性不強(qiáng)鳖昌。而且文章開(kāi)頭說(shuō)不需要retrain,其實(shí)還是pruning之后再來(lái)finetune一下效果比較好低飒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末许昨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子褥赊,更是在濱河造成了極大的恐慌糕档,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拌喉,死亡現(xiàn)場(chǎng)離奇詭異速那,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)尿背,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門端仰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人田藐,你說(shuō)我怎么就攤上這事荔烧。” “怎么了汽久?”我有些...
    開(kāi)封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵鹤竭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我景醇,道長(zhǎng)臀稚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任啡直,我火速辦了婚禮,結(jié)果婚禮上苍碟,老公的妹妹穿的比我還像新娘酒觅。我一直安慰自己,他們只是感情好微峰,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布舷丹。 她就那樣靜靜地躺著,像睡著了一般蜓肆。 火紅的嫁衣襯著肌膚如雪颜凯。 梳的紋絲不亂的頭發(fā)上谋币,一...
    開(kāi)封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音症概,去河邊找鬼蕾额。 笑死,一個(gè)胖子當(dāng)著我的面吹牛彼城,可吹牛的內(nèi)容都是我干的诅蝶。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼募壕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼调炬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起舱馅,我...
    開(kāi)封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缰泡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后代嗤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棘钞,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年资溃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了武翎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溶锭,死狀恐怖宝恶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情趴捅,我是刑警寧澤垫毙,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站拱绑,受9級(jí)特大地震影響综芥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猎拨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一膀藐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧红省,春花似錦额各、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春傲醉,著一層夾襖步出監(jiān)牢的瞬間蝇闭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工硬毕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呻引,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓昭殉,卻偏偏與公主長(zhǎng)得像苞七,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挪丢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

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