国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

神經(jīng)網(wǎng)絡(luò)壓縮聯(lián)合優(yōu)化方法的研究綜述

2024-04-09 01:41寧欣趙文堯宗易昕張玉貴陳灝周琦馬駿驍
智能系統(tǒng)學(xué)報(bào) 2024年1期
關(guān)鍵詞:剪枝輕量化神經(jīng)網(wǎng)絡(luò)

寧欣,趙文堯,宗易昕,張玉貴,陳灝,周琦,馬駿驍

(1.中國科學(xué)院 半導(dǎo)體研究所, 北京 100083; 2.合肥工業(yè)大學(xué) 微電子學(xué)院, 安徽 合肥 230009; 3.中國科學(xué)院 前沿科學(xué)與教育局, 北京 100864; 4.南開大學(xué) 人工智能學(xué)院, 天津 300071)

深度神經(jīng)網(wǎng)絡(luò)已經(jīng)被成功應(yīng)用在計(jì)算機(jī)視覺、自然語言處理等任務(wù)中,并在特定應(yīng)用場景中取得了超越人類水平的成功。隨著深度神經(jīng)網(wǎng)絡(luò)模型層數(shù)的加深、參數(shù)量的劇增,其計(jì)算復(fù)雜度也在不斷增加,這不但會(huì)導(dǎo)致推理速度變慢,而且在運(yùn)行時(shí)會(huì)帶來巨大的功耗。如果需要實(shí)現(xiàn)模型在工業(yè)界的應(yīng)用落地,則大多只能在存儲(chǔ)容量大、算力充足、供電穩(wěn)定的服務(wù)器、工作站甚至數(shù)據(jù)中心部署,然而這會(huì)帶來網(wǎng)絡(luò)延遲問題、數(shù)據(jù)隱私安全問題以及硬件成本問題,因此對神經(jīng)網(wǎng)絡(luò)壓縮以實(shí)現(xiàn)端側(cè)部署的研究意義重大。

移動(dòng)互聯(lián)網(wǎng)的發(fā)展使得移動(dòng)端設(shè)備得到了廣泛的普及與應(yīng)用,正成為人類日常生活不可或缺的一部分。人臉解鎖、拍照識物以及語音助手等人工智能應(yīng)用極大地方便了人們的生產(chǎn)生活,人們對更加智能、更加隱私、更加安全的設(shè)備的需求也在與日俱增。隨著智能制造、智能安防、智能家居以及自動(dòng)駕駛等應(yīng)用領(lǐng)域的興起,在嵌入式設(shè)備上部署神經(jīng)網(wǎng)絡(luò)以達(dá)到自動(dòng)監(jiān)測和控制的需求也持續(xù)增加。相比于服務(wù)器和工作站,移動(dòng)端和嵌入式設(shè)備具有存儲(chǔ)資源少、算力不足、功耗受限等問題,這限制了深度神經(jīng)網(wǎng)絡(luò)在端側(cè)的部署應(yīng)用。

目前,關(guān)于模型壓縮加速算法的文獻(xiàn)綜述[1-3]的研究重點(diǎn)主要在分別介紹剪枝、量化、知識蒸餾及輕量化網(wǎng)絡(luò)設(shè)計(jì)等方法上,對使用剪枝、量化、知識蒸餾等方法聯(lián)合壓縮加速這類新興的方法介紹的較為粗略且參考文獻(xiàn)的數(shù)量少,隨著新方法層出不窮,其參考價(jià)值有所下降。如文獻(xiàn)[1]并未總結(jié)多方法聯(lián)合壓縮;文獻(xiàn)[2]雖然總結(jié)了幾種混合壓縮加速方式,但是未整理知識蒸餾和剪枝結(jié)合的研究,且對知識蒸餾和量化結(jié)合的研究未進(jìn)行詳細(xì)的剖析;文獻(xiàn)[3]雖然列舉了部分蒸餾與剪枝、蒸餾與量化結(jié)合的聯(lián)合優(yōu)化方法,但是并未揭示這些研究的動(dòng)機(jī)與思想。針對目前對聯(lián)合優(yōu)化方法綜述的空缺,本文重點(diǎn)整理總結(jié)了剪枝、量化、知識蒸餾3種常用模型壓縮加速聯(lián)合優(yōu)化的方法,總結(jié)歸納了聯(lián)合優(yōu)化方法的動(dòng)機(jī)與思想,希望對相關(guān)研究提供新思路。

1 神經(jīng)網(wǎng)絡(luò)壓縮算法

1.1 神經(jīng)網(wǎng)絡(luò)壓縮概述

神經(jīng)網(wǎng)絡(luò)輕量化的方法有直接設(shè)計(jì)輕量級網(wǎng)絡(luò)和壓縮現(xiàn)有的神經(jīng)網(wǎng)絡(luò)模型2種思路。

直接設(shè)計(jì)輕量級網(wǎng)絡(luò)分為人工設(shè)計(jì)輕量級網(wǎng)絡(luò)模型和基于神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(neural architecture search , NAS)的自動(dòng)化神經(jīng)網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)。人工設(shè)計(jì)輕量級神經(jīng)網(wǎng)絡(luò)的思路是設(shè)計(jì)更加高效的卷積計(jì)算方式、構(gòu)造更高效的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如谷歌采用深度可分離卷積替代傳統(tǒng)卷積提出了MobileNet v1[4],并在此基礎(chǔ)上引入倒殘差結(jié)構(gòu)(inverted residuals)和線性激活(linear bottlenecks)提出MobileNet v2[5]; Face++采用分組逐點(diǎn)卷積(pointwise group convolution)以及通道混洗(channel shuffle)構(gòu)建了ShuffleNet v1[6],在此基礎(chǔ)上引入通道分割(channel split)降低訪存延遲和提高計(jì)算并行度提出了ShuffleNet v2[7];Iandola等[8]構(gòu)建了Fire Module設(shè)計(jì)出SqueezeNet。雖然人工設(shè)計(jì)的高性能輕量化神經(jīng)網(wǎng)絡(luò)計(jì)算效率極高,但是人工設(shè)計(jì)的方法要求設(shè)計(jì)者具有豐富的知識和經(jīng)驗(yàn),設(shè)計(jì)難度大、成本高,且并非是最優(yōu)解。通過NAS在給定候選神經(jīng)網(wǎng)絡(luò)架構(gòu)組成的搜索空間內(nèi)按照一定的搜索策略尋求最優(yōu)解的方式能夠創(chuàng)造出人工尚未設(shè)計(jì)的輕量級神經(jīng)網(wǎng)絡(luò),如谷歌使用NetAdapt算法搜索得到卷積核和通道的最佳數(shù)量,并引入擠壓和激勵(lì)(squeeze-and-excitation,SE)通道注意力機(jī)制和h-switch激活函數(shù)設(shè)計(jì)了MobileNet v3[9];谷歌利用強(qiáng)化學(xué)習(xí)方法學(xué)習(xí)NAS搜索策略構(gòu)建了NasNet[10]和MnasNet[11],實(shí)現(xiàn)了輕量級網(wǎng)絡(luò)的自動(dòng)設(shè)計(jì)。

神經(jīng)網(wǎng)絡(luò)模型壓縮的算法主要有剪枝(pruning)、量化(quantization)及知識蒸餾(knowledge distillation, KD)。

1.2 常用壓縮算法

深度學(xué)習(xí)網(wǎng)絡(luò)壓縮旨在利用神經(jīng)網(wǎng)絡(luò)參數(shù)和結(jié)構(gòu)的冗余性對現(xiàn)有的模型進(jìn)行壓縮,在不嚴(yán)重影響模型性能的情況下得到參數(shù)量更少、結(jié)構(gòu)更加精簡的模型。流行的模型壓縮算法有剪枝、量化和知識蒸餾,上述多種方法進(jìn)行聯(lián)合壓縮加速能夠綜合各種方法的優(yōu)勢,獲得更好的壓縮比和加速效果,是近年來逐漸興起的研究方向。在介紹聯(lián)合壓縮方法之前先分別介紹各類壓縮方法。

1.2.1 剪枝

剪枝是指按照一定的準(zhǔn)則判斷參數(shù)重要性并裁剪模型中冗余的參數(shù)來縮小網(wǎng)絡(luò)規(guī)模、精簡網(wǎng)絡(luò)結(jié)構(gòu),從而達(dá)到減少計(jì)算量和內(nèi)存消耗的目的。剪枝通過剔除模型中冗余的參數(shù)降低了模型的復(fù)雜度,實(shí)現(xiàn)了模型的壓縮和加速,并一定程度上緩解了過擬合的問題。

根據(jù)剪枝粒度的不同,剪枝分為非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝,結(jié)構(gòu)化剪枝和非結(jié)構(gòu)化剪枝示意如圖1所示。非結(jié)構(gòu)化剪枝分為權(quán)重剪枝和神經(jīng)元剪枝,是細(xì)粒度的剪枝方法,對每一個(gè)權(quán)重的重要性進(jìn)行評估并分別移除,因此可以更好地平衡性能和壓縮率,但計(jì)算量通常較大;Lecun等[12]提最佳腦損傷 (optimal brain damage, OBD)算法,使用損失函數(shù)的Hessian矩陣作為參數(shù)重要性的判據(jù)對權(quán)重進(jìn)行裁剪;Hassibi等[13]進(jìn)一步提出最佳腦外科醫(yī)生(optimal brain surgeon, OBS)方法。OBD和OBS都需要計(jì)算Hessian矩陣,這增加了內(nèi)存和計(jì)算成本。

圖1 各類剪枝方法剪枝后效果示意Fig.1 Schematic diagram of pruning effect of various pruning methods

由于權(quán)重矩陣經(jīng)過非結(jié)構(gòu)化剪枝后將裁剪的權(quán)重位置的參數(shù)置零從而產(chǎn)生稀疏矩陣,而對稀疏矩陣進(jìn)行加速計(jì)算需要特定的硬件或者軟件庫來支持,否則被置零的參數(shù)也需要進(jìn)行計(jì)算,因此業(yè)界普遍使用結(jié)構(gòu)化剪枝進(jìn)行模型的壓縮加速。結(jié)構(gòu)化剪枝直接移除剪枝對象,隨之也去除了這些參數(shù)關(guān)聯(lián)的運(yùn)算,是粗粒度的剪枝方法。按照剪枝的對象,結(jié)構(gòu)化剪枝分為層剪枝、濾波器剪枝、通道剪枝、分組剪枝等。濾波器剪枝刪去整個(gè)卷積濾波器;Li等[14]、He等[15]分別使用L1范數(shù)、L2范數(shù)作為判定標(biāo)準(zhǔn)對模型進(jìn)行濾波器級別的剪枝。通道剪枝對一組卷積中卷積核的某些通道進(jìn)行剔除;Liu等[16]提出了Network Slimming方法,對批歸一化層引入縮放因子進(jìn)行L1稀疏化,將較小的通道進(jìn)行剔除;Luo等[17]采用貪婪策略修剪下一層激活值影響最小的通道,提出了Thinet方法。分組卷積將一組卷積中卷積核相同位置的權(quán)重裁剪,當(dāng)多個(gè)濾波器具有相同稀疏模式時(shí),卷積濾波器可表示為一個(gè)細(xì)化的稠密矩陣,從而能夠借助現(xiàn)有的矩陣計(jì)算加速庫進(jìn)行計(jì)算,Wen等[18]通過group lasso正則化來學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)的稀疏性; Lebedev等[19]分組修剪卷積核張量將卷積轉(zhuǎn)化為稀疏矩陣的乘法運(yùn)算進(jìn)行加速。雖然結(jié)構(gòu)化剪枝通過直接移除整個(gè)通道或?qū)拥膮?shù)來達(dá)到模型壓縮加速的目的,不需要額外的硬件和軟件庫的設(shè)計(jì),但是由于剪枝粒度較粗,容易造成性能嚴(yán)重?fù)p失,因此結(jié)構(gòu)化剪枝的研究重點(diǎn)在于如何平衡性能和壓縮率。

