|
SIGAI知識(shí)庫 更多:http:///knowledge.html 論文解讀 COMPRESSION OF DEEP CONVOLUTIONAL NEURAL NETWORKS FOR FAST AND LOW POWER MOBILE APPLICATIONS【ICLR 2016】 盡管最新的高端智能手機(jī)有強(qiáng)大的CPU和GPU,但是在移動(dòng)設(shè)備上運(yùn)行復(fù)雜的深度學(xué)習(xí)模型(例如ImageNet分類模型)仍然十分困難。為了可以將深度網(wǎng)絡(luò)模型應(yīng)用于移動(dòng)設(shè)備,本文提出了一個(gè)簡(jiǎn)單且有效的壓縮整個(gè)CNN模型的方案,稱為“one-shot whole network compression”,該方案包括三個(gè)步驟:a)利用VBMF(Variational Bayesian Matrix Factorization)選擇合適的秩。b)對(duì)卷積核做Tucker分解。c)參數(shù)微調(diào)(fine-tune)恢復(fù)準(zhǔn)確率。本文通過壓縮各種CNN結(jié)構(gòu)(AlexNet,VGG-S,GoogLeNet,VGG-16)證明了該方法的有效性。在很小的準(zhǔn)確率損失下,可以極大地減少模型大小、運(yùn)行時(shí)間和能量消耗。另外本文關(guān)于1*1卷積,提出了重要的實(shí)現(xiàn)方面的問題。 一.簡(jiǎn)介 最近,越來越多的工作關(guān)注與如何將CNN模型應(yīng)用到移動(dòng)端,在移動(dòng)端的應(yīng)用中,常用的方式是訓(xùn)練過程在服務(wù)器中進(jìn)行,而測(cè)試或推斷的過程則是在移動(dòng)設(shè)備中執(zhí)行。目前移動(dòng)設(shè)備無法使用CNN模型的主要限制在于移動(dòng)設(shè)備的存儲(chǔ)能力,計(jì)算能力和電池供能。因此針對(duì)移動(dòng)設(shè)備受限資源,需要單獨(dú)設(shè)計(jì)CNN的結(jié)構(gòu)。 眾所周知,深度神經(jīng)網(wǎng)絡(luò)的參數(shù)是冗余的,而這也可以促使模型在訓(xùn)練中收斂到損失函數(shù)的一個(gè)不錯(cuò)的極小值點(diǎn)。那么為了提升模型在移動(dòng)設(shè)備中測(cè)試過程的效率,我們可以對(duì)訓(xùn)練好的模型做處理,消除冗余的參數(shù),同時(shí)對(duì)準(zhǔn)確率沒有明顯的影響。目前有許多工作是利用低秩估計(jì)(視頻中有介紹)來壓縮CNN模型的【1,2,3】,而這些工作主要關(guān)注于卷積層,因?yàn)榫矸e層是所有層中最耗時(shí)的計(jì)算層。當(dāng)前的許多工作盡管可以有效地壓縮單層卷積,但是對(duì)整個(gè)網(wǎng)絡(luò)的壓縮仍然是一個(gè)待解決的挑戰(zhàn)。 針對(duì)復(fù)雜任務(wù)(例如ImageNet的分類任務(wù))訓(xùn)練得到的CNN模型,若要壓縮整個(gè)模型仍然是很間距的任務(wù),【4】工作提出可以使用“asymmetric 3d”的分解方法來加速所有的卷積層,另外他們也說明了選擇有效秩的方法和優(yōu)化的方法。盡管他們提出的方法可以在很多平臺(tái)中實(shí)現(xiàn)(比如Caffe,Torch,Theano),但是秩的選擇和優(yōu)化的部分仍然需要額外的實(shí)現(xiàn),本文則提出了一個(gè)更加簡(jiǎn)單且有效的方法,同樣可以針對(duì)整個(gè)模型進(jìn)行壓縮,而且卷積層,全連接層都可以使用。 本文的主要?jiǎng)?chuàng)新和貢獻(xiàn)在于: 1) 本文提出了“one-shot whole network compression scheme”,可以通過簡(jiǎn)單的三步(選擇合適的秩、張量分解、模型調(diào)優(yōu))來實(shí)現(xiàn)對(duì)整個(gè)網(wǎng)絡(luò)的壓縮。 2) 在本文提出的方法中,利用Tucker分解的方法來做張量分解,利用VBMF(Variational Bayesian Matrix Fatorization)來做秩的估計(jì)。本文方法中每層的優(yōu)化目標(biāo)是最小化參數(shù)張量的重建誤差,因此最后需要模型調(diào)優(yōu)來保證準(zhǔn)確率。 3) Tucker分解和VBMF都是可以利用開源的工具實(shí)現(xiàn),而且模型調(diào)優(yōu)也可以利用任意平臺(tái)實(shí)現(xiàn)。 4) 本文針對(duì)多種CNN結(jié)構(gòu)(AlexNet,VGG-S,GoogLeNet,VGG-16)在Titan X和智能手機(jī)上進(jìn)行了壓縮實(shí)驗(yàn),證明了方法的有效性。 5) 通過分析功率消耗,本文發(fā)現(xiàn)了關(guān)于1*1卷積核操作的現(xiàn)象,即盡管1*1卷積是很簡(jiǎn)單的操作,但是由于沒有有效的緩存存儲(chǔ),這類卷積層是理論加速率和實(shí)際加速率不一致的主要原因。 二.相關(guān)工作 CNN模型的壓縮 CNN模型中最常見的是卷積層和全連接層,相應(yīng)的卷積層主導(dǎo)了計(jì)算的時(shí)間,全連接層主導(dǎo)了模型的大小?!?】受限提出神經(jīng)網(wǎng)絡(luò)中刪除冗余參數(shù)的可能,并且提出了幾種模型壓縮的技術(shù)。后來怕【2】提出可以使用SVD分解來壓縮全連接層的參數(shù)矩陣,同時(shí)可以保證準(zhǔn)確率沒有太大的下降。最近更多的方法被探索,【6】基于向量量化,【7】基于哈希技術(shù),【8】利用循環(huán)投影,都可以壓縮CNN模型,【9】利用張量分解的方法提出了比SVD壓縮效果更好的方法?!?,1】基于低秩分解的方法,針對(duì)卷積層的參數(shù)進(jìn)行壓縮,但是他們都僅僅對(duì)單層卷積或幾層卷積做壓縮,并沒有應(yīng)用于深度網(wǎng)絡(luò)中。 最近【4】提出“asymmetric 3d” 分解的方法可以壓縮整個(gè)網(wǎng)絡(luò)。他們提出原本D*D的卷積可以分解為D*1,1*D和1*1的卷積,此外,他們也提出使用PCA來估計(jì)張量的秩,已經(jīng)通過最小化非線性層輸出特征圖的重建誤差來得到分解后的參數(shù)張量(卷積核),最后他們也提出未來改進(jìn)中可以使用參數(shù)調(diào)優(yōu)(fine-tune)來進(jìn)一步保證準(zhǔn)確率。本文提出的方法與上述方法的不同之處在于,本文利用Tucker分解,可以壓縮卷積層和全連接層,利用VBMF來做張量秩的估計(jì),并通過最小化參數(shù)張量的重建誤差來獲得壓縮后的參數(shù)張量。 張量分解 張量本質(zhì)上是多維的數(shù)組,例如向量可以看作1維張量,矩陣是2維張量。兩個(gè)最常見的張量分解方法是CP分解【10,11,12】和Tucker分解【13,14,15】,本文利用的是Tucker分解。Tucker分解可以看作是一個(gè)高階的SVD分解,對(duì)于全連接層的Tucker分解就等同于SVD分解,即針對(duì)卷積層做Tucker分解,針對(duì)全連接層做SVD分解。對(duì)于第一層卷積,由于輸入通道數(shù)很?。ú蕡D為3)因此也是做SVD分解,具體的流程如圖2.1所示 圖2.1 本文提出的低秩估計(jì)方法
三.本文方法 如圖2.1所示為本文提出方法的流程,壓縮整個(gè)網(wǎng)絡(luò)包括三個(gè)步驟:1)選擇合適的秩;2)Tucker分解;3)參數(shù)調(diào)優(yōu)。在第一步中,本文利用VBMF分析參數(shù)張量,并得到合適的秩;接著使用Tucker分解針對(duì)每一層做壓縮,每個(gè)張量保留的秩就是VBMF得到的秩;最后利用BP(back propagation)做參數(shù)調(diào)優(yōu)。 Tucker分解 在CNN中,我們不考慮batch那一維,那么實(shí)際卷積的輸入張量,卷積核和輸出張量設(shè)為X,K,Y 則卷積層的操作可以通過如下公式獲得,式中Δ為stride,P為padding的大小 如果我們以秩(R1, R2, R3, R4)做Tucker分解,那么卷積核參數(shù)可以估計(jì)表示為如下形式,式中C'為核張量,U1,U2,U3,U4為參數(shù)矩陣 對(duì)于我們實(shí)際CNN中的模型,我們不用對(duì)所有維度做分解,比如第2,3維,實(shí)際上對(duì)應(yīng)與空間維度(D * D)本身很小不需要壓縮,因此實(shí)際應(yīng)用的對(duì)參數(shù)張量的估計(jì)為下式,式中C為核張量 我們將卷積公式中的參數(shù)張量用估計(jì)的張量來表示,于是得到以下的計(jì)算公式,式中Z,U’都是臨時(shí)張量,而下式中的每一步都可以用卷積來實(shí)現(xiàn)。 分解后的卷積過程如圖3.1所示,首先是1*1的卷積,可以看作通道維度的壓縮,第二個(gè)卷積是D*D的卷積,可以看作是做空間維度的信息交流,最后一個(gè)卷積是1*1的卷積,可以看作是將通道維度還原。 圖3.1 Tucker分解后的卷積操作
從上圖中,我們可以看到第一個(gè)卷積和第三個(gè)卷積都是1*1的卷積核,本質(zhì)上是對(duì)于輸入特征圖X做了通道維度的線性重組,這個(gè)方法與【16】提出的“network-in-network”很相似,而且這種結(jié)構(gòu)也廣泛應(yīng)用與CNN模型中(比如GoogLeNet中的Inception結(jié)構(gòu)),但是本文提出的結(jié)構(gòu)與之最大的不同在于,第一個(gè)和第二個(gè)卷積之后并沒有加非線性層。 復(fù)雜度分析 原本的卷積操作,需要D2ST個(gè)參數(shù),“multiplication-addition”操作數(shù)為D2STH'W'(即乘法-加法操作,1個(gè)乘法-加法操作數(shù)是1個(gè)乘法和1個(gè)加法操作。由于卷積,矩陣乘法都可以歸結(jié)為向量?jī)?nèi)積,而向量?jī)?nèi)積操作中乘法個(gè)數(shù)=加法個(gè)數(shù)-1,當(dāng)向量維度很大時(shí),兩者基本可看作相等,于是在CNN計(jì)算操作數(shù)通常使用乘法-加法操作數(shù)來衡量),因此通過Tucker分解,每層卷積的壓縮率和加速率可以表示為 從上式我們可以看到秩R3,R4是非常重要的超參數(shù),他們決定了壓縮率和加速率,同時(shí)也極大影響著準(zhǔn)確率。而秩的估計(jì)本身又是十分困難的,本文利用了VBMF來做秩的估計(jì),主要參考是【17】 CP分解與Tucker分解的對(duì)比 CP分解實(shí)際上將張量轉(zhuǎn)化為若干1維向量乘積的和,如圖3.2所示
圖3.2 CP分解 【2,3】使用了CP分解來估計(jì)卷積層的參數(shù),但是工作中僅針對(duì)8層網(wǎng)絡(luò)進(jìn)行了實(shí)驗(yàn)。實(shí)際上CP分解的穩(wěn)定性略差于Tucker,而且其計(jì)算更加耗時(shí)。而本文通過大量的實(shí)驗(yàn)證明了Tucker分解可以有效地壓縮AlexNet,VGG-S,GoogLeNet,VGG-16等網(wǎng)絡(luò)。 參數(shù)調(diào)優(yōu) 由于本文提出的方法是最小化參數(shù)張量的重建誤差,(asymmetric 3d方法中是最小化特征圖的重建誤差)因此直接做Tucker分解后模型的準(zhǔn)確率會(huì)有很大程度的降低(在作者的試驗(yàn)中,AlexNet壓縮后會(huì)有50%的準(zhǔn)確率損失)。圖3.3為參數(shù)調(diào)優(yōu)的實(shí)驗(yàn),橫坐標(biāo)為訓(xùn)練迭代次數(shù),縱坐標(biāo)為ImageNet Top-5準(zhǔn)確率。通過實(shí)驗(yàn)可以發(fā)現(xiàn),參數(shù)調(diào)優(yōu)可以很容易地恢復(fù)模型地準(zhǔn)確率,而且僅經(jīng)過1Epoch的迭代就可以將模型準(zhǔn)確率恢復(fù)到不錯(cuò)的效果。
圖3.3 參數(shù)調(diào)優(yōu)對(duì)準(zhǔn)確率的影響
在作者的實(shí)驗(yàn)中,設(shè)定基本學(xué)習(xí)率是0.001,之后每5Epoch或10Epoch降為之前的0.1。同時(shí)為了證明Tucker分解的有效性,作者按照分解后的網(wǎng)絡(luò)結(jié)構(gòu),以高斯隨機(jī)分布初始化網(wǎng)絡(luò)參數(shù)從頭訓(xùn)練,發(fā)現(xiàn)得到的模型效果并不好,由此可以證明Tucker分解獲得分解后的參數(shù)是必要的。 四.相關(guān)實(shí)驗(yàn) 首先作者利用4個(gè)有代表性的網(wǎng)絡(luò)來驗(yàn)證方法的有效性:AlexNet,VGG-S,GoogLeNet,VGG-16。針對(duì)每一個(gè)網(wǎng)絡(luò),作者都在Nvidia Titan X和智能手機(jī) Samsung Galaxy S6上進(jìn)行了對(duì)比實(shí)驗(yàn)。其次作者針對(duì)AlexNet進(jìn)行逐層的壓縮效果分析。最后作者也測(cè)量了在智能手機(jī)上運(yùn)行時(shí)的功率消耗(包括GPU和內(nèi)存的功率消耗) 整體壓縮結(jié)果 圖4.1為針對(duì)四種不同網(wǎng)絡(luò),在Titan X和Samsung Galaxy S6上的效果,圖中*表示經(jīng)過壓縮后的網(wǎng)絡(luò)。 實(shí)驗(yàn)發(fā)現(xiàn)本文提出的方法可以針對(duì)不同的網(wǎng)絡(luò)達(dá)到很好的壓縮和加速效果,在Titan X上可以達(dá)到1.23~2.33的加速效果,而在移動(dòng)設(shè)備上也可以達(dá)到1.42~3.68的加速效果。
圖4.1 針對(duì)各個(gè)網(wǎng)絡(luò)的壓縮和加速效果
經(jīng)過實(shí)驗(yàn),作者發(fā)現(xiàn)移動(dòng)設(shè)備中加速的效果明顯由于GPU的加速效果。作者分析主要原因在于移動(dòng)設(shè)備中GPU去我少線程級(jí)的并行計(jì)算,Samsung S6中的縣城數(shù)比Titan X少24倍。模型經(jīng)過壓縮,可以將整個(gè)參數(shù)個(gè)數(shù)大大減少,同時(shí)就減少了緩存的占用和內(nèi)存的讀取數(shù)據(jù)的時(shí)間。而這種優(yōu)勢(shì)在缺少并行線程的GPU中體現(xiàn)得更加明顯。 逐層壓縮結(jié)果 圖4.2為針對(duì)AlexNet的逐層壓縮和加速的效果分析,對(duì)圖中每一層,上面的結(jié)果為原網(wǎng)絡(luò)的結(jié)果,下面的結(jié)果為經(jīng)過壓縮后網(wǎng)絡(luò)的結(jié)果。經(jīng)過Tucker分解后,每一個(gè)卷積實(shí)際分解成了三個(gè)矩陣的乘法(在實(shí)現(xiàn)中矩陣乘法有卷積代替),作者在結(jié)果中也顯示了每個(gè)矩陣乘法的運(yùn)算量(在分解后模型的FLOPs中括號(hào)中的三個(gè)數(shù)分別代表3個(gè)矩陣乘法的運(yùn)算量) 經(jīng)過實(shí)驗(yàn),作者發(fā)現(xiàn)在移動(dòng)設(shè)備上,全連接層的加速效果由于卷積層。作者分析同樣是由于參數(shù)減少,緩解了緩存的壓力,而全連接層的參數(shù)個(gè)數(shù)遠(yuǎn)遠(yuǎn)多于卷積層,而且卷積層的參數(shù)有很大程度的共享,全連接層的參數(shù)都僅利用了一次,因此這種優(yōu)勢(shì)也更加明顯。對(duì)于全連接層這種參數(shù)僅利用一次的數(shù)據(jù),被稱為“dead-on-arrival(DoA) data”,就緩存而言,DoA數(shù)據(jù)相比于卷積層是低效的。因此全連接層的加速效果會(huì)明顯由于卷積層。
圖4.2 針對(duì)AlexNet的逐層壓縮和加速效果分析
功耗 由于VGG-16網(wǎng)絡(luò)與VGG-S網(wǎng)絡(luò)有相同的趨勢(shì),因此作者僅以VGG-S的結(jié)果來表示VGG網(wǎng)絡(luò)結(jié)構(gòu)在壓縮前后的功率。結(jié)果如圖4.3所示。
圖4.3 本文方法對(duì)功率消耗的影響 每個(gè)圖表示相應(yīng)網(wǎng)絡(luò)的功率隨時(shí)間的變化情況,圖中藍(lán)色曲線表示GPU的功率,紅色的曲線表示內(nèi)存的功率。經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn)壓縮后網(wǎng)絡(luò)的功耗低于原網(wǎng)絡(luò),作者分析是由于大量利用1*1卷積的結(jié)果。在平臺(tái)執(zhí)行卷積操作時(shí),會(huì)有相應(yīng)的優(yōu)化技術(shù)(比如Caffeinated convolution)在這樣的情況下,1*1的卷積相比于其他卷積(3*3或5*5等)對(duì)緩存的利用率更低,因?yàn)閿?shù)據(jù)的重復(fù)利用量與卷積層的參數(shù)個(gè)數(shù)成正比。所以計(jì)算1*1卷積時(shí)會(huì)發(fā)生更多的緩存未命中問題(cache miss),而緩存未命中情況發(fā)生時(shí),會(huì)導(dǎo)致GPU空閑而減少功耗,所以在執(zhí)行1*1卷積時(shí),GPU的功耗會(huì)下降,但同樣也會(huì)導(dǎo)致GPU功耗的震蕩。在原網(wǎng)絡(luò)中GPU的功耗在每一層中都是比較平穩(wěn)的(GoogLeNet中由于其結(jié)構(gòu)本身就大量使用1*1卷積,因此原網(wǎng)絡(luò)GPU功耗也有震蕩的情況)但實(shí)際上,這種GPU空閑和緩存未命中的情況是低效的。 參考文獻(xiàn) [1]. Jaderberg, M., Vedaldi, A., and Zisserman, A. Speeding up convolutional neural networks with low rank expansions. In British Machine Vision Conference, 2014. [2]. Denton, Emily L, Zaremba, Wojciech, Bruna, Joan, LeCun, Yann, and Fergus, Rob. Exploiting linear structure within convolutional networks for efficient evaluation. In Advances in Neural Information Processing Systems, pp. 1269–1277, 2014. [3]. Lebedev, Vadim, Ganin, Yaroslav, Rakhuba, Maksim, Oseledets, Ivan, and Lempitsky, Victor. Speeding-up convolutional neural networks using fine-tuned cp-decomposition. In International Conference on Learning Representations, 2015. [4]. Zhang, Xiangyu, Zou, Jianhua, Ming, Xiang, He, Kaiming, and Sun, Jian. Efficient and accurate approximations of nonlinear convolutional networks. 2015b. [5]. Denil, Misha, Shakibi, Babak, Dinh, Laurent, de Freitas, Nando, et al. Predicting parameters in deep learning. In Advances in Neural Information Processing Systems, pp. 2148–2156, 2013. [6]. Gong, Yunchao, Liu, Liu, Yang, Ming, and Bourdev, Lubomir. Compressing deep convolutional networks using vector quantization. arXiv preprint arXiv:1412.6115, 2014. [7]. Chen,Wenlin,Wilson, James T, Tyree, Stephen,Weinberger, Kilian Q, and Chen, Yixin. Compressing neural networks with the hashing trick. arXiv preprint arXiv:1504.04788, 2015. [8]. Cheng, Yu, Yu, Felix X, Feris, Rogerio S, Kumar, Sanjiv, Choudhary, Alok, and Chang, Shih-Fu. Fast neural networks with circulant projections. arXiv preprint arXiv:1502.03436, 2015. [9]. Novikov, Alexander, Podoprikhin, Dmitry, Osokin, Anton, and Vetrov, Dmitry. Tensorizing neural networks. arXiv preprint arXiv:1509.06569, 2015. [10].Carroll, J Douglas and Chang, Jih-Jie. Analysis of individual differences in multidimensional scaling via an n-way generalization of eckart-young decomposition. Psychometrika, 35(3):283–319,1970. [11].Harshman, Richard A and Lundy, Margaret E. Parafac: Parallel factor analysis. Computational Statistics & Data Analysis, 18(1):39–72, 1994. [12]. Shashua, Amnon and Hazan, Tamir. Non-negative tensor factorization with applications to statistics and computer vision. In Proceedings of the 22nd international conference on Machine learning, pp. 792–799. ACM, 2005. [13].Tucker, Ledyard R. Some mathematical notes on three-mode factor analysis. Psychometrika, 31(3): 279–311, 1966. [14]. De Lathauwer, Lieven, De Moor, Bart, and Vandewalle, Joos. A multilinear singular value decomposition. SIAM journal on Matrix Analysis and Applications, 21(4):1253–1278, 2000. [15]. Kim, Y.-D. and Choi, S. Nonnegative Tucker decomposition. In Proceedings of the IEEE CVPR-2007 Workshop on Component Analysis Methods, Minneapolis, Minnesota, 2007. [16]. Lin, M., Chen, Q., and Yan, S. Network in network. In International Conference on Learning Representations, 2014. [17]. Nakajima, Shinichi, Sugiyama, Masashi, Babacan, S Derin, and Tomioka, Ryota. Global analytic solution of fully-observed variational bayesian matrix factorization. The Journal of Machine Learning Research, 14(1):1–37, 2013. 全文PDF見http:///paper_104.html 記得點(diǎn)擊右下角“好看”喲 |
|
|