模型壓縮簡述

如今學(xué)術(shù)界新提出的神經(jīng)網(wǎng)絡(luò)模型越來越大析既,而在實際應(yīng)用中很多模型都要被部屬在移動端笆焰。移動端的存儲空間以及算力都有限,無法運行太大的模型氢妈,所以模型壓縮這個概念就應(yīng)運而生粹污。本文簡單介紹一下在算法(軟件)層面的模型壓縮方法和paper,不涉及硬件上的技巧首量。內(nèi)容大多來自2020年李宏毅老師的課程壮吩。
目前在算法層面模型壓縮主要有四個流派,簡介如下:

Network Pruning

剪枝思想加入神經(jīng)網(wǎng)絡(luò)中加缘。將網(wǎng)絡(luò)中不重要的weight和neuron(網(wǎng)絡(luò)中每層的層數(shù))刪除鸭叙。

Knowledge Distillation

傳說中的知識蒸餾。利用已經(jīng)訓(xùn)練好的大模型來指導(dǎo)小模型拣宏。主要用在分類任務(wù)上沈贝。

Parameter Quantization

從數(shù)據(jù)存儲角度節(jié)省空間,將存儲參數(shù)的浮點數(shù)壓縮為更小的單位勋乾,用更少的位來表示值缀程。

Architecture Design

調(diào)整結(jié)構(gòu)/使用特殊的結(jié)構(gòu)來節(jié)省參數(shù),后面再詳細介紹市俊。


Network Pruning

前面提到了刪除不重要的weight和neuron。對于權(quán)重來說滤奈,他的范數(shù)(比如L1或L2)大小可以看出重要程度:范數(shù)太小摆昧,不重要。對于神經(jīng)元蜒程,不同輸入下的輸出是0的頻率可以看出重要程度:經(jīng)常輸出0绅你,不重要。刪完之后昭躺,對新的模型進行fine-tune忌锯。這是剪枝最基礎(chǔ)的思路,具體每層剪幾個领炫,低于多少要剪掉不同paper有提出不同算法偶垮。注意可以迭代多次刪除,不要一次刪除太多帝洪。在實踐中似舵,刪除神經(jīng)元的方式更容易被執(zhí)行計算。
下面兩張圖是對于剪枝降低了參數(shù)的示意圖:


DNN

CNN

至于為什么不直接訓(xùn)練小的模型葱峡,因為大的網(wǎng)絡(luò)容易訓(xùn)練砚哗,小的網(wǎng)絡(luò)容易陷入局部最優(yōu),所以就把大網(wǎng)絡(luò)裁剪成小網(wǎng)絡(luò)而不是直接訓(xùn)練小網(wǎng)絡(luò)砰奕。
當(dāng)然可以剪枝的部分不限于weight和neuron蛛芥,對于剪枝完之后模型的處理方法也有新的發(fā)現(xiàn)提鸟。下面給出相關(guān)的paper list:

Pruning Filters for Efficient ConvNets(ICLR 2017)
Learning Efficient Convolutional Networks Through Network Slimming(ICCV2017)
Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration(CVPR2019)
The Lottery Ticket Hypothesis:Finding Sparse,Trainable Neural Networks(ICLR2019)
Rethinking the value of network pruning(ICLR2019)
Deconstructing Lottery Tickets:Zeros仅淑,Signs称勋,and the Supermask(ICML2019)


Knowledge Distillation

通過已訓(xùn)練好的teacher模型訓(xùn)練student模型,指導(dǎo)/學(xué)習(xí)的過程在這里被抽象為蒸餾(distillation)漓糙∠巢可以蒸餾模型的輸出,直接匹配logits昆禽,或者蒸餾模型中間輸出的特征feature蝗蛙,直接匹配feature或者學(xué)習(xí)feature如何轉(zhuǎn)換 。
先說最經(jīng)典的醉鳖,對logits的蒸餾捡硅。結(jié)構(gòu)如下圖:


左邊老師右邊學(xué)生

至于為什么要在softmax前除T,paper給的解釋是讓softmax的輸出更平滑(意為輸入更加類似soft target盗棵,而不是one-hot那樣的hard target)壮韭。知識蒸餾還有一個有趣的點就是讓小的模型還學(xué)會了不同輸出label間的關(guān)系,比如在mnist模型可以學(xué)會label1和7很相似纹因。
對于logits distillation的研究還有Deep Mutual Learning喷屋,Born Again Neural Networks,Improved Knowledge Distiilation via Teacher Assistant等研究瞭恰,在下面的paperlist也有列出屯曹。
接下來簡單介紹feature distillation。