根據(jù)剪枝率的作用范圍,剪枝還可以分為全局剪枝和局部剪枝。全局剪枝是對整個(gè)網(wǎng)絡(luò)模型指定一個(gè)全局剪枝率,按照一定的標(biāo)準(zhǔn)對所有參數(shù)進(jìn)行裁剪使得網(wǎng)絡(luò)模型滿足整體的剪枝率;局部剪枝則是指定某一層的剪枝率,使得這一層被裁剪的參數(shù)量滿足剪枝率的要求。此外,根據(jù)剪枝是否一次完成可以將剪枝分為迭代剪枝和非迭代剪枝,其示意如圖2所示。

圖2 全局剪枝、局部剪枝、迭代剪枝、非迭代剪枝示意Fig.2 Schematic diagram of global pruning , local pruning, iterative pruning and non-iterative pruning

剪枝不僅可以用來進(jìn)行模型的壓縮,還可以加速訓(xùn)練過程。對訓(xùn)練過程中計(jì)算的梯度進(jìn)行剪枝可以降低反向傳播階段的計(jì)算量,從而起到了加速訓(xùn)練的效果。Ye等[20]通過基于分布的閾值確定 (distribution based threshold determination,DBTD)方法計(jì)算過濾閾值,結(jié)合隨機(jī)剪枝算法對特征值梯度裁剪以降低反向傳播過程的計(jì)算量,加速了訓(xùn)練的過程。

總結(jié)之前的研究,得到剪枝的優(yōu)點(diǎn)主要包括:

1)降低計(jì)算量和內(nèi)存消耗:剪枝通過減少神經(jīng)網(wǎng)絡(luò)中的參數(shù)量來減少計(jì)算量和內(nèi)存消耗,使網(wǎng)絡(luò)輕量化從而便于在嵌入式或移動(dòng)端等資源受限的環(huán)境中部署。

2)降低過擬合風(fēng)險(xiǎn):剪枝可以起到稀疏正則化作用,在合理的剪枝率設(shè)置情況下,剪枝通過去除神經(jīng)網(wǎng)絡(luò)中冗余的連接提高模型的泛化能力,降低過擬合風(fēng)險(xiǎn),提高模型性能。

剪枝的缺點(diǎn)主要包括:

1)訓(xùn)練復(fù)雜度提升:由于剪枝可能會(huì)造成模型精度的下降,而且一些方法[21]在訓(xùn)練過程中逐步提高剪枝率,因此需要對神經(jīng)網(wǎng)絡(luò)迭代進(jìn)行剪枝和訓(xùn)練,消耗更多的計(jì)算資源和時(shí)間。

2)人工超參數(shù)調(diào)節(jié):剪枝率、剪枝閾值等超參數(shù)一般需要人為指定,這需要算法工程師豐富的經(jīng)驗(yàn)。較低的剪枝率可能壓縮比達(dá)不到部署的要求;較高的剪枝率可能導(dǎo)致模型精度的嚴(yán)重下降。

1.2.2 量化

量化是指降低網(wǎng)絡(luò)參數(shù)的位寬來壓縮模型和高效計(jì)算。可量化的網(wǎng)絡(luò)參數(shù)包括權(quán)重、激活、梯度和誤差等,各類網(wǎng)絡(luò)參數(shù)量化后的位寬既可以統(tǒng)一,也可以采用一定的策略組合不同的位寬來平衡壓縮率與精度。量化后的數(shù)據(jù)分布可以是均勻的也可以是非均勻的;均勻量化的數(shù)據(jù)分布間隔是統(tǒng)一的,實(shí)現(xiàn)較為簡單,但是容易受到量化前數(shù)據(jù)分布中的離群值的影響產(chǎn)生較大的精度損失;非均勻量化基于對數(shù)分布或聚類方法,在一定程度上降低量化帶來的精度損失。

根據(jù)量化后參數(shù)的位寬,量化分為INT8量化、極低比特量化、混合精度量化等,目前業(yè)界較為常用的量化方式為INT8量化。Tim等[22]將32位的梯度和激活值量化為特殊的8位浮點(diǎn)數(shù)實(shí)現(xiàn)并行加速;Jacob等[23]引入偽量化來模擬量化過程的誤差并將權(quán)重和激活值量化為8位定點(diǎn)數(shù);低比特量化是基于二值化神經(jīng)網(wǎng)絡(luò)[24]的改進(jìn),典型工作有二值量化[25-27]和三值量化[28-30],極低比特量化中乘法運(yùn)算可以采用移位運(yùn)算來替代,極大程度上壓縮加速了模型并簡化了硬件設(shè)計(jì)[31];極端追求高壓縮比和速度而使用極低比特量化會(huì)造成模型精度的嚴(yán)重下降,使用混合精度可以平衡壓縮加速和模型精度,Asit等[32]提出了寬低精度網(wǎng)絡(luò) (wide reduce-precision network,WRPN)分別將權(quán)重和激活量化到2 bit和4 bit;Wang等[33]提出混合精度硬件感知自動(dòng)量化(hardware-aware automated quantization with mixed precision , HAQ),引入強(qiáng)化學(xué)習(xí)自動(dòng)找出每一層最合理的量化位寬;Zhang等[34]提出Learned quantization(LQnets)使量化器與網(wǎng)絡(luò)聯(lián)合訓(xùn)練自適應(yīng)調(diào)節(jié)量化位寬。除上述量化方法以外,Gong等[35]提出使用聚類方式量化參數(shù)數(shù)量龐大的模型,將k-means聚類用于量化全連接層參數(shù)。

根據(jù)量化是否涉及訓(xùn)練,量化分為訓(xùn)練后量化(post-training quantization , PTQ)和量化感知訓(xùn)練(quantization-aware training , QAT),2種量化的一般流程如圖3所示。PTQ方法[27-29,32]在對訓(xùn)練好的模型進(jìn)行量化之后不再微調(diào);而QAT方法[23,25-26,36]中量化因子可以在訓(xùn)練中動(dòng)態(tài)調(diào)整大小以達(dá)到最小的精度損失,因此一般比PTQ保持更高的精度。2類量化方法各有優(yōu)缺點(diǎn),PTQ方法精度損失較大,但不需要數(shù)據(jù)或者只要少量的校驗(yàn)數(shù)據(jù)集進(jìn)行校準(zhǔn),常用于非監(jiān)督學(xué)習(xí)、小批量數(shù)據(jù)集的任務(wù)中;QAT方法量化模型效果好,但需要訓(xùn)練過程復(fù)雜。

圖3 訓(xùn)練后量化、量化感知訓(xùn)練流程示意Fig.3 Schematic diagram of quantization and quantization perception training after training

此外,量化還可以用于分布式訓(xùn)練加速,對訓(xùn)練過程中產(chǎn)生的梯度進(jìn)行量化可以在多級通訊傳輸梯度時(shí)減低傳輸帶寬的壓力,能夠更快地將梯度數(shù)據(jù)傳輸完畢。文獻(xiàn)[37-39]都對模型訓(xùn)練過程中的梯度進(jìn)行量化并且補(bǔ)償量化誤差,降低通訊延時(shí)并加快了收斂速度。

總結(jié)之前的研究,發(fā)現(xiàn)量化的優(yōu)點(diǎn)主要包括:

1)節(jié)約存儲(chǔ)資源:量化降低參數(shù)位寬、節(jié)約存儲(chǔ)資源。以INT8量化[22-23]為例,量化后模型參數(shù)從32位浮點(diǎn)數(shù)壓縮為8位整數(shù),模型占用存儲(chǔ)量理論上縮小為原來的1/4,這大大節(jié)約了存儲(chǔ)資源。

2)加速模型計(jì)算:在INT8量化[22-23]中,量化后計(jì)算量降低為原來的1/4,并且處理器進(jìn)行整數(shù)計(jì)算的速度快于浮點(diǎn)數(shù)運(yùn)算速度,因此模型推理速度有效提升。對于二值量化[25-27]和三值量化[28-29],浮點(diǎn)數(shù)乘法器可以使用更簡單快速的運(yùn)算器來替代(如XNOR或pop-count邏輯門),這不但提高了運(yùn)算速度,而且便于在計(jì)算資源受限的移動(dòng)端或嵌入式設(shè)備部署模型。

3)降低功耗:一方面,模型計(jì)算量的降低節(jié)約了功耗;另一方面,模型存儲(chǔ)量的減少降低了訪存次數(shù)和對訪存帶寬的需求,這降低了DRAM訪存帶來的延遲和功耗。

量化的缺點(diǎn)主要包括:

1)模型精度損失:量化后模型的權(quán)重和激活值的位寬下降,導(dǎo)致模型精度下降,因此需要根據(jù)任務(wù)需求權(quán)衡模型精度和計(jì)算效率。

2)訓(xùn)練過程復(fù)雜:為保證量化精度損失最小,在QAT[23,25-26,36]的過程中需要先插入偽量化節(jié)點(diǎn)再進(jìn)行訓(xùn)練,訓(xùn)練過程更為復(fù)雜。

1.2.3 知識蒸餾

知識蒸餾是利用大型教師模型的知識來監(jiān)督小型學(xué)生模型訓(xùn)練的方法。與剪枝、量化從待壓縮模型中壓縮得到輕量化網(wǎng)絡(luò)模型不同的是,知識蒸餾的輕量化模型一般需要額外單獨(dú)設(shè)計(jì),近年來使用剪枝、量化得到的輕量化模型作為學(xué)生模型的研究日益增多,并成為一種新的趨勢,本文將在第3節(jié)重點(diǎn)介紹。學(xué)生模型的選擇是知識蒸餾的難點(diǎn)和關(guān)鍵點(diǎn),直接影響蒸餾效果,文獻(xiàn)[40]歸納了現(xiàn)有研究中的學(xué)生模型的選擇:“學(xué)生網(wǎng)絡(luò)通常被選擇為:1)教師網(wǎng)絡(luò)的簡化版本,層數(shù)更少、每層的通道也更少;2)保留網(wǎng)絡(luò)結(jié)構(gòu)的教師網(wǎng)絡(luò)的量化版本;3)具有高效基本操作的小型網(wǎng)絡(luò);4)具有優(yōu)化的全局網(wǎng)絡(luò)結(jié)構(gòu)的小型網(wǎng)絡(luò);5)與教師相同的網(wǎng)絡(luò)?!?/p>

