賴葉靜 郝珊鋒 黃定江
摘要:深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)模型通過(guò)巨大的內(nèi)存消耗和高計(jì)算量來(lái)實(shí)現(xiàn)強(qiáng)大的性能,難以部署在有限資源的硬件平臺(tái)上,通過(guò)模型壓縮來(lái)降低內(nèi)存成本和加速計(jì)算已成為熱點(diǎn)問(wèn)題,近年來(lái)已有大量的這方面的研究工作,主要介紹了4種具有代表性的深度神經(jīng)網(wǎng)絡(luò)壓縮方法,即網(wǎng)絡(luò)剪枝、量化、知識(shí)蒸餾和緊湊神經(jīng)網(wǎng)絡(luò)設(shè)計(jì):著重介紹了近年來(lái)具有代表性的壓縮模型方法及其特點(diǎn);最后,總結(jié)了模型壓縮的相關(guān)評(píng)價(jià)標(biāo)準(zhǔn)和研究前景。
關(guān)鍵詞:深度神經(jīng)網(wǎng)絡(luò)壓縮:網(wǎng)絡(luò)剪枝;量化:知識(shí)蒸餾;緊湊神經(jīng)網(wǎng)絡(luò)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)志碼:A DOI:10.3969/j,issn,1000-5641.202091001
0引言
近年來(lái),深度神經(jīng)網(wǎng)絡(luò)(DNN)在許多領(lǐng)域取得了巨大的成功,包括但不限于目標(biāo)識(shí)別和檢測(cè)、語(yǔ)音識(shí)別、自然語(yǔ)言處理,這些成功依賴于更多的參數(shù)、更大更深的模型,例如,在VGG-16(VisualGeometry Group-16)網(wǎng)絡(luò)上訓(xùn)練ImageNet數(shù)據(jù)集得到的模型大小超過(guò)500 MB,參數(shù)數(shù)量高達(dá)138 357 544個(gè),自2012年AlexNet出現(xiàn)并拿下當(dāng)年ImageNet競(jìng)賽的冠軍后,深度神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺(jué)領(lǐng)域大放異彩,隨后出現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)模型數(shù)量大幅度增加,比如VGG、ResNet、DenseNet等,這些深度網(wǎng)絡(luò)模型在許多領(lǐng)域的實(shí)驗(yàn)中表現(xiàn)良好,但在實(shí)際應(yīng)用中仍然受到時(shí)間和空間的限制,即使使用圖形處理單元(Graphics Processing Unit,GPU)或張量處理單元(Tensor Processing Unit,TPU)進(jìn)行加速,這些寬而深的網(wǎng)絡(luò)模型仍然不能滿足在許多應(yīng)用場(chǎng)景中的實(shí)時(shí)需求,與此同時(shí),手機(jī)和邊緣設(shè)備等資源受限設(shè)備的數(shù)量每年都在增加,體積大、計(jì)算成本高的模型會(huì)消耗大量的計(jì)算資源,不適用于手機(jī)等移動(dòng)設(shè)備,因此,在不影響深度網(wǎng)絡(luò)模型準(zhǔn)確度的前提下,模型壓縮是一個(gè)重要的研究問(wèn)題。
實(shí)現(xiàn)模型壓縮的方法有很多,本文將這些方法分為4類:網(wǎng)絡(luò)剪枝、量化、知識(shí)蒸餾和緊湊神經(jīng)網(wǎng)絡(luò)設(shè)計(jì),網(wǎng)絡(luò)剪枝主要通過(guò)設(shè)計(jì)一個(gè)標(biāo)準(zhǔn)去判斷參數(shù)的重要程度,再根據(jù)重要性去除冗余參數(shù),量化減少表示每個(gè)權(quán)值和激活值所需的比特?cái)?shù),如二值化(1-bit)、int8量化(8-bit)等,知識(shí)蒸餾主要利用大型網(wǎng)絡(luò)的知識(shí),并將其知識(shí)轉(zhuǎn)化到緊湊小型的學(xué)生模型中,緊湊神經(jīng)網(wǎng)絡(luò)通過(guò)設(shè)計(jì)一個(gè)特殊結(jié)構(gòu)的卷積核或緊湊卷積的計(jì)算單元,來(lái)降低模型的存儲(chǔ)和計(jì)算復(fù)雜度,表1簡(jiǎn)要總結(jié)了4類神經(jīng)網(wǎng)絡(luò)壓縮方法的優(yōu)缺點(diǎn)和適用場(chǎng)景。
在模型壓縮和加速領(lǐng)域,涌現(xiàn)出了許多優(yōu)秀的綜述論文:文獻(xiàn)[7-8]對(duì)模型壓縮研究的進(jìn)展做了詳盡的調(diào)查分析,主要介紹了前幾年傳統(tǒng)的優(yōu)秀算法,但錯(cuò)過(guò)了近年來(lái)許多重要并且有代表性的工作;文獻(xiàn)[9-10】將模型壓縮分為6個(gè)方向,并介紹了近年來(lái)提出的算法,與之前的綜述文獻(xiàn)不同,本文將模型壓縮分為4大類別,對(duì)過(guò)去幾年相關(guān)的研究進(jìn)展與具有代表性的方法進(jìn)行了了調(diào)查,并給出該領(lǐng)域內(nèi)評(píng)價(jià)準(zhǔn)則的具體計(jì)算方法,在先進(jìn)壓縮算法上綜合比較了圖像分類和目標(biāo)檢測(cè)兩個(gè)任務(wù)的性能,
本文后續(xù)結(jié)構(gòu):第1章分別介紹4種模型壓縮方法,并著重介紹近年來(lái)涌現(xiàn)出的模型壓縮方法及其特點(diǎn);第2章介紹模型壓縮的相關(guān)評(píng)價(jià)標(biāo)準(zhǔn),并對(duì)當(dāng)下具有代表性的壓縮方法進(jìn)行性能評(píng)估;第3章對(duì)全文進(jìn)行總結(jié)并展望未來(lái)的研究熱點(diǎn)。
1模型壓縮算法
模型壓縮有許多優(yōu)秀的算法,并在各個(gè)領(lǐng)域有著廣泛的應(yīng)用,如Wang等提出的PeleeNet,通過(guò)設(shè)計(jì)高效的卷積方式并與移動(dòng)設(shè)備硬件的運(yùn)行庫(kù)結(jié)合,能夠?qū)σ苿?dòng)設(shè)備上的目標(biāo)檢測(cè)、圖像分類等任務(wù)進(jìn)行實(shí)時(shí)預(yù)測(cè),使用PeleeNet在iphone8上實(shí)現(xiàn)目標(biāo)檢測(cè)任務(wù),可達(dá)到23.6 FPS(Frames PerSecond,每秒傳輸幀數(shù)),且準(zhǔn)確率較高,下面介紹4種具有代表性的深度網(wǎng)絡(luò)壓縮方法,并比較分析它們的優(yōu)點(diǎn)與不足。
1.1網(wǎng)絡(luò)剪枝
深度網(wǎng)絡(luò)模型中存在許多冗余和信息量較少的權(quán)值,網(wǎng)絡(luò)剪枝通過(guò)去除訓(xùn)練好的模型中冗余的參數(shù),從而減小模型的體積,并加快模型的計(jì)算速度,壓縮模型的存儲(chǔ)空間,另外,剪枝也可以降低網(wǎng)絡(luò)的復(fù)雜度,解決過(guò)擬合的問(wèn)題。
根據(jù)剪枝粒度級(jí)別的不同,網(wǎng)絡(luò)剪枝可分為4種剪枝粒度,如圖1所示,在最粗粒度的級(jí)別中,可以移去一個(gè)層(layer),被修剪的層如圖1a)中的陰影所示,第二個(gè)修剪粒度是特征圖/濾波器(feature map/filter),其中,特征圖是網(wǎng)絡(luò)輸出,濾波器是網(wǎng)絡(luò)中的參數(shù),在剪枝的過(guò)程中,剪去一個(gè)特征圖等價(jià)于上一層的一個(gè)濾波器可以得到一個(gè)更薄的網(wǎng)絡(luò),圖1b)中陰影部分表示被移除的濾波器,下一個(gè)修剪粒度是核(kernel),即修剪濾波器中的一個(gè)通道,如圖1c)所示,最細(xì)粒度的是修剪核內(nèi)的一個(gè)權(quán)重(weight),如圖1d)所示,核中陰影部分的零即是被修剪的權(quán)重參數(shù),此剪枝粒度可以產(chǎn)生更稀疏的權(quán)重矩陣,這4種剪枝粒度可進(jìn)一步分為結(jié)構(gòu)化剪枝和非結(jié)構(gòu)化剪枝兩類,層間剪枝、特征圖剪枝和核剪枝是結(jié)構(gòu)化剪枝,核內(nèi)權(quán)重修剪(核內(nèi)剪枝)是非結(jié)構(gòu)化修剪。
早期的網(wǎng)絡(luò)剪枝方法多是非結(jié)構(gòu)化剪枝,LeCun等和Hassibi等分別在1990年和1993年提出了最優(yōu)化腦損失(0ptimal Brain Damage,OBD)和最優(yōu)化腦手術(shù)(optimal Brain Surgeon,OBS)方法,后者是前者的改進(jìn),其基本思想是使用損失函數(shù)相對(duì)于權(quán)重的Hessian矩陣來(lái)度量網(wǎng)絡(luò)中核內(nèi)權(quán)重的重要性,從而刪除不重要權(quán)重,這兩個(gè)算法能在一定范圍內(nèi)提升準(zhǔn)確度,但時(shí)間代價(jià)較高,因此,不能在大型網(wǎng)絡(luò)上應(yīng)用,Zhang等提出了一種基于交替方向乘子法(Alternating Direction Methodof Multipliers,ADMM)的權(quán)值剪枝系統(tǒng):首先將深度神經(jīng)網(wǎng)絡(luò)的權(quán)值剪枝問(wèn)題轉(zhuǎn)化為具有指定稀疏性要求的組合約束的非凸優(yōu)化問(wèn)題;然后利用ADMM將非凸優(yōu)化問(wèn)題分解為兩個(gè)迭代求解的子問(wèn)題,一個(gè)用隨機(jī)梯度下降法求解,另一個(gè)用解析法求解,該系統(tǒng)使得AlexNet和LeNet在ImageNet和MNIST數(shù)據(jù)集上的權(quán)重參數(shù)獲得了大幅度的壓縮,以上非結(jié)構(gòu)化剪枝往往使得層內(nèi)的權(quán)重矩陣變成稀疏矩陣,但并沒(méi)有減少計(jì)算量,而且對(duì)稀疏矩陣的加速計(jì)算需要特定的軟件庫(kù)或者硬件來(lái)支持,針對(duì)此問(wèn)題,Ma等提出了PCONV方法,一種粗粒度結(jié)構(gòu)中的細(xì)粒度剪枝模式,包含模式化剪枝和連通性剪枝,模式化剪枝可以獲得filter不同的稀疏性,連通性剪枝進(jìn)一步對(duì)filter做核剪枝,獲得filter之間的稀疏性,此外,利用PCONV剪枝特性設(shè)計(jì)專門的編譯器,在具有代表性的大規(guī)模DNN上實(shí)現(xiàn)了高壓縮和較高的推理速度,除了設(shè)計(jì)特別的剪枝結(jié)構(gòu)、設(shè)計(jì)專有的編譯器,結(jié)構(gòu)化剪枝也可以克服非結(jié)構(gòu)化剪枝的缺點(diǎn)。
結(jié)構(gòu)化剪枝的主要的思想是將不重要的信道或者濾波器去除,并最小化重構(gòu)誤差,He等基于LASSOfLeast Absolute Shrinkage and Selection Operator)回歸的方法進(jìn)行信道選擇,再通過(guò)線性最小二乘法重構(gòu)網(wǎng)絡(luò)輸出,Chin等提出了學(xué)習(xí)卷積網(wǎng)絡(luò)不同層filter的全局排序,該排序用于獲得一組具有不同精度/延遲的卷積網(wǎng)絡(luò)架構(gòu);對(duì)于跨層的filter排序,通過(guò)學(xué)習(xí)分層的參數(shù)仿射變換替代以往的范數(shù)準(zhǔn)則來(lái)評(píng)判filter的重要性,Molchanov等使用一階和二階泰勒展開(kāi)式來(lái)近似filter的貢獻(xiàn),并逐層去除貢獻(xiàn)低的filter,這個(gè)方法可以應(yīng)用于任何類型的層,如殘差網(wǎng)絡(luò)的shortcut層,
Luo等提出的ThiNet框架,filter是否被剪去取決于下一層,而不是當(dāng)前層;在對(duì)第i層的filter進(jìn)行剪枝時(shí),學(xué)習(xí)如何選擇i+1層通道數(shù)的某個(gè)子集輸入原網(wǎng)絡(luò),并且逼近原來(lái)的輸出結(jié)果,此時(shí)第i層的filter也可以去除,在對(duì)某一層進(jìn)行剪枝后,通過(guò)最小化重建誤差進(jìn)行微調(diào),但這個(gè)方法忽略了信道的鑒別能力,因此Zhuang等提出了一種用于深度神經(jīng)網(wǎng)絡(luò)壓縮的鑒別力感知通道修剪策略(Discrimination-aware Channel Pruning,DCP),將信道剪枝問(wèn)題作為稀疏性優(yōu)化問(wèn)題,同時(shí)考慮重構(gòu)誤差和信道鑒別能力,對(duì)于深層模型,由于傳播路徑長(zhǎng),其淺層往往具有很小的鑒別能力,為了提高中間層的鑒別能力,DCP把深層網(wǎng)絡(luò)分為p+1個(gè)階段,并在這p+1階段中引入額外的鑒別力感知損失函數(shù)Ls,p(w),考慮到鑒別力損失和重建損失,該策略關(guān)于信道選擇的聯(lián)合損失函數(shù)為。
結(jié)構(gòu)化剪枝常常使用范數(shù)評(píng)價(jià)指標(biāo)來(lái)評(píng)價(jià)某個(gè)filter是否重要,用范數(shù)評(píng)價(jià)filter時(shí)隱含了兩個(gè)條件:一是范數(shù)的方差要大;二是最小范數(shù)接近零,使用符合這兩個(gè)條件的范數(shù)作為評(píng)價(jià)filter的準(zhǔn)則,最后的重建誤差往往會(huì)比較低,但實(shí)際中,filter范數(shù)分布無(wú)法同時(shí)滿足這兩個(gè)條件,所以可以通過(guò)判斷兩個(gè)filter的相似性來(lái)判斷filter是否冗余,但判斷其相似性是比較困難的,所以,He等12引利用幾何中值fGeometric Median,GM)來(lái)判斷兩個(gè)filter間的相似性,幾何中值是在歐氏空間中點(diǎn)的中心估計(jì),靠近該中心點(diǎn)的filter可以用遠(yuǎn)離該中心點(diǎn)的filter來(lái)近似表示,即可以剪去接近幾何中值的filter,而Lin等人發(fā)現(xiàn)即使輸入圖像的批大?。˙arch Size)不同,但單個(gè)filter生成的多個(gè)特征圖的平均秩總是相等,高秩的特征圖往往包含更多的信息,所以可以剪去產(chǎn)生低秩特征圖的filter,這兩個(gè)方法與范數(shù)無(wú)關(guān),不需滿足范數(shù)評(píng)價(jià)指標(biāo)的條件,但在CIFAR-10和ImageNet數(shù)據(jù)集上使用不同的網(wǎng)絡(luò)進(jìn)行剪枝,都可以在幾乎不損失準(zhǔn)確度的情況下獲得更高的壓縮率。
剪枝就是去除原網(wǎng)絡(luò)中不重要的權(quán)重,從另一個(gè)角度來(lái)看,被剪枝后的網(wǎng)絡(luò)結(jié)構(gòu)就是原網(wǎng)絡(luò)的一個(gè)子結(jié)構(gòu),這跟神經(jīng)網(wǎng)絡(luò)搜索(Neural Architecture Search,NAS)很相似,所以剪枝也可以說(shuō)是神經(jīng)網(wǎng)絡(luò)搜索的一個(gè)特例,它可以使得搜索空間變得更小,目前許多剪枝方法越來(lái)越偏向于神經(jīng)網(wǎng)絡(luò)搜索,剪枝方法和量化方法通常可以結(jié)合使用。
1.2量化
網(wǎng)絡(luò)量化通過(guò)減少表示每個(gè)權(quán)值所需的比特?cái)?shù)來(lái)壓縮原始網(wǎng)絡(luò),通過(guò)這種方式,網(wǎng)絡(luò)中權(quán)值和激活值都被量化,并且浮點(diǎn)乘法累加操作(Multiplly Accumulate,MAC)可以被低比特的乘法累加操作代替,在二值化網(wǎng)絡(luò)和三值化網(wǎng)絡(luò)的情況下甚至不需要乘法,因此,使用低比特量化神經(jīng)網(wǎng)絡(luò)可以降低存儲(chǔ)和計(jì)算復(fù)雜度,同時(shí),低比特量化也有利于面向神經(jīng)網(wǎng)絡(luò)芯片硬件的加速,每降低一比特通常更容易簡(jiǎn)化硬件的設(shè)計(jì),也可以設(shè)計(jì)出更精細(xì)的芯片,量化通過(guò)最小化量化誤差找到最優(yōu)量化器,相應(yīng)公式為。
其中,x表示全精度參數(shù),qx(x)表示量化后的低比特參數(shù),J(qx(x))表示全精度參數(shù)與二進(jìn)制參數(shù)之間的量化誤差。
量化方法可分為權(quán)重共享和低比特表示,具有代表性的權(quán)重共享方法通過(guò)聚類來(lái)現(xiàn),Han等對(duì)每一層的權(quán)重矩陣使用K-Means聚類算法,并使用每個(gè)簇的質(zhì)心來(lái)表示權(quán)重矩陣中的值,因?yàn)橄嗤氐臋?quán)值共享一個(gè)質(zhì)心,所以只需要存儲(chǔ)質(zhì)心的索引,并通過(guò)查找表獲得該索引對(duì)應(yīng)的值,最后通過(guò)梯度進(jìn)行微調(diào)就可減少精度損失,如圖3所示,另一種經(jīng)典的權(quán)重共享方法是使用散列函數(shù)進(jìn)行量化,Chen等使用哈希技巧將網(wǎng)絡(luò)連接權(quán)值隨機(jī)分組到散列桶中,每個(gè)散列桶中的網(wǎng)絡(luò)連接共享相同的權(quán)值參數(shù),這些方法都屬于傳統(tǒng)的標(biāo)量量化方法,Stock等基于乘積量化(Product Quantization,PQ)提出了比特下降的向量量化方法,區(qū)別于以前的向量量化方法,該方法注重激活值的重要性,而不是權(quán)重的重要性,其原理是通過(guò)最小化域內(nèi)輸入的重建誤差,然后把未壓縮的神經(jīng)網(wǎng)絡(luò)作為教師網(wǎng)絡(luò),把壓縮后的網(wǎng)絡(luò)作為學(xué)生網(wǎng)絡(luò),在量化時(shí)只需要一組未標(biāo)記的數(shù)據(jù),再使用字節(jié)對(duì)齊的碼書(shū)來(lái)存儲(chǔ)壓縮后的權(quán)重,通過(guò)這種方法可以在CPU上進(jìn)行有效的推理。
大量基于低比特量化的方法是基于二值化網(wǎng)絡(luò)的改進(jìn)工作,二值化方法使用1 bit對(duì)數(shù)據(jù)進(jìn)行量化,量化后的數(shù)據(jù)取值只有兩個(gè)可能的值:0(1)或+1.2016年,Courbariaux等提出BinaryConnect后,權(quán)重值和激活值分別二值化就成為一種有效的深度神經(jīng)網(wǎng)絡(luò)壓縮方法,通過(guò)二值化,可以將繁重的矩陣乘法運(yùn)算替換為輕量級(jí)的異或運(yùn)算和位計(jì)數(shù)運(yùn)算,二值化的離散性和有限的表示能力,導(dǎo)致正向和逆向傳播中都存在嚴(yán)重的信息損失,在正向傳播中,當(dāng)權(quán)重值和激活值限制在兩個(gè)值時(shí),模型的多樣性會(huì)大大下降,導(dǎo)致了精度大幅度下降,Qin等提出信息保留網(wǎng)絡(luò)(InformationRetention Network,IR-Net)來(lái)保留前向激活和后向梯度的信息,IR-Net分為兩個(gè)過(guò)程:首先通過(guò)均衡和標(biāo)準(zhǔn)化正向傳播的權(quán)重;同時(shí)最小化參數(shù)的量化誤差和最大化量化參數(shù)的信息熵,在沒(méi)有對(duì)激活值添加額外操作的同時(shí),減少了權(quán)重和激活的信息損失,二值化常常使用符號(hào)函數(shù)作為量化函數(shù),對(duì)符號(hào)函數(shù)進(jìn)行反向傳播會(huì)造成巨大的信息損失,所以在反向傳播中需要進(jìn)行梯度近似,為了保留反向傳播中損失函數(shù)的信息,IR-Net通過(guò)逐步逼近反向傳播中的符號(hào)函數(shù)來(lái)最小化梯度的信息損失,由該方法在CIFAR-10和ImageNet數(shù)據(jù)集上使用多個(gè)深度神經(jīng)網(wǎng)絡(luò)進(jìn)行的實(shí)驗(yàn)可知,其比普通二值化方法獲得的精度更高。
除了二值化網(wǎng)絡(luò),三值化和int8量化方法也是常見(jiàn)的低比特量化方法,Wang等提出了有效的兩步量化法(TWO-Step Quantization,TSQ)框架,將網(wǎng)絡(luò)量化問(wèn)題分解為兩個(gè)步驟:第一,使用稀疏法對(duì)激活值進(jìn)行量化,只對(duì)重要的正值進(jìn)行量化,將其他不重要的值設(shè)為零;第二,假設(shè)經(jīng)過(guò)第一步量化激活值獲得的編碼是最優(yōu)的,則可以將最優(yōu)化問(wèn)題表述為具有低位約束的非線性最小二乘回歸問(wèn)題,并用迭代求解量化權(quán)重,Mellempud等提出了利用參數(shù)動(dòng)態(tài)范圍內(nèi)的局部相關(guān)性來(lái)最小化量化對(duì)整體精度的影響的細(xì)粒度三元化方法,Zhu等基于誤差敏感的學(xué)習(xí)率調(diào)節(jié)和方向自適應(yīng)的梯度截?cái)喾椒ń鉀Q了量化后的精度損失,表2給出了近年來(lái)在CIFAR10和ImageNet數(shù)據(jù)集上量化方法的性能對(duì)比,其中,w代表權(quán)重使用的比特位數(shù),A代表激活值使用的比特位數(shù),aCCToml代表預(yù)測(cè)概率最高的類別與真實(shí)類別相符的準(zhǔn)確率,aCCToD-5代表預(yù)測(cè)概率排名前五的類別中包含真實(shí)類別的準(zhǔn)確率。
當(dāng)使用低比特表示參數(shù)時(shí),量化神經(jīng)網(wǎng)絡(luò)的精度與全精度神經(jīng)網(wǎng)絡(luò)相比下降了很多,這是由于網(wǎng)絡(luò)量化階段引入的噪聲使得梯度下降法難以收斂,當(dāng)使用非常低的位表示來(lái)量化權(quán)值和激活時(shí),問(wèn)題可能會(huì)更加嚴(yán)重,在對(duì)深度網(wǎng)絡(luò)模型(如ResNet)進(jìn)行較大的壓縮和加速時(shí),若使用同時(shí)量化權(quán)值和激活值的網(wǎng)絡(luò)(如XNOR-Net),分類精度損失嚴(yán)重,此外,結(jié)構(gòu)化矩陣的限制可能會(huì)導(dǎo)致模型的偏差和精度的損失,因此,量化方法一般是與其他方法結(jié)合使用。
1.3知識(shí)蒸餾
在知識(shí)蒸餾中,使用寬而深的網(wǎng)絡(luò)訓(xùn)練得到的模型一般稱為教師模型(Teacher Model),比如VGG-16等;使用輕量化的網(wǎng)絡(luò)訓(xùn)練得到的模型一般稱為學(xué)生模型(student Model),比如MobileNet等,知識(shí)蒸餾的基本思想是將大型教師模型的軟知識(shí)提煉到較小的學(xué)生模型中,2015年,Hitton等首次提出了知識(shí)蒸餾的壓縮框架,該框架主要使用教師網(wǎng)絡(luò)的軟輸出對(duì)學(xué)生網(wǎng)絡(luò)進(jìn)行指導(dǎo)和懲罰,其中軟輸出可以提供更大的信息熵,提供更多原網(wǎng)絡(luò)的信息,為此,教師網(wǎng)絡(luò)的軟輸出被用作一個(gè)標(biāo)簽來(lái)訓(xùn)練和壓縮學(xué)生網(wǎng)絡(luò),知識(shí)蒸餾過(guò)程如圖4所示,使用帶溫度T的softmax函數(shù)qi來(lái)生成每個(gè)類別的預(yù)測(cè)概率,公式為
知識(shí)蒸餾的目標(biāo)是將原網(wǎng)絡(luò)中具有代表性的知識(shí)轉(zhuǎn)移到另一個(gè)更小的神經(jīng)網(wǎng)絡(luò)中,通常是以最小化概率輸出之間的KL(Kullback-Leibler)散度為目標(biāo)建立教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò),但Tian等提出這一KL目標(biāo)忽略了教師網(wǎng)絡(luò)的重要知識(shí)結(jié)構(gòu),并提出了對(duì)比學(xué)習(xí)方法,對(duì)比學(xué)習(xí)的關(guān)鍵思想是學(xué)習(xí)“正”對(duì)在某些度量空間中接近的表示,并將“負(fù)”對(duì)之間的表示分離開(kāi),實(shí)驗(yàn)表明,該方法在各種知識(shí)轉(zhuǎn)移任務(wù)(包括單模型壓縮、集成蒸餾和跨模態(tài)轉(zhuǎn)移)上的性能都優(yōu)于知識(shí)蒸餾和其他最優(yōu)的蒸餾方法,有時(shí)甚至超過(guò)教師網(wǎng)絡(luò)與知識(shí)蒸餾的結(jié)合。
近年來(lái),許多學(xué)者在知識(shí)蒸餾領(lǐng)域展開(kāi)工作,以設(shè)計(jì)出更好的學(xué)生模型,學(xué)生模型不僅模仿老師的行為,還可以學(xué)習(xí)教師網(wǎng)絡(luò)以外的知識(shí),從而超越教師模型,F(xiàn)urlanello等提出的重生神經(jīng)網(wǎng)絡(luò)(Born-Again Neural Networks,BAN),使得最后獲得的學(xué)生模型可以超越教師模型,與原來(lái)的方法不同,這種方法的目的不再是壓縮模型,而是將知識(shí)從教師模型轉(zhuǎn)移到具有相同能力的學(xué)生模型,如DenseNet作為教師模型、ResNet作為學(xué)生模型,在經(jīng)過(guò)BAN蒸餾后的ResNet,其測(cè)試錯(cuò)誤率比原來(lái)的教師模型DenseNet更低,在教師模型收斂之后,初始化一個(gè)新的學(xué)生模型,然后,在滿足設(shè)置正確的預(yù)測(cè)標(biāo)簽和匹配教師模型輸出分布的雙重要求的同時(shí),對(duì)學(xué)生模型進(jìn)行訓(xùn)練,Gao等提出的殘差知識(shí)蒸餾方法,引進(jìn)了助理fAssistant)的概念,即助理通過(guò)學(xué)習(xí)教師和學(xué)生之間的殘差來(lái)幫助學(xué)生獲取更多的知識(shí)。
基于知識(shí)蒸餾的方法可以壓縮更深更大的模型,并有助于顯著降低計(jì)算成本,而知識(shí)蒸餾大多數(shù)都是應(yīng)用于具有softmaX損失函數(shù)的分類任務(wù),近年來(lái),許多研究使用知識(shí)蒸餾的方法對(duì)目標(biāo)檢測(cè)、語(yǔ)義分割任務(wù)進(jìn)行壓縮,He等提出了一種有效的語(yǔ)義分割知識(shí)蒸餾方法,在不引入額外參數(shù)或計(jì)算的情況下,大幅度提高了學(xué)生模型的能力,并以更少的計(jì)算開(kāi)銷獲得了更好的結(jié)果,此方法可以分為兩個(gè)階段:第一階段通過(guò)自編碼器將知識(shí)壓縮成緊湊的形式,目的是將教師網(wǎng)絡(luò)中的知識(shí)轉(zhuǎn)為更具代表性信息的壓縮空間;第二階段為了從教師網(wǎng)絡(luò)中獲取長(zhǎng)期依賴關(guān)系,提出了親和蒸餾模型(Afflfinity Distillation Module),主要添加一個(gè)卷積層(稱為特征適配器)來(lái)解決教師模型和學(xué)生模型各自feature map不匹配的問(wèn)題,知識(shí)蒸餾可以用于許多領(lǐng)域,比如自然語(yǔ)言處理、半監(jiān)督學(xué)習(xí)等,教師網(wǎng)絡(luò)的軟輸出可以對(duì)學(xué)生網(wǎng)絡(luò)進(jìn)行微調(diào)以獲得更好的精度。
1.4緊湊神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)
隨著人們對(duì)神經(jīng)網(wǎng)絡(luò)原理的理解和在實(shí)踐中的驗(yàn)證,神經(jīng)網(wǎng)絡(luò)模型的發(fā)展正朝更小卷積核、覆蓋更多特征信息、減少冗余的方向發(fā)展,與壓縮已經(jīng)訓(xùn)練好的模型相比,設(shè)計(jì)緊湊的神經(jīng)網(wǎng)絡(luò)是另一種方法,緊湊網(wǎng)絡(luò)設(shè)計(jì)主要針對(duì)卷積網(wǎng)絡(luò)設(shè)計(jì)一種更高效、計(jì)算復(fù)雜度更低的方法,在不損失網(wǎng)絡(luò)性能的情況下減少每秒浮點(diǎn)運(yùn)算次數(shù),并降低模型體積,基于此思想,設(shè)計(jì)高效的CNN結(jié)構(gòu)可以從不同的卷積核和卷積方式進(jìn)行設(shè)計(jì),比如,在設(shè)計(jì)卷積核時(shí),將全連接層換成全局平均池化層用小卷積核(1×1.3×3)替換大卷積核(5×5),在設(shè)計(jì)卷積方式時(shí),使用分組卷積、深度可分離卷積、反卷積等方式替換原來(lái)的標(biāo)準(zhǔn)卷積方式,從而加快了網(wǎng)絡(luò)計(jì)算速度,減少了計(jì)算量。
Iandola等提出的SqueezeNet、Google團(tuán)隊(duì)提出的MobileNetVl-V3系列、Face++團(tuán)隊(duì)提出的ShuffleNetVl-V2系列都是近年來(lái)出現(xiàn)的并具有代表性的緊湊神經(jīng)網(wǎng)絡(luò),其共同點(diǎn)是大量地使用了1×1小濾波器。
SqueezeNet由多個(gè)Fire Module、卷積層(conv)、采樣層(Pooling)和全連接層(Fully Connectedlayers,F(xiàn)C)組成,F(xiàn)ire Module的squeeze層用1×1的小濾波器替換原來(lái)的3×3濾波器,expand層組合使用1×1濾波器和3×3濾波器,減少了原始網(wǎng)絡(luò)的大濾波器(3×3),從而減少了網(wǎng)絡(luò)的參數(shù)量,該模型在可以達(dá)到AlexNet分類精度的同時(shí),可將模型參數(shù)大小降至原來(lái)的1/50倍。
MobileNetVl提出深度分離卷積來(lái)代替原來(lái)的標(biāo)準(zhǔn)卷積計(jì)算,MobileNetVl將卷積運(yùn)算分為depth-wise和point-wise,如圖5所示,在depth-wise中,每個(gè)濾波器只考慮一個(gè)通道,濾波器的數(shù)目等于輸入通道的數(shù)目,其中濾波器是一個(gè)3×3矩陣,point-wise運(yùn)算與常規(guī)卷積運(yùn)算非常相似,但使用的是1×1的小濾波器,經(jīng)過(guò)這兩個(gè)運(yùn)算后,濾波器的參數(shù)將大大降低,MobileNetV2同樣采用了MVl的depth-wise和point-wise,并設(shè)計(jì)了Inverted Residuals來(lái)獲取更多的特征信息,以減少推理時(shí)間,由于在低維空間中增加非線性會(huì)破壞其特征,MV2在每一個(gè)塊fblock)中去除了Relu層,引入LinearBottlenecks,MobileNetV3則通過(guò)神經(jīng)結(jié)構(gòu)搜索獲得子網(wǎng)絡(luò),并在MV2的block中添加了SENet增強(qiáng)模塊,使得網(wǎng)絡(luò)提取特征的能力大大增強(qiáng),從而獲得了更高的準(zhǔn)確性。
ShuffleNetVl使用組卷積(Group Convolution)來(lái)降低模型參數(shù)大小,并使用通道混排(channelShuffle)增強(qiáng)各個(gè)特征圖的連接,ShuffleNetV2提出了4條指導(dǎo)性原則:①輸入輸出通道數(shù)相等會(huì)最小化內(nèi)存訪問(wèn)成本;②組卷積數(shù)目過(guò)多將增加內(nèi)存訪問(wèn)的次數(shù);③在多路結(jié)構(gòu)中,網(wǎng)絡(luò)碎片化降低了并行化程度;④元素級(jí)操作fElement-Wise Operators)不可忽略,基于以上4條原則對(duì)ShuffleNetVl進(jìn)行改進(jìn),提升了準(zhǔn)確度和模型運(yùn)行速度。
華為諾亞方舟團(tuán)隊(duì)的Han等提出了GhostNet模塊,對(duì)于每一個(gè)輸入,首先生成一組內(nèi)部特征圖,然后基于這組內(nèi)部的特征圖,使用一系列成本低廉的線性變換來(lái)生成許多Ghost特征圖,最后該Ghost特征圖和內(nèi)部特征圖的個(gè)數(shù)之和等于原始特征圖個(gè)數(shù)之和,并利用這些模塊,構(gòu)建了GhostbottleneckfG-bneck)和GhostNet,其中Ghost bottleneck類似于ResNet中的殘差塊,GhostNet則使用MobileNetV3作為基本體系架構(gòu),并將MobileNetV3中的bottlenet換成G-bneck,在ImageNet分類中,GhostNet可以獲得比MNV3更高的精確度,Chen等人提出的Octave Convolution,基于自然圖像可以分為高頻和低頻兩部分的思想(經(jīng)過(guò)傅里葉變換后對(duì)應(yīng)的高低頻),將卷積層輸出的特征圖分為高低頻兩部分,將低頻的特征圖存儲(chǔ)在更小的張量中,減少空間冗余,表3給出了近年來(lái)緊湊神經(jīng)網(wǎng)絡(luò)方法在ImageNet數(shù)據(jù)集上實(shí)驗(yàn)的性能對(duì)比,其中,Param代表網(wǎng)絡(luò)中的參數(shù)量大小,F(xiàn)LOPs(FloatingPoint of Operations)為浮點(diǎn)運(yùn)算數(shù)。
緊湊神經(jīng)網(wǎng)絡(luò)采用緊湊的卷積核或改變卷積方式,大大減少了模型中的參數(shù),降低了模型的大小,在輕量的語(yǔ)義分割、目標(biāo)檢測(cè)和分類模型上都有應(yīng)用,但由于其特殊的卷積核,難以和其他模型壓縮方法一起使用。
1.5其他深度神經(jīng)網(wǎng)絡(luò)壓縮算法
訓(xùn)練好的模型卷積核存在低秩特性,所以低秩分解也可用在模型壓縮中,主要通過(guò)矩陣或張量分解模型中的參數(shù),如SVD(singular Value Decomposition)分解、Tucker分解和CP(canonical Polyadic)分解等,Jaderberg等使用低秩擴(kuò)展來(lái)加速卷積神經(jīng)網(wǎng)絡(luò),主要觀點(diǎn)是利用存在于不同通道和濾波器之間的冗余,對(duì)已訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行加速,并提出了兩種優(yōu)化方案,可以很容易地應(yīng)用于現(xiàn)有的CPU和GPU卷積框架:第一,將某一個(gè)通道進(jìn)行秩1分解,并學(xué)習(xí)M個(gè)濾波器基組后通過(guò)線性組合來(lái)近似原來(lái)的濾波器;第二,每個(gè)卷積層被分解為兩個(gè)常規(guī)卷積層的序列,但在空間域內(nèi)帶有矩形濾波器,所得近似結(jié)果需要的計(jì)算操作要少得多,在場(chǎng)景文本字符識(shí)別CNN訓(xùn)練中可以觀察到,分類精度僅下降1%,但加速率卻可以達(dá)到4.5×1。
另外,各種壓縮方法也可以結(jié)合起來(lái)一起用,Han等13引提出的三階段方法,結(jié)合了剪枝和量化兩個(gè)方法:首先修剪值較小的連接,獲得一個(gè)稀疏化網(wǎng)絡(luò);再對(duì)剪枝后的網(wǎng)絡(luò)使用聚類的方法進(jìn)行量化,實(shí)現(xiàn)權(quán)值共享;經(jīng)過(guò)前兩個(gè)步驟后重新訓(xùn)練網(wǎng)絡(luò)以調(diào)整剩余的連接和量化質(zhì)心,最后使用哈弗曼編碼對(duì)網(wǎng)絡(luò)再進(jìn)一步壓縮,該壓縮方法在VGG-16上壓縮率高達(dá)49×,而準(zhǔn)確率卻沒(méi)有降低,Polino等結(jié)合量化和知識(shí)蒸餾對(duì)模型進(jìn)行壓縮,在量化的過(guò)程中加入知識(shí)蒸餾損失進(jìn)行訓(xùn)練,并使用量化后的權(quán)重計(jì)算梯度更新模型,但在量化神經(jīng)網(wǎng)絡(luò)中,對(duì)原始權(quán)重進(jìn)行量化的過(guò)程是離散的,因此梯度幾乎處處為0.這意味著不能使用量化函數(shù)進(jìn)行反向傳播,基于此問(wèn)題,Polino等還提出了可微量化方法,通過(guò)隨機(jī)梯度下降優(yōu)化量化點(diǎn)的位置,該方法使得量化的淺層次學(xué)生模型可以達(dá)到與全精度教師模型相似的水平,同時(shí)可獲得高壓縮率并加速推理過(guò)程,Cai等提出了面向邊緣應(yīng)用的壓縮方法,根據(jù)網(wǎng)絡(luò)中各層權(quán)重的分布對(duì)權(quán)重進(jìn)行裁剪,并針對(duì)嵌入式設(shè)備的特性對(duì)權(quán)重和激活值采用定點(diǎn)量化的方法進(jìn)行量化,在降低計(jì)算量和存儲(chǔ)成本的同時(shí)幾乎達(dá)到了無(wú)損壓縮。
2評(píng)價(jià)準(zhǔn)則
衡量模型壓縮和加速質(zhì)量的標(biāo)準(zhǔn)是壓縮率、加速率和浮點(diǎn)運(yùn)算數(shù)(FLOPs),假設(shè)p是原始模型M中參數(shù)的內(nèi)存成本,u*是壓縮模型M*的內(nèi)存成本,則模型的壓縮率Ф為
另外模型壓縮方法用在分類、目標(biāo)檢測(cè)和語(yǔ)義分割任務(wù)上時(shí),根據(jù)數(shù)據(jù)集的不同會(huì)定義不同的評(píng)價(jià)準(zhǔn)則,如在分類任務(wù)中,小數(shù)據(jù)集CIFAR和MINST使用Top-1分類錯(cuò)誤率,而大數(shù)據(jù)集ImageNet常使用Top-I和Top-5分類錯(cuò)誤率,在目標(biāo)檢測(cè)或語(yǔ)義分割任務(wù)中,常使用平均精度(Average Precision,AP)來(lái)做評(píng)估,一般來(lái)說(shuō),壓縮后的方法與原模型的分類錯(cuò)誤率相似,但參數(shù)減少、加速率增加、浮點(diǎn)運(yùn)算操作數(shù)降低。
表4給出了近年來(lái)在數(shù)據(jù)集ImageNet上進(jìn)行圖像分類的壓縮方法性能對(duì)比,其中參數(shù)量(Param)為float32類型(4字節(jié)),從表4可以看出,對(duì)AlexNet和VGG-16這些大型神經(jīng)網(wǎng)絡(luò)進(jìn)行壓縮,幾乎沒(méi)有精度損失,甚至還會(huì)超過(guò)原來(lái)的精度,對(duì)ResNet-50這類原始參數(shù)本來(lái)就較小的網(wǎng)絡(luò)進(jìn)行壓縮,精度損失也不大。
表5給出了近年來(lái)在Microsoft COCO數(shù)據(jù)集上進(jìn)行目標(biāo)檢測(cè)任務(wù)的壓縮方法對(duì)比,其中AP(AveragePrecision)代表平均精度,AP0.5代表交并比(Intersection over Union,IoU)閾值為0.5時(shí)的AP值,AP0 75代表在IoU閾值為0.75時(shí)的AP值,在對(duì)目標(biāo)檢測(cè)模型進(jìn)行壓縮時(shí),可以在骨干網(wǎng)絡(luò)(Backbone)使用以上介紹的4種主流方法進(jìn)行壓縮或者設(shè)計(jì)更小型的網(wǎng)絡(luò)結(jié)構(gòu),從表5可以看出,EfficientDet-B0在Microsoft COCO 2017數(shù)據(jù)集上表現(xiàn)出了優(yōu)異的性能,并且參數(shù)量和FLOPs都降低了。
3總結(jié)和展望
本文主要對(duì)主流的基于深度神經(jīng)網(wǎng)絡(luò)壓縮的方法進(jìn)行了介紹:首先分析了需要模型壓縮的原因;其次,介紹了4種具有代表性的深度神經(jīng)網(wǎng)絡(luò)壓縮方法,即網(wǎng)絡(luò)剪枝、量化、知識(shí)蒸餾和緊湊網(wǎng)絡(luò)設(shè)計(jì),并著重對(duì)近年來(lái)壓縮模型方法的性能進(jìn)行了分析;最后給出了模型壓縮的評(píng)估準(zhǔn)則,接下來(lái)對(duì)模型壓縮未來(lái)的發(fā)展和面臨的挑戰(zhàn)進(jìn)行展望。
深度網(wǎng)絡(luò)壓縮的基本目的是從網(wǎng)絡(luò)中提取有用的信息,并降低模型大小和參數(shù)量,從目前的研究結(jié)果來(lái)看,深度神經(jīng)網(wǎng)絡(luò)壓縮仍處于發(fā)展階段,壓縮方法本身的性能還有待提高,以下是一些值得研究和探索的方向。
(1)高效評(píng)估方法和剪枝率的選擇:剪枝技術(shù)評(píng)估卷積核或核內(nèi)權(quán)重參數(shù)的重要性仍然是比較簡(jiǎn)單的方法,盡管近年來(lái)提出了許多評(píng)估方法,但普遍計(jì)算復(fù)雜、難度大,因此,如何定義更高效的方法來(lái)確定卷積核或其他參數(shù)的重要性,是未來(lái)值得探索的方向,另外,每一層的卷積參數(shù)分布是不同的,對(duì)每層的剪枝率的選擇也是未來(lái)可探索的方向。
(2)設(shè)計(jì)新的網(wǎng)絡(luò)結(jié)構(gòu):模型量化后會(huì)改變數(shù)據(jù)的原始分布,在大型數(shù)據(jù)集和深度神經(jīng)網(wǎng)絡(luò)中模型性能損失大大增加,主要原因在于現(xiàn)在的網(wǎng)絡(luò)結(jié)構(gòu)不一定全都適合于量化操作,量化后保留的信息與全精度所保留的信息不一定相同,所以如何針對(duì)量化設(shè)計(jì)特定的網(wǎng)絡(luò)結(jié)構(gòu)也是值得研究的方向。
(3)多場(chǎng)景模型壓縮:目前的模型壓縮方法主要針對(duì)深度神經(jīng)網(wǎng)絡(luò),而深度神經(jīng)網(wǎng)絡(luò)壓縮模型大多采用CNN,主要針對(duì)圖像分類場(chǎng)景,常見(jiàn)的神經(jīng)網(wǎng)絡(luò)場(chǎng)景還有遞歸神經(jīng)網(wǎng)絡(luò)fRecurrent NeuralNetwork,RNN)、長(zhǎng)期短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)、強(qiáng)化學(xué)習(xí)、目標(biāo)檢測(cè)和生成式對(duì)抗網(wǎng)絡(luò)fGenerative Adversarial Networks,GAN)等,這些應(yīng)用場(chǎng)景需要的精度往往很高,現(xiàn)有的壓縮方法難以進(jìn)行高效的壓縮,所以在未來(lái)一段時(shí)間內(nèi),有必要研究多場(chǎng)景下的模型如何進(jìn)行壓縮。
(4)端設(shè)備部署:邊緣設(shè)備和各種小型平臺(tái)(如自動(dòng)駕駛汽車)的硬件和資源限制仍然是阻礙深度神經(jīng)網(wǎng)絡(luò)模型落地的主要原因,隨著模型壓縮方法的流行,對(duì)于分類任務(wù)的模型壓縮方法已經(jīng)得到了很大的發(fā)展,但對(duì)于常見(jiàn)的目標(biāo)檢測(cè)、語(yǔ)義分割等任務(wù)的研究還很少,所以如何在資源受限的邊緣設(shè)備中部署各種大模型,使得應(yīng)用真正落地,仍然是一個(gè)大挑戰(zhàn)。
(5)與自動(dòng)機(jī)器學(xué)習(xí)(Automated Machine Learning,AutoML)結(jié)合:如在剪枝中,使用AutoML自動(dòng)化地選擇修剪率,在量化中,AutoML根據(jù)量化前參數(shù)重要性大小來(lái)動(dòng)態(tài)選擇量化的比特?cái)?shù)。
華東師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2020年5期