feature distillation中教師網(wǎng)絡(luò)指導(dǎo)學(xué)生網(wǎng)絡(luò)中間feature的產(chǎn)生

上面的logits distillation可以看出是直接對結(jié)果惊畏,對label進行指導(dǎo)/學(xué)習(xí)恶耽。feature distillation則是對中間feature進行指導(dǎo)/學(xué)習(xí)。上圖的意思是颜启,直接logits distillation那學(xué)生網(wǎng)絡(luò)會無法理解偷俭,為什么label0和label8很像,只是知道他們很像缰盏,而加入feature distillation學(xué)生就可以通過中間過程理解涌萤,0有一個圈8有兩個(當(dāng)然圖中的例子只是為了作者更好闡述這個模型)。
同時在feature distillation過程中口猜,也可以加入注意力機制形葬,讓模型知道要學(xué)習(xí)feature中的那部分。
之前這些暮的,都是針對一次采樣笙以,讓學(xué)生和教師相似。也可以正對每次采樣間的關(guān)系做知識蒸餾:Relational KD:
Relational KD

類似的研究還有Similarity-Preserving Knowledge Distiilation冻辩,下面是paper list:

Distilling the knowledge in a Neural Network(NIPS2014)
Deep Mutual Learning(CVPR2018)
Born Again Neural Networks(ICML2018)
Improved Knowledge Distiilation via Teacher Assistant(AAAI2020)
Paying More Attention to Attention:Improving the Performance of Convolutional Neural Networks via Attention Transfer(ICLR2017)
Relational Knowledge Distiilation(CVPR2019)
Similarity-Preserving Knowledge Distiilation(ICCV2019)


Parameter Quantization

可以用的方法有權(quán)重聚類猖腕,如下圖:


weight clustering

也可以用一些經(jīng)典的方法比如哈夫曼編碼拆祈。
還有一種方法是使權(quán)重全都是+1或-1:


Binary Weights

Architecture Design

調(diào)整結(jié)構(gòu)來節(jié)省參數(shù)的圖示如下:


DNN中

對于卷積結(jié)構(gòu)也類似,傳統(tǒng)的卷積結(jié)構(gòu)需要3x3x2x4=72個參數(shù)倘感,而以下結(jié)構(gòu)只需要18+8=26個:


Depthwise Separable Convolution

節(jié)省了參數(shù)放坏,效果并不差

上圖中的結(jié)構(gòu)可以把參數(shù)從從k x k x I x O的參數(shù)降低到k x k x I+I x O。

著名的模型有SqueezeNet老玛,MobileNet淤年,ShuffleNet,Xception蜡豹。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末麸粮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子镜廉,更是在濱河造成了極大的恐慌弄诲,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娇唯,死亡現(xiàn)場離奇詭異齐遵,居然都是意外死亡,警方通過查閱死者的電腦和手機塔插,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門梗摇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人想许,你說我怎么就攤上這事伶授。” “怎么了伸刃?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逢倍。 經(jīng)常有香客問我捧颅,道長,這世上最難降的妖魔是什么较雕? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任碉哑,我火速辦了婚禮,結(jié)果婚禮上亮蒋,老公的妹妹穿的比我還像新娘扣典。我一直安慰自己,他們只是感情好慎玖,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布贮尖。 她就那樣靜靜地躺著,像睡著了一般趁怔。 火紅的嫁衣襯著肌膚如雪湿硝。 梳的紋絲不亂的頭發(fā)上薪前,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音关斜,去河邊找鬼示括。 笑死,一個胖子當(dāng)著我的面吹牛痢畜,可吹牛的內(nèi)容都是我干的垛膝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丁稀,長吁一口氣:“原來是場噩夢啊……” “哼吼拥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起二驰,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤扔罪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后桶雀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體矿酵,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年矗积,在試婚紗的時候發(fā)現(xiàn)自己被綠了全肮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡棘捣,死狀恐怖辜腺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乍恐,我是刑警寧澤评疗,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站茵烈,受9級特大地震影響百匆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呜投,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一加匈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仑荐,春花似錦雕拼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春示姿,著一層夾襖步出監(jiān)牢的瞬間甜橱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工栈戳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岂傲,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓子檀,卻偏偏與公主長得像镊掖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子褂痰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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