教師模型向?qū)W生模型傳遞的知識包括預(yù)測概率、特征圖、注意力映射、結(jié)構(gòu)特征等。知識蒸餾中的知識類型有輸出特征知識、中間特征知識、關(guān)系特征知識以及結(jié)構(gòu)特征知識。早在2006年Buciluǎ等[41]就已經(jīng)提出使用小模型模仿大模型特征來提升小模型性能的方法,但直到2015年Hinton等[42]將溫度因子T引入softmax函數(shù)得到軟化的概率分布作為小模型的軟標(biāo)簽進(jìn)行模仿后,知識蒸餾方法才開始得到更為廣泛的關(guān)注。硬標(biāo)簽與軟標(biāo)簽示意如圖4所示。Mirzadeh等[43]發(fā)現(xiàn),并非教師模型性能越高對學(xué)生模型的學(xué)習(xí)越有利,當(dāng)教師模型和學(xué)生模型存在容量差異過大時(shí),學(xué)生模型直接模仿教師網(wǎng)絡(luò)的輸出特征知識往往效果不佳,為此他們提出了助教策略來縮小教師模型與學(xué)生模型之間的容量差距以取得更好的蒸餾效果。教師模型的輸出特征知識提供的信息有限,教師模型的中間層同樣也含有重要的知識,Romero等[44]提出了FitNets方法以訓(xùn)練在當(dāng)時(shí)難以優(yōu)化的深層神經(jīng)網(wǎng)絡(luò),首次使用了教師模型的特征圖作為學(xué)生模型的模仿對象;Zagoruyko等[45]基于FitNets使用注意力圖代替特征圖,提出了注意力轉(zhuǎn)移(attention transfer)方法。中間特征知識往往憑經(jīng)驗(yàn)選取,并且僅使學(xué)生模型的中間層模仿相對應(yīng)的教師模型的中間層;Junho等[46]將2個(gè)特征層的內(nèi)積定義為FSP矩陣并以此表示這2個(gè)層之間的關(guān)系,學(xué)生模型通過教師模型的解決方案流程 (flow of the solution process,F(xiàn)SP)矩陣學(xué)習(xí)其關(guān)系特征,首次引入了關(guān)系特征知識;Xu等[47]綜合了輸出特征、中間特征和關(guān)系特征作為結(jié)構(gòu)特征知識提出了整體知識蒸餾(integral knowledge distillation,IKD),將知識蒸餾從分類問題拓展到人體姿態(tài)估計(jì)問題。隨著研究的開展,知識的選取從最初的輸出特征發(fā)展到中間特征、關(guān)系特征以及融合前3種特征的結(jié)構(gòu)特征,知識蒸餾的應(yīng)用也從最初的分類任務(wù)拓展到其他任務(wù)中。

圖4 硬標(biāo)簽與軟標(biāo)簽示意Fig.4 Hard label and soft label

根據(jù)教師模型是否和學(xué)生模型一起更新參數(shù)可以分為離線蒸餾(offline distillation)、在線蒸餾(online distillation)以及自蒸餾(self distillation)。離線蒸餾通常需要先得到訓(xùn)練完備的高性能教師模型然后再進(jìn)行知識蒸餾得到輕量化的學(xué)生模型,因此訓(xùn)練過程一般分為2個(gè)階段;在離線蒸餾學(xué)習(xí)的過程中教師模型只進(jìn)行推理而不更新參數(shù),大部分研究[41-45]使用離線蒸餾學(xué)習(xí)范式。離線蒸餾方法簡單易行,但是需要高性能的教師模型,而且不能保證教師模型與學(xué)生模型匹配。針對離線蒸餾的訓(xùn)練周期長、師生模型容量差距[43]的問題,在線蒸餾對高性能教師模型沒有嚴(yán)格要求,蒸餾過程中教師模型與學(xué)生模型同步更新參數(shù),因此只需要一個(gè)階段就可以完成訓(xùn)練。自蒸餾是學(xué)生模型從自身進(jìn)行蒸餾的特殊的在線蒸餾方法,無需額外構(gòu)造教師模型,通過將深層信息回傳給淺層指導(dǎo)訓(xùn)練[48]或迭代前模型指導(dǎo)迭代后模型訓(xùn)練[49]的方式實(shí)現(xiàn)模型性能的提升。離線蒸餾、在線蒸餾和自蒸餾如圖5所示。

圖5 離線蒸餾、在線蒸餾、自蒸餾示意Fig.5 Schematic diagram of off-line distillation, on-line distillation and self-distillation

總結(jié)之前的研究,我們發(fā)現(xiàn)知識蒸餾的優(yōu)點(diǎn)主要包括:

1)提高學(xué)生模型精度:學(xué)生模型同時(shí)學(xué)習(xí)教師模型的知識和標(biāo)簽訓(xùn)練后的精度往往高于直接使用標(biāo)簽訓(xùn)練的小模型的精度,甚至能夠達(dá)到接近教師模型的精度,有“青出于藍(lán)而勝于藍(lán)”的效果。

2)無需人工設(shè)置壓縮率:與剪枝、量化等輕量化算法通過壓縮原始模型得到輕量化模型不同,知識蒸餾一般需要額外構(gòu)造輕量化模型作為學(xué)生模型,不需要人工設(shè)置壓縮率。

3)便于與其他輕量化算法結(jié)合:經(jīng)過知識蒸餾后得到的高性能的輕量化模型還能繼續(xù)使用剪枝、量化等方法進(jìn)行進(jìn)一步的壓縮加速以達(dá)到更高的壓縮率;或者使用知識蒸餾恢復(fù)壓縮后模型的精度。

知識蒸餾的缺點(diǎn)主要包括:

1)訓(xùn)練過程復(fù)雜:離線蒸餾一般需要先訓(xùn)練得到高性能教師模型然后再使用教師模型對學(xué)生模型進(jìn)行知識蒸餾,這增大了訓(xùn)練成本和時(shí)間。除此之外,知識蒸餾需要針對不同的任務(wù)構(gòu)造合適的損失函數(shù)以達(dá)到知識傳遞的效果,這增加了訓(xùn)練的計(jì)算復(fù)雜度。

2)使用場景局限:知識蒸餾使用場景受限有網(wǎng)絡(luò)結(jié)構(gòu)和應(yīng)用場景兩方面原因。在網(wǎng)絡(luò)結(jié)構(gòu)方面,知識蒸餾算法通常用于壓縮結(jié)構(gòu)化的神經(jīng)網(wǎng)絡(luò)如卷積神經(jīng)網(wǎng)絡(luò),但對于非結(jié)構(gòu)化神經(jīng)網(wǎng)絡(luò)如循環(huán)神經(jīng)網(wǎng)絡(luò)或圖神經(jīng)網(wǎng)絡(luò)知識蒸餾算法需要針對其特殊結(jié)構(gòu)改進(jìn);在應(yīng)用場景方面,由于知識的定義和蒸餾損失函數(shù)的構(gòu)造上的困難,知識蒸餾方法最廣泛的應(yīng)用仍是在分類任務(wù)。

3)模型匹配與超參數(shù)調(diào)節(jié)問題:當(dāng)教師模型和學(xué)生模型容量差異過大時(shí)學(xué)生模型的性能可能反而下降[46],因此師生模型的匹配是知識蒸餾面臨的挑戰(zhàn)。此外,知識蒸餾中的超參數(shù)如溫度因子、權(quán)重因子的設(shè)定和調(diào)節(jié)也需要一定的經(jīng)驗(yàn)。

1.3 模型壓縮加速評價(jià)指標(biāo)

1.3.1 壓縮程度評價(jià)指標(biāo)

參數(shù)減少量是評價(jià)模型參數(shù)量減少的絕對值,壓縮率是評價(jià)模型參數(shù)量減少的相對值。前者為模型壓縮后減少的參數(shù)量,后者為原模型參數(shù)的存儲(chǔ)量與壓縮后模型參數(shù)的存儲(chǔ)量的比值。壓縮率定義為

式中:μ為壓縮前模型的存儲(chǔ)量,μ′為壓縮后模型的存儲(chǔ)量。

1.3.2 加速效果評價(jià)指標(biāo)

浮點(diǎn)運(yùn)算數(shù)(floating point operations, FLOPs)是評價(jià)模型計(jì)算復(fù)雜度的指標(biāo),可以用來衡量模型加速效果的絕對值。對于計(jì)算機(jī)視覺任務(wù)而言,每秒傳輸幀數(shù)(frames per second, FPS)是衡量模型每秒處理的圖片數(shù)的重要指標(biāo)。此外,在同一硬件設(shè)備上的推理時(shí)間可以用來衡量模型加速的相對值,加速率定義為

式中:ν為壓縮前模型的推理時(shí)間,ν′為壓縮后模型的推理時(shí)間。

1.3.3 模型性能評價(jià)指標(biāo)

不同任務(wù)對模型性能有不同的評價(jià)指標(biāo),模型的性能不嚴(yán)重?fù)p失是模型壓縮的一個(gè)重要前提。常見的計(jì)算機(jī)視覺任務(wù)有分類、目標(biāo)檢測、語義分割等,詳細(xì)介紹各個(gè)任務(wù)的性能評價(jià)指標(biāo)并不是本文的重點(diǎn),因此在這里只列舉分類任務(wù)和目標(biāo)檢測任務(wù)的常用指標(biāo)。

在分類任務(wù)中常使用準(zhǔn)確率和錯(cuò)誤率來評判模型的性能,準(zhǔn)確率是指預(yù)測結(jié)果中排名靠前的k個(gè)值的準(zhǔn)確率,k一般取1或5;相反的,錯(cuò)誤率表示預(yù)測結(jié)果中排名靠前的k個(gè)值的錯(cuò)誤率。

在目標(biāo)檢測任務(wù)中常使用mAP@k作為模型性能的評價(jià)指標(biāo),平均精度 (mean average precision, mAP)表示在交并比(intersection over union,IoU)閾值為k的條件下各個(gè)檢測類平均精度(average precision , AP)的平均值。AP是綜合了準(zhǔn)確度(precision)和召回率(recall)的每個(gè)檢測類別的評價(jià)指標(biāo),設(shè)某一類別C的精度(precision)與召回率(recall)的函數(shù)為P(x),則AP定義為

IoU是衡量網(wǎng)絡(luò)模型預(yù)測框與真實(shí)框重合程度的指標(biāo),定義為

式中:模型預(yù)測框P與真實(shí)框GT重疊區(qū)域的面積為S∩,模型預(yù)測框P與真實(shí)框GT覆蓋的總面積為S∪。

2 神經(jīng)網(wǎng)絡(luò)壓縮聯(lián)合優(yōu)化方法

盡管各種壓縮方法都從獨(dú)特的角度對模型壓縮和加速做了深入的研究,但目前大多數(shù)研究都局限于各自的方向中,而涉及到如何有效結(jié)合各種方法進(jìn)行聯(lián)合優(yōu)化的問題時(shí),因其問題的復(fù)雜度較高還未形成成熟的研究。本文總結(jié)大量文獻(xiàn)所提出的聯(lián)合壓縮加速方法,將其按照組合類型分為“知識蒸餾+剪枝”、“知識蒸餾+量化”和“剪枝+量化”3類,將在下文一一闡述。

