一霜大、首先,為什么網(wǎng)絡(luò)模型需要模型壓縮捡絮?
通常:給定一個(gè)精度級(jí)別熬芜,存在多個(gè)達(dá)到該精度級(jí)別的CNN架構(gòu)。在同等精度下福稳,具有較少參數(shù)的CNN有三大優(yōu)勢(shì):
- 更高效的分布式訓(xùn)練:分布式訓(xùn)練的數(shù)據(jù)并行方法在每個(gè)服務(wù)器上保留整個(gè)模型的副本涎拉,處理訓(xùn)練數(shù)據(jù)集的不同子集。因此通信開銷與模型中的參數(shù)數(shù)成正比,換而言之曼库,越小的模型区岗,訓(xùn)練更快略板。
2.將新模型導(dǎo)出到客戶端時(shí)毁枯,開銷較小。Over-the-air update(OTA)是指移動(dòng)終端通過(guò)無(wú)線網(wǎng)絡(luò)下載遠(yuǎn)程服務(wù)器上的升級(jí)包叮称,對(duì)系統(tǒng)或應(yīng)用進(jìn)行升級(jí)的技術(shù)种玛。越小的模型,需要的通信更少瓤檐,因此可以實(shí)現(xiàn)頻繁更新赂韵。
3.更容易在嵌入式設(shè)備上部署。芯片存儲(chǔ)空間有限挠蛉,較小的模型讓芯片(FPGA)祭示,嵌入式設(shè)備存儲(chǔ),部署神經(jīng)網(wǎng)絡(luò)更加可行谴古。
二质涛、兩種類型
1. 新的卷機(jī)計(jì)算方法
(1)是直接提出新的卷機(jī)計(jì)算方式,從而減少參數(shù)掰担,達(dá)到壓縮模型的效果汇陆,例如SqueezedNet,mobileNet
SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size
本方法旨在在保持相同精度的情況下,構(gòu)建更小的神經(jīng)網(wǎng)絡(luò)模型带饱,提出了SqueezeNet網(wǎng)絡(luò)
- 概述了利用很少的參數(shù)進(jìn)行CNN架構(gòu)設(shè)計(jì)的策略
- 引入了Fire Module作為網(wǎng)絡(luò)基本構(gòu)成單元
- 以Fire Module為基礎(chǔ)毡代,構(gòu)建了輕量級(jí)網(wǎng)絡(luò)
結(jié)構(gòu)型策略設(shè)計(jì):
- 策略1:用1x1卷積替換3x3卷積
在卷積核數(shù)目一定的情況下,用大多數(shù)的1x1卷積替換3x3卷積勺疼,因?yàn)?x3卷積的參數(shù)量是1x1卷積的9倍之多
策略2:減少3x3卷積的輸入特征通道數(shù)
假定某卷積層全由3x3卷積組成教寂,則該層的參數(shù)量計(jì)算為:(input channel)x(output channel)x(3x3)
因此,要在CNN中減少參數(shù)执庐,不僅要減少3x3卷積核的數(shù)量孝宗,而且還要減少輸入通道的數(shù)量策略3:降采樣后置
在卷積網(wǎng)絡(luò)中,每個(gè)卷積層都會(huì)生成輸出特征圖耕肩,特征圖主要受以下因素控制:輸入數(shù)據(jù)size因妇,降采樣層的位置。
尺寸更大的特征圖包含更豐富的空間信息猿诸,能最大化分類精度婚被,因此將降采樣層放在靠后的位置,例如VGG網(wǎng)絡(luò)結(jié)構(gòu)梳虽。
(2)修改網(wǎng)絡(luò)結(jié)構(gòu)址芯,類似于mobileNet
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- MobileNets主要致力于優(yōu)化延遲,但也可以產(chǎn)生小型網(wǎng)絡(luò)
-
MobileNets 主要基于深度可分離卷積構(gòu)成,通過(guò)設(shè)置兩個(gè)超參數(shù)谷炸,實(shí)現(xiàn)準(zhǔn)確率和延時(shí)性之間的平衡
(3)修改卷機(jī)計(jì)算方式北专,depth-wise 卷積
深度可分離卷積:
輸入特征 F:DF x DF x M 輸出特征 G:DF x DF x N
2. 已訓(xùn)練好的模型上做裁剪
這種就是在訓(xùn)練好的模型上做一些修改,然后在fine-tuning到原來(lái)的準(zhǔn)確率旬陡,主要有一些方法
剪枝:神經(jīng)網(wǎng)絡(luò)是由一層一層的節(jié)點(diǎn)通過(guò)邊連接拓颓,每個(gè)邊上會(huì)有權(quán)重,所謂剪枝描孟,就是當(dāng)我們發(fā)現(xiàn)某些邊上的權(quán)重很小驶睦,可以認(rèn)為這樣的邊不重要,進(jìn)而可以去掉這些邊匿醒。在訓(xùn)練的過(guò)程中场航,在訓(xùn)練完大模型之后,看看哪些邊的權(quán)值比較小廉羔,把這些邊去掉溉痢,然后繼續(xù)訓(xùn)練模型;
權(quán)值共享:就是讓一些邊共用一個(gè)權(quán)值憋他,達(dá)到縮減參數(shù)個(gè)數(shù)的目的孩饼。假設(shè)相鄰兩層之間是全連接,每層有1000個(gè)節(jié)點(diǎn)举瑰,那么這兩層之間就有1000*1000=100萬(wàn)個(gè)權(quán)重參數(shù)捣辆。可以將這一百萬(wàn)個(gè)權(quán)值做聚類此迅,利用每一類的均值代替這一類中的每個(gè)權(quán)值大小汽畴,這樣同屬于一類的很多邊共享相同的權(quán)值,假設(shè)把一百萬(wàn)個(gè)權(quán)值聚成一千類耸序,則可以把參數(shù)個(gè)數(shù)從一百萬(wàn)降到一千個(gè)忍些。
量化:一般而言,神經(jīng)網(wǎng)絡(luò)模型的參數(shù)都是用的32bit長(zhǎng)度的浮點(diǎn)型數(shù)表示坎怪,實(shí)際上不需要保留那么高的精度罢坝,可以通過(guò)量化,比如用0~255表示原來(lái)32個(gè)bit所表示的精度搅窿,通過(guò)犧牲精度來(lái)降低每一個(gè)權(quán)值所需要占用的空間嘁酿。
神經(jīng)網(wǎng)絡(luò)二值化:比量化更為極致的做法就是神經(jīng)網(wǎng)絡(luò)二值化,也即將所有的權(quán)值不用浮點(diǎn)數(shù)表示了男应,用二進(jìn)制的數(shù)表示闹司,要么是+1,要么是-1,用二進(jìn)制的方式表示沐飘,原來(lái)一個(gè)32bit權(quán)值現(xiàn)在只需要一個(gè)bit就可以表示游桩,可以大大減小模型尺寸牲迫。
(1) XNOR-Net: ImageNet Classi?cation Using Binary Convolutional Neural Networks
網(wǎng)絡(luò)權(quán)重二值化、輸入二值化借卧,從頭開始訓(xùn)練一個(gè)二值化網(wǎng)絡(luò)盹憎,不是在已有的網(wǎng)絡(luò)上二值化
(2) Learning both Weights and Connections for Ef?cient Neural Networks
學(xué)習(xí)重要的連接,根據(jù)連接的權(quán)重進(jìn)行裁剪铐刘,fine-tuning讓網(wǎng)絡(luò)保持稀疏的連接
(3) Exploiting linear structure within convolutional networks for ef?cient evaluation.
對(duì)已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)應(yīng)用奇異值分解
(4) Eie: Ef?cient inference engine on compressed deep neural network.
加速器
(5) Deep compression: Compressing DNNs with pruning, trained quantization and huffman coding.
裁剪(閾值)陪每、量化(8bit,存儲(chǔ)方式)、哈夫曼編碼
http://blog.csdn.net/may0324/article/details/52935869
(7) Deep Model Compression: Distilling Knowledge from Noisy Teachers
Teacher-student Framework滨达,一個(gè)網(wǎng)絡(luò)指導(dǎo)另外一個(gè)網(wǎng)絡(luò)的訓(xùn)練
(8) PerforatedCNNs: Acceleration through Elimination of Redundant Convolutions
在一些稀疏位置跳過(guò)CNN求值奶稠,加速效果不明顯俯艰,且不能壓縮模型
(9) Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or ?1
訓(xùn)練二值化網(wǎng)絡(luò)
https://tensortalk.com/?cat=model-compression-parameter-pruning
(10) PRUNING FILTERS FOR EFFICIENT CONVNETS
計(jì)算filter的L1范數(shù)捡遍,直接過(guò)濾掉較小L1范數(shù)對(duì)應(yīng)的feature map, 然后再次訓(xùn)練,有兩種竹握,一是每裁剪一層訓(xùn)練一下画株,一是直接裁剪整個(gè)網(wǎng)絡(luò),然后fine-tuning. 相比權(quán)值連接的裁剪啦辐,這種比較暴力谓传,好處就是不會(huì)引入稀疏矩陣的計(jì)算,從而也不需要稀疏矩陣庫(kù)芹关,壞處就是可能無(wú)法恢復(fù)到最開始的準(zhǔn)確率续挟。
本文還未寫完,更加詳細(xì)還在陸續(xù)完善侥衬,待續(xù)诗祸。。轴总。直颅。。怀樟。
(本文參考與總結(jié)他人功偿,侵權(quán)立刪)