曾煥強 胡浩麟 林向偉 侯軍輝 蔡燦輝
(1.華僑大學(xué)工學(xué)院,福建泉州 362021;2.華僑大學(xué)信息科學(xué)與工程學(xué)院,福建廈門 361021;3.香港城市大學(xué)計算機科學(xué)系,中國香港 999077)
近年來,深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)受到了學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注,被大量應(yīng)用于人工智能各個領(lǐng)域。然而,深度神經(jīng)網(wǎng)絡(luò)的成功很大程度上依賴于GPU(Graphic Processing Unit,GPU)計算能力的發(fā)展。大型深度神經(jīng)網(wǎng)絡(luò)存在結(jié)構(gòu)復(fù)雜、層級較多、節(jié)點數(shù)量巨大等特點,例如早期在ILSVRC 競賽中取得了重大突破的AlexNet是針對圖像分類任務(wù)而設(shè)計的卷積神經(jīng)網(wǎng)絡(luò),僅由5 個卷積層與3 個全連接層組成,所含參數(shù)量超過6 千萬,模型大小超過240 MB。此外,業(yè)界廣泛使用的模型VGG16 則擁有1.44 億個參數(shù),模型大小超過500 MB,ResNet-152 擁有0.57 億個參數(shù),模型大小達到230 MB。采用上述模型對一幅224×224的彩色圖像進行分類,分別需要進行150 億次和113 億次浮點型計算。另外,由于ResNet 系列模型具有復(fù)雜的分支結(jié)構(gòu),雖然其參數(shù)量相較于具有平坦結(jié)構(gòu)的VGG 模型更小,但在實際訓(xùn)練和推理中耗時更長。可見,主流深度學(xué)習(xí)模型的存儲和計算成本對于具有嚴(yán)格時延約束條件的實時應(yīng)用來說過于高昂。
隨著移動端設(shè)備的普及和市場規(guī)模的擴大,工業(yè)界迫切需要將深度學(xué)習(xí)模型部署到資源有限的邊緣設(shè)備上。然而嵌入式設(shè)備和現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)所具有的內(nèi)存容量、計算資源與GPU 相差幾個數(shù)量級,面對龐大的神經(jīng)網(wǎng)絡(luò)模型顯得捉襟見肘,因此模型壓縮及加速的工作變得至關(guān)重要。目前,根據(jù)不同壓縮與加速方法的性質(zhì),深度神經(jīng)網(wǎng)絡(luò)的壓縮和加速方法可分為四類:參數(shù)量化、模型剪枝、輕量型卷積核設(shè)計和知識蒸餾。其中,基于參數(shù)量化的方法是降低權(quán)重參數(shù)的存儲位數(shù);基于參數(shù)剪枝的方法是通過去除權(quán)重參數(shù)中的非關(guān)鍵冗余部分來減少參數(shù)量;基于輕量型卷積核設(shè)計的方法從濾波結(jié)構(gòu)乃至卷積方式的層面進行改進設(shè)計,從而降低計算復(fù)雜度;基于知識蒸餾的方法利用知識遷移來訓(xùn)練一個緊湊的網(wǎng)絡(luò)模型且能復(fù)現(xiàn)大型網(wǎng)絡(luò)的性能。我們將在下面的章節(jié)中分別對它們的特性和優(yōu)缺點進行分析。具體地,我們將在后續(xù)章節(jié)中作進一步的介紹。本文剩余部分的安排如下:第2 節(jié)介紹模型壓縮的主流方法;第3 節(jié)介紹常用數(shù)據(jù)集與性能評價準(zhǔn)則;第4 節(jié)給出總結(jié)及未來研究方向的一些相關(guān)探討。
本節(jié)將按照參數(shù)量化、模型剪枝、輕量型卷積核設(shè)計以及知識蒸餾的順序進行介紹。表1對四種主要壓縮方法進行了總結(jié)。
表1 不同深度神經(jīng)網(wǎng)絡(luò)壓縮與加速方法總結(jié)Tab.1 Summarization of Various Methods for DNN Compression and Acceleration
參數(shù)量化通過減少存儲權(quán)重參數(shù)及激活值所需的比特位數(shù)來壓縮原始網(wǎng)絡(luò)。通過該方法,網(wǎng)絡(luò)中權(quán)值和激活值都會被量化,并且浮點乘法累加操作(Multiply Accumulate)可以被低比特的乘法累加操作代替。因此,使用降低比特數(shù)的方法可以顯著減少內(nèi)存存儲占用和計算資源的耗費。Gong 等人[1]和Wu 等人[2]通過k-means 聚類實現(xiàn)參數(shù)共享,只需要存儲作為權(quán)重索引值的k個質(zhì)心而不是所有權(quán)重值,顯著減少了內(nèi)存開銷。
Gupta 等人[3]在基于隨機舍入的CNN(Convolutional Neural Network)訓(xùn)練中采用了16 位定點數(shù)表示,顯著減少了模型的內(nèi)存占用和浮點運算,而分類精度幾乎沒有損失。進一步地,Han 等人[4]提出的方法利用權(quán)值共享對權(quán)值進行量化,然后對量化后的權(quán)值和索引表進行霍夫曼編碼,以縮減模型大小。如圖1所示,首先對原始網(wǎng)絡(luò)進行訓(xùn)練,學(xué)習(xí)神經(jīng)元間的連接(connection),將權(quán)重較小的連接剪除,然后對稀疏網(wǎng)絡(luò)進行重訓(xùn)練,學(xué)習(xí)得到緊湊的新網(wǎng)絡(luò)。Choi 等人[5]證明了利用Hessian 權(quán)重來衡量網(wǎng)絡(luò)權(quán)值重要性的可行性,并提出了一種聚類參數(shù),用于最小化Hessian 加權(quán)量化誤差。Vanhoucke等人[6]的研究表明,將權(quán)重值量化至8 位,能夠顯著提升推理速度,同時保證最小的精度損失。Jacob等人[7]提出一種量化框架,在訓(xùn)練時保留32 位全精度存儲方式,而在前向推理時對權(quán)重值與激活值進行8位量化,從而用整數(shù)運算替代浮點數(shù)運算,顯著降低了運算復(fù)雜度。目前8位量化已經(jīng)在工業(yè)界得到了廣泛應(yīng)用,除上述方法外,英偉達(Nvidia)公司推出了TensorRT-int8 量化工具,對于正負(fù)分布均勻的權(quán)重值與激活值采用最大值映射,將取值范圍按一定比例映射至(-127,127),對于分布不均勻的值采用飽和截斷映射,即在映射前截斷部分區(qū)間,得到在正負(fù)區(qū)間對稱的截斷信息后再進行量化映射。
值得一提的是,二值神經(jīng)網(wǎng)絡(luò)是網(wǎng)絡(luò)量化的極端情況。一般情況下,網(wǎng)絡(luò)模型中各項參數(shù)都采取32位單精度浮點數(shù)進行存儲,而二值網(wǎng)絡(luò)中將參數(shù)及特征圖激活值都以+1,-1 形式存儲,每個值僅占用1 比特內(nèi)存,類似地,三值網(wǎng)絡(luò)[8]采用+1,0,-1 的組合來量化權(quán)重。早期對網(wǎng)絡(luò)二值化進行探索的幾項工作,如BinaryConnect[9],BinaryNet[10]和XNOR[11]等都是在模型訓(xùn)練過程中直接學(xué)習(xí)二值化權(quán)值或激活值。
然而,由于大部分二值網(wǎng)絡(luò)設(shè)計在利用矩陣近似的思想時未能充分考慮二值化帶來的精度損失,并且網(wǎng)絡(luò)量化將參數(shù)離散化,加劇了訓(xùn)練的不穩(wěn)定性,在對諸如GoogleNet 等大型CNN 進行量化壓縮后,容易導(dǎo)致二值網(wǎng)絡(luò)在分類、檢測任務(wù)中的精度顯著降低。為解決這個問題,Hou 等人[12]的工作提出了一種近似牛頓算法(proximal Newton algorithm),該算法利用對角Hessian 近似將二值權(quán)重的損失最小化。Liu 等人[13]提出一種可求導(dǎo)的軟性量化(Differentiable Soft Quantization,DSQ),使網(wǎng)絡(luò)在反向傳播過程中獲得更精確的梯度,以彌補二值網(wǎng)絡(luò)前向傳播過程中的量化損失。Lin 等人[14]提出一種對權(quán)重進行隨機二值化處理的壓縮方法,隨機二值化不僅能夠減少浮點運算次數(shù),還具有一定的正則化效果,能夠抑制二值化造成的精度損失。Zhang 等人[15]認(rèn)為,由于DNN 的權(quán)重、激活值在各個卷積層的數(shù)值分布是不同的,因此對整個網(wǎng)絡(luò)采取統(tǒng)一標(biāo)準(zhǔn)的量化策略缺乏靈活性。他們提出一種可習(xí)得的量化器,即聯(lián)合訓(xùn)練模型與其量化器,在訓(xùn)練過程中逐層優(yōu)化量化策略,以提升壓縮后的模型精度。Cai 等人[16]提出一種基于半波高斯量化(half-wave Gaussian Quantization)的近似方法,在二值化權(quán)重的基礎(chǔ)上,將激活函數(shù)ReLU(Rectified Linear Unit)進行近似處理,以適應(yīng)二值化網(wǎng)絡(luò)的反向傳播計算,使學(xué)習(xí)過程更加穩(wěn)定,減小精度損失。Bethge 等人[17]提出一種二值化網(wǎng)絡(luò)結(jié)構(gòu)MeliusNet,該結(jié)構(gòu)采用雙塊設(shè)計,能夠連續(xù)地提升特征數(shù)量,此外該結(jié)構(gòu)對一些保持32 位存儲的卷積層進行重新設(shè)計,極大地減少了運算量。
表2 列出了上述所提主流量化方法的性能對比,所有方法均在ResNet-18 模型上進行,數(shù)據(jù)集采用ImageNet。
表2 ImageNet數(shù)據(jù)集上對ResNet18采用不同量化方法的性能對比Tab.2 Performance comparison of different quantization methods on ResNet18 based on ImageNet dataset
模型剪枝是模型壓縮和加速中使用最為廣泛的研究方法。模型剪枝的基本思想是通過在預(yù)訓(xùn)練的DNN 模型中剪除冗余的、信息量少的權(quán)重,將網(wǎng)絡(luò)結(jié)構(gòu)稀疏化,從而降低內(nèi)存開銷,加速推理過程。剪枝方法包括非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝。非結(jié)構(gòu)化剪枝是最細(xì)粒度的方法,其操作對象是濾波(filter)中的每個權(quán)重;而結(jié)構(gòu)化剪枝的操作對象是整個濾波,乃至整個卷積層這樣的結(jié)構(gòu)化信息。
2.2.1 非結(jié)構(gòu)化剪枝
早期的剪枝方法大都基于非結(jié)構(gòu)化剪枝,由于它裁剪的粒度為單個神經(jīng)元,因此在對卷積核進行非結(jié)構(gòu)化剪枝時,得到稀疏分布的卷積核,即存在較多元素為0的矩陣,因此可以有效減少內(nèi)存占用,加速推理。
Hanson 等[19]提出了基于有偏權(quán)重衰減的剪枝方法,是對網(wǎng)絡(luò)稀疏化最早的探索。Hassibi 等人[20]根據(jù)損失函數(shù)的Hessian 矩陣減少了連接的數(shù)量,使網(wǎng)絡(luò)結(jié)構(gòu)高度稀疏化。Srinivas 和Babu[21]從神經(jīng)元之間存在冗余的角度出發(fā),提出了一種不依賴訓(xùn)練數(shù)據(jù)的剪枝框架,計算節(jié)點的冗余程度并進行刪除。Han等人[22]提出批量減少整個網(wǎng)絡(luò)中的參數(shù)量和運算量,該方法規(guī)定的三階段剪枝流程被廣泛沿用,即訓(xùn)練權(quán)重、模型剪枝、重訓(xùn)練。Chen等人[23]提出了HashedNets 模型,引入哈希函數(shù),根據(jù)參數(shù)間漢明距離將權(quán)重分組,實現(xiàn)參數(shù)共享。然而,受限于底層硬件和計算庫的支持,非結(jié)構(gòu)化剪枝通常會構(gòu)成非結(jié)構(gòu)化的稀疏矩陣,在計算過程中會造成內(nèi)存獲取的不規(guī)則性,影響硬件工作效率,降低計算速度。因此,近年來研究者們致力于探索基于結(jié)構(gòu)化剪枝的壓縮方法。
2.2.2 結(jié)構(gòu)化剪枝
目前,在基于結(jié)構(gòu)化剪枝的研究工作當(dāng)中已涌現(xiàn)出許多出色的研究成果,解決了無法對稀疏矩陣計算進行加速的問題。此類方法遵循濾波顯著性準(zhǔn)則(即判別濾波對于模型性能重要性的準(zhǔn)則),直接批量地剪除非顯著性濾波,達到壓縮目的。Wen等人[24]利用Group Lasso 對模型中不同粒度的結(jié)構(gòu),包括濾波、通道、濾波形狀、層深度(filters,channels,filter shapes,layer depth)進行正則化,并將此正則化項加入目標(biāo)函數(shù),進行結(jié)構(gòu)化稀疏訓(xùn)練。Zhou 等人[25]向目標(biāo)函數(shù)中加入稀疏性局限(sparse constraints),然后在訓(xùn)練階段通過稀疏限制減少神經(jīng)元數(shù)量。該方法針對其特殊的優(yōu)化過程還提出前后項分裂法,其作用是在標(biāo)準(zhǔn)的反向傳播過程中,可以繞過不易求導(dǎo)的稀疏限制項。通過計算濾波的范數(shù)值,直接判斷濾波的重要性的方法也相繼被提出[26],該方法首先計算所有濾波的L1 范數(shù),逐層刪除范數(shù)值低于閾值的濾波,同時移除該濾波在當(dāng)前層生成的特征圖(feature map)以及該特征圖在下一層中對應(yīng)的濾波通道,剪枝后再進行重訓(xùn)練,恢復(fù)模型的精度。
Liu 等人[27]提出一種介于粗、細(xì)粒度之間的通道級別剪枝。如圖2 所示,該方法向存在于每個卷積層的批量標(biāo)準(zhǔn)化(Batch Normalization)中的縮放因子γ 添加稀疏正則限制,并將此正則項加入目標(biāo)函數(shù),與模型損失函數(shù)聯(lián)合訓(xùn)練,受正則化限制,部分縮放因子將衰減至接近0的區(qū)域。由于批量標(biāo)準(zhǔn)化中超參數(shù)γ 的大小能夠直接改變特征圖的分布,進而影響模型的表達能力,因此較小的縮放因子對應(yīng)著全局貢獻度較低的通道,對這些通道進行剪除,再通過微調(diào)(fine-tune)恢復(fù)模型精度,有效降低了網(wǎng)絡(luò)的復(fù)雜度。不同于前述方法,Luo 等人[28]越過當(dāng)前層濾波,著眼于下一層濾波通道的顯著性,建立了一個有效的通道選擇優(yōu)化函數(shù),實現(xiàn)對下一層卷積核中冗余通道及其對應(yīng)當(dāng)前層濾波的剪枝。
2.2.3 自動化剪枝
上述非結(jié)構(gòu)化、結(jié)構(gòu)化剪枝屬于人工設(shè)計的剪枝方案,設(shè)計過程中需要人為考慮模型大小、推理速度和精度之間的權(quán)衡,因此人工設(shè)計往往需要耗費較長時間,部分設(shè)計可能只得到次優(yōu)化的結(jié)果。近年來基于自主機器學(xué)習(xí)(AutoML)與神經(jīng)架構(gòu)搜索(Neural Architecture Search,NAS)的剪枝方案陸續(xù)被提出。He等人[29]基于強化學(xué)習(xí)的思想,對精度損失進行懲罰,同時鼓勵模型簡化和加速,實現(xiàn)自動化剪枝。Yu等人[30]提出一種單次不循環(huán)的方法,此法訓(xùn)練一個單一的可瘦身網(wǎng)絡(luò)來近似不同通道結(jié)構(gòu)網(wǎng)絡(luò)的精度,然后迭代地評估訓(xùn)練后的可瘦身網(wǎng)絡(luò),在最大限度保持精度的前提下對各層進行貪婪剪枝。2020 年,滴滴AI 實驗室提出一種新的自動化壓縮方法[31]。該方法是經(jīng)驗導(dǎo)向型的搜索方法,彌補了基于強化學(xué)習(xí)的搜索與剪枝問題不完全兼容的缺陷,通過自動搜索進程來確定剪枝策略組合、逐層剪枝比例以及其他超參數(shù)。
表3列出了上述所提主流模型剪枝方法的性能對比結(jié)果,所有實驗統(tǒng)一在VGG-16 與ResNet-50 模型上進行,數(shù)據(jù)集采用ImageNet。
表3 ImageNet數(shù)據(jù)集上典型剪枝方法的性能對比Tab.3 Performance comparison of typical pruning methods on ImageNet dataset
輕量型卷積核設(shè)計從卷積濾波尺寸以及卷積方式的層面考慮,將深度神經(jīng)網(wǎng)絡(luò)中的標(biāo)準(zhǔn)卷積核用小尺寸卷積核直接替代,或采用非標(biāo)準(zhǔn)卷積方式,能夠有效加速模型推理速度,并獲得理想的分類識別精度。以下首先介紹三種最具代表性的輕量型卷積核設(shè)計方法。
(1)SqueezeNet
2016 年,Han 等提出了SqueezeNet[32]。在該模型中,常規(guī)的卷積結(jié)構(gòu)被Fire Module 所替換,整體結(jié)構(gòu)包含Squeeze 層和Expand 層。在Squeeze 層中用1×1的卷積核替換了常規(guī)的3×3卷積核,并將1×1和3×3的卷積核同時應(yīng)用于Expand層中。
(2)MobileNet
Google人工智能實驗室Howard等人提出了MobileNet 系列[33]。該模型棄用標(biāo)準(zhǔn)卷積,采用深度可分離卷積進行特征提取,根據(jù)理論計算,在采用3×3卷積核的情況下,卷積運算量能夠降低至標(biāo)準(zhǔn)卷積的1/8-1/9。如圖3 所示,深度可分離卷積的計算過程包含深度卷積和點卷積兩部分,將標(biāo)準(zhǔn)卷積中特征提取、特征融合并生成新特征的過程一分為二,在有效降低運算量的同時保持了卷積層的表達能力。MobileNet-V2[34]還引入了殘差網(wǎng)絡(luò)中的跳躍連接(skip connection),整體結(jié)構(gòu)采用堆疊倒置殘差塊(inverted residual block)的形式,既提升了網(wǎng)絡(luò)中梯度的傳播能力,也提高了存儲效率。MobileNet-V3[35]在MobileNet-V2 的基礎(chǔ)上,向殘差塊中引入Squeeze-and-Excitation 模塊,即先進行自適應(yīng)平均池化,再進行特征激勵,不同于傳統(tǒng)的SE 模塊[36]中采用固定的Sigmoid 函數(shù),MobileNet-V3 中根據(jù)層次所在深度對非線性激活函數(shù)進行微調(diào)。
(3)ShuffleNet
ShuffleNet 由Zhang 等人[37]在2017 年提出,將分組式卷積(Group Convolution)和重置通道次序(Channel Shuffle)相結(jié)合,設(shè)計緊湊型神經(jīng)網(wǎng)絡(luò)模型。該方法經(jīng)過實驗論證,發(fā)現(xiàn)在網(wǎng)絡(luò)中連續(xù)使用分組卷積會導(dǎo)致各組信息局限于單一的通道組,無法實現(xiàn)組間信息交互,而通過通道次序重置能有效改善這個弊端,重置后能夠恢復(fù)網(wǎng)絡(luò)表達能力,得到與標(biāo)準(zhǔn)卷積相似的計算結(jié)果。Ma 等人[38]提出ShuffleNet-V2,除了傳統(tǒng)的浮點運算數(shù)(Floating Point Operations,F(xiàn)LOPs)指標(biāo),還考慮到內(nèi)存訪問成本(Memory Access Cost,MAC)以及網(wǎng)絡(luò)結(jié)構(gòu)的并行度,提出綜合衡量各個指標(biāo)才能有效降低運行時延。ShuffleNet-V2的基礎(chǔ)塊中,首先進行通道分離,起到分組卷積的作用,然后其中一組進行點卷積與深度可分離卷積,最終連接分離后的兩組并執(zhí)行重置通道次序。
基于MobileNet系列與ShuffleNet系列對輕量型卷積核設(shè)計方法的探索成果,華為諾亞團隊進一步分析得出[39],CNN 中特征圖的通道內(nèi)存在冗余,部分通道間相似度過高,由此提出一種新穎的Ghost模塊,減少普通卷積的利用率,通過計算成本極低的線性變換來生成“影子”特征,這些特征能夠完全挖掘出固有特征圖中潛在的信息,增強表達能力的同時也降低了計算量。以Ghost 模塊為基礎(chǔ),堆疊得到GhostNet。如表4 所示,該方法在FLOPs 上達到了最優(yōu)的性能,同時在精度和降低參數(shù)量方面也取得了較好的結(jié)果。
表4 ImageNet數(shù)據(jù)集上典型輕量型卷積核設(shè)計方法的性能對比Tab.4 Performance comparison of typical lightweight convolution kernel design methods on ImageNet dataset
基于知識蒸餾的方法的核心思想是將大型教師網(wǎng)絡(luò)的知識遷移到小型網(wǎng)絡(luò)中,這一過程是通過學(xué)習(xí)大型網(wǎng)絡(luò)softmax 函數(shù)的類別分布輸出來完成的。Caruana等人[41]首次提出基于知識遷移(Knowledge Transfer)的深度神經(jīng)網(wǎng)絡(luò)壓縮方法。該方法主要研究內(nèi)置強分類器的集成模型,在輸入經(jīng)偽數(shù)據(jù)標(biāo)記的樣本后,經(jīng)過訓(xùn)練,重現(xiàn)了大型原始網(wǎng)絡(luò)的輸出。
Hinton 等人[42]認(rèn)為訓(xùn)練集中采用one-hot 編碼的標(biāo)簽信息熵極低,而softmax分類器輸出的分類概率能夠體現(xiàn)出模型對不同類別的置信度,同一個輸入關(guān)于不同類別的置信度恰恰定義了數(shù)據(jù)層面豐富的相似結(jié)構(gòu),這些信息對網(wǎng)絡(luò)來說有著極高的學(xué)習(xí)價值。因此,他們提出了完整的知識蒸餾(Knowledge Distillation)思想,如圖4 所示,通過教師-學(xué)生模式,將教師網(wǎng)絡(luò)softmax分類器輸出的軟知識蒸餾出來,輔以硬知識,即真實標(biāo)簽,同時作為訓(xùn)練學(xué)生網(wǎng)絡(luò)的知識,在提升訓(xùn)練效果的同時實現(xiàn)了對原網(wǎng)絡(luò)的壓縮。Romero 等人[43]的工作基于知識蒸餾的思想,提出將通道數(shù)多而層級較淺的大型網(wǎng)絡(luò)壓縮為通道數(shù)少而層級更深的學(xué)生網(wǎng)絡(luò),并將該網(wǎng)絡(luò)稱作FitNets。該方法先確定雙方網(wǎng)絡(luò)相匹配的中間層級,然后將教師網(wǎng)絡(luò)中部的特征圖作為學(xué)生網(wǎng)絡(luò)對應(yīng)位置的近似目標(biāo),這在softmax輸出的基礎(chǔ)上進一步豐富了學(xué)生網(wǎng)絡(luò)的先驗知識。Zagoruyko 等[44]提出了注意力遷移方法(Attention Transfer),放寬了FitNets 方法所提的假設(shè)。該方法所遷移的注意力圖(attention map)是激活后的多通道特征圖的總和。
知識蒸餾領(lǐng)域還有一些延伸性研究。Goodfellow 等人[45]通過將知識從舊網(wǎng)絡(luò)即時傳輸?shù)叫碌母罨蚋鼜V的網(wǎng)絡(luò),加速了實驗進程。Korattikara 等人[46]中的方法基于在線學(xué)習(xí)的思想,以近似蒙特卡洛教師模型為目標(biāo),對學(xué)生模型進行參數(shù)化訓(xùn)練。Zhu 等人[47]用高階隱層中的神經(jīng)節(jié)點作為先驗知識,這類神經(jīng)節(jié)點具有與標(biāo)簽概率相當(dāng)?shù)男畔⒘?,但是更加的緊湊。采用“自學(xué)”思想的知識蒸餾方法近期也廣受關(guān)注。Zhang 等人[48]提出一種通用的自體蒸餾訓(xùn)練框架。不同于傳統(tǒng)蒸餾方法中,使學(xué)生網(wǎng)絡(luò)輸出逼近教師網(wǎng)絡(luò)softmax輸出的思想,自體蒸餾不借助外部網(wǎng)絡(luò),而是將網(wǎng)絡(luò)本身切分,以深層網(wǎng)絡(luò)的知識來指導(dǎo)淺層網(wǎng)絡(luò)。工業(yè)應(yīng)用中,知識蒸餾的訓(xùn)練可能會受到訓(xùn)練數(shù)據(jù)匱乏以及教師網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu)未知的影響,蒸餾效果會大打折扣。為解決此問題,Chen[49]等人結(jié)合生成對抗網(wǎng)絡(luò)思想,提出了一種不依賴于訓(xùn)練數(shù)據(jù)的蒸餾方法,該框架中將預(yù)訓(xùn)練的教師網(wǎng)絡(luò)作為判別器,只訓(xùn)練生成器,最終得到與教師網(wǎng)絡(luò)兼容性高的生成數(shù)據(jù),將其作為蒸餾過程中學(xué)生網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),從而彌補未知的教師網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu)對壓縮效果造成的影響,提升了知識蒸餾在實際場景中的實用性。
表5列出了上述所提主流知識蒸餾方法的性能對比結(jié)果,教師-學(xué)生模型統(tǒng)一采用ResNet-152 與ResNet-18,數(shù)據(jù)集采用CIFAR100。
表5 CIFAR100數(shù)據(jù)集上典型知識蒸餾方法的性能對比Tab.5 Performance comparison of typical knowledge distillation methods on CIFAR100 dataset
大多數(shù)研究都是采用每輪(epoch)訓(xùn)練的平均訓(xùn)練時間來衡量運行時間。對于不同的訓(xùn)練集,一般都采用Top-1 正確率和Top-5 正確率兩種分類精度,其中Top-1 正確率指概率最大的預(yù)測結(jié)果對應(yīng)正確標(biāo)簽的概率,Top-5正確率指概率最大的5個預(yù)測結(jié)果中包含正確標(biāo)簽的概率。
常用的衡量模型壓縮和加速性能的標(biāo)準(zhǔn)有壓縮率、空間節(jié)省率和加速率。假設(shè)a是原始模型M中的參數(shù)個數(shù),a*是壓縮模型M*的參數(shù)個數(shù),則M*相較于M的壓縮率α(M,M*)為:
同時可以得到空間節(jié)省率,如下所示:
相似地,給定模型M和M*各自的推理時間s及s*,由此可計算加速率δ(M,M*)如下所示:
一般來說,模型的壓縮率和加速率是高度相關(guān)的,因為隨著參數(shù)量的減少,較小的模型往往在訓(xùn)練和測試階段的計算速度更快。優(yōu)秀的模型壓縮與加速方法普遍具有以下特點:分類精度與原始模型相近,模型參數(shù)量減少和計算量的大幅降低。因此在方法研究過程中應(yīng)統(tǒng)一考慮模型的精度和壓縮率(或加速率)。
(1)ImageNet數(shù)據(jù)集
ImageNet 是一個用于視覺對象識別算法研究的大型可視化數(shù)據(jù)集,包含1400萬張經(jīng)過手動標(biāo)注的圖像。所有圖像共分為2萬多個類別。該數(shù)據(jù)集的結(jié)構(gòu)如同網(wǎng)絡(luò),網(wǎng)絡(luò)內(nèi)部節(jié)點繁多,每個節(jié)點相當(dāng)于一個子目錄,內(nèi)含數(shù)百個對應(yīng)類別物體的訓(xùn)練圖像。
(2)CIFAR-10與CIFAR-100數(shù)據(jù)集
CIFAR-10 和CIFAR-100 是常用的小型數(shù)據(jù)集。CIFAR-10 數(shù)據(jù)集中含有總計60000 張彩色圖像,分屬于10 個不同類別,每張圖像分辨率為32×32。數(shù)據(jù)集預(yù)先劃分為訓(xùn)練集和測試集,其中訓(xùn)練集內(nèi)含50000 張圖像,測試集內(nèi)含10000 張圖像。CIFAR-100數(shù)據(jù)集與CIFAR-10一樣,只是它有100個類,每個類包含600個圖像。
本文首先概述了深度神經(jīng)網(wǎng)絡(luò)壓縮與加速技術(shù)的研究背景;接著介紹了深度神經(jīng)網(wǎng)絡(luò)模型壓縮及加速的四類主要方法,包括參數(shù)量化、模型剪枝、輕量型卷積核設(shè)計以及知識蒸餾;之后介紹分析了模型壓縮與加速領(lǐng)域常用的數(shù)據(jù)集與性能評估準(zhǔn)則;接下來對各類方法進行優(yōu)劣分析。
(1)參數(shù)量化:基于參數(shù)量化的壓縮方法在一定程度上縮減了模型大小,使得模型能夠在計算資源與存儲空間受限的移動端和嵌入式設(shè)備上高效運行。但量化后的權(quán)重和激活降低了網(wǎng)絡(luò)的容量和特征圖的質(zhì)量,往往使得模型的表達能力大打折扣,另外,量化會向梯度信息中引入噪聲,導(dǎo)致基于梯度下降法的訓(xùn)練過程收斂難度增加。這些缺陷會造成量化后網(wǎng)絡(luò)的精度低于原始網(wǎng)絡(luò),二值化網(wǎng)絡(luò)中精度損失更加嚴(yán)重。因此基于網(wǎng)絡(luò)量化的壓縮方法具有一定局限性,但量化具有較好的兼容性,在實際應(yīng)用中常與其他壓縮方法相結(jié)合。
(2)模型剪枝:基于模型剪枝的壓縮方法具有直觀的物理意義,在實際應(yīng)用中也展現(xiàn)出理想的壓縮性能,但該方法也存在一定缺陷。首先,相比于其他壓縮方法,基于L1 或L2 正則化的剪枝收斂較慢,需要更多次數(shù)的迭代訓(xùn)練。其次,剪枝相當(dāng)于優(yōu)化網(wǎng)絡(luò)的整體結(jié)構(gòu),對具有不同結(jié)構(gòu)特點的網(wǎng)絡(luò)模型往往不能采用完全相同的剪枝策略。對于不同類型網(wǎng)絡(luò)在不同訓(xùn)練數(shù)據(jù)集下的剪枝方法還不能完全統(tǒng)一。此外,人工設(shè)計的剪枝方法需要根據(jù)不同層級的敏感度,手動調(diào)節(jié)剪枝閾值,重復(fù)微調(diào)參數(shù),實現(xiàn)過程繁瑣。而自動化剪枝能夠綜合評估多種剪枝方案,自動搜索最優(yōu)結(jié)構(gòu),確定復(fù)雜的超參數(shù),但對于大型網(wǎng)絡(luò)來說,搜索空間過于龐大,對算力要求極高,耗時較長。
(3)輕量型卷積核設(shè)計:基于輕量型卷積核設(shè)計的壓縮方法對原始卷積核進行緊湊設(shè)計或直接采用運算量遠小于標(biāo)準(zhǔn)卷積的新式卷積計算方式,能夠有效降低參數(shù)量,大幅減少浮點運算次數(shù)。但囿于輕量型卷積核設(shè)計的獨特性,壓縮后的模型十分緊湊,較難在其中綜合應(yīng)用其他壓縮技術(shù)來進一步提升效果。另外,相比于大而深的原始模型,基于輕量型卷積核設(shè)計的網(wǎng)絡(luò)模型由于容量受限,訓(xùn)練得到的特征泛化能力稍弱。
(4)知識蒸餾:基于知識蒸餾的壓縮方法相當(dāng)于用一個神經(jīng)網(wǎng)絡(luò)訓(xùn)練另一個神經(jīng)網(wǎng)絡(luò),將大型復(fù)雜網(wǎng)絡(luò)的知識遷移至小型簡易網(wǎng)絡(luò)中,利用小型網(wǎng)絡(luò)來實現(xiàn)擁有與大型網(wǎng)絡(luò)相同優(yōu)越的性能和良好的泛化能力,并且顯著降低了所需存儲空間和計算資源。知識蒸餾的缺陷之一是只能應(yīng)用于具有softmax 分類器及交叉熵?fù)p失函數(shù)的分類任務(wù),應(yīng)用場景較為局限。另一個缺點是與其他類型的方法相比,基于知識蒸餾的壓縮方法在大型數(shù)據(jù)集的表現(xiàn)略差。
綜合以上對近期研究成果的分析可以得知,深度神經(jīng)網(wǎng)絡(luò)壓縮與加速的研究仍然具有巨大的潛力和研究空間,未來的研究工作不僅需要進一步提高模型壓縮效率與推理速度,并且應(yīng)打破學(xué)術(shù)界與工業(yè)界之間的壁壘。以下介紹模型壓縮與加速領(lǐng)域需要進一步探索和開發(fā)的方向。
(1)與硬件緊密結(jié)合。針對卷積神經(jīng)網(wǎng)絡(luò)在不同硬件平臺上的使用,提出一些與硬件緊密結(jié)合的壓縮方法就是未來方向之一。具體包括基于硬件的自動量化以及將硬件加速器的反饋信息引入算法設(shè)計環(huán)中。與硬件密切結(jié)合的模型壓縮方法可以使CNN 具有更強的硬件平臺適應(yīng)性,以應(yīng)對端設(shè)備部署帶來的挑戰(zhàn)。
(2)對于知識蒸餾,需要探索更多類型的先驗知識。在當(dāng)前的教師-學(xué)生模式下,主要采用將softmax分類器的輸出和網(wǎng)絡(luò)中間層的特征圖作為蒸餾知識的方法。然而,將softmax分類器輸出作為軟知識的方法容易使得知識蒸餾的應(yīng)用場景局限在分類任務(wù)上,缺少任務(wù)多樣化。因此,網(wǎng)絡(luò)中的其他信息,例如神經(jīng)元傳遞過程中的選擇性知識值得研究者們的大膽嘗試,這種基于重要神經(jīng)元選擇的蒸餾框架可應(yīng)用于大多數(shù)計算機視覺任務(wù)中,因為先驗知識的多樣化不僅可能提高知識蒸餾的效果,而且有助于拓寬知識蒸餾的應(yīng)用范圍。
(3)探索在更多任務(wù)場景下的應(yīng)用。除了圖像分類任務(wù)外,人們還在其他任務(wù)中對深度學(xué)習(xí)模型進行壓縮[54],包括一些關(guān)于深層自然語言模型(如BERT 模型)的研究[55-56]。在未來的研究工作中,我們希望將模型壓縮與加速技術(shù)應(yīng)用到其他領(lǐng)域的深度神經(jīng)網(wǎng)絡(luò)中,例如,基于深度學(xué)習(xí)的圖像及視頻處理[57-58],視覺、語言跨模態(tài)結(jié)合任務(wù)[59]以及對生成式對抗網(wǎng)絡(luò)(GAN)[60-61]的優(yōu)化。