2.1 知識蒸餾+剪枝

知識蒸餾與剪枝聯(lián)合進(jìn)行模型壓縮加速主要應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)[50-61],近年來也出現(xiàn)了對Transformer模型[62-63]及強(qiáng)化學(xué)習(xí)代理網(wǎng)絡(luò)[64,65]的壓縮加速。結(jié)合方式主要分為先剪枝后蒸餾[50-58,65]、先蒸餾后剪枝[51,59]、邊蒸餾邊剪枝[60-63]3類。

本文調(diào)研的剪枝與知識蒸餾相結(jié)合的文獻(xiàn)中所使用的剪枝、知識蒸餾方法及兩者之間的結(jié)合方式統(tǒng)計(jì)如表1所示。

表1 本文所整理的“知識蒸餾+剪枝”文獻(xiàn)方法匯總Table 1 Summary of the literature methods of “knowledge distillation + pruning” organized in this paper

2.1.1 先剪枝后蒸餾

先剪枝后蒸餾方法按照知識蒸餾中師生模型的選擇細(xì)分為3種方法,如圖6所示。

圖6 先剪枝后蒸餾方法分類示意Fig.6 Schematic diagram of pruning before distillation method classification

深度神經(jīng)網(wǎng)絡(luò)在剪枝后精度往往會(huì)下降,微調(diào)能夠在一定程度上恢復(fù)剪枝后的模型精度,但當(dāng)裁剪掉過多的參數(shù)時(shí),剪枝后模型容量會(huì)大幅度下降以至于無法恢復(fù)到原來的精度。學(xué)生網(wǎng)絡(luò)的設(shè)計(jì)是知識蒸餾的難點(diǎn)和關(guān)鍵點(diǎn),直接影響知識蒸餾后模型的性能。文獻(xiàn)[66]通過實(shí)驗(yàn)證明:學(xué)生模型和教師模型網(wǎng)絡(luò)結(jié)構(gòu)的相似性與最終的蒸餾性能呈正相關(guān),即教師模型與學(xué)生模型結(jié)構(gòu)越相似,蒸餾效果越好?;谏鲜霈F(xiàn)象,可以對教師模型剪枝來構(gòu)造結(jié)構(gòu)相似的學(xué)生模型,使用知識蒸餾替代微調(diào)的過程彌補(bǔ)剪枝造成的精度損失,實(shí)現(xiàn)剪枝和知識蒸餾方法的互補(bǔ)結(jié)合。在這類方法的知識蒸餾過程中,通常使用剪枝后模型作為學(xué)生模型,剪枝前模型作為教師模型以達(dá)到更好的知識傳遞效果[50-55,65],但也有個(gè)別方法使用額外構(gòu)造的高精度教師模型[54]。很多研究[16,50-51,65,67-68]組合已提出的剪枝和知識蒸餾方法來進(jìn)行聯(lián)合壓縮和加速,如Li等[67]使用未剪枝的單次多檢測器 (single shot multiple detector, SSD)作為教師模型對Network Slimming剪枝[16]后SSD目標(biāo)檢測模型進(jìn)行在線蒸餾以提高檢測精度。針對手動(dòng)調(diào)參的局限性,Wu等[50]在剪枝和知識蒸餾聯(lián)合壓縮的基礎(chǔ)上引入了超參數(shù)自動(dòng)優(yōu)化算法,利用現(xiàn)有的模型剪枝技術(shù)設(shè)計(jì)學(xué)生模型并在知識蒸餾過程中使用NNI(neural network intelligence)自動(dòng)參數(shù)調(diào)整工具自動(dòng)優(yōu)化知識蒸餾中的3個(gè)重要的超參數(shù):溫度因子、權(quán)重因子及剪枝率,以自動(dòng)得到最優(yōu)的實(shí)驗(yàn)壓縮效果,克服手動(dòng)調(diào)參的局限性。Xu等[65]在深度強(qiáng)化學(xué)習(xí)中結(jié)合剪枝和策略蒸餾[68],對深度Q網(wǎng)絡(luò) (deep Q-network, DQN)代理網(wǎng)絡(luò)進(jìn)行壓縮以部署在資源有限的嵌入式系統(tǒng)中。Wu等[51]探究了6種不同的剪枝方法與知識蒸餾的結(jié)合,實(shí)驗(yàn)證明了先剪枝后蒸餾的方法的效果與剪枝方法、模型結(jié)構(gòu)、數(shù)據(jù)集大小相關(guān),需要多方面聯(lián)合優(yōu)化,為后續(xù)針對特定應(yīng)用設(shè)計(jì)剪枝與知識蒸餾聯(lián)合壓縮方法提供了理論支持。

上述研究中剪枝和知識蒸餾都利用已提出的方法,許多研究都針對特定的應(yīng)用場景設(shè)計(jì)了新的剪枝或知識蒸餾方法以實(shí)現(xiàn)更好的模型壓縮加速效果。在模型中有非連續(xù)卷積(如倒殘差結(jié)構(gòu)[9])的情況下,并不能直接應(yīng)用常規(guī)剪枝方法,Aflalo等[52]將背包問題表述為一種新的剪枝方法,并提出了一種新的知識蒸餾方法內(nèi)知識蒸餾(inner knowledge distillation, IKD)用于彌補(bǔ)剪枝造成的精度損失;IKD方法利用剪枝前后師生結(jié)構(gòu)相似性使用網(wǎng)絡(luò)內(nèi)層的特征圖作為知識引導(dǎo)學(xué)生模型學(xué)習(xí)教師模型的內(nèi)層映射;在他們的方法中,先對原始模型背包剪枝得到輕量化的學(xué)生模型,再使用原始模型作為教師模型進(jìn)行IKD恢復(fù)精度。針對少樣本知識蒸餾的場景,Zhou等[53]提出了漸進(jìn)特征分布蒸餾 (progressive feature distribution distillation, PFDD)旨在恢復(fù)少樣本場景下模型剪枝造成的精度損失;PFDD方法使用特征圖作為蒸餾知識,使用中間特征層的Gram矩陣計(jì)算最大平均差異 (maximum mean discrepancy,MDD)作為蒸餾損失來訓(xùn)練學(xué)生模型以匹配教師模型的特征圖,并使用漸進(jìn)式訓(xùn)練策略重點(diǎn)關(guān)注損失函數(shù)中占比最大的損失,以充分利用樣本信息。在該方法中,先使用Network Slimming剪枝[16]得到學(xué)生模型,再使用原始模型作為教師模型對學(xué)生模型進(jìn)行PFDD以恢復(fù)精度損失。

廣泛應(yīng)用于軍事和民用的孔徑合成雷達(dá)(synthetic aperture radar , SAR)自動(dòng)目標(biāo)識別(automatic target recognition , ATR)對網(wǎng)絡(luò)模型的實(shí)時(shí)性和準(zhǔn)確性有嚴(yán)格要求,對于SAR ATR場景部署的網(wǎng)絡(luò)模型往往需要輕量化網(wǎng)絡(luò)設(shè)計(jì)、剪枝、蒸餾等多種方法聯(lián)合進(jìn)行壓縮加速,且需要針對其特殊性對傳統(tǒng)壓縮方法進(jìn)行改造。Zhang等[54]聯(lián)合通道剪枝、知識蒸餾和權(quán)重共享實(shí)現(xiàn)了SAR目標(biāo)檢測模型的壓縮加速,他們首先使用逐層通道迭代剪枝得到輕量化模型,然后使用高性能預(yù)訓(xùn)練模型作為教師模型對剪枝后模型知識蒸餾,最后使用k-means實(shí)現(xiàn)權(quán)值共享進(jìn)一步壓縮模型。與先前方法不同的是,該方法知識蒸餾階段使用高性能SAR目標(biāo)檢測網(wǎng)絡(luò)作為教師模型,而非剪枝前的原始模型。Chen等[55]針對SAR ATR場景,使用稠密連接和非對稱卷積設(shè)計(jì)了一種新型的DC-ACM YOLOv3(densely connected and ACMassisted YOLOv3)目標(biāo)檢測器,并命名為Tiny YOLOv3-Lite,然后使用通道剪枝降低參數(shù)量,并提出了一種新的知識蒸餾方法特征相互關(guān)系知識蒸餾 (feature inter-relationship knowledge distillation,FIR KD)進(jìn)一步提升模型精度。Wang等[56]使用SE模塊構(gòu)建了輕量化的CA-Net,提出了一種基于注意力的結(jié)構(gòu)化剪枝方法用于壓縮CA-Net,并提出了一種基于橋接的知識蒸餾方法恢復(fù)剪枝后CA-Net的精度。

現(xiàn)有的先剪枝后蒸餾的聯(lián)合壓縮方法[50-56,65]發(fā)展趨勢為從直接使用已提出的剪枝、知識蒸餾方法進(jìn)行聯(lián)合發(fā)展[16,50-51,65,67-68]為針對特定應(yīng)用場景設(shè)計(jì)相應(yīng)的剪枝、知識蒸餾方法進(jìn)行聯(lián)合[51,53-56],都使用剪枝后的模型作為學(xué)生模型進(jìn)行知識蒸餾,剪枝的目的是解決知識蒸餾中學(xué)生模型的構(gòu)造問題,蒸餾的目的則是彌補(bǔ)由于剪枝造成的精度損失,2種方法聯(lián)合發(fā)揮了更好的壓縮效果。

教師模型的選擇直接決定了知識蒸餾的效果,盲目組合高性能教師模型和輕量化的學(xué)生模型往往效果不盡人意,當(dāng)復(fù)雜教師模型和簡單學(xué)生模型之間容量差異過大時(shí),知識蒸餾效果往往不佳[43]。文獻(xiàn)[69]也表明,當(dāng)學(xué)生模型沒有足夠的函數(shù)擬合能力時(shí),受過較少訓(xùn)練的教師模型蒸餾效果更好,而使用剪枝后模型作為學(xué)生模型會(huì)進(jìn)一步拉大教師模型與學(xué)生模型的容量差距,這可能影響知識蒸餾的效果。基于以上觀點(diǎn),文獻(xiàn)[57-58]使用剪枝后的模型作為教師模型以降低師生模型容量差異。Aghli等[57]提出了一種聯(lián)合剪枝和知識蒸餾用于壓縮具有殘差結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)的方法,針對殘差塊連接的特點(diǎn),使用激活值的平均零點(diǎn)百分比(average percentage of zeros ,APoZ) 作為神經(jīng)元重要性判據(jù)進(jìn)行剪枝;并提出了一種新的知識蒸餾方法,將剪枝后的模型作為教師模型、額外構(gòu)造的輕量化的網(wǎng)絡(luò)作為學(xué)生模型,通過分層最小化師生特征圖之間的余弦相似度損失以使得學(xué)生模型模仿教師模型的特征圖。Park等[58]提出了Prune then distill方法,使用剪枝后的模型作為教師模型對額外構(gòu)造的輕量化學(xué)生模型進(jìn)行知識蒸餾。

