开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          如何讓CNN高效地在移動端運行

               SIGAI知識庫

          基于CNN的通用物體檢測方法

          1. 簡介

          2:RCNN

          3:Fast-RCNN

          4:Faster-RCNN

          5、YOLO1

          6: YOL

          7: YOLO3

          更多:http://sigai.cn/knowledge.html


          論文解讀

          COMPRESSION OF DEEP CONVOLUTIONAL NEURAL NETWORKS FOR FAST AND LOW POWER MOBILE APPLICATIONS【ICLR 2016】

          盡管最新的高端智能手機有強大的CPU和GPU,但是在移動設備上運行復雜的深度學習模型(例如ImageNet分類模型)仍然十分困難。為了可以將深度網(wǎng)絡模型應用于移動設備,本文提出了一個簡單且有效的壓縮整個CNN模型的方案,稱為“one-shot whole network compression”,該方案包括三個步驟:a)利用VBMF(Variational Bayesian Matrix Factorization)選擇合適的秩。b)對卷積核做Tucker分解。c)參數(shù)微調(diào)(fine-tune)恢復準確率。本文通過壓縮各種CNN結(jié)構(gòu)(AlexNet,VGG-S,GoogLeNet,VGG-16)證明了該方法的有效性。在很小的準確率損失下,可以極大地減少模型大小、運行時間和能量消耗。另外本文關(guān)于1*1卷積,提出了重要的實現(xiàn)方面的問題。


          一.簡介

          最近,越來越多的工作關(guān)注與如何將CNN模型應用到移動端,在移動端的應用中,常用的方式是訓練過程在服務器中進行,而測試或推斷的過程則是在移動設備中執(zhí)行。目前移動設備無法使用CNN模型的主要限制在于移動設備的存儲能力,計算能力和電池供能。因此針對移動設備受限資源,需要單獨設計CNN的結(jié)構(gòu)。


          眾所周知,深度神經(jīng)網(wǎng)絡的參數(shù)是冗余的,而這也可以促使模型在訓練中收斂到損失函數(shù)的一個不錯的極小值點。那么為了提升模型在移動設備中測試過程的效率,我們可以對訓練好的模型做處理,消除冗余的參數(shù),同時對準確率沒有明顯的影響。目前有許多工作是利用低秩估計(視頻中有介紹)來壓縮CNN模型的【1,2,3】,而這些工作主要關(guān)注于卷積層,因為卷積層是所有層中最耗時的計算層。當前的許多工作盡管可以有效地壓縮單層卷積,但是對整個網(wǎng)絡的壓縮仍然是一個待解決的挑戰(zhàn)。


          針對復雜任務(例如ImageNet的分類任務)訓練得到的CNN模型,若要壓縮整個模型仍然是很間距的任務,【4】工作提出可以使用“asymmetric 3d”的分解方法來加速所有的卷積層,另外他們也說明了選擇有效秩的方法和優(yōu)化的方法。盡管他們提出的方法可以在很多平臺中實現(xiàn)(比如Caffe,Torch,Theano),但是秩的選擇和優(yōu)化的部分仍然需要額外的實現(xiàn),本文則提出了一個更加簡單且有效的方法,同樣可以針對整個模型進行壓縮,而且卷積層,全連接層都可以使用。


          本文的主要創(chuàng)新和貢獻在于:

          1) 本文提出了“one-shot whole network compression scheme”,可以通過簡單的三步(選擇合適的秩、張量分解、模型調(diào)優(yōu))來實現(xiàn)對整個網(wǎng)絡的壓縮。

          2) 在本文提出的方法中,利用Tucker分解的方法來做張量分解,利用VBMF(Variational Bayesian Matrix Fatorization)來做秩的估計。本文方法中每層的優(yōu)化目標是最小化參數(shù)張量的重建誤差,因此最后需要模型調(diào)優(yōu)來保證準確率。

          3) Tucker分解和VBMF都是可以利用開源的工具實現(xiàn),而且模型調(diào)優(yōu)也可以利用任意平臺實現(xiàn)。

          4) 本文針對多種CNN結(jié)構(gòu)(AlexNet,VGG-S,GoogLeNet,VGG-16)在Titan X和智能手機上進行了壓縮實驗,證明了方法的有效性。

          5) 通過分析功率消耗,本文發(fā)現(xiàn)了關(guān)于1*1卷積核操作的現(xiàn)象,即盡管1*1卷積是很簡單的操作,但是由于沒有有效的緩存存儲,這類卷積層是理論加速率和實際加速率不一致的主要原因。


          二.相關(guān)工作

          CNN模型的壓縮

          CNN模型中最常見的是卷積層和全連接層,相應的卷積層主導了計算的時間,全連接層主導了模型的大小。【5】受限提出神經(jīng)網(wǎng)絡中刪除冗余參數(shù)的可能,并且提出了幾種模型壓縮的技術(shù)。后來怕【2】提出可以使用SVD分解來壓縮全連接層的參數(shù)矩陣,同時可以保證準確率沒有太大的下降。最近更多的方法被探索,【6】基于向量量化,【7】基于哈希技術(shù),【8】利用循環(huán)投影,都可以壓縮CNN模型,【9】利用張量分解的方法提出了比SVD壓縮效果更好的方法?!?,1】基于低秩分解的方法,針對卷積層的參數(shù)進行壓縮,但是他們都僅僅對單層卷積或幾層卷積做壓縮,并沒有應用于深度網(wǎng)絡中。


          最近【4】提出“asymmetric 3d” 分解的方法可以壓縮整個網(wǎng)絡。他們提出原本D*D的卷積可以分解為D*1,1*D和1*1的卷積,此外,他們也提出使用PCA來估計張量的秩,已經(jīng)通過最小化非線性層輸出特征圖的重建誤差來得到分解后的參數(shù)張量(卷積核),最后他們也提出未來改進中可以使用參數(shù)調(diào)優(yōu)(fine-tune)來進一步保證準確率。本文提出的方法與上述方法的不同之處在于,本文利用Tucker分解,可以壓縮卷積層和全連接層,利用VBMF來做張量秩的估計,并通過最小化參數(shù)張量的重建誤差來獲得壓縮后的參數(shù)張量。


          張量分解

          張量本質(zhì)上是多維的數(shù)組,例如向量可以看作1維張量,矩陣是2維張量。兩個最常見的張量分解方法是CP分解【10,11,12】和Tucker分解【13,14,15】,本文利用的是Tucker分解。Tucker分解可以看作是一個高階的SVD分解,對于全連接層的Tucker分解就等同于SVD分解,即針對卷積層做Tucker分解,針對全連接層做SVD分解。對于第一層卷積,由于輸入通道數(shù)很?。ú蕡D為3)因此也是做SVD分解,具體的流程如圖2.1所示

          圖2.1   本文提出的低秩估計方法

           

          三.本文方法

          如圖2.1所示為本文提出方法的流程,壓縮整個網(wǎng)絡包括三個步驟:1)選擇合適的秩;2)Tucker分解;3)參數(shù)調(diào)優(yōu)。在第一步中,本文利用VBMF分析參數(shù)張量,并得到合適的秩;接著使用Tucker分解針對每一層做壓縮,每個張量保留的秩就是VBMF得到的秩;最后利用BP(back propagation)做參數(shù)調(diào)優(yōu)。


          Tucker分解

          在CNN中,我們不考慮batch那一維,那么實際卷積的輸入張量,卷積核和輸出張量設為X,K,Y

          則卷積層的操作可以通過如下公式獲得,式中Δ為stride,P為padding的大小

          如果我們以秩(R1R2R3R4)做Tucker分解,那么卷積核參數(shù)可以估計表示為如下形式,式中C'為核張量,U1,U2,U3,U4為參數(shù)矩陣

          對于我們實際CNN中的模型,我們不用對所有維度做分解,比如第2,3維,實際上對應與空間維度(D * D)本身很小不需要壓縮,因此實際應用的對參數(shù)張量的估計為下式,式中C為核張量

          我們將卷積公式中的參數(shù)張量用估計的張量來表示,于是得到以下的計算公式,式中Z,U都是臨時張量,而下式中的每一步都可以用卷積來實現(xiàn)。

          分解后的卷積過程如圖3.1所示,首先是1*1的卷積,可以看作通道維度的壓縮,第二個卷積是D*D的卷積,可以看作是做空間維度的信息交流,最后一個卷積是1*1的卷積,可以看作是將通道維度還原。

          圖3.1   Tucker分解后的卷積操作

             

          從上圖中,我們可以看到第一個卷積和第三個卷積都是1*1的卷積核,本質(zhì)上是對于輸入特征圖X做了通道維度的線性重組,這個方法與【16】提出的“network-in-network”很相似,而且這種結(jié)構(gòu)也廣泛應用與CNN模型中(比如GoogLeNet中的Inception結(jié)構(gòu)),但是本文提出的結(jié)構(gòu)與之最大的不同在于,第一個和第二個卷積之后并沒有加非線性層。


          復雜度分析


          原本的卷積操作,需要D2ST個參數(shù),“multiplication-addition”操作數(shù)為D2STH'W'(即乘法-加法操作,1個乘法-加法操作數(shù)是1個乘法和1個加法操作。由于卷積,矩陣乘法都可以歸結(jié)為向量內(nèi)積,而向量內(nèi)積操作中乘法個數(shù)=加法個數(shù)-1,當向量維度很大時,兩者基本可看作相等,于是在CNN計算操作數(shù)通常使用乘法-加法操作數(shù)來衡量),因此通過Tucker分解,每層卷積的壓縮率和加速率可以表示為

          從上式我們可以看到秩R3,R4是非常重要的超參數(shù),他們決定了壓縮率和加速率,同時也極大影響著準確率。而秩的估計本身又是十分困難的,本文利用了VBMF來做秩的估計,主要參考是【17】


          CP分解與Tucker分解的對比


          CP分解實際上將張量轉(zhuǎn)化為若干1維向量乘積的和,如圖3.2所示

          圖3.2   CP分解

          【2,3】使用了CP分解來估計卷積層的參數(shù),但是工作中僅針對8層網(wǎng)絡進行了實驗。實際上CP分解的穩(wěn)定性略差于Tucker,而且其計算更加耗時。而本文通過大量的實驗證明了Tucker分解可以有效地壓縮AlexNet,VGG-S,GoogLeNet,VGG-16等網(wǎng)絡。


          參數(shù)調(diào)優(yōu)

          由于本文提出的方法是最小化參數(shù)張量的重建誤差,(asymmetric 3d方法中是最小化特征圖的重建誤差)因此直接做Tucker分解后模型的準確率會有很大程度的降低(在作者的試驗中,AlexNet壓縮后會有50%的準確率損失)。圖3.3為參數(shù)調(diào)優(yōu)的實驗,橫坐標為訓練迭代次數(shù),縱坐標為ImageNet Top-5準確率。通過實驗可以發(fā)現(xiàn),參數(shù)調(diào)優(yōu)可以很容易地恢復模型地準確率,而且僅經(jīng)過1Epoch的迭代就可以將模型準確率恢復到不錯的效果。

          圖3.3   參數(shù)調(diào)優(yōu)對準確率的影響

             

          在作者的實驗中,設定基本學習率是0.001,之后每5Epoch或10Epoch降為之前的0.1。同時為了證明Tucker分解的有效性,作者按照分解后的網(wǎng)絡結(jié)構(gòu),以高斯隨機分布初始化網(wǎng)絡參數(shù)從頭訓練,發(fā)現(xiàn)得到的模型效果并不好,由此可以證明Tucker分解獲得分解后的參數(shù)是必要的。


          四.相關(guān)實驗

          首先作者利用4個有代表性的網(wǎng)絡來驗證方法的有效性:AlexNet,VGG-S,GoogLeNet,VGG-16。針對每一個網(wǎng)絡,作者都在Nvidia Titan X和智能手機 Samsung Galaxy S6上進行了對比實驗。其次作者針對AlexNet進行逐層的壓縮效果分析。最后作者也測量了在智能手機上運行時的功率消耗(包括GPU和內(nèi)存的功率消耗)


          整體壓縮結(jié)果

          圖4.1為針對四種不同網(wǎng)絡,在Titan X和Samsung Galaxy S6上的效果,圖中*表示經(jīng)過壓縮后的網(wǎng)絡。 實驗發(fā)現(xiàn)本文提出的方法可以針對不同的網(wǎng)絡達到很好的壓縮和加速效果,在Titan X上可以達到1.23~2.33的加速效果,而在移動設備上也可以達到1.42~3.68的加速效果。

          圖4.1   針對各個網(wǎng)絡的壓縮和加速效果

             

          經(jīng)過實驗,作者發(fā)現(xiàn)移動設備中加速的效果明顯由于GPU的加速效果。作者分析主要原因在于移動設備中GPU去我少線程級的并行計算,Samsung S6中的縣城數(shù)比Titan X少24倍。模型經(jīng)過壓縮,可以將整個參數(shù)個數(shù)大大減少,同時就減少了緩存的占用和內(nèi)存的讀取數(shù)據(jù)的時間。而這種優(yōu)勢在缺少并行線程的GPU中體現(xiàn)得更加明顯。


          逐層壓縮結(jié)果

          圖4.2為針對AlexNet的逐層壓縮和加速的效果分析,對圖中每一層,上面的結(jié)果為原網(wǎng)絡的結(jié)果,下面的結(jié)果為經(jīng)過壓縮后網(wǎng)絡的結(jié)果。經(jīng)過Tucker分解后,每一個卷積實際分解成了三個矩陣的乘法(在實現(xiàn)中矩陣乘法有卷積代替),作者在結(jié)果中也顯示了每個矩陣乘法的運算量(在分解后模型的FLOPs中括號中的三個數(shù)分別代表3個矩陣乘法的運算量)


          經(jīng)過實驗,作者發(fā)現(xiàn)在移動設備上,全連接層的加速效果由于卷積層。作者分析同樣是由于參數(shù)減少,緩解了緩存的壓力,而全連接層的參數(shù)個數(shù)遠遠多于卷積層,而且卷積層的參數(shù)有很大程度的共享,全連接層的參數(shù)都僅利用了一次,因此這種優(yōu)勢也更加明顯。對于全連接層這種參數(shù)僅利用一次的數(shù)據(jù),被稱為“dead-on-arrival(DoA) data”,就緩存而言,DoA數(shù)據(jù)相比于卷積層是低效的。因此全連接層的加速效果會明顯由于卷積層。

           

          圖4.2   針對AlexNet的逐層壓縮和加速效果分析

             

          功耗

          由于VGG-16網(wǎng)絡與VGG-S網(wǎng)絡有相同的趨勢,因此作者僅以VGG-S的結(jié)果來表示VGG網(wǎng)絡結(jié)構(gòu)在壓縮前后的功率。結(jié)果如圖4.3所示。

          圖4.3   本文方法對功率消耗的影響


          每個圖表示相應網(wǎng)絡的功率隨時間的變化情況,圖中藍色曲線表示GPU的功率,紅色的曲線表示內(nèi)存的功率。經(jīng)過實驗發(fā)現(xiàn)壓縮后網(wǎng)絡的功耗低于原網(wǎng)絡,作者分析是由于大量利用1*1卷積的結(jié)果。在平臺執(zhí)行卷積操作時,會有相應的優(yōu)化技術(shù)(比如Caffeinated convolution)在這樣的情況下,1*1的卷積相比于其他卷積(3*3或5*5等)對緩存的利用率更低,因為數(shù)據(jù)的重復利用量與卷積層的參數(shù)個數(shù)成正比。所以計算1*1卷積時會發(fā)生更多的緩存未命中問題(cache miss),而緩存未命中情況發(fā)生時,會導致GPU空閑而減少功耗,所以在執(zhí)行1*1卷積時,GPU的功耗會下降,但同樣也會導致GPU功耗的震蕩。在原網(wǎng)絡中GPU的功耗在每一層中都是比較平穩(wěn)的(GoogLeNet中由于其結(jié)構(gòu)本身就大量使用1*1卷積,因此原網(wǎng)絡GPU功耗也有震蕩的情況)但實際上,這種GPU空閑和緩存未命中的情況是低效的。


          參考文獻

          [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://sigai.cn/paper_104.html

          記得點擊右下角“好看”喲

          本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          ChatGPT模型參數(shù)≠1750億,有人用反證法進行了證明
          異構(gòu)智能推出第一代NovuTensor,吳韌的極簡主義觸發(fā)計算暴力
          RTX 40時代,給深度學習買的顯卡居然能保值9年?仔細一算繃不住了
          天璣8100和天機8200的區(qū)別,天璣8200參數(shù)
          深度學習GPU最全對比,到底誰才是性價比之王? | 選購指南
          PyTorch 基礎(chǔ)操作
          更多類似文章 >>
          生活服務
          分享 收藏 導長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服