紀(jì)榮嶸 林紹輝 晁 飛 吳永堅(jiān) 黃飛躍
1(廈門(mén)大學(xué)信息科學(xué)與技術(shù)學(xué)院 福建廈門(mén) 361005) 2(福建省智慧城市感知與計(jì)算重點(diǎn)實(shí)驗(yàn)室(廈門(mén)大學(xué)) 福建廈門(mén) 361005) 3(上海騰訊科技有限公司優(yōu)圖實(shí)驗(yàn)室 上海 200233)(rrji@xmu.edu.cn)
近年來(lái),隨著GPU的快速發(fā)展及大數(shù)據(jù)時(shí)代的來(lái)臨,深度神經(jīng)網(wǎng)絡(luò)(deep neural networks, DNNs)已席卷人工智能各個(gè)領(lǐng)域[1],包括了語(yǔ)音識(shí)別[2]、圖像理解[3-5]、自然語(yǔ)言處理[6]等在內(nèi)的廣泛領(lǐng)域.不僅如此,這些深度神經(jīng)網(wǎng)絡(luò)在復(fù)雜的系統(tǒng)中也得到了廣泛使用,如自動(dòng)駕駛[7]、癌癥檢測(cè)[8]、復(fù)雜游戲的策略搜索[9]等.深度神經(jīng)網(wǎng)絡(luò)在很多識(shí)別任務(wù)中已大大超越了人類識(shí)別的準(zhǔn)確率,同時(shí)突破了傳統(tǒng)的技術(shù)方法(如手工設(shè)計(jì)的(hand-crafted)特征SIFT[10]和HOG[11])帶來(lái)的巨大的性能提升.這些性能的提升是因?yàn)樯疃壬窠?jīng)網(wǎng)絡(luò)擁有對(duì)大數(shù)據(jù)高層(high-level)特征提取的能力,從而獲得對(duì)輸入空間或數(shù)據(jù)的有效表示.另外,相比傳統(tǒng)在CPU平臺(tái)上的計(jì)算,強(qiáng)大的GPU計(jì)算能力大大提高了深度神經(jīng)網(wǎng)絡(luò)的計(jì)算效率,使得模型的訓(xùn)練速度得到大幅度提升.如果能將計(jì)算平臺(tái)小型化,即把深度神經(jīng)網(wǎng)絡(luò)強(qiáng)大的識(shí)別性能移植到移動(dòng)嵌入式設(shè)備中(如手機(jī)、機(jī)器人、無(wú)人機(jī)、智能眼鏡等),這樣不管在軍事方面的搶險(xiǎn)救災(zāi)、敵情勘探,還是在民事方面的移動(dòng)智能識(shí)別、便民出行等都起到重大的促進(jìn)作用.
伴隨著深度神經(jīng)網(wǎng)絡(luò)模型的性能增加,神經(jīng)網(wǎng)絡(luò)的深度越來(lái)越深,接踵而來(lái)的是深度網(wǎng)絡(luò)模型的高存儲(chǔ)高功耗的弊端,嚴(yán)重制約著深度神經(jīng)網(wǎng)絡(luò)在資源有限的應(yīng)用環(huán)境和實(shí)時(shí)在線處理的應(yīng)用,特別是智能化移動(dòng)嵌入式設(shè)備、現(xiàn)場(chǎng)可編程門(mén)陣列(field-programmable gate array,F(xiàn)PGA)等在線學(xué)習(xí)和識(shí)別任務(wù).例如8層的AlexNet[3]裝有600 000個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)、0.61億個(gè)網(wǎng)絡(luò)參數(shù),需要花費(fèi)240 MB內(nèi)存存儲(chǔ)和7.29億浮點(diǎn)型計(jì)算次數(shù)(FLOPs)來(lái)分類一副分辨率為224×224的彩色圖像.同時(shí),隨著神經(jīng)網(wǎng)絡(luò)模型深度的加深,存儲(chǔ)的開(kāi)銷將變得越大.同樣來(lái)分類一副分辨率為224×224的彩色圖像,如果采用擁有比8層AlexNet更多的16層的VGGNet[12],則有1 500 000個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)、1.44億個(gè)網(wǎng)絡(luò)參數(shù),需要花費(fèi)528 MB內(nèi)存存儲(chǔ)和150億浮點(diǎn)型計(jì)算次數(shù);ResNet-152[13]裝有0.57億個(gè)網(wǎng)絡(luò)參數(shù),需要花費(fèi)230 MB內(nèi)存存儲(chǔ)和113億浮點(diǎn)型計(jì)算次數(shù).對(duì)于移動(dòng)終端設(shè)備、FPGA等弱存儲(chǔ)、低計(jì)算能力特點(diǎn),無(wú)法直接存儲(chǔ)和運(yùn)行上述如此龐大的深度網(wǎng)絡(luò).
一方面,擁有百萬(wàn)級(jí)以上的深度神經(jīng)網(wǎng)絡(luò)模型內(nèi)部存儲(chǔ)大量冗余信息,因此并不是所有的參數(shù)和結(jié)構(gòu)都對(duì)產(chǎn)生深度神經(jīng)網(wǎng)絡(luò)高判別性起作用;另一方面,用淺層或簡(jiǎn)單的深度神經(jīng)網(wǎng)絡(luò)無(wú)法在性能上逼近百萬(wàn)級(jí)的深度神經(jīng)網(wǎng)絡(luò).因此,通過(guò)壓縮和加速原始深度網(wǎng)絡(luò)模型,使之直接應(yīng)用于移動(dòng)嵌入式設(shè)備端,將成為一種有效的解決方案.
一般情況下,壓縮和加速深度神經(jīng)網(wǎng)絡(luò)是2個(gè)不同的任務(wù),兩者之間存在區(qū)別,但又緊密聯(lián)系.例如卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNNs)分2種類型的計(jì)算層,即卷積層和全連接層.1)卷積層,它是計(jì)算耗時(shí)最大的層,也是卷積神經(jīng)網(wǎng)絡(luò)能夠獲得高層語(yǔ)義信息重要層.在卷積層內(nèi),可以通過(guò)權(quán)值共享,減少了對(duì)權(quán)值的大量存儲(chǔ).2)全連接層,不同于卷積層的局部感知,在全連接層中,每一個(gè)輸出單元都與所有輸入單元相關(guān),通過(guò)密集的權(quán)值進(jìn)行連接,因此需要大量的參數(shù).因?yàn)榫矸e層與全連接層內(nèi)在的本質(zhì)區(qū)別,通常把卷積層的計(jì)算加速和全連接層的內(nèi)存壓縮認(rèn)為是2種不同的任務(wù).這2類計(jì)算層之間又是緊密聯(lián)系的,卷積層為全連接層提供分層的高層特征,全連接層通過(guò)分類指導(dǎo)卷積層的高判別力特征提取.在本文中,我們總結(jié)與回顧近幾年來(lái)壓縮和加速深度神經(jīng)網(wǎng)絡(luò)方面的相關(guān)工作,相關(guān)算法與解決方案涉及多門(mén)學(xué)科,包括機(jī)器學(xué)習(xí)、參數(shù)優(yōu)化、計(jì)算架構(gòu)、數(shù)據(jù)壓縮、索引、硬件設(shè)計(jì)等.
主流的壓縮與加速神經(jīng)網(wǎng)絡(luò)的方法可以分成5種:1)參數(shù)剪枝(parameter pruning);2)參數(shù)共享(parameter sharing);3)低秩分解(low-rank decom-position);4)緊性卷積核的設(shè)計(jì)(designing compact convolutional filters);5)知識(shí)蒸餾(knowledge dis-tillation).參數(shù)剪枝主要通過(guò)設(shè)計(jì)判斷參數(shù)重要與否的準(zhǔn)則,移除冗余的參數(shù).參數(shù)共享主要探索模型參數(shù)的冗余性,利用Hash或量化等技術(shù)對(duì)權(quán)值進(jìn)行壓縮.低秩分解利用矩陣或張量分解技術(shù)估計(jì)并分解深度模型中的原始卷積核.緊性卷積核的設(shè)計(jì)主要通過(guò)設(shè)計(jì)特殊的結(jié)構(gòu)化卷積核或緊性卷積計(jì)算單元,減少模型的存儲(chǔ)與計(jì)算復(fù)雜度.知識(shí)蒸餾主要利用大型網(wǎng)絡(luò)的知識(shí),并將其知識(shí)遷移到緊性蒸餾的模型中.
如表1所示,簡(jiǎn)要介紹了上述主流的5種壓縮與加速深度神經(jīng)網(wǎng)絡(luò)的方法,一般來(lái)說(shuō),除了緊性卷積核的設(shè)計(jì)只能用于卷積核外,剩余的4種均能應(yīng)用于卷積層和全連接層.低秩分解與緊性卷積核的設(shè)計(jì)能夠在CPU/GPU下簡(jiǎn)單實(shí)現(xiàn)端對(duì)端(end-to-end)訓(xùn)練,然而參數(shù)共享、參數(shù)剪枝需要多步或逐層完成壓縮與加速任務(wù).關(guān)于訓(xùn)練過(guò)程中是否需要重新開(kāi)始訓(xùn)練還是依賴于預(yù)訓(xùn)練模型的問(wèn)題上,參數(shù)共享、低秩分解都較為靈活有效,既能適應(yīng)重新訓(xùn)練也能適應(yīng)于預(yù)訓(xùn)練模型.然而緊性卷積核的設(shè)計(jì)和知識(shí)蒸餾只能支持重新訓(xùn)練,另外參數(shù)剪枝只能依賴于預(yù)訓(xùn)練模型.從上述方法能否相應(yīng)組合方面,緊性卷積核的設(shè)計(jì)方法和知識(shí)蒸餾還不能結(jié)合其他方法,參數(shù)剪枝與參數(shù)共享或低秩分解方法結(jié)合甚密,通過(guò)2種方法的互相融合,能夠在一定程度進(jìn)一步壓縮與加速深度網(wǎng)絡(luò).
在本文中,主要集中分析在圖像處理中的卷積神經(jīng)網(wǎng)絡(luò)的壓縮與加速,特別是對(duì)于圖像分類任務(wù).本文先回顧近年來(lái)較為經(jīng)典的深度神經(jīng)網(wǎng)絡(luò),然后詳細(xì)介紹上述壓縮與加速方法、相應(yīng)的特性及缺點(diǎn),進(jìn)而分析深度模型壓縮與加速的評(píng)測(cè)標(biāo)準(zhǔn)、相應(yīng)數(shù)據(jù)集及性能表現(xiàn),最后總結(jié)并討論不同壓縮與加速方法的選擇問(wèn)題,并分析了未來(lái)發(fā)展趨勢(shì).
Table 1 Summarization of Different Methods for DNN Compression and Acceleration表1 不同深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法總結(jié)
在本節(jié)中,我們主要介紹了深度神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史,以及深度神經(jīng)網(wǎng)絡(luò)中前饋網(wǎng)絡(luò)(feed forward networks)代表卷積神經(jīng)網(wǎng)絡(luò)的核心組件和經(jīng)典網(wǎng)絡(luò)模型.
雖然20世紀(jì)40年代神經(jīng)網(wǎng)絡(luò)已經(jīng)被提出,但一直沒(méi)能得到實(shí)踐應(yīng)用,直到20世紀(jì)90年代,LeCun等人提出了LeNet模型[14],并成功地將該模型用于手寫(xiě)體字符識(shí)別任務(wù)上,后續(xù)在ATM機(jī)上得到了廣泛的應(yīng)用.在此之后神經(jīng)網(wǎng)絡(luò)發(fā)展遇到瓶頸,直到2006年,Hinton等人[15]提出了一種有效的訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的策略,不僅提升了模型的準(zhǔn)確率,同時(shí)還極大地推動(dòng)了非監(jiān)督學(xué)習(xí)的發(fā)展.到了2010之后,深度神經(jīng)網(wǎng)絡(luò)得到了廣泛的應(yīng)用,特別是2011年微軟公司的語(yǔ)音識(shí)別系統(tǒng)[2]突破了傳統(tǒng)語(yǔ)音識(shí)別技術(shù)及2012年AlexNet[3]的問(wèn)世給整個(gè)圖像識(shí)別領(lǐng)域帶來(lái)了巨大突破,也使得深度神經(jīng)網(wǎng)絡(luò)席卷整個(gè)人工智能領(lǐng)域埋下伏筆.如表2所示,簡(jiǎn)要總結(jié)了深度學(xué)習(xí)的重要發(fā)展里程碑.
Table 2 The Development History of DNN表2 深度神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史
深度學(xué)習(xí)技術(shù)之所以能夠在近幾年來(lái)取得巨大突破,主要有2個(gè)原因:
1) 硬件設(shè)備計(jì)算能力的增強(qiáng).半導(dǎo)體設(shè)備和計(jì)算架構(gòu)的提高(如GPU),大大縮短網(wǎng)絡(luò)計(jì)算的時(shí)間開(kāi)銷,包括訓(xùn)練(training)過(guò)程與推測(cè)過(guò)程(inference).
2) 訓(xùn)練數(shù)據(jù)集的不斷擴(kuò)充.如圖1所示,表示了不同時(shí)期公共數(shù)據(jù)集的數(shù)據(jù)規(guī)模.從圖1中可以看出,2010年之前數(shù)據(jù)量規(guī)模停留在萬(wàn)級(jí)及以下,到了2010年之后大規(guī)模數(shù)據(jù)集的公開(kāi)與使用,特別是大規(guī)模圖像識(shí)別比賽(ILSVRC)[17]的成功舉辦,ImageNet數(shù)據(jù)集[18]得到廣泛的使用,給深度神經(jīng)網(wǎng)絡(luò)提高了數(shù)據(jù)支持,也使得擁有百萬(wàn)級(jí)以上參數(shù)的深度網(wǎng)絡(luò)訓(xùn)練不易出現(xiàn)過(guò)擬合問(wèn)題(overfitting).
Fig.1 The number of public training dataset over different years[16]圖1 不同時(shí)期公共訓(xùn)練數(shù)據(jù)集的規(guī)模
結(jié)合以上2個(gè)原因,深度學(xué)習(xí)在各個(gè)人工智能領(lǐng)域大放異彩,特別在圖像識(shí)別領(lǐng)域表現(xiàn)更加出眾.如圖2所示,描述了在ILSVRC上的最好識(shí)別性能及所用的網(wǎng)絡(luò)模型對(duì)比.一方面,在2012年以前,所用的模型采用淺層網(wǎng)絡(luò)表示(如支持向量機(jī)(SVMs)),獲得25%及以上的識(shí)別誤差率;2012年,AlexNet利用深度學(xué)習(xí)技術(shù)將分類錯(cuò)誤率較原來(lái)的淺層模型降低了近10%.自此以后,深度學(xué)習(xí)技術(shù)成為提高性能的主流與趨勢(shì).特別是2016年,何凱明等人[13]提出了ResNet,獲得了3.57%的top-5分類錯(cuò)誤率(errtop-5),成功超越了人類所能達(dá)到的5%的分類錯(cuò)誤率.另一方面,隨著分類錯(cuò)誤率逐年降低,深度網(wǎng)絡(luò)模型的層數(shù)越來(lái)越深,模型存儲(chǔ)量大、計(jì)算復(fù)雜度高也越發(fā)明顯,這觸發(fā)了工業(yè)界及學(xué)術(shù)界對(duì)深度網(wǎng)絡(luò)壓縮與加速的關(guān)注與研究.
Fig.2 Comparison of the best performance over different years using various CNNs in ILSVRC[9]圖2 不同年份ILSVRC上的最好性能及所用的網(wǎng)絡(luò)模型對(duì)比
Fig.3 Convolutional neural networks圖3 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)由多個(gè)卷積層(CONV layers)和全連接層(FC layers)組合而成.如圖3所示,在該網(wǎng)絡(luò)卷積層中,每層產(chǎn)生了對(duì)輸入圖像的高層抽象表示的結(jié)果,稱之為特征圖(feature map,F(xiàn)map).底層的特征圖能夠獲得輸入圖像的細(xì)節(jié)信息(如邊緣、角點(diǎn)、顏色等),越往頂層越能獲得輸入圖像的整體信息(如形狀、輪廓等),正是卷積神經(jīng)網(wǎng)絡(luò)利用了此分層特性,取得了很好的性能提升.
如圖4所示,顯示了每個(gè)卷積層包含了復(fù)雜的高維卷積計(jì)算.輸入中包含了一些列的2-D輸入特征圖(input feature maps,IFmaps),其中每一個(gè)特征圖稱之為通道(channel).每一個(gè)輸出特征圖(output feature maps,OFmap)是由所有的輸入特征圖與3-D卷積核/濾波(filter)卷積計(jì)算的結(jié)果,每一個(gè)3-D卷積核形成一個(gè)輸出特征圖.
C,H,W,D,N,H′ and W′ are defined in Equation (1).Fig.4 High-dimension convolutional operator圖4 高維卷積計(jì)算
具體地,計(jì)算過(guò)程可以用表示為
(1)
在全連接層中,不像卷積層的權(quán)值共享,全連接層的輸入與輸出之間存在密集連接(dense connec-tion),需要保存大量訓(xùn)練參數(shù).其中核心的計(jì)算單元是矩陣與矩陣之間的乘法,具體可由式表示:
Z=WX,
(2)
其中,X∈d×b為輸入矩陣,W∈h×d為權(quán)值,Z∈h×b為輸出矩陣.一般情況下,若將全連接層中的權(quán)值變量變換成卷積核空間4階張量形式,并將空間維度設(shè)為1×1,那么全連接的矩陣計(jì)算可以轉(zhuǎn)換成卷積計(jì)算.
另外,在卷積層與全連接層中還存在許多可選層及一些其他重要操作,如非線性變換(non-linearity)、池化(pooling)、正則化(normalization)等,對(duì)于網(wǎng)絡(luò)性能的提升起到非常重要的作用.
在過(guò)去的幾十年里,已經(jīng)提出了很多經(jīng)典的深度神經(jīng)網(wǎng)絡(luò)模型,每個(gè)模型擁有不同的網(wǎng)絡(luò)結(jié)構(gòu),主要體現(xiàn)在層數(shù)、層類型、層形狀(即卷積核大小、通道及濾波個(gè)數(shù))、層內(nèi)連接等.在本節(jié)中,我們回顧近幾年在ImageNet競(jìng)賽上使用的冠軍模型以及手寫(xiě)體字符識(shí)別網(wǎng)絡(luò)模型LeNet.這些預(yù)訓(xùn)練模型(pre-trained model)都已公開(kāi),模型的相關(guān)參數(shù)與總結(jié)如表3所示.第1行的top-1分類錯(cuò)誤率(errtop-1)和第2行的top-5分類錯(cuò)誤率errtop-5均為ImageNet競(jìng)賽上常用的2個(gè)分類評(píng)價(jià)指標(biāo),所有數(shù)值均采用簡(jiǎn)單的裁剪驗(yàn)證集(validation dataset)圖像中間部分作為輸入,得到分類的結(jié)果.本文將對(duì)LeNet[14],AlexNet[3],VGGNet[12],GoogLeNet[22]和ResNet[13]進(jìn)行介紹.
1) LeNet[14].在1998年LeNet作為最早使用的卷積神經(jīng)網(wǎng)絡(luò)之一,被LeCun等人提出用于識(shí)別手寫(xiě)體字符.作為經(jīng)典的版本——LeNet-5包含了2個(gè)卷積層和2個(gè)全連接層.每1層的卷積計(jì)算都使用了5×5的空間維度,第1層使用了20個(gè)3-D卷積核,第2層使用50個(gè)卷積核.每個(gè)卷積之后加入Sigmoid非線性變換作為激活函數(shù),然后接著使用2×2的平均池化(average pooling)降采樣特征圖.整個(gè)網(wǎng)絡(luò)分類1張圖像總共需要6萬(wàn)個(gè)參數(shù)、34.1萬(wàn)浮點(diǎn)型計(jì)算次數(shù).LeNet是第1個(gè)被成功應(yīng)用的卷積神經(jīng)網(wǎng)絡(luò),它被廣泛使用在ATM機(jī)上,應(yīng)用于支票存款任務(wù)中識(shí)別手寫(xiě)體字符.
2) AlexNet[3].它是ImageNet競(jìng)賽上第1個(gè)利用深度學(xué)習(xí)獲得冠軍的卷積神經(jīng)網(wǎng)絡(luò),同時(shí)該模型也為后續(xù)的深度學(xué)習(xí)的廣泛應(yīng)用奠定堅(jiān)實(shí)的基礎(chǔ).該模型由5個(gè)卷積層和3個(gè)全連接層組成.第1個(gè)卷積層使用了96個(gè)維度為11×11×3的3-D卷積核,第2層使用了256個(gè)維度為5×5×96的3-D卷積核,后續(xù)的卷積層使用了空間維度為3×3的卷積核.AlexNet引入了多種加速訓(xùn)練與提高模型分類準(zhǔn)確率的技巧,如:①引入了ReLU非線性激活函數(shù)[20],代替原始的Sigmoid或tahn非線性激活[21].②在每個(gè)最大池化(max pooling)之前加入局部響應(yīng)正則化(local response normalization,LRN),用于統(tǒng)一輸出激活的數(shù)據(jù)分布.在AlexNet中,LRN應(yīng)用于第1,2和5卷積層.③利用2個(gè)GPU加速訓(xùn)練.④通過(guò)擴(kuò)充訓(xùn)練樣本數(shù)和引入Dropout方法,防止模型訓(xùn)練過(guò)程過(guò)擬合.AlexNet在ImageNet 驗(yàn)證集上獲得了42.3% top-1分類錯(cuò)誤率和19.1% top-5分類錯(cuò)誤率,且需要0.61億個(gè)參數(shù)、7.29億浮點(diǎn)型計(jì)算次數(shù)處理尺寸大小為227×227的彩色圖像.
Table 3 Summary of Popular DNNs[19]表3 常用深度神經(jīng)網(wǎng)絡(luò)的總結(jié)[19]
3) VGGNet[12].它取得了2014年ImageNet競(jìng)賽的分類項(xiàng)目第2名、定位項(xiàng)目第1名.VGGNet擁有強(qiáng)拓展性,體現(xiàn)在由很強(qiáng)的泛化能力、穩(wěn)定的卷積特征和較好的表達(dá)能力.具體而言,VGGNet有2種形式,即VGG-16和VGG-19.VGG-16由13個(gè)卷積層和3個(gè)全連接層構(gòu)成的16層網(wǎng)絡(luò).不同于AlexNet,VGG-16利用多個(gè)小空間維度的卷積核(例如3×3)代替原始大的卷積核(例如5×5),獲得相同的接受域(receptive fields).在VGG-16中,所有的卷積層都采用了空間維度為3×3的卷積核.為此,VGG-16分類1張大小為224×224的彩色圖像,需要1.38億個(gè)參數(shù)、156億浮點(diǎn)型計(jì)算次數(shù).雖然VGG-19比VGG-16低0.1% top-5分類錯(cuò)誤率,但需要1.27倍浮點(diǎn)型計(jì)算次數(shù)于VGG-16.
4) GoogLeNet[22].它取得了2014年ImageNet競(jìng)賽的分類項(xiàng)目的冠軍.Inception擁有多種版本,包括Inception-V1[22],Inception-V3[23]和Inception-V4[24]等,其中Inception-V1也稱為GoogLeNet.我們?cè)敿?xì)介紹Inception-V1,它擁有22層深的網(wǎng)絡(luò)結(jié)構(gòu),引入了核心組件——Inception module.如圖5所示,展示了Inception module主要組成部件,它由平行連接(parallel connection)構(gòu)成.在每個(gè)平行連接中,使用了不同空間維度的卷積核,即1×1,3×3,5×5,并在每個(gè)卷積后緊跟3×3最大池化(其中一個(gè)1×1卷積核除外),所有卷積核輸出結(jié)果全串在一起(concatenate)構(gòu)成該模塊的輸出.GoogLeNet利用3種不同的尺度卷積和最大池化,增加網(wǎng)絡(luò)對(duì)不同尺度的適應(yīng)性,同時(shí)可以讓網(wǎng)絡(luò)的深度和寬度高效率地?cái)U(kuò)充,提升準(zhǔn)確率且不會(huì)過(guò)擬合.22層的GoogLeNet包括了3個(gè)卷積層、9個(gè)Inception層(每個(gè)Inception層擁有2層深的卷積層)和1個(gè)全連接層.由于采用了全局平均池化[23](global average pooling, GAP),并采用1個(gè)全連接層取代傳統(tǒng)的3個(gè)全連接層,大大縮小了模型的存儲(chǔ)空間.對(duì)于分類一張224×224的彩色圖像,GoogLeNet需要700萬(wàn)個(gè)參數(shù)、14億浮點(diǎn)型計(jì)算次數(shù).
Fig.5 Inception module in GoogLeNet圖5 GoogLeNet的Inception模塊
5) ResNet[13].它是首次在ImageNet競(jìng)賽上超過(guò)人類所能達(dá)到的識(shí)別精度(即低于5% top-5分類錯(cuò)誤率).ResNet能夠克服訓(xùn)練過(guò)程中梯度消失問(wèn)題,即在反向傳播(back-propagation)中梯度不斷衰減,影響了網(wǎng)絡(luò)底層的權(quán)值更新能力.如圖6所示,ResNet的核心組件是殘差塊(residual block),每個(gè)殘差塊中引入了快捷模塊(shortcut module),該模塊包含了恒等連接或線性投影連接,并且學(xué)習(xí)殘差映射(F(x)=H(x)-Wsx),而不是直接學(xué)習(xí)權(quán)值層(weight layers)函數(shù)F(x).同樣地,ResNet使用了1×1卷積核減少參數(shù)個(gè)數(shù),并在每個(gè)卷積后加入批量正則化[22](batch normalization,BN).ResNet有很多種結(jié)構(gòu)表現(xiàn)形式,以ResNet-50為例,它包含了1個(gè)卷積層,緊接著16個(gè)殘差塊(每個(gè)殘差塊擁有3層深的卷積層),及1個(gè)全連接層.對(duì)于分類一張224×224的彩色圖像,ResNet-50需要0.25億個(gè)參數(shù)和39億浮點(diǎn)型計(jì)算次數(shù).
Fig.6 Residual block in ResNet圖6 ResNet的殘差塊
如表3和圖2所示,隨著模型的深度和寬度的增加,深度網(wǎng)絡(luò)取得更好的性能提升,但是卷積層的高度復(fù)雜的浮點(diǎn)計(jì)算及全連接層的高內(nèi)存存儲(chǔ),嚴(yán)重阻礙深度模型應(yīng)用于移動(dòng)設(shè)備端.因此,壓縮與加速深度神經(jīng)網(wǎng)絡(luò)將愈發(fā)重要.
在本節(jié)中,我們主要介紹了主流深度神經(jīng)網(wǎng)絡(luò)壓縮與加速算法,以及相關(guān)算法的優(yōu)缺點(diǎn).
網(wǎng)絡(luò)/參數(shù)剪枝是通過(guò)對(duì)已有的訓(xùn)練好的深度網(wǎng)絡(luò)模型移除冗余的、信息量少的權(quán)值,從而減少網(wǎng)絡(luò)模型的參數(shù),進(jìn)而加速模型的計(jì)算和壓縮模型的存儲(chǔ)空間.不僅如此,通過(guò)剪枝網(wǎng)絡(luò),能防止模型過(guò)擬合.以是否一次性刪除整個(gè)節(jié)點(diǎn)或?yàn)V波為依據(jù),參數(shù)剪枝工作可細(xì)分成非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝.非結(jié)構(gòu)化剪枝考慮每個(gè)濾波的每個(gè)元素,刪除濾波中元素為0的參數(shù),而結(jié)構(gòu)化剪枝直接考慮刪除整個(gè)濾波結(jié)構(gòu)化信息.
早在20世紀(jì)末,LeCun等人[27]提出了最優(yōu)化腦損失(optimal brain damage)算法,大大稀疏化多層網(wǎng)絡(luò)的系數(shù),同時(shí)保證模型預(yù)測(cè)精度依然處于零損失或最小量損失狀態(tài).其實(shí)這種學(xué)習(xí)方式模仿了哺乳動(dòng)物的生物學(xué)習(xí)過(guò)程,通過(guò)尋找最小激活的突觸鏈接,然后在突觸刪減(synaptic pruning)過(guò)程中大大減少連接個(gè)數(shù).利用相似的思想,Hassibi 和Stork[28]提出了最優(yōu)化腦手術(shù)(optimal brain surgeon)剪枝策略,利用反向傳播計(jì)算權(quán)值的二階偏導(dǎo)信息(hessian矩陣),同時(shí)利用此矩陣構(gòu)建每個(gè)權(quán)值的顯著性得分,從而刪除低顯著性的權(quán)值.不同于最優(yōu)化腦手術(shù)剪枝策略,Srinivas等人[29]提出了不依賴于訓(xùn)練數(shù)據(jù)(data-free pruning)和反向傳播,直接構(gòu)建并排序權(quán)重的顯著性矩陣,刪除不顯著冗余的節(jié)點(diǎn).由于不依賴于訓(xùn)練數(shù)據(jù)及后向傳播計(jì)算梯度信息,因此該網(wǎng)絡(luò)剪枝過(guò)程較為快速.韓松等人[30-31]提出了一種基于低值連接的刪除策略(low-weight con-nection pruning),該剪枝方法包括3個(gè)階段,即訓(xùn)練連接、刪除連接、重訓(xùn)練權(quán)值.第1階段通過(guò)正常訓(xùn)練,學(xué)習(xí)重要的連接;第2階段通過(guò)計(jì)算權(quán)值矩陣的范數(shù),刪除節(jié)點(diǎn)權(quán)重的范數(shù)值小于指定的閾值的連接,將原始的密集網(wǎng)絡(luò)(dense network)變成稀疏網(wǎng)絡(luò);第3階段通過(guò)重新訓(xùn)練稀疏網(wǎng)絡(luò),恢復(fù)網(wǎng)絡(luò)的識(shí)別精度.以上剪枝方法通常引入非結(jié)構(gòu)化的稀疏連接,在計(jì)算過(guò)程中會(huì)引起不規(guī)則的內(nèi)存獲取,相反會(huì)影響網(wǎng)絡(luò)的計(jì)算效率.
近幾年,基于結(jié)構(gòu)化剪枝的深度網(wǎng)絡(luò)的壓縮方法陸續(xù)被提出,克服了非結(jié)構(gòu)化稀疏連接導(dǎo)致的無(wú)法加速問(wèn)題[27-31].其核心思想依靠濾波顯著性準(zhǔn)則(即鑒定最不重要的濾波的準(zhǔn)則),從而直接刪除顯著性濾波,加速網(wǎng)絡(luò)的計(jì)算.2016年,Lebedev等人[32]提出在傳統(tǒng)的深度模型的損失函數(shù)中加入結(jié)構(gòu)化的稀疏項(xiàng),利用隨機(jī)梯度下降法學(xué)習(xí)結(jié)構(gòu)化稀疏的損失函數(shù),并將小于給定閾值的濾波賦值為0,從而測(cè)試階段直接刪除值為0的整個(gè)卷積濾波.溫偉等人[33]通過(guò)對(duì)深度神經(jīng)網(wǎng)絡(luò)的濾波、通道、濾波形狀、網(wǎng)絡(luò)層數(shù)(filters, channels, filter shapes, layer depth)的正則化限制加入到損失函數(shù)中,利用結(jié)構(gòu)化稀疏學(xué)習(xí)的方式,學(xué)習(xí)結(jié)構(gòu)化的卷積濾波.Zhou等人[34]將結(jié)構(gòu)化稀疏的限制加入目標(biāo)函數(shù)中,并利用前向后項(xiàng)分裂(forward-backward splitting)方法解決結(jié)構(gòu)稀疏化限制的優(yōu)化問(wèn)題,并在訓(xùn)練過(guò)程中直接決定網(wǎng)絡(luò)節(jié)點(diǎn)的個(gè)數(shù)與冗余的節(jié)點(diǎn).另外,近年來(lái),直接測(cè)量濾波的范數(shù)值直接判斷濾波的顯著性也相繼被提出[35],例如:直接刪除給定當(dāng)前層最小L1范數(shù)的濾波,即移除相應(yīng)的特征圖(feature map),然后下一層的卷積濾波的通道數(shù)也相應(yīng)地減少,最后通過(guò)重訓(xùn)練的方式提高刪減后模型的識(shí)別精度.由于大量的ReLU非線性激活函數(shù)存在于主流的深度網(wǎng)絡(luò)中,使得輸出特征圖高度稀疏化,Hu等人[36]利用此特點(diǎn),計(jì)算每個(gè)濾波所對(duì)應(yīng)輸出特征圖的非零比例,作為判斷濾波重要與否的標(biāo)準(zhǔn).NVIDIA公司Molchanov等人[37]提出一種基于全局搜索顯著性濾波的策略,對(duì)需要?jiǎng)h除的濾波用0值代替,并對(duì)目標(biāo)函數(shù)進(jìn)行泰勒公式展開(kāi)(taylor expansion),判斷使目標(biāo)函數(shù)變換最小的濾波為顯著濾波.通過(guò)卷積計(jì)算方式,可以建立當(dāng)前層的濾波與下一層的卷積濾波的輸入通道存在一一對(duì)應(yīng)關(guān)系,利用此特點(diǎn)Luo等人[38]探索下一層卷積核的輸入通道重要性,代替直接考慮當(dāng)前層濾波,并建立一個(gè)有效的通道選擇優(yōu)化函數(shù),從而刪除冗余的通道以及相應(yīng)的當(dāng)前層的濾波.以上基于結(jié)構(gòu)化剪枝的深度網(wǎng)絡(luò)的壓縮方法,通過(guò)刪除卷積層的整個(gè)濾波,沒(méi)有引入其他額外的數(shù)據(jù)類型存儲(chǔ),從而直接壓縮網(wǎng)絡(luò)的同時(shí)加速整個(gè)網(wǎng)絡(luò)的計(jì)算.
Table 4 Comparison of Methods to Reduce Precision on AlexNet[19]表4 不同量化方法在AlexNet上的對(duì)比[19]
Notes: “*” denotes the method is not applied to first and/or last layers, and “↑” denotes increase.
參數(shù)剪枝的缺點(diǎn)在于,簡(jiǎn)單利用非結(jié)構(gòu)化剪枝,無(wú)法加速稀疏化矩陣計(jì)算.雖然近年來(lái),相關(guān)軟件[39]與硬件[40]已被利用進(jìn)行加速計(jì)算,但依靠軟硬件的非結(jié)構(gòu)化剪枝方案還無(wú)法在所有深度學(xué)習(xí)框架下使用,另外硬件的依賴性會(huì)使得模型的使用成本提高.結(jié)構(gòu)化剪枝不依賴軟硬件的支持,且能很好地嵌入目前主流的深度學(xué)習(xí)框架,但逐層固定的剪枝方式(layer-by-layer fixed manner)導(dǎo)致了網(wǎng)絡(luò)壓縮的低自適應(yīng)能力、效率和效果.此外,上述的剪枝策略需要手動(dòng)判斷每層的敏感性,因此需要大量的精力分析及逐層微調(diào)(fine-tuning).
參數(shù)共享是通過(guò)設(shè)計(jì)一種映射將多個(gè)參數(shù)共享同一個(gè)數(shù)據(jù).近年來(lái),量化作為參數(shù)共享的最直接表現(xiàn)形式,得到廣泛的應(yīng)用.此外,Hash函數(shù)和結(jié)構(gòu)化線性映射也可作為參數(shù)共享的表現(xiàn)形式.
參數(shù)量化壓縮與加速深度網(wǎng)絡(luò)模型主要的核心思想是利用較低的位(bit)代替原始32 b浮點(diǎn)型的參數(shù)(也可記為全精度權(quán)值(full-precision weight)).龔云超等人[41]及Wu等人[42]利用向量量化的技術(shù),在參數(shù)空間內(nèi)對(duì)網(wǎng)絡(luò)中的權(quán)值進(jìn)行量化.近年來(lái),利用低比特位的量化被提出用于加速與壓縮深度神經(jīng)網(wǎng)絡(luò).Gupta等人[43]將全精度浮點(diǎn)型參數(shù)量化到16 b固定長(zhǎng)度表示,并在訓(xùn)練過(guò)程中使用隨機(jī)約束(stochastic rounding)技術(shù),從而縮減網(wǎng)絡(luò)存儲(chǔ)和浮點(diǎn)計(jì)算次數(shù).使用動(dòng)態(tài)固定點(diǎn)(dynamic fixed point)量化,在量化AlexNet網(wǎng)絡(luò)時(shí),幾乎可以做到無(wú)損壓縮.例如,Ma等人[44]將權(quán)值和激活分別量化到8 b和10 b,且沒(méi)有利用微調(diào)權(quán)值.隨后Gysel等人[45]利用微調(diào),將權(quán)值和激活全部量化到8 b.
為了更大程度地縮減內(nèi)存和浮點(diǎn)計(jì)算次數(shù),對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行二值表示已被大量提出.其主要思想是在模型訓(xùn)練過(guò)程中直接學(xué)習(xí)二值權(quán)值或激活.BinaryConnect(BC)[46]通過(guò)直接量化權(quán)值為-1或1,只需要加和減計(jì)算,減少了卷積計(jì)算,但因激活為全精度,無(wú)法大幅度加速網(wǎng)絡(luò)計(jì)算.為此,通過(guò)同時(shí)量化權(quán)值和激活為-1和1,Courbariaux等人[47]提出了BNN,將原始的卷積計(jì)算變成Bitcount和XNOR,大幅度加速和壓縮深度網(wǎng)絡(luò).但在壓縮和加速深度網(wǎng)絡(luò)時(shí)(如AlexNet),分類精度大大降低.為了減少精度的丟失,Rastegari等人[48]分別提出了BWN和XNOR-Net引入了尺度因子(scale factor),用于縮小量化誤差,并保留第一層和最后一層的權(quán)值和輸入為32 b的浮點(diǎn)型.同時(shí),改變卷積和正則化的順序,即先執(zhí)行正則化、后卷積,減少了激活的動(dòng)態(tài)幅度范圍.伴隨著這些改變,BWN和XNOR-Net分別獲得了相對(duì)于原始AlexNet 0.8%和11%的分類錯(cuò)誤率增加.在近期的工作中[49-50],通過(guò)增加激活的位數(shù)(大于1),并探索不同的低比特權(quán)值與激活的組合量化全精度權(quán)值和激活,提高量化后的網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集分類上的效果.但是在訓(xùn)練這些量化網(wǎng)絡(luò)中,會(huì)出現(xiàn)梯度不匹配問(wèn)題.Cai等人[51]通過(guò)分析權(quán)值和激活的分布情況,設(shè)計(jì)一種新的半波高斯量化器(half-wave Gaussian quantizer)及其BP過(guò)程中不同的梯度近似,提出了HWGQ-Net,有效地解決了訓(xùn)練過(guò)程中梯度不匹配問(wèn)題.
由于權(quán)值近似分布于均值為0的高斯分布,即W~N(0,σ2),進(jìn)一步考慮0作為量化后的值,可能減少量化誤差.基于此思想,三元權(quán)值網(wǎng)絡(luò)(ternary weight nets,TWN)[52]將全精度權(quán)值網(wǎng)絡(luò)量化到三元網(wǎng)絡(luò)(即-w,0和w),其中w通過(guò)統(tǒng)計(jì)估計(jì)得到的量化值.通過(guò)改變對(duì)稱的w,訓(xùn)練的三元量化[53](trained ternary quantization,TTQ)引入了不同的量化因子(即-w1,0和w2),且通過(guò)訓(xùn)練得到該因子,在量化AlexNet時(shí)分類錯(cuò)誤率只增加了0.6%.如表4所示,列出了以上量化網(wǎng)絡(luò)的性能比較及相應(yīng)的量化比特?cái)?shù)比較結(jié)果.
對(duì)于傳統(tǒng)網(wǎng)絡(luò)(如AlexNet和VGG-16),全連接層的參數(shù)存儲(chǔ)占整個(gè)網(wǎng)絡(luò)模型的95%以上,所以探索全連接層參數(shù)冗余性將變得異常重要.利用Hash函數(shù)和結(jié)構(gòu)化線性映射相繼提出,可用于實(shí)現(xiàn)全連接層的參數(shù)共享,大大減低模型的內(nèi)存開(kāi)銷.Chen等人[54]提出了HashNet模型,利用2個(gè)低耗的Hash函數(shù)對(duì)不同的網(wǎng)絡(luò)參數(shù)映射到相同Hash桶中,實(shí)現(xiàn)參數(shù)共享.Cheng等人[55]提出基于一種簡(jiǎn)單有效的循環(huán)投影方法,即利用存儲(chǔ)量極小的循環(huán)矩陣代替原始矩陣,同時(shí)使用快速傅里葉變換(fast Fourier transform,F(xiàn)FT)加速矩陣的乘積計(jì)算.另外,Yang等人[56]引入了新的Adaptive Fastfood變換,重新定義了全連接層的矩陣與向量之間的乘積計(jì)算,減少了參數(shù)量和計(jì)算量.
量化權(quán)值,特別是二值化網(wǎng)絡(luò),存在以下缺點(diǎn):1)對(duì)于壓縮與加速大的深度網(wǎng)絡(luò)模型(如Goog-LeNet和ResNet),存在分類精度丟失嚴(yán)重現(xiàn)象;2)現(xiàn)有方法只是采用簡(jiǎn)單地考慮矩陣近似,忽略了二值化機(jī)制對(duì)于整個(gè)網(wǎng)絡(luò)訓(xùn)練與精度損失的影響;3)對(duì)于訓(xùn)練大型二值網(wǎng)絡(luò),缺乏收斂性的理論驗(yàn)證,特別是對(duì)于同時(shí)量化權(quán)值和激活的二值化網(wǎng)絡(luò)(如XNOR-Net,BNN等).對(duì)于限制于全連接層的參數(shù)共享方法,如何泛化到卷積層成為一個(gè)難題.此外,結(jié)構(gòu)化矩陣限制可能引起模型偏差,造成精度的丟失.
基于低秩分解的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速的核心思想是利用矩陣或張量分解技術(shù)估計(jì)并分解深度模型中的原始卷積核.卷積計(jì)算是整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中計(jì)算復(fù)雜度最高的計(jì)算操作,通過(guò)分解4D卷積核張量,可以有效地減少模型內(nèi)部的冗余性.此外對(duì)于2D的全連接層矩陣參數(shù),同樣可以利用低秩分解技術(shù)進(jìn)行處理.但由于卷積層與全連接層的分解方式不同,本文分別從卷積層和全連接層2個(gè)不同角度回顧與分析低秩分解技術(shù)在深度神經(jīng)網(wǎng)絡(luò)中的應(yīng)用.
在2013年,Denil等人[57]從理論上利用低秩分解的技術(shù)并分析了深度神經(jīng)網(wǎng)絡(luò)存在大量的冗余信息,開(kāi)創(chuàng)了基于低秩分解的深度網(wǎng)絡(luò)模型壓縮與加速的新思路.如圖7所示,展示了主流的張量分解后卷積計(jì)算.Jaderberg等人[58]利用張量的低秩分解技術(shù),將原始的網(wǎng)絡(luò)參數(shù)分解成2個(gè)小的卷積核.利用相同簡(jiǎn)單的策略,Denton等人[59]先尋找對(duì)卷積層參數(shù)的低秩近似,然后通過(guò)微調(diào)的方式恢復(fù)模型的識(shí)別精度.此外,利用經(jīng)典的CP分解[60],將原始的張量參數(shù)分解成3個(gè)秩為1的小矩陣.相似地,利用Tucker分解[61],將原始的張量分解成3個(gè)小的張量的乘積.Tai等人[62]提出了新的低秩分解張量算法,同時(shí)也提出了引入批量正則化,從頭開(kāi)始訓(xùn)練有低秩限制的卷積神經(jīng)網(wǎng)絡(luò).Ioannou等人[63]利用卷積核的低秩表示,代替分解預(yù)訓(xùn)練的卷積核參數(shù),并設(shè)計(jì)了一種有效的權(quán)值初始化方法,從頭開(kāi)始訓(xùn)練計(jì)算有效的卷積神經(jīng)網(wǎng)絡(luò).同樣地,代替直接分解預(yù)訓(xùn)練的模型參數(shù),溫偉等人[64]從訓(xùn)練的角度探討如何更有效地聚集更多參數(shù)于低秩空間上,提出了新的強(qiáng)力正則化項(xiàng)(force regularization),迫使更多的卷積核分布于更為低秩空間中.以上低秩分解卷積核的方法,雖然減少了卷積核的冗余性,即考慮了卷積神經(jīng)網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu)的冗余性,但全盤(pán)接受了視覺(jué)輸入的全部,極大地影響了模型加速比.為此,林紹輝等人[65]提出了ESPACE卷積計(jì)算加速框架,考慮了視覺(jué)輸入的冗余性,即從輸入計(jì)算空間和通道冗余性2方面移除低判別性和顯著性的信息.
K, (R3, R4) and R are the corresponding rank of low-rank decomposition, Tucker-2 decomposition and CP decomposition respectively.Fig.7 Convolution with several low-rank factors圖7 擁有若干個(gè)低秩因子的卷積計(jì)算
對(duì)于全連接層特定的2D矩陣形式,雖然可以通過(guò)轉(zhuǎn)變2D矩陣計(jì)算為1×1的卷積計(jì)算,從而利用上述低秩分解技術(shù)進(jìn)行應(yīng)用,但對(duì)于特定的全連接層也存在相關(guān)低秩分解方法.Denil等人[57]利用了低秩分解方法減少了深度神經(jīng)網(wǎng)絡(luò)中的動(dòng)態(tài)參數(shù)個(gè)數(shù).林紹輝等人[66]分析了直接對(duì)層內(nèi)參數(shù)低秩分解壓縮無(wú)法獲得高精度分類效果的缺點(diǎn),提出考慮層間的各種非線性關(guān)系,參數(shù)層間的聯(lián)合優(yōu)化,代替單層的優(yōu)化,構(gòu)建全局誤差最小化優(yōu)化方案.
基于低秩分解的深度網(wǎng)絡(luò)模型壓縮算法,在特定場(chǎng)景下取得良好的效果,但增加了模型原有的層數(shù),極易在訓(xùn)練過(guò)程中造成梯度消失的問(wèn)題,從而影響壓縮后網(wǎng)絡(luò)的精度恢復(fù).另外,逐層低秩分解優(yōu)化參數(shù),無(wú)法從全局進(jìn)行壓縮,延長(zhǎng)了離線分解時(shí)間開(kāi)銷.
對(duì)深度網(wǎng)絡(luò)模型的卷積核使用緊性的濾波直接替代,將有效地壓縮深度網(wǎng)絡(luò).基于該思想,直接將原始較大的濾波大小(如5×5,3×3)分解成2個(gè)1×1卷積濾波,大大加速了網(wǎng)絡(luò)的計(jì)算同時(shí)獲得了較高的目標(biāo)識(shí)別性能.
2016年,SqueezeNet[67]的提出是將原始的卷積結(jié)構(gòu)替換成為Fire Module,即包括Squeeze層和Expand層.在Squeeze層將3×3的卷積濾波替換成1×1的卷積濾波,并在Expand層中加入1×1和3×3的卷積濾波,同時(shí)減少3×3的卷積濾波個(gè)數(shù),減少池化(pooling),從而簡(jiǎn)化網(wǎng)絡(luò)復(fù)雜度,降低卷積網(wǎng)絡(luò)模型參數(shù)的數(shù)量,同時(shí)也達(dá)到AlexNet識(shí)別精度.最終的模型參數(shù)降低了50倍,大大壓縮了深度網(wǎng)絡(luò)模型.另外,Google公司Howard等人[68]提出了MobileNets,利用計(jì)算和存儲(chǔ)更小的深度分割卷積(depthwise separable convolution)替代原始的標(biāo)準(zhǔn)卷積計(jì)算.Zhang等人[69]提出ShuffleNet,利用組卷積(group convolution)和通道重排(channel shuffle)兩個(gè)操作設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)模型,從而減少模型使用的參數(shù).一般情況下,使用組卷積會(huì)導(dǎo)致信息流通不當(dāng),通過(guò)通道重排改變通道的序列,得到與原始卷積相似的計(jì)算結(jié)果.Chollet[70]提出Xception網(wǎng)絡(luò)結(jié)構(gòu),在原始Inception-V3的基礎(chǔ)上引入深度分割卷積計(jì)算,不同于原始MobileNet中的深度分割卷積,Xception先進(jìn)行1×1的點(diǎn)卷積計(jì)算(point convolution),然后再逐通道卷積,提高了模型的計(jì)算效率.在同參數(shù)量情況下,分類效果優(yōu)于Inception-V3.
基于緊性卷積核的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速采用了特定的卷積核的設(shè)計(jì)或新卷積計(jì)算方式,大大壓縮神經(jīng)網(wǎng)絡(luò)模型或加速了卷積計(jì)算.但壓縮與加速方法的擴(kuò)展性和結(jié)合性較弱,即較難在緊性卷積核的深度神經(jīng)網(wǎng)絡(luò)中利用不同壓縮或加速技術(shù)進(jìn)一步提高模型使用效率.另外,跟原始模型相比,基于緊性卷積核設(shè)計(jì)的深度神經(jīng)網(wǎng)絡(luò)得到的特征普適性及泛化性較弱.
知識(shí)蒸餾(KD)的基本思想是通過(guò)軟 Softmax變換學(xué)習(xí)教師輸出的類別分布,并將大型教師模型(teacher model)的知識(shí)精煉為較小的模型.如圖8所示,展示了簡(jiǎn)單的知識(shí)蒸餾的流程.2006年,Buciluǎ等人[71]首先提出利用知識(shí)遷移(knowledge transfer,KT)來(lái)壓縮模型.他們通過(guò)集成強(qiáng)分類器標(biāo)注的偽數(shù)據(jù)(pseudo-data)訓(xùn)練了一個(gè)壓縮模型,并重現(xiàn)了原大型網(wǎng)絡(luò)的輸出結(jié)果,然而他們的工作僅限于淺層網(wǎng)絡(luò).近年來(lái),知識(shí)蒸餾[72]提出了可以將深度和寬度的網(wǎng)絡(luò)壓縮為淺層模型,該壓縮模型模仿了復(fù)雜模型所能實(shí)現(xiàn)的功能.
Fig.8 Knowledge distillation圖8 知識(shí)蒸餾
Hinton等人[73]提出了知識(shí)蒸餾的壓縮框架,通過(guò)軟化教師網(wǎng)絡(luò)輸出指導(dǎo)和懲罰學(xué)生網(wǎng)絡(luò)(student network).該框架將集成的深度網(wǎng)絡(luò)壓縮成為相同深度的學(xué)生網(wǎng)絡(luò).為此,利用教師軟輸出的結(jié)果作為標(biāo)簽,訓(xùn)練壓縮學(xué)生網(wǎng)絡(luò).Romero等人[74]提出了基于知識(shí)蒸餾的FitNet,通過(guò)訓(xùn)練窄且深網(wǎng)絡(luò)(學(xué)生網(wǎng)絡(luò)),壓縮寬且淺網(wǎng)絡(luò)(教師網(wǎng)絡(luò)).
近幾年,知識(shí)蒸餾也得到了改進(jìn)和拓展,例如:Balan等人[75]通過(guò)在線訓(xùn)練的方式學(xué)習(xí)帶有參數(shù)的學(xué)生網(wǎng)絡(luò)近似蒙特卡洛(Monte Carlo)教師網(wǎng)絡(luò).不同于原來(lái)的方法,該方法使用軟標(biāo)簽作為教師網(wǎng)絡(luò)知識(shí)的表達(dá),代替原來(lái)的教師網(wǎng)絡(luò)的軟輸出.Luo等人[76]利用高層隱含層神經(jīng)元的輸出作為知識(shí),它比使用標(biāo)簽概率作為知識(shí)能保留更多的知識(shí).Zagoruyko等人[77]提出了注意力遷移(attention transfer,AT),通過(guò)遷移注意力圖(attention maps),松弛了FitNet的假設(shè)條件.
雖然基于知識(shí)蒸餾的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法能使深層模型細(xì)小化,同時(shí)大大減少了計(jì)算開(kāi)銷,但是依然存在2個(gè)缺點(diǎn):1)只能用于具有 Softmax 損失函數(shù)分類任務(wù),這阻礙了其應(yīng)用;2)模型的假設(shè)較為嚴(yán)格,以至于其性能可能比不上其他壓縮與加速方法.
在1.3節(jié)介紹GoogLeNet時(shí),為了減少全連接層的參數(shù)個(gè)數(shù),全局均勻池化代替?zhèn)鹘y(tǒng)的3層全連接層,減少了全連接層的參數(shù).在近幾年提出的最新的網(wǎng)絡(luò)結(jié)構(gòu)中,全局均勻池化方法廣泛其中,例如Network in Network(NIN),GoogLeNet,ResNet,ResNeXt[78]等,在很多基準(zhǔn)(benchmark)任務(wù)中取得了最優(yōu)的(state-of-the-art)性能.但該類型結(jié)構(gòu)在ImageNet數(shù)據(jù)集上學(xué)習(xí)到的特征很難直接遷移到其他任務(wù)上.為了解決此問(wèn)題,Szegedy等人[22]在原始結(jié)構(gòu)的基礎(chǔ)上加入了線性層.
此外,基于卷積的快速傅里葉變化[79]和使用Winograd算法[80]的快速卷積計(jì)算,大大減少了卷積計(jì)算的開(kāi)銷.Zhai等人[81]提出了隨機(jī)空間采樣池化(stochastic spatial sampling pooling),用于加速原始網(wǎng)絡(luò)中的池化操作.但是這些工作僅僅為了加速深度網(wǎng)絡(luò)計(jì)算,無(wú)法達(dá)到壓縮網(wǎng)絡(luò)的目的.
在深度神經(jīng)網(wǎng)絡(luò)壓縮與加速中常見(jiàn)并具有代表性的數(shù)據(jù)集主要包括MNIST[14],CIFAR-10/100[82],ImageNet[18],如表5所示,羅列了這些數(shù)據(jù)集的基本統(tǒng)計(jì)信息.
Table 5 Comparison of the Widely Used Dataset for DNN Compression and Acceleration表5 常見(jiàn)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速數(shù)據(jù)集統(tǒng)計(jì)信息
MNIST是用于手寫(xiě)字符分類被廣泛使用的數(shù)據(jù)集.在1998年,該數(shù)據(jù)集被公開(kāi)作為字符識(shí)別算法評(píng)測(cè)的公共數(shù)據(jù)集.在該數(shù)據(jù)集中,包含了來(lái)自10個(gè)類別(即手寫(xiě)體數(shù)字0~9),像素為28×28的手寫(xiě)體字符灰度圖,總計(jì)有6萬(wàn)張訓(xùn)練圖像和1萬(wàn)張測(cè)試圖像.LeNet-5作為經(jīng)典模型在MNIST上分類錯(cuò)誤率達(dá)到0.9%.MNIST已作為簡(jiǎn)單且公平的數(shù)據(jù)集用于評(píng)測(cè)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速性能.
CIFAR是用于分類小圖像的數(shù)據(jù)集,它是8千萬(wàn)張 Tiny Image數(shù)據(jù)集的子集.在2009年,該數(shù)據(jù)集被公開(kāi)作為分類小型彩色圖像算法評(píng)測(cè)的公共數(shù)據(jù)集.CIFAR數(shù)據(jù)集有2個(gè)版本,分別為CIFAR-10和CIFAR-100,包含了像素均為32×32的自然彩色圖像.在CIFAR-10數(shù)據(jù)集中,包含了來(lái)自10個(gè)互不交叉的類別,總計(jì)有5萬(wàn)張訓(xùn)練圖像(每類5千張)和1萬(wàn)張測(cè)試圖像(每類1千張).在CIFAR-100數(shù)據(jù)集中,包括了100個(gè)類別不同的圖像,其中5萬(wàn)張訓(xùn)練圖像(每類500張)和1萬(wàn)張測(cè)試圖像(每類100張).在不引入任何數(shù)據(jù)擴(kuò)展方法時(shí),經(jīng)典模型NIN 在CIFAR-10和CIFAR-100分類錯(cuò)誤率達(dá)到10.41%和35.68%.
ImageNet是一個(gè)大尺度圖像數(shù)據(jù)集.2010年首次被提出,并在2012年得到穩(wěn)定使用.該數(shù)據(jù)集包含1 000個(gè)類別彩色圖像,且一般先縮放至像素大小為256×256.不同于以上2種數(shù)據(jù)集,該數(shù)據(jù)集的類別標(biāo)簽可用字網(wǎng)絡(luò)(WordNet)表示,即由主類別標(biāo)簽詞表示并包含相同目標(biāo)的近義詞,相當(dāng)于詞匯的分層結(jié)構(gòu).該數(shù)據(jù)集總計(jì)約有0.13億張訓(xùn)練圖像(每個(gè)類別數(shù)量在732~1 300之間),10萬(wàn)張測(cè)試圖像(每類100張)和5萬(wàn)張驗(yàn)證圖像(每類50張).由于測(cè)試數(shù)據(jù)集標(biāo)簽未公開(kāi),一般情況下,測(cè)試該數(shù)據(jù)集性能時(shí)通過(guò)驗(yàn)證集上性能作為測(cè)試依據(jù).另外,top-1分類錯(cuò)誤率和top-5分類錯(cuò)誤率是判斷ImageNet分類準(zhǔn)確率指標(biāo).top-1指的是得分最高的類別剛好是標(biāo)簽類別時(shí),分類正確;top-5指的是得分前5的類別中包含正確標(biāo)簽時(shí),分類正確.AlexNet,VGG-16,ResNet-50作為ImageNet數(shù)據(jù)集上經(jīng)典的網(wǎng)絡(luò)模型,分別獲得了42.24% top-1分類錯(cuò)誤率和19.11% top-5分類錯(cuò)誤率、31.66% top-1分類錯(cuò)誤率和11.55% top-5分類錯(cuò)誤率以及24.64% top-1分類錯(cuò)誤率和7.76% top-5分類錯(cuò)誤率.
綜上所述,MNIST是較為簡(jiǎn)單的小型數(shù)據(jù)集,而ImageNet是一個(gè)大尺度類別多樣的復(fù)雜數(shù)據(jù)集,充滿著挑戰(zhàn).另外,對(duì)于同一個(gè)網(wǎng)絡(luò),在不同數(shù)據(jù)集下表現(xiàn)出不一樣的性能,因此判斷網(wǎng)絡(luò)性能時(shí)一般需要考慮所采用的數(shù)據(jù)集.
率失真(rate-distortion)作為評(píng)價(jià)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速性能標(biāo)準(zhǔn),既考慮了模型的壓縮與加速比,同時(shí)需要計(jì)算壓縮與加速后的模型分類誤差率.為了計(jì)算模型的壓縮與加速比,我們假設(shè)λ和λ*分別為原始模型M和壓縮后模型M*所有參數(shù)所占的內(nèi)存開(kāi)銷,那么模型的壓縮比Cr可計(jì)算為
(3)
相似地,假設(shè)γ和γ*分別為原始模型M和壓縮后模型M*推測(cè)(inference)整個(gè)網(wǎng)絡(luò)的時(shí)間,那么模型的加速比Sr可定義為
(4)
關(guān)于分類誤差率需要根據(jù)不同的數(shù)據(jù)集,如上述所述的數(shù)據(jù)集中,MNIST和CIFAR只存在top-1分類錯(cuò)誤率,而ImageNet有top-1和top-5兩種分類錯(cuò)誤率.根據(jù)數(shù)據(jù)集不同,選擇相應(yīng)模型性能評(píng)價(jià)標(biāo)準(zhǔn).一般情況下,好的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法表現(xiàn)出:壓縮與加速后的模型具有相似于原始模型的分類錯(cuò)誤率,同時(shí)伴隨著少量的模型參數(shù)和計(jì)算復(fù)雜度.因此模型的錯(cuò)誤率和壓縮比(或加速比)需要統(tǒng)一考慮.
目前深度學(xué)習(xí)框架層出不窮,包括Caffe[83],Tensorflow[84],Torch等.為了公平評(píng)測(cè)各壓縮模型的實(shí)際速度,對(duì)于深度神經(jīng)網(wǎng)絡(luò)壓縮與加速領(lǐng)域,采用Caffe作為主流的深度學(xué)習(xí)框架.
目前已有工作的實(shí)驗(yàn)所用數(shù)據(jù)集一般是3個(gè)數(shù)據(jù)集:MNIST,Cifar,ImageNet,使用模型包括LeNet-5,AlexNet,VGG-16,ResNet等.下面我們比較代表性深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法在不同模型上的壓縮與加速效果.
如表6所示,列出了包括剪枝與參數(shù)共享在內(nèi)的壓縮與加速方法在LeNet-5上的比較結(jié)果.#FLOPs表示浮點(diǎn)型計(jì)算次數(shù)個(gè)數(shù),#Param表示模型中參數(shù)的數(shù)量,errtop-1↑表示相比較于原始模型,壓縮后的模型top-1分類錯(cuò)誤率增加值.從整體上看,在該模型上壓縮與加速取得了較好的結(jié)果.從壓縮與加速2方面比較,非結(jié)構(gòu)化剪枝[31]在壓縮模型參數(shù)上能取得12×更好的結(jié)果,而結(jié)構(gòu)化剪枝SSL[33]在加速模型上取得3.62×的結(jié)果,基本保證模型不丟失精度.
Table 6 Results of Different DNN Compression and Acceleration on LeNet-5表6 不同壓縮與加速方法在LeNet-5上的結(jié)果
Note:↑denotes increase.
如表7和表4所示,主要比較了不同壓縮與加速方法在AlexNet上的結(jié)果.如表7所示,主要比較了不同低秩分解技術(shù)在AlexNet上加速效果(除SSL[33]外).從比較結(jié)果可以看出,LRA[64]不僅在準(zhǔn)確率和加速比高于傳統(tǒng)的CPD[60]和TD[61],而且在加速比(4.05×vs.3.13×)上也高于SSL,top-5分類錯(cuò)誤率增加幾乎一樣(1.71% vs.1.66%).如表4所示,主要列出了關(guān)于量化網(wǎng)絡(luò)在AlexNet上的性能比較.原始的權(quán)值和激活的保存形式為32 b浮點(diǎn)型,通過(guò)用低比特位數(shù)量化網(wǎng)絡(luò),減少模型存儲(chǔ)和計(jì)算開(kāi)銷.增加比特位的位數(shù),模型的性能得到提升,量化到8 b幾乎無(wú)損壓縮模型,如利用動(dòng)態(tài)固定點(diǎn)量化[44-45].若只對(duì)模型的權(quán)值進(jìn)行量化,保持激活位數(shù)不變,BWN[48],TWN[52],TTQ[53]能夠較好地控制模型誤差增加(除了BC[46]外),但加速效果有限.通過(guò)進(jìn)一步量化激活,特別是量化激活為2 b時(shí),HWGQ-Net[51]取得了top-5分類錯(cuò)誤率增加僅為5.2%.
Table 7 Comparison of Different CNN Acceleration Methods on AlexNet[64]表7 不同卷積神經(jīng)網(wǎng)絡(luò)加速方法在AlexNet上的對(duì)比
Note:↑ denotes increase.
在壓縮與加速VGG-16上,如表8所示,展示了部分比較有代表性的剪枝算法的評(píng)測(cè)結(jié)果.為了進(jìn)一步壓縮VGG-16,借鑒NIN[25]全局均勻池化,代替原始模型中的3層全連接層.我們把壓縮后的模型記為“X-GAP”,指的是利用“X”方法剪枝完所有的卷積層后,加入GAP進(jìn)行微調(diào)整個(gè)壓縮后的網(wǎng)絡(luò).特別地,VGG-GAP不刪除任何卷積層的濾波,反而取得了較高的分類錯(cuò)誤率,即top-1分類錯(cuò)誤率和top-5分類錯(cuò)誤率分別為37.97%和15.65%.另外,ThiNet[38]較其他方法,取得了較低的分類錯(cuò)誤率增加(即top-1分類錯(cuò)誤率和top-5分類錯(cuò)誤率分別增加為1.00%和0.52%),但加速和壓縮比相對(duì)較低于L1[35],APoZ[36].通過(guò)進(jìn)一步增加剪枝卷積核的數(shù)量(記為“ThiNet-T”),取得106.5×壓縮比和4.35×加速比,但壓縮后模型的top-1分類錯(cuò)誤率和top-5分類錯(cuò)誤率分別增加了9%和6.47%.
Table 8 Comparison of Parameter Pruning Methods for Compressing and Accelerating VGG-16表8 參數(shù)剪枝方法在壓縮與加速VGG-16上的對(duì)比
Note:↑denotes increase.
如表9所示,展示了主流的二值量化方法在ImageNet數(shù)據(jù)集上壓縮與加速ResNet-18的比較結(jié)果.全精度的ResNet-18能達(dá)到30.7% top-1分類錯(cuò)誤率及10.8% top-5分類錯(cuò)誤率.雖然BWN[48]
Table 9 Results of Binary Network on ImageNet for Compressing ResNet-18表9 二值網(wǎng)絡(luò)在ImageNet上壓縮ResNet-18的結(jié)果
Note:↑ denotes increase.
和DeReFa-Net[49]取得較好的分類性能,但它們分別使用了全精度的激活和4 b的激活.若同時(shí)二值化權(quán)值和激活,計(jì)算卷積時(shí),只需要bitcount和XNOR計(jì)算,大大提高卷積計(jì)算效率,但降低了模型的分類效果,例如BNN[47]和XNOR-Net[48]分別增加了27.1%和18.1%的top-1分類錯(cuò)誤率.
如表10所示,比較MobileNet[68]和ShuffleNet[69]在ImageNet上性能比較結(jié)果.aMobileNet-224指的是在基準(zhǔn)模型框架下(即1 MobileNet-224),以a倍縮放基準(zhǔn)結(jié)構(gòu)的每層卷積核濾波個(gè)數(shù);ShuffleNetb×,g=c指的是在組的個(gè)數(shù)為c的情況下,以b倍縮放基準(zhǔn)結(jié)構(gòu)(即ShuffleNet 1×)的每層卷積核濾波個(gè)數(shù).通過(guò)不同層次的浮點(diǎn)型計(jì)算復(fù)雜度對(duì)比結(jié)果,可以明顯得出ShuffleNet的性能優(yōu)于MobileNet.特別值得注意的是,在小的浮點(diǎn)型計(jì)算復(fù)雜度情況下(如0.4億浮點(diǎn)型計(jì)算次數(shù)),ShuffleNet取得了更好的分類結(jié)果,即高于相同復(fù)雜度等級(jí)的MobileNet 6.7%分類錯(cuò)誤率.
Table 10 Comparison of MobileNet and ShuffleNet on ImageNet Classification[69]表10 MobileNet和ShuffleNet在ImageNet分類上比較[69]
Note:↓ denotes decrease.
在第2節(jié)中,我們回顧與總結(jié)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速算法,但如何選擇不同的壓縮與加速算法成為一個(gè)難題.為此,在本節(jié)中,我們將進(jìn)行詳細(xì)討論選擇深度模型壓縮與加速策略.
事實(shí)上,上述介紹的5種主流的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法各有優(yōu)缺點(diǎn),也沒(méi)有固定和可量化的準(zhǔn)則來(lái)判斷哪種方法是最優(yōu)的.所以壓縮與加速方法的選擇依賴于不同的任務(wù)和需要.總結(jié)出壓縮與加速方法選擇的6條意見(jiàn):
1) 對(duì)于在線計(jì)算內(nèi)存存儲(chǔ)有限的應(yīng)用場(chǎng)景或設(shè)備,可以選擇參數(shù)共享和參數(shù)剪枝方法,特別是二值量化權(quán)值和激活、結(jié)構(gòu)化剪枝.其他方法雖然能夠有效的壓縮模型中的權(quán)值參數(shù),但無(wú)法減小計(jì)算中隱藏的內(nèi)存大小(如特征圖).
2) 如果在應(yīng)用中用到的緊性模型需要利用預(yù)訓(xùn)練模型,那么參數(shù)剪枝、參數(shù)共享以及低秩分解將成為首要考慮的方法.相反地,若不需要借助預(yù)訓(xùn)練模型,則可以考慮緊性濾波設(shè)計(jì)及知識(shí)蒸餾方法.
3) 若需要一次性端對(duì)端訓(xùn)練得到壓縮與加速后模型,可以利用基于緊性濾波設(shè)計(jì)的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法.
4) 一般情況下,參數(shù)剪枝,特別是非結(jié)構(gòu)化剪枝,能大大壓縮模型大小,且不容易丟失分類精度.對(duì)于需要穩(wěn)定的模型分類的應(yīng)用,非結(jié)構(gòu)化剪枝成為首要選擇.
5) 若采用的數(shù)據(jù)集較小時(shí),可以考慮知識(shí)蒸餾方法.對(duì)于小樣本的數(shù)據(jù)集,學(xué)生網(wǎng)絡(luò)能夠很好地遷移教師模型的知識(shí),提高學(xué)生網(wǎng)絡(luò)的判別性.
6) 主流的5個(gè)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速算法相互之間是正交的,可以結(jié)合不同技術(shù)進(jìn)行進(jìn)一步的壓縮與加速.如:韓松等人[30]結(jié)合了參數(shù)剪枝和參數(shù)共享;溫偉等人[64]以及Alvarez等人[85]結(jié)合了參數(shù)剪枝和低秩分解.此外對(duì)于特定的應(yīng)用場(chǎng)景,如目標(biāo)檢測(cè),可以對(duì)卷積層和全連接層使用不同的壓縮與加速技術(shù)分別處理.
就目前研究成果而言,深度神經(jīng)網(wǎng)絡(luò)壓縮與加速還處于早期階段,壓縮與加速方法本身性能還有待提高,合理壓縮與加速評(píng)價(jià)標(biāo)準(zhǔn)還需完善,為深入地研究提供幫助.
合理的性能評(píng)價(jià)標(biāo)準(zhǔn)的建立.雖然率失真率能同時(shí)考慮壓縮或加速、分類性能分布情況,但不同壓縮與加速方法無(wú)法統(tǒng)一到同一指標(biāo)下,即同一壓縮與加速率下判斷分類性能的優(yōu)劣,或同一分類性能下判斷壓縮與加速比.在后續(xù)的評(píng)測(cè)標(biāo)準(zhǔn)中,特別對(duì)不同壓縮與加速方法的合理評(píng)價(jià)將得到補(bǔ)充和完善.
壓縮與加速的模型多樣性得到推廣.目前深度神經(jīng)網(wǎng)絡(luò)壓縮與加速的模型多使用卷積神經(jīng)網(wǎng)絡(luò),這肯定了卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的特征表示能力及應(yīng)用覆蓋面.除卷積神經(jīng)網(wǎng)絡(luò)外,還存在大量其他不同結(jié)構(gòu)的網(wǎng)絡(luò),如遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)、長(zhǎng)短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM),廣泛應(yīng)用于人工智能領(lǐng)域.在未來(lái)一段時(shí)間內(nèi),對(duì)于遞歸神經(jīng)網(wǎng)絡(luò)、長(zhǎng)短期記憶網(wǎng)絡(luò)等不同于卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的網(wǎng)絡(luò),是否可以使用上述介紹的壓縮與加速方法進(jìn)行處理,這將有待于研究.
更多深度神經(jīng)網(wǎng)絡(luò)壓縮與加速技術(shù)嵌入終端設(shè)備,實(shí)現(xiàn)實(shí)際應(yīng)用落地.隨著深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法的快速推進(jìn)與發(fā)展,對(duì)于分類任務(wù)的壓縮與加速方面已取得較大進(jìn)步,但對(duì)于其他視覺(jué)任務(wù)較少涉及.設(shè)計(jì)基于視覺(jué)任務(wù)(如目標(biāo)檢測(cè)、目標(biāo)跟蹤、圖像分割等)為一體的深度神經(jīng)網(wǎng)絡(luò)壓縮與加速,將成為深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法真正植入智能終端設(shè)備,實(shí)現(xiàn)實(shí)際應(yīng)用落地的研究熱點(diǎn).
本文首先描述了深度神經(jīng)網(wǎng)絡(luò)壓縮與加速技術(shù)的研究背景;然后對(duì)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速相關(guān)代表方法進(jìn)行詳細(xì)梳理與總結(jié);其次回顧了目前主流壓縮與加速算法所使用的數(shù)據(jù)集、評(píng)價(jià)準(zhǔn)則及性能評(píng)估;最后討論了相關(guān)深度神經(jīng)網(wǎng)絡(luò)壓縮與加速算法的選擇問(wèn)題,并分析了未來(lái)發(fā)展趨勢(shì).隨著深度神經(jīng)網(wǎng)絡(luò)壓縮研究的不斷深入,希望本文能給當(dāng)前及未來(lái)的研究提供一些幫助.