上述先剪枝后蒸餾的方法中師生組合方式截然不同,前者[50-27,65]使用剪枝后的模型作為知識蒸餾中的學(xué)生模型,而后者[57-58]使用剪枝后的模型作為知識蒸餾中的教師模型,產(chǎn)生上述不同的根本原因在于指導(dǎo)思想不同。前者使用知識蒸餾來彌補(bǔ)剪枝造成的精度損失,其工作中心在于盡可能提高剪枝率;而后者使用剪枝來降低知識蒸餾中師生模型的容量差異,其工作中心在于盡可能提高蒸餾效果。

2.1.2 先蒸餾后剪枝

先蒸餾后剪枝方法通常對知識蒸餾得到的學(xué)生模型進(jìn)一步壓縮以得到更加輕量化的模型,如圖7所示。

圖7 先蒸餾后剪枝方法分類示意Fig.7 Schematic diagram of classification by distillation before pruning

文獻(xiàn)[59,70]使用先蒸餾后剪枝的方法來聯(lián)合2種壓縮方法,即先進(jìn)行知識蒸餾得到高精度的學(xué)生模型,然后對學(xué)生模型進(jìn)行剪枝以進(jìn)一步壓縮模型。Li等[70]聯(lián)合剪枝和知識蒸餾壓縮語音識別系統(tǒng)的聲學(xué)模型,即先使用知識蒸餾得到高精度的學(xué)生模型,然后對學(xué)生模型進(jìn)行權(quán)重剪枝以進(jìn)一步壓縮模型參數(shù),最后對剪枝后的模型進(jìn)行微調(diào)恢復(fù)模型精度,剪枝和微調(diào)迭代進(jìn)行以最大程度壓縮模型。Che等[59]提出了聯(lián)合剪枝和知識蒸餾的方法知識蒸餾和剪枝聯(lián)合方案 (hybrid approach on knowledge distillation and pruning,HKDP),使用一種分階段知識蒸餾方法以得到高性能的學(xué)生模型,然后使用一種基于隨機(jī)梯度下降(stochastic gradient descent,SGD)的迭代剪枝方法進(jìn)一步壓縮學(xué)生模型;在分階段知識蒸餾中,學(xué)生模型在一輪訓(xùn)練中只優(yōu)化某一階段的網(wǎng)絡(luò)參數(shù),其他參數(shù)凍結(jié);在SGD迭代剪枝中,每一輪剪枝后微調(diào)以恢復(fù)模型精度,迭代修剪直到模型被壓縮到目標(biāo)剪枝率。文獻(xiàn)[59,70]在剪枝階段使用硬標(biāo)簽進(jìn)行微調(diào),缺乏教師模型的監(jiān)督信息,因而模型性能恢復(fù)有限。Prakosa等[71]提出了先蒸餾再剪枝后蒸餾的方法,即先知識蒸餾得到高性能的學(xué)生模型,再剪枝進(jìn)一步壓縮學(xué)生模型,最后使用知識蒸餾恢復(fù)剪枝后學(xué)生模型的精度。

先剪枝后蒸餾[50-58,65]和先蒸餾后剪枝[67,72]2類方法在聯(lián)合順序上截然相反,其根本原因在于算法設(shè)計(jì)的出發(fā)點(diǎn)不同。先剪枝后蒸餾旨在利用知識蒸餾彌補(bǔ)由于剪枝造成的精度損失,而先蒸餾后剪枝旨在進(jìn)一步壓縮本就輕量級的學(xué)生模型。

2.1.3 邊剪枝邊蒸餾

邊剪枝邊蒸餾方法按照知識蒸餾中師生模型的選擇細(xì)分為2種方法,如圖8所示。

圖8 邊剪枝邊蒸餾分類示意Fig.8 Schematic diagram of distillation classification while pruning

上述研究所提出的方法中,無論是先剪枝后蒸餾[50-58,65]、先蒸餾后剪枝[67,72]還是先蒸餾再剪枝后蒸餾[71],其剪枝和蒸餾階段分別進(jìn)行,學(xué)生模型在剪枝的過程中缺乏高精度模型的監(jiān)督,使得模型剪枝后往往難以保持精度,且訓(xùn)練過程復(fù)雜、周期長、計(jì)算成本高,因此有研究[60-63]提出了端到端的壓縮加速方案,即邊剪枝邊蒸餾。在邊剪枝邊蒸餾的方案中,所使用的剪枝方案一般為迭代剪枝,知識蒸餾中學(xué)生模型一般都是剪枝后的模型,教師模型可以是剪枝前的模型[60,62-63]也可以是額外構(gòu)造的高性能模型[61],使用知識蒸餾替代每輪剪枝后的微調(diào)過程,實(shí)現(xiàn)剪枝和知識蒸餾的結(jié)合。Chen等[60]提出了邊剪枝邊蒸餾的聯(lián)合壓縮方法,在迭代剪枝的一輪修剪中,先剔除模型中冗余參數(shù)并將其作為學(xué)生模型,再使用原始模型作為教師模型進(jìn)行知識蒸餾以恢復(fù)模型精度。Yao等[61]結(jié)合知識蒸餾和通道剪枝來壓縮語義分割網(wǎng)絡(luò),所使用的通道剪枝方法使用批量歸一化(batch normalization,BN)層的L1范數(shù)作為評價(jià)通道重要性指標(biāo),邊剪枝邊蒸餾逐步壓縮模型。Cui等[62]結(jié)合結(jié)構(gòu)化剪枝和密集知識蒸餾提出了聯(lián)合模型壓縮 (joint model compression, JMC)方法用于大型Transformer壓縮,提出了一種新的直接重要性剪枝感知結(jié)構(gòu)化剪枝(direct importance-aware structured pruning , DISP)方法,和一種采用多對一層映射策略的密集知識蒸餾(dense knowledge distillation , DKD)以更全面地利用分層語言知識進(jìn)行蒸餾;JMC方法將DISP和DKD聯(lián)合,在一輪迭代剪枝中,先使用DISP修剪層數(shù)較少的學(xué)生模型,再使用DKD恢復(fù)模型精度,不斷迭代直到達(dá)到目標(biāo)剪枝率。由于自注意力機(jī)制的引入,視覺自注意力模型 (vision transformer, ViT)模型結(jié)構(gòu)復(fù)雜、參數(shù)冗余度低,直接使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的剪枝方法來壓縮ViT會(huì)造成精度嚴(yán)重?fù)p失,Xu等[63]將知識蒸餾引入ViT的剪枝過程中,提出了知識蒸餾集成剪枝(knowledge dsitillation integrated pruning , KDIP),在待剪枝層之前引入一個(gè)重要性得分學(xué)習(xí)模塊來評估刪減參數(shù)矩陣的每個(gè)維度,以確保刪減模型冗余的維度,并使用知識蒸餾彌補(bǔ)剪枝引起的精度損失,反復(fù)迭代修剪直到達(dá)到目標(biāo)剪枝率。

綜上所述,知識蒸餾作為一種高性能輕量化模型的訓(xùn)練方法可以有效彌補(bǔ)剪枝造成的精度損失,同時(shí)剪枝可以作為知識蒸餾中學(xué)生模型[50-56,65]或教師模型[57-58]的構(gòu)造來源。絕大多數(shù)的研究都針對特定場景對剪枝或蒸餾方法進(jìn)行了優(yōu)化,但是剪枝和知識蒸餾的結(jié)合方式基本分為先剪枝后蒸餾、先蒸餾后剪枝、邊剪枝邊蒸餾3類。

2.2 知識蒸餾+量化

知識蒸餾與量化聯(lián)合進(jìn)行模型壓縮加速結(jié)合方式主要有先量化后蒸餾[72-78]和邊量化邊蒸餾[74,77]兩大類。根據(jù)學(xué)生模型的來源,先量化后蒸餾這一類可以分為學(xué)生模型單獨(dú)設(shè)計(jì)[76]和學(xué)生模型由量化得到[30,72,74-75,77-78]2種情況,

本文調(diào)研的量化與知識蒸餾相結(jié)合的文獻(xiàn)中所使用的量化、知識蒸餾方法及兩者之間的結(jié)合方式統(tǒng)計(jì)如表2所示。

表2 本文所整理的“知識蒸餾+量化”文獻(xiàn)方法匯總Table 2 Summarizes the literature methods of "knowledge distillation + quantization" organized in this paper

2.2.1 先量化后蒸餾

先量化后蒸餾方法按照知識蒸餾中師生模型的選擇細(xì)分為3種方法,如圖9所示。

圖9 先量化后蒸餾方法分類示意Fig.9 Schematic diagram of quantization before distillation method classification

文獻(xiàn)[72]證明知識蒸餾能夠很大程度上彌補(bǔ)由于量化導(dǎo)致的模型參數(shù)位寬減少而造成的模型精度損失,因此知識蒸餾常用來代替量化后的微調(diào)過程以獲得更高精度的輕量化網(wǎng)絡(luò)模型,基于這種思想提出的聯(lián)合優(yōu)化方法往往需要先量化壓縮得到低位寬模型再使用知識蒸餾彌補(bǔ)量化造成的精度損失,是兩階段的模型壓縮加速方法。Mishra等[73]首次結(jié)合知識蒸餾與量化提出了Apprentice方法,針對不同的訓(xùn)練過程提出了3種方案,論證了3種方案各自的優(yōu)缺點(diǎn)并通過實(shí)驗(yàn)證明了方案3在恢復(fù)極低比特量化精度上效果最優(yōu)。量化蒸餾 (quantized distillation, QD)[79]方法在4、8 bit量化時(shí)具有良好的性能,但在2 bit及以下量化的時(shí)候具有嚴(yán)重精度損失,Min等[74]針對QD在三值網(wǎng)絡(luò)上的不足與SAR目標(biāo)檢測應(yīng)用場景的特殊性,提出了漸進(jìn)蒸餾(gradually distillation , GD)訓(xùn)練方法,設(shè)計(jì)了一種輕量化的三值微型卷積神經(jīng)網(wǎng)絡(luò)(micro convolutional neural network,MCNN),并使用未訓(xùn)練的全精度教師模型與學(xué)生模型MCNN進(jìn)行在線蒸餾,得到了高精度的實(shí)時(shí)SAR目標(biāo)檢測器。

文獻(xiàn)[40]發(fā)現(xiàn),并非教師模型性能越高對學(xué)生模型的學(xué)習(xí)越有利,當(dāng)復(fù)雜教師模型和簡單學(xué)生模型之間容量差異過大時(shí),學(xué)生模型直接模仿教師網(wǎng)絡(luò)的輸出特征知識往往效果不佳,而使用量化后的低位寬網(wǎng)絡(luò)作為學(xué)生模型會(huì)進(jìn)一步拉大教師模型與學(xué)生模型的容量差距,這嚴(yán)重影響知識蒸餾的效果,因此許多研究的重點(diǎn)在于如何降低兩者之間的差距以達(dá)到更好的知識蒸餾效果。針對模型容量差距問題和Apprentice方法[73]中的初始化問題,Kim等[75]提出了量化感知知識蒸餾(quantization-aware knowledge distillation,QKD)方法使用SS+CS+TU 3階段訓(xùn)練以得到更高精度的量化后低位寬模型,緩解了模型容量差距和初始化問題的影響,得到了更高效的輕量化網(wǎng)絡(luò)。Okuno等[76]提出了“無損AI”(lossless AI)的模型壓縮概念,并提出一種知識蒸餾方法將BN層統(tǒng)計(jì)數(shù)據(jù)凍結(jié)以進(jìn)行推理結(jié)果的對齊,并使用量化前的全精度模型作為教師模型、量化后的模型作為學(xué)生模型進(jìn)行知識蒸餾,從而保證模型壓縮前后推理結(jié)果之間的一致性。

大多數(shù)模型壓縮方法[61,70,72,74,76-78,80]將量化后的低位寬模型用于部署,而Wei等[81]提出的量化模仿(quantization mimic)方法中最終部署的是全精度的輕量化學(xué)生模型。Quantization Mimic方法[81]使用量化后的低位寬網(wǎng)絡(luò)作為教師模型、全精度的輕量化網(wǎng)絡(luò)作為學(xué)生模型以降低教師模型與學(xué)生模型之間的容量差距,從而達(dá)到更好的知識蒸餾效果。此外,Wei等[81]還使用量化對教師模型和學(xué)生模型的輸出特征圖進(jìn)行離散化以促進(jìn)2個(gè)網(wǎng)絡(luò)輸出特征圖之間的匹配,從而降低學(xué)生模型的模仿難度。與3.2.1節(jié)先剪枝后蒸餾方法的師生組合類似,上述先量化后蒸餾的方法中師生組合方式截然不同,前者[64,73-78]使用量化后的模型作為知識蒸餾中的學(xué)生模型,而后者[76]使用量化后的模型作為知識蒸餾中的教師模型。其根本原因也在于基本思想不同,前者使用知識蒸餾彌補(bǔ)由于量化造成的精度損失,以盡可能達(dá)到更低的量化位寬,其重點(diǎn)在于量化壓縮;后者使用量化來降低師生容量差距,以盡可能地提高蒸餾精度,其重點(diǎn)在于知識蒸餾。

在知識蒸餾中,一個(gè)常見的問題是如何構(gòu)造學(xué)生模型使之能夠與教師模型匹配從而達(dá)到更好的蒸餾效果,而量化正是構(gòu)造輕量化學(xué)生模型的常見方法,現(xiàn)有的大多數(shù)研究[64,73-77]都使用量化的方式獲得輕量化的模型作為知識蒸餾中的學(xué)生模型。文獻(xiàn)[77]將使用全精度模型作為教師模型指導(dǎo)量化后的低位寬模型作為學(xué)生模型進(jìn)行知識蒸餾的方法定義為自蒸餾量化。不同于大多數(shù)研究需要額外構(gòu)造高性能的全精度教師模型,自蒸餾量化[75,77,80]在整個(gè)模型壓縮的過程中只需要一個(gè)全精度模型,無需另外構(gòu)造并訓(xùn)練一個(gè)高性能網(wǎng)絡(luò)作為教師模型,這拓展了“量化+知識蒸餾”方法的使用范圍。

如上文所述,知識蒸餾的使用場景受限于知識的定義和損失函數(shù)的構(gòu)造通常應(yīng)用在計(jì)算機(jī)視覺中的分類問題中,若要拓展到其他領(lǐng)域,需要根據(jù)應(yīng)用場景定義知識和構(gòu)造相應(yīng)的損失函數(shù)。Kim等[78]針對Transformer的特點(diǎn)改進(jìn)了先前用于QAT的知識蒸餾技術(shù),他們使用注意力圖損失替代注意力得分損失并逐層引導(dǎo)量化的Transformer模型的知識蒸餾,實(shí)現(xiàn)了Transformer模型在2 bit及以下位寬QAT量化的最佳精度。

隨著人們對數(shù)據(jù)隱私和安全保護(hù)意識的提高,在某些特定應(yīng)用場景下用于模型壓縮的數(shù)據(jù)集的獲取變得越來越困難,但是對大規(guī)模冗余模型輕量化的需求仍然存在,這就需要無數(shù)據(jù)模型壓縮技術(shù)。針對數(shù)據(jù)隱私和安全性導(dǎo)致的無數(shù)據(jù)集情況下的模型壓縮問題,Choi等[80]將對抗學(xué)習(xí)與知識蒸餾、量化相結(jié)合,提出了對抗性知識蒸餾量化方法,使用生成器合成的樣本作為全精度教師模型和由教師模型量化得來的學(xué)生模型的輸入,并將生成的數(shù)據(jù)與教師模型中的原始數(shù)據(jù)進(jìn)行批量歸一化層的匹配以保證生成器生成與原始數(shù)據(jù)相似的對抗性樣本,用于學(xué)生模型的知識蒸餾。

2.2.2 邊量化邊蒸餾

邊量化邊蒸餾方法中教師模型通常為原始模型,學(xué)生模型為量化后模型,如圖10所示。

圖10 邊量化邊蒸餾方法分類示意Fig.10 Schematic diagram of the classification of side quantization side distillation method

上述量化和知識蒸餾結(jié)合的方法量化和知識蒸餾的過程分別進(jìn)行,訓(xùn)練周期長、成本高,有研究[74,77]提出了邊量化邊蒸餾訓(xùn)練方法。這類方法中的量化一般使用QAT,使用知識蒸餾作為量化模型感知訓(xùn)練的方法,實(shí)現(xiàn)量化和知識蒸餾的結(jié)合。Polino等[79]分別針對量化后低位寬模型的知識蒸餾和全精度模型的量化提出了量化蒸餾(quantized distillation, QD)和可微分量化(differentiable quantization, DQ);QD使用待壓縮的模型A和高精度高延遲的模型B等2個(gè)模型,使用模型B作為教師模型對量化后的模型A進(jìn)行迭代知識蒸餾最終得到用于部署的學(xué)生模型;DQ則是一種的PTQ方法,通過在量化后微調(diào)彌補(bǔ)量化造成的精度損失。Si等[77]提出了低比特量化蒸餾 (distillation for low bit quantization,DLBQ)方法使用特殊的知識蒸餾框架來提高極低比特量化模型的精度,為克服容量差距的問題,他們通過教師模型和學(xué)生模型共享全連接層參數(shù)來降低知識遷移的難度,此外,通過分析教師模型輸出中重要的數(shù)值提出了選擇性知識蒸餾,以進(jìn)行更有針對性的知識蒸餾。DLBQ雖然實(shí)現(xiàn)了極低比特量化模型的知識蒸餾,但是由于共享全連接層的原因必須確保教師模型和學(xué)生模型在全連接層之前共享相同的輸出通道,因此該方法僅適用于網(wǎng)絡(luò)深度不同,但最終卷積通道數(shù)相同的情況。QD方法[79]和DLBQ方法[77]都實(shí)現(xiàn)了邊量化邊蒸餾的模型壓縮加速,即在模型壓縮的過程中量化和蒸餾同時(shí)進(jìn)行,但量化模型位寬仍然取決于量化方法的選擇,因此不一定是平衡壓縮率和精度的最優(yōu)解。

綜上所述,知識蒸餾作為一種訓(xùn)練高性能的輕量化模型的方法通常用于彌補(bǔ)由于量化造成的精度損失,同時(shí)量化是構(gòu)造知識蒸餾所需的輕量化學(xué)生網(wǎng)絡(luò)的一種方式[72,74-75,79-80]。針對知識蒸餾中模型容量差距問題可以使用量化后模型作為教師模型[76]或者設(shè)計(jì)合適的訓(xùn)練方案[73,75-76,78]以保證知識更好的傳遞。特別的,在考慮數(shù)據(jù)安全與隱私性的領(lǐng)域,可以使用對抗學(xué)習(xí)生成樣本來進(jìn)行知識蒸餾[78]。

總結(jié)3.2節(jié)和3.3節(jié)所概述的“知識蒸餾+剪枝”和“知識蒸餾+量化”的聯(lián)合方法,兩者具有許多共同的基本思想。首先,知識蒸餾作為一種輕量化網(wǎng)絡(luò)的高性能訓(xùn)練方法,能夠有效彌補(bǔ)由于剪枝或量化造成的精度損失,同時(shí)剪枝或量化可以為知識蒸餾提供足夠輕量化的學(xué)生模型,因此大部分研究[30,50,65]使用剪枝或量化壓縮后的模型作為學(xué)生模型,使用壓縮前的模型作為教師模型進(jìn)行知識蒸餾以獲取高性能輕量化網(wǎng)絡(luò)。但是由于知識蒸餾中的師生模型容量差距過大會(huì)影響蒸餾效果,有些研究[57-58,76]使用剪枝或量化后的模型作為教師模型以降低容量差距、提升蒸餾效果。由于知識蒸餾和剪枝、量化兩階段結(jié)合訓(xùn)練周期長、成本高,且簡單的組合2種壓縮方法往往達(dá)不到最佳的壓縮加速效果,不少研究[60-63,78-79]提出了邊剪枝或量化邊蒸餾的端到端的壓縮加速方法,其中的剪枝或量化往往都是迭代進(jìn)行,并引入蒸餾損失指導(dǎo)模型的訓(xùn)練過程。

2.3 剪枝+量化

剪枝與量化聯(lián)合進(jìn)行模型壓縮加速主要應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)[64,72,80,82-86],近年來也出現(xiàn)了應(yīng)用于語音增強(qiáng)[87]、自然語言處理[88]和強(qiáng)化學(xué)習(xí)[64]的情景。剪枝與量化的結(jié)合方式主要分為先剪枝后量化[80,83,84,87-89]和邊剪枝邊量化[64,85-86]。剪枝操作根據(jù)其剪枝粒度的不同可分為結(jié)構(gòu)化剪枝和非結(jié)構(gòu)化剪枝。量化操作根據(jù)其量化精度的不同可分為固定精度量化,即所有權(quán)重量化精度一致;動(dòng)態(tài)精度量化,即網(wǎng)絡(luò)不同部分各自選擇適合的精度;以及離散值量化,即保留少部分精度不變的離散值作為量化后的權(quán)重值,其余權(quán)重均量化為這些離散值。

本文調(diào)研的剪枝與量化相結(jié)合的文獻(xiàn)中所使用的剪枝、量化方法及兩者之間的結(jié)合方式統(tǒng)計(jì)如表3所示。

表3 本文所整理的“剪枝+量化”文獻(xiàn)方法匯總Table 3 Summary of the literature methods of “pruning + quantification” organized in this paper

2.3.1 先剪枝后量化

先剪枝后量化結(jié)合方式按照剪枝方法分為結(jié)構(gòu)化剪枝和非結(jié)構(gòu)化剪枝2類,又按照量化方法細(xì)分為5種方式,如圖11所示。

1)不同粒度的剪枝方法。

剪枝操作根據(jù)剪枝粒度的不同可分為非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝兩大類。早期的方法中更多使用非結(jié)構(gòu)化剪枝,其以權(quán)重為剪枝單位,通過權(quán)重大小來衡量權(quán)重的重要程度,對于值較小的權(quán)重則將其剪枝。該方法的優(yōu)勢在于剪枝后能更好地維持原網(wǎng)絡(luò)的高性能,而劣勢在于計(jì)算量相對較大。剪枝程度通常使用設(shè)置的超參數(shù)閾值來控制,在超參數(shù)的選擇上也有很多方案,Han等[89]設(shè)置權(quán)重閾值,對低于該閾值的權(quán)重進(jìn)行剪枝;而Paupamah等[82]通過實(shí)驗(yàn)調(diào)整設(shè)置合適的剪枝率,對網(wǎng)絡(luò)不斷剪枝直到當(dāng)前剪枝率已達(dá)到預(yù)先設(shè)定值。相比而言,設(shè)置剪枝率閾值能夠更有效地控制網(wǎng)絡(luò)的壓縮程度。此外,值得注意的是,Paupamah等[82]的研究還表明剪枝操作可用于輕量化網(wǎng)絡(luò)結(jié)構(gòu)的進(jìn)一步壓縮和復(fù)雜網(wǎng)絡(luò)過擬合的抑制。

目前使用更多的剪枝方法為結(jié)構(gòu)化剪枝,其以卷積核通道或整個(gè)卷積核等整體結(jié)構(gòu)為剪枝單位。其優(yōu)勢主要在于計(jì)算量及所需要的權(quán)重存儲(chǔ)空間相對較小。通常的結(jié)構(gòu)化剪枝方法使用一定的指標(biāo)來衡量整體結(jié)構(gòu)的重要性,對于不重要的結(jié)構(gòu)進(jìn)行剪枝,如Liberatori等[83]使用卷積核權(quán)重的L1范數(shù)作為衡量指標(biāo),對于一定量L1范數(shù)值較小的卷積核進(jìn)行剪枝,剪枝的卷積核數(shù)量由預(yù)設(shè)的超參數(shù)剪枝率控制。

目前除上述提到的常用結(jié)構(gòu)化剪枝方法外,也有一系列各具特色的新結(jié)構(gòu)化剪枝方法被提出,以用于滿足更高的需求。Chang等[84]提出了一種基于批歸一化層不同通道規(guī)模系數(shù)的分布來進(jìn)行剪枝的方法變分通道分布剪枝 (variational channel distribution prune,VCD prune)。該方法考察批歸一化層不同通道規(guī)模系數(shù)的分布,將該分布擬合為正態(tài)分布,并考慮該正態(tài)分布的方差。方差大意味著該通道重要性相對較低,應(yīng)進(jìn)行剪枝。對于剪枝程度,使用超參數(shù)方差閾值進(jìn)行控制。Qi等[87]提出了一種輸出輸入通道聯(lián)合的稀疏度正則化剪枝方法。該方法考慮了2個(gè)連續(xù)層中前一層輸出通道和下一層對應(yīng)輸入通道之間的關(guān)聯(lián)性,構(gòu)造了輸入輸出通道聯(lián)合正則項(xiàng),通過正則項(xiàng)約束來控制權(quán)重值從而進(jìn)行剪枝。在具體剪枝過程中,通道權(quán)重的平方和作為相應(yīng)的重要性衡量指標(biāo)。每一迭代輪次均設(shè)置特定的剪枝率,在達(dá)到當(dāng)前輪次剪枝率后,對網(wǎng)絡(luò)進(jìn)行重訓(xùn)練以提升其預(yù)測準(zhǔn)確率。此外,對于如ResNet等包含多分支連接的網(wǎng)絡(luò),僅考慮主通路層的關(guān)聯(lián)性,而暫時(shí)忽略其他分支連接。Wu等[88]提出基于稀疏度參數(shù)的參數(shù)剪枝方法,使用某通道中小于均值的權(quán)重?cái)?shù)占通道總權(quán)重?cái)?shù)的比例來表示稀疏度,稀疏度趨近于1,證明該通道重要性相對越低,故應(yīng)被剪枝。在進(jìn)行剪枝時(shí),使用稀疏度閾值作為超參數(shù)控制剪枝程度。

可以看到,上述結(jié)構(gòu)化剪枝方法雖各具特色,但其共同點(diǎn)在于提出了不同于傳統(tǒng)結(jié)構(gòu)化剪枝方法的重要性衡量指標(biāo)。這些指標(biāo)相對于傳統(tǒng)結(jié)構(gòu)化剪枝方法更為精細(xì),有助于降低剪枝操作對預(yù)測精度帶來的損失。傳統(tǒng)非結(jié)構(gòu)化剪枝注重精度,而結(jié)構(gòu)化剪枝注重計(jì)算量與存儲(chǔ)空間的降低,這些新方法則是非結(jié)構(gòu)化剪枝與結(jié)構(gòu)化剪枝的折中。

此外,還有一些新剪枝方法能夠在特定情況下進(jìn)行高效剪枝。Zheng等[85]提出基于帶偏置的置換塊對角掩碼矩陣的剪枝方法。塊對角掩碼矩陣會(huì)以掩碼形式保留當(dāng)前塊對角線位置的權(quán)重,而將非對角線位置的權(quán)重置0,而偏置代表塊對角掩碼矩陣當(dāng)前對角線的偏移量。該方法較一般的結(jié)構(gòu)化剪枝方法精度更高,同時(shí)偏移的方式便于基于FPGA的壓縮加速設(shè)備的硬件實(shí)現(xiàn),在獲得精度的同時(shí)也實(shí)現(xiàn)了高效。

2)不同精度的量化方法。

量化方法根據(jù)量化精度的不同可分為固定精度量化、動(dòng)態(tài)精度量化和離散值量化3大類。目前最常用的量化方法即為固定精度量化,主要優(yōu)勢在于便于實(shí)現(xiàn),且通常量化為8 bit整型,便于權(quán)重的存儲(chǔ),但也可根據(jù)實(shí)際情況調(diào)節(jié),如文獻(xiàn)[83]中同時(shí)使用了8 bit固定精度量化和動(dòng)態(tài)精度量化。一般在使用固定精度量化方法時(shí),不僅會(huì)進(jìn)行量化操作,還包含其他修正步驟,以避免直接量化帶來模型性能的大幅下降。Zheng等[85]在使用固定精度量化方法時(shí),首先對權(quán)重進(jìn)行歸一化,再對其進(jìn)行對稱均勻量化。量化后,使用飽和操作對權(quán)重進(jìn)行進(jìn)一步修正。Qi等[87]基于固定精度量化提出了增量式量化方法,即量化與重訓(xùn)練交替。在選取待量化權(quán)重時(shí),可通過量化誤差最小化方法或網(wǎng)絡(luò)預(yù)測準(zhǔn)確率波動(dòng)最小化方法。在重訓(xùn)練過程中,需要先將浮點(diǎn)數(shù)權(quán)重值轉(zhuǎn)化為固定精度再進(jìn)行重訓(xùn)練。

動(dòng)態(tài)精度量化與固定精度量化類似,其區(qū)別在于動(dòng)態(tài)精度量化會(huì)使用特定方法對網(wǎng)絡(luò)不同結(jié)構(gòu)部分計(jì)算對應(yīng)的最適合的量化精度。Paupamah等[82]使用的動(dòng)態(tài)精度量化方法以通道為量化精度選擇單位,每個(gè)通道統(tǒng)一使用最適合當(dāng)前通道的量化位數(shù)。Chang等[84]提出基于批歸一化層不同通道規(guī)模系數(shù)分布的混合精度量化方法。該方法與本文所使用的剪枝方法均基于所擬合的批歸一化層規(guī)模系數(shù)分布來進(jìn)行,即方差越大,通道能容忍的量化誤差也越大,因而可以降低量化位數(shù)??梢钥吹?,動(dòng)態(tài)精度量化的過程更為復(fù)雜,計(jì)算量比固定精度量化大,但降低了量化操作對網(wǎng)絡(luò)性能的影響,同時(shí)減少了次要權(quán)重的存儲(chǔ)精度,也節(jié)約了存儲(chǔ)空間。

離散值量化與上述2種量化方法差別較大,該方法以原精度存儲(chǔ)少量權(quán)重作為離散值,而其余權(quán)重均量化為上述離散值,僅存儲(chǔ)其對應(yīng)的索引,從而實(shí)現(xiàn)模型壓縮。離散值量化相較固定精度量化精度更高,而相較動(dòng)態(tài)精度量化計(jì)算量和權(quán)重所需存儲(chǔ)空間都很少。離散值的選擇方法也有多種,最為常見的情況是,在基于聚類的離散值量化方法中,選擇聚類中心作為離散值。Han等[89]提出的聚類量化方法和Wu等[88]提出的參數(shù)量化方法就是典型的基于聚類的量化方法,上述方法也均使用聚類中心作為離散值。在使用基于聚類的量化方法時(shí),聚類的質(zhì)量最終會(huì)影響量化的質(zhì)量,因此上述研究也涉及如何對其中的聚類過程進(jìn)行優(yōu)化。首先,對于聚類類別數(shù),Wu等[88]通過實(shí)驗(yàn)方法選取類別數(shù)以實(shí)現(xiàn)模型精度和計(jì)算代價(jià)的較好平衡。其次,對于聚類中心初始化,Han等[89]提出了隨機(jī)初始化、基于密度的初始化及線性初始化3種方法,并通過實(shí)驗(yàn)證明了線性初始化方法的最優(yōu)性。值得注意的是,由于離散值量化的量化策略不同于前2種量化方法,其前向傳播和反向傳播過程與前2種方法相比也有一定差異。Han等[89]指出,前向傳播過程會(huì)記錄每個(gè)權(quán)重的值和索引,在反向傳播時(shí)相同索引的權(quán)重的梯度值進(jìn)行相加,合成為一個(gè)梯度值,再用該值對離散化的權(quán)重值進(jìn)行更新,最終訓(xùn)練得到一組離散化權(quán)重。

2.3.2 邊剪枝邊量化

邊剪枝邊量化方法按照剪枝和量化方法的結(jié)合方式細(xì)分為3種方法,如圖12所示。

圖12 邊剪枝邊量化方法分類示意Fig.12 Schematic diagram of side pruning and side quantization method classification

先剪枝后量化的結(jié)合方式下,剪枝操作與量化操作依然是兩階段操作,一個(gè)階段進(jìn)行優(yōu)化時(shí)無法兼顧另一個(gè)階段,很難保證2個(gè)階段同時(shí)達(dá)到最優(yōu)。因此,一系列邊剪枝邊量化的方法被提出,這些方法中剪枝和量化操作相互關(guān)聯(lián)、共同優(yōu)化,最終得到最優(yōu)的剪枝量化聯(lián)合策略。

Tung等[86]提出并行剪枝量化策略,該策略將剪枝過程和量化過程結(jié)合,每次迭代會(huì)對剪枝和量化同時(shí)進(jìn)行優(yōu)化。每次迭代過程中,并行剪枝量化操作包含3個(gè)步驟。首先,進(jìn)行非結(jié)構(gòu)化剪枝操作。其次,進(jìn)行分區(qū)操作,對未剪枝區(qū)域進(jìn)行分區(qū)。最后,進(jìn)行離散值量化操作,同一區(qū)間的權(quán)重均量化為一個(gè)離散值,該離散值由該區(qū)間內(nèi)所有權(quán)重求均值得到。該方法在每一迭代輪次內(nèi)部依然是先剪枝后量化的過程,但每一迭代輪次的并行剪枝量化操作完成后均進(jìn)行重訓(xùn)練以實(shí)現(xiàn)精度恢復(fù),在每一次重訓(xùn)練的過程中均實(shí)現(xiàn)了對于剪枝和量化過程的同步優(yōu)化,因而優(yōu)于一般的先剪枝后量化策略。當(dāng)然,該方法相比一般的先剪枝后量化的過程付出的計(jì)算代價(jià)也是更大的。

針對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)過程中網(wǎng)絡(luò)結(jié)構(gòu)搜索,及網(wǎng)絡(luò)壓縮過程中剪枝、量化各階段分離的問題,Wang等[64]提出了將網(wǎng)絡(luò)結(jié)構(gòu)搜索、剪枝、量化3階段合并的輕量化網(wǎng)絡(luò)設(shè)計(jì)策略。該方法基于超網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)和精度預(yù)測器設(shè)計(jì)實(shí)現(xiàn)。超網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)即神經(jīng)網(wǎng)絡(luò)中如卷積核大小等超參數(shù)可以變動(dòng),而剪枝過程隨著超網(wǎng)絡(luò)訓(xùn)練使得內(nèi)部結(jié)構(gòu)改變從而實(shí)現(xiàn)。這里使用結(jié)構(gòu)化剪枝,對卷積核通道進(jìn)行剪枝。對于精度預(yù)測器設(shè)計(jì),其輸入為網(wǎng)絡(luò)結(jié)構(gòu)策略編碼,輸出為預(yù)測精度估計(jì)。在精度預(yù)測器的微調(diào)階段,對于原網(wǎng)絡(luò)加入量化過程,使精度預(yù)測器由網(wǎng)絡(luò)策略編碼、量化策略編碼得到預(yù)測準(zhǔn)確率。使用該預(yù)測器,可以同時(shí)得到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)策略和量化策略,即最優(yōu)的剪枝操作和量化操作。該方法通過學(xué)習(xí)網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)的方式可協(xié)同進(jìn)行剪枝和量化策略的調(diào)優(yōu),其中蘊(yùn)含著元學(xué)習(xí)的思想。

Gil等[93]提出了一種高效協(xié)同完成剪枝與量化操作的深度神經(jīng)網(wǎng)絡(luò)壓縮方法,即均勻變分網(wǎng)絡(luò)量化器(uniform variational network quantizer,UVNQ)。其中的剪枝方法為基于網(wǎng)絡(luò)正則化隨機(jī)失活技術(shù)(dropout)的非結(jié)構(gòu)化剪枝,即為每個(gè)神經(jīng)元設(shè)置對應(yīng)的隨機(jī)失活幾率以進(jìn)行剪枝。其中的量化方法為動(dòng)態(tài)精度量化,即對每個(gè)權(quán)重使用不同的量化精度,其量化精度由上述訓(xùn)練得到的剪枝幾率來控制。本文提出的方法作為協(xié)同完成剪枝與量化操作的方法,其協(xié)同主要體現(xiàn)在剪枝與量化操作之間的關(guān)聯(lián)性。在訓(xùn)練開始前,需要給出一個(gè)代表最大量化精度的超參數(shù),該超參數(shù)為剪枝幾率設(shè)置了邊界值,以保證在訓(xùn)練過程中網(wǎng)絡(luò)表現(xiàn)不會(huì)大幅下降;在訓(xùn)練結(jié)束剪枝完成后,量化操作的量化精度也要通過剪枝幾率計(jì)算得到。

從上述文獻(xiàn)可以看出,邊剪枝邊量化策略通常比先剪枝后量化策略計(jì)算量大,這正是兩階段協(xié)同調(diào)優(yōu)以降低網(wǎng)絡(luò)壓縮后性能損失的代價(jià)。在實(shí)現(xiàn)剪枝量化協(xié)同的方式上,Tung等[86]和Gil等[93]的研究更多是先剪枝后量化方法的延申,將先剪枝后量化的過程多次迭代,或是使先進(jìn)行的剪枝操作和后進(jìn)行的量化操作產(chǎn)生關(guān)聯(lián);而Wang等[64]的研究相當(dāng)于是各種剪枝策略與各種量化策略的組合,相較而言考慮了更多協(xié)同調(diào)優(yōu)的可能性,也更易取得較好的效果,但同樣地計(jì)算量也會(huì)更大。

綜上所述,剪枝操作通過調(diào)整模型結(jié)構(gòu)進(jìn)行模型壓縮,而量化操作通過調(diào)整參數(shù)存儲(chǔ)量進(jìn)行模型壓縮。對于剪枝與量化的結(jié)合,可以按照次序進(jìn)行操作[80,83-84,87-89],也可以協(xié)同進(jìn)行[64,85-86],兩階段操作互相影響,共同優(yōu)化。大部分研究都根據(jù)需求對剪枝或量化方法進(jìn)行了改進(jìn),但剪枝和量化的基本結(jié)合方式還是可以分為先剪枝后量化、邊剪枝邊量化兩大類。

3 結(jié)束語

神經(jīng)網(wǎng)絡(luò)在端側(cè)部署離不開模型壓縮加速技術(shù),日益高漲的產(chǎn)業(yè)需求正推動(dòng)其蓬勃發(fā)展。但目前的方法在產(chǎn)品化實(shí)際部署水平上還有很大的發(fā)展空間,下面是幾個(gè)值得關(guān)注和探討的重點(diǎn)研究方向。

3.1 多方法深度聯(lián)合

現(xiàn)有的聯(lián)合模型壓縮方法往往以一種方法為主、另一種方法為輔,使用多階段的訓(xùn)練完成模型的輕量化壓縮,如先剪枝后蒸餾、先量化后蒸餾的方法,雖然這種結(jié)合方式可以直接使用已經(jīng)提出的成熟的模型壓縮方法,但是往往具有訓(xùn)練過程復(fù)雜、周期長的缺點(diǎn)。現(xiàn)有的端到端的訓(xùn)練方法如邊剪枝邊蒸餾、邊量化邊蒸餾往往需要設(shè)計(jì)新的模型壓縮方法,因此探究將多種成熟的模型壓縮方法聯(lián)合同時(shí)進(jìn)行壓縮的端到端的訓(xùn)練框架是未來研究的方向。此外,對于同時(shí)結(jié)合剪枝、量化和知識蒸餾進(jìn)行模型壓縮的研究尚未成熟,有待進(jìn)一步研究。

3.2 最優(yōu)方案高效選擇

如何選擇最優(yōu)的模型壓縮方案和合適的超參數(shù),在保證精度不嚴(yán)重?fù)p失的前提下最大程度的實(shí)現(xiàn)網(wǎng)絡(luò)模型的壓縮和加速,從而盡可能縮短開發(fā)周期、增加產(chǎn)品的市場競爭力,正成為業(yè)界的核心需求。因此探究如何更快速高效地實(shí)現(xiàn)壓縮加速,而非重復(fù)嘗試不同的壓縮方案和超參數(shù)組合,正成為產(chǎn)業(yè)應(yīng)用落地急需解決的問題。

3.3 自適應(yīng)模型壓縮

現(xiàn)有的模型壓縮方法中的各種超參數(shù)都需要手工調(diào)節(jié),如量化后模型的位寬、剪枝模型的剪枝率、知識蒸餾的溫度因子等,這些超參數(shù)的選擇需要經(jīng)驗(yàn),且不一定是平衡模型壓縮率和精度的最優(yōu)解。因此研究不依賴于人工設(shè)定超參數(shù)的自動(dòng)模型壓縮方法很值得探究。

3.4 多場景模型壓縮

一方面,現(xiàn)有的模型壓縮方法往往需要有標(biāo)簽的數(shù)據(jù)進(jìn)行微調(diào)以恢復(fù)模型精度,這將延長模型訓(xùn)練周期。在無監(jiān)督學(xué)習(xí)和數(shù)據(jù)隱私安全性高的場景下往往無法獲得具有標(biāo)簽的數(shù)據(jù),因此無數(shù)據(jù)或少數(shù)據(jù)的模型壓縮方法也有待研究。另一方面,目前壓縮加速方法多應(yīng)用于計(jì)算機(jī)視覺領(lǐng)域的卷積神經(jīng)網(wǎng)絡(luò),而還有大量其他結(jié)構(gòu)的模型應(yīng)用于不同的場景,如應(yīng)用于自然語言處理的長短期記憶模型(long short-term memory , LSTM)、用于知識圖譜領(lǐng)域的圖神經(jīng)網(wǎng)絡(luò)(group neural network , GNN)及對抗學(xué)習(xí)領(lǐng)域的生成對抗網(wǎng)絡(luò)(generative adversarial network , GAN)等,針對這些模型的壓縮加速方法需要對現(xiàn)有的方法進(jìn)行改進(jìn),有待進(jìn)一步研究。

3.5 軟硬件協(xié)同設(shè)計(jì)

目前大多數(shù)模型壓縮加速算法僅從軟件層面對模型進(jìn)行優(yōu)化,并未考慮硬件平臺(tái)是否支持其特殊的運(yùn)算,這導(dǎo)致了算法僅僅壓縮模型而不能加速模型。如大多數(shù)硬件中算數(shù)邏輯單元(arithmetic and logic unit , ALU)的數(shù)據(jù)位寬固定,對于不同量化位寬的模型計(jì)算并不能很好地支持,往往需要符號位拓展才能適配,業(yè)界常用INT8量化作為取舍;此外,大多數(shù)硬件對非結(jié)構(gòu)化剪枝后的稀疏化矩陣的計(jì)算并不支持,而非結(jié)構(gòu)化剪枝能夠細(xì)粒度地剔除冗余參數(shù),在模型壓縮的同時(shí)保持模型精度,業(yè)界常用結(jié)構(gòu)化通道剪枝作為取舍?;谏鲜霈F(xiàn)象,軟硬件協(xié)同設(shè)計(jì)在一開始就考慮軟硬件的功能劃分和適配問題,能夠減少產(chǎn)品的迭代次數(shù)、加快上市時(shí)間,是未來業(yè)界的研究熱點(diǎn)。

猜你喜歡
剪枝輕量化神經(jīng)網(wǎng)絡(luò)
人到晚年宜“剪枝”
汽車輕量化集成制造專題主編
基于YOLOv4-Tiny模型剪枝算法
神經(jīng)網(wǎng)絡(luò)抑制無線通信干擾探究
一種輕量化自卸半掛車結(jié)構(gòu)設(shè)計(jì)
一種輕量化自卸半掛車結(jié)構(gòu)設(shè)計(jì)
剪枝
瞄準(zhǔn)掛車輕量化 鑼響掛車正式掛牌成立
基于神經(jīng)網(wǎng)絡(luò)的拉矯機(jī)控制模型建立
復(fù)數(shù)神經(jīng)網(wǎng)絡(luò)在基于WiFi的室內(nèi)LBS應(yīng)用