亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        深度學(xué)習(xí)模型壓縮與加速綜述*

        2021-05-18 11:28:28田育龍許封元
        軟件學(xué)報 2021年1期
        關(guān)鍵詞:效果方法模型

        高 晗,田育龍,許封元,仲 盛

        (計算機(jī)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室(南京大學(xué)),江蘇 南京 210023)

        深度學(xué)習(xí)模型的壓縮和加速是指利用神經(jīng)網(wǎng)絡(luò)參數(shù)的冗余性和網(wǎng)絡(luò)結(jié)構(gòu)的冗余性精簡模型,在不影響任務(wù)完成度的情況下,得到參數(shù)量更少、結(jié)構(gòu)更精簡的模型.被壓縮后的模型計算資源需求和內(nèi)存需求更小,相比原始模型能夠滿足更加廣泛的應(yīng)用需求.

        本文系統(tǒng)地介紹模型壓縮與加速方面的進(jìn)展.第1 節(jié)主要介紹深度學(xué)習(xí)模型壓縮與加速技術(shù)提出的研究背景和研究動機(jī),以及本文的主要貢獻(xiàn).第2 節(jié)主要對目前主流的模型壓縮與加速方法進(jìn)行分類總結(jié),從參數(shù)剪枝、參數(shù)量化、緊湊網(wǎng)絡(luò)、知識蒸餾、低秩分解、參數(shù)共享、混合方式這7 個方面探究相關(guān)技術(shù)的發(fā)展歷程,并分析其特點(diǎn).第3 節(jié)主要比較各類壓縮與加速技術(shù)中一些代表性方法的壓縮效果.第4 節(jié)探討模型壓縮與加速領(lǐng)域未來的發(fā)展方向.第5 節(jié)對全文進(jìn)行總結(jié).

        1 簡介

        1.1 研究背景

        神經(jīng)網(wǎng)絡(luò)的概念在20 世紀(jì)40 年代提出后,發(fā)展一直不溫不火.直到1989 年,LeCun 教授提出應(yīng)用于手寫字體識別的卷積神經(jīng)網(wǎng)絡(luò)[1],取得了良好效果,才使其得到更廣泛的發(fā)展和關(guān)注.卷積神經(jīng)網(wǎng)絡(luò)(CNN)的得名即來自于其使用了卷積運(yùn)算的結(jié)果.如圖1 所示,特征圖(feature map)是輸入數(shù)據(jù)的中間抽象表示結(jié)果,輸入特征圖(input feature map)是由Cin個Hin×Win的2D 輸入特征圖組合而成,每一個濾波器(filter)與輸入特征圖的通道數(shù)相同,由Cin個d×d的卷積核(kernel)構(gòu)成,輸出特征圖(output feature map)的每個通道(channel)都是由輸入特征圖與每一個filter 通過卷積運(yùn)算而得到.但是由于當(dāng)時數(shù)據(jù)集規(guī)模較小,容易出現(xiàn)過擬合問題,卷積神經(jīng)網(wǎng)絡(luò)并沒有引起足夠的重視.隨著大數(shù)據(jù)時代的到來,數(shù)據(jù)集的規(guī)模不斷擴(kuò)大,計算硬件,特別是GPU 的飛速發(fā)展,神經(jīng)網(wǎng)絡(luò)重新獲得關(guān)注.2009 年,Deng 等人發(fā)布當(dāng)時世界上最大的通用物體識別數(shù)據(jù)庫——ImageNet 數(shù)據(jù)庫[2].從2010年開始,每年都會舉辦基于該數(shù)據(jù)庫的大規(guī)模圖像識別比賽——ILSVRC[3].2012 年,Hinton 的研究小組采用深度學(xué)習(xí)模型AlexNet[4]贏得了該比賽,突破性地將錯誤率從26.2%降到15.3%.此后,深度學(xué)習(xí)模型開始廣泛用于人工智能的各個領(lǐng)域,在許多任務(wù)中得到了超越人類的正確率,在自動駕駛、醫(yī)療影像分析、智能家居等領(lǐng)域給予人們的生產(chǎn)和生活以更大的幫助.

        Fig.1 Convolutional operator圖1 卷積計算

        深度學(xué)習(xí)模型性能提高的同時,計算也越來越復(fù)雜,計算開銷和內(nèi)存需求逐漸增加.僅8 層的AlexNet[4]需要0.61 億個網(wǎng)絡(luò)參數(shù)和7.29 億次浮點(diǎn)型計算,花費(fèi)約233MB 內(nèi)存.隨后的VGG-16[5]的網(wǎng)絡(luò)參數(shù)達(dá)到1.38 億,浮點(diǎn)型計算次數(shù)為1.56 億,需要約553MB 內(nèi)存.為了克服深層網(wǎng)絡(luò)的梯度消失問題,He 提出了ResNet[6]網(wǎng)絡(luò),首次在ILSVRC 比賽[3]中實(shí)現(xiàn)了低于5%的top-5 分類錯誤,偏淺的ResNet-50 網(wǎng)絡(luò)參數(shù)就達(dá)到0.25 億,浮點(diǎn)型計算次數(shù)高達(dá)3.9 億,內(nèi)存花費(fèi)約102MB.龐大的網(wǎng)絡(luò)參數(shù)意味著更大的內(nèi)存存儲,而增長的浮點(diǎn)型計算次數(shù)意味著訓(xùn)練成本和計算時間的增長,這極大地限制了在資源受限設(shè)備,例如智能手機(jī)、智能手環(huán)等上的部署.如表1 所示,深度模型在Samsung Galaxy S6 的推理時間遠(yuǎn)超Titan X 桌面級顯卡,實(shí)時性較差,無法滿足實(shí)際應(yīng)用的需要.

        Table 1 Inference time of different deep models[7] (unit:ms)表1 不同深度模型的推理時間[7] (單位:毫秒)

        在深度學(xué)習(xí)技術(shù)日益火爆的背景下,對深度學(xué)習(xí)模型強(qiáng)烈的應(yīng)用需求使得人們對內(nèi)存占用少、計算資源要求低、同時依舊保證相當(dāng)高的正確率的“小模型”格外關(guān)注.利用神經(jīng)網(wǎng)絡(luò)的冗余性進(jìn)行深度學(xué)習(xí)的模型壓縮和加速引起了學(xué)術(shù)界和工業(yè)界的廣泛興趣,各種工作層出不窮.

        1.2 研究動機(jī)

        綜述能為讀者省去大量閱讀時間,以高屋建瓴的視角對該領(lǐng)域技術(shù)進(jìn)行了解.然而截止到目前,在技術(shù)不斷推陳出新的背景下,關(guān)于模型壓縮的綜述文章數(shù)量不多且年代久遠(yuǎn),分類簡單,難以展示新的趨勢和方法.表2 是本文與目前國內(nèi)外最新相關(guān)綜述進(jìn)行方法分類的種類以及與該分類下的文章數(shù)量進(jìn)行對比的情況,從中可以看出:無論是方法分類還是涉及到的文章數(shù)量,已有的綜述文章都難以展示新的趨勢,對參數(shù)剪枝、參數(shù)量化和緊湊網(wǎng)絡(luò)這3 類方法介紹得都較為粗略,對于混合方式這一新型加速方法未給出詳細(xì)介紹,不能滿足新進(jìn)入這一領(lǐng)域的初學(xué)者了解整體發(fā)展方向的需求.

        Table 2 Literature classification and quantity of the reviews表2 綜述的文獻(xiàn)分類與數(shù)量

        根據(jù)圖2 所示的文章發(fā)表年份來看,文獻(xiàn)[8-11]的最新文章發(fā)表于2017 年,對近年來熱門研究方向和新方法的介紹較少.

        Fig.2 Article publication time and quantity of the reviews圖2 綜述的文章發(fā)表時間與數(shù)量

        根據(jù)我們的最新整理,2018 年之后,發(fā)表在各大頂級會議上的文章達(dá)到64 篇,占本文統(tǒng)計文章總數(shù)的大約40%,其中,文獻(xiàn)[13]首先提出在裁剪權(quán)重時加入能耗、延遲等硬件限制作為優(yōu)化約束,為后續(xù)工作[14-16]提供了啟發(fā).Network Trimming[17]將激活值為0 的通道數(shù)量作為判斷filter 是否重要的標(biāo)準(zhǔn),是結(jié)構(gòu)化剪枝領(lǐng)域最有影響力的工作,開創(chuàng)了設(shè)置filter 評價因子的技術(shù)分支.文獻(xiàn)[18]提出的依據(jù)參數(shù)對應(yīng)損失函數(shù)(loss)的梯度來自適應(yīng)確定每個參數(shù)量化位數(shù)的方法,打破了固有的手工確定量化位數(shù)的觀念,引領(lǐng)了新的自適應(yīng)量化技術(shù)體系.由此可以看出:近年來出現(xiàn)的熱門文章提供了不少新的研究方向,極大地促進(jìn)了模型壓縮與加速領(lǐng)域的發(fā)展,非常值得收錄到我們的綜述中,從而為讀者帶來新的思考.

        1.3 主要貢獻(xiàn)

        對比模型壓縮與加速領(lǐng)域已有的綜述文章,本文提出的技術(shù)分類更加齊全,收錄的文章更新穎、熱門,對于主流研究方向進(jìn)行了重點(diǎn)介紹和分析.本文調(diào)研了近年來發(fā)表在國際頂級會議上的近200 篇文章,對主流模型壓縮與加速方法分類進(jìn)行了總結(jié)和詳細(xì)分析;同時對一些具有代表性的方法在公開模型上進(jìn)行了性能對比,探討了模型壓縮與加速領(lǐng)域未來的研究方向.希望本文能給研究者對模型壓縮與加速領(lǐng)域有一個全面的了解,抓住熱門研究方向,推動未來模型壓縮與加速的研究,促進(jìn)深度學(xué)習(xí)模型的實(shí)際應(yīng)用.

        2 壓縮方法概覽

        本節(jié)主要介紹目前主流的模型壓縮與加速方法,見表3,從壓縮參數(shù)和壓縮結(jié)構(gòu)兩個角度可以將壓縮方法分成以下7 類.

        Table 3 Summarization of methods for deep learning models compression and acceleration表3 深度學(xué)習(xí)模型壓縮與加速方法總結(jié)

        2.1 參數(shù)剪枝

        參數(shù)剪枝是指在預(yù)訓(xùn)練好的大型模型的基礎(chǔ)上,設(shè)計對網(wǎng)絡(luò)參數(shù)的評價準(zhǔn)則,以此為根據(jù)刪除“冗余”參數(shù).根據(jù)剪枝粒度粗細(xì),參數(shù)剪枝可分為非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝.非結(jié)構(gòu)化剪枝的粒度比較細(xì),可以無限制地去掉網(wǎng)絡(luò)中期望比例的任何“冗余”參數(shù),但這樣會帶來裁剪后網(wǎng)絡(luò)結(jié)構(gòu)不規(guī)整、難以有效加速的問題.結(jié)構(gòu)化剪枝的粒度比較粗,剪枝的最小單位是filter 內(nèi)參數(shù)的組合,通過對filter 或者feature map 設(shè)置評價因子,甚至可以刪除整個filter 或者某幾個channel,使網(wǎng)絡(luò)“變窄”,從而可以直接在現(xiàn)有軟/硬件上獲得有效加速,但可能會帶來預(yù)測精度(accuracy)的下降,需要通過對模型微調(diào)(fine-tuning)以恢復(fù)性能.

        2.1.1 非結(jié)構(gòu)化剪枝

        LeCun 在20 世紀(jì)80 年代末提出的OBD(optimal brain damage)算法[19]使用loss 對參數(shù)求二階導(dǎo)數(shù),以判斷參數(shù)的重要程度.在此基礎(chǔ)上,Hassibi 等人不再限制于OBD 算法[19]的對角假設(shè),提出了OBS(optimal brain surgeon)算法[20],除了將次重要權(quán)重值置0 以外,還重新計算其他權(quán)重值以補(bǔ)償激活值,壓縮效果更好.與OBS 算法[20]類似,Srinivas 等人[21]提出了刪除全連接層稠密的連接,不依賴訓(xùn)練數(shù)據(jù),極大地降低了計算復(fù)雜度.最近,Dong 等人[22]提出了逐層OBS 算法,每一層都基于逐層loss 函數(shù)對相應(yīng)參數(shù)的二階導(dǎo)數(shù)獨(dú)立剪枝,修剪后,經(jīng)過輕量再訓(xùn)練以恢復(fù)性能.

        如圖3 所示,卷積層和全連接層的輸入與輸出之間都存在稠密的連接,對神經(jīng)元之間的連接重要性設(shè)計評價準(zhǔn)則,刪除冗余連接,可達(dá)到模型壓縮的目的.Han 等人[23]提出:根據(jù)神經(jīng)元連接權(quán)值的范數(shù)值大小,刪除范數(shù)值小于指定閾值的連接,可重新訓(xùn)練恢復(fù)性能.為了避免錯誤刪除重要連接,Guo 等人[24]提出了DNS(dynamic network surgery)方法,恢復(fù)被誤刪的重要連接.Lin 等人[25]利用生物學(xué)上的神經(jīng)突觸概念,定義突觸強(qiáng)度為Batch Normalization(BN)層放縮因子γ和filter 的Frobinus 范數(shù)的乘積,用突觸強(qiáng)度來表示神經(jīng)元之間連接的重要性.不同于其他方法在預(yù)訓(xùn)練模型上做剪枝,Lee 等人提出的SNIP(single-shot network pruning)方法[26]在模型初始化階段,通過對訓(xùn)練集多次采樣判斷連接的重要性,生成剪枝模板再進(jìn)行訓(xùn)練,無需迭代進(jìn)行剪枝-微調(diào)的過程.

        Fig.3 Pruning connections圖3 裁剪連接

        除了對神經(jīng)元之間的連接進(jìn)行評估以外,也可以如圖4 所示,直接對神經(jīng)元權(quán)重進(jìn)行評估,相比原始權(quán)重,3個 filter 各自進(jìn)行權(quán)重置零操作(即刪去某幾個小方塊),置零的神經(jīng)元可能各不相同.行列式點(diǎn)過程(determinantal point process,簡稱DPP)[27]常用來解決機(jī)器學(xué)習(xí)中的子集選擇問題,Mariet 等人[28]將DPP 應(yīng)用于神經(jīng)元的選擇,再通過重新加權(quán)將刪除神經(jīng)元的信息直接融合到剩余神經(jīng)元中,這種方法不需要再微調(diào)模型.受Kingma 等人提出的變分dropout 技術(shù)[29]的啟發(fā),Molchanov 等人[30]將其用于模型壓縮,同時對卷積層和全連接層進(jìn)行稀疏化.另外,正則化項(xiàng)作為機(jī)器學(xué)習(xí)中l(wèi)oss 函數(shù)的懲罰項(xiàng)常用于對某些參數(shù)進(jìn)行限制,所以關(guān)于權(quán)重參數(shù)的正則化項(xiàng)也可以用于懲罰次重要參數(shù)的存在,達(dá)到模型壓縮的目的.由于參數(shù)的L0 范數(shù)不可微分,很難與loss 共同優(yōu)化,Louizos 等人[31]對權(quán)重設(shè)置非負(fù)隨機(jī)門來決定哪些權(quán)重設(shè)置為0,轉(zhuǎn)化為可微問題,門上參數(shù)可以與原始網(wǎng)絡(luò)參數(shù)共同優(yōu)化.Tartaglione 等人[32]量化權(quán)重參數(shù)對于輸出的敏感度,將其作為正則化項(xiàng),逐漸降低敏感度較低的參數(shù)值.延遲、能耗等硬件約束條件也可以作為模型壓縮的懲罰項(xiàng),Chen 等人[13]引入硬件約束(例如延遲),使任務(wù)目標(biāo)(如分類精度)最大化,基于權(quán)重大小刪除范數(shù)值較低的權(quán)重.Yang 等人[14]利用加權(quán)稀疏投影和輸入遮蔽來提供可量化的能耗,將能耗預(yù)算作為網(wǎng)絡(luò)訓(xùn)練的優(yōu)化約束條件,并且由于手工設(shè)置的壓縮閾值對網(wǎng)絡(luò)的自適應(yīng)性不好,使用能恢復(fù)誤刪重要連接的動態(tài)剪枝法可獲得稀疏網(wǎng)絡(luò).Carreira-Perpinán 等人[33]提出交替使用“學(xué)習(xí)”和“壓縮”步驟,探索使loss 最小化的權(quán)重子集的方法.Liu 等人[34]證明卷積可以通過DCT 域乘法來實(shí)現(xiàn),然后對filter 的DCT 系數(shù)進(jìn)行動態(tài)剪枝.

        Fig.4 Parameter pruning圖4 參數(shù)剪枝

        2.1.2 結(jié)構(gòu)化剪枝

        (1)group 級別剪枝

        如圖4 所示,group 級別剪枝是指對每一層的filter 設(shè)置相同的稀疏模式(即圖中每個立方體都刪去相同位置的小方塊),變成結(jié)構(gòu)相同的稀疏矩陣.Wen 等人[35]利用group Lasso 回歸進(jìn)行正則化規(guī)約,探索filter、channel等不同層次的結(jié)構(gòu)稀疏性.Alvarez 等人[36]提出不需要預(yù)訓(xùn)練模型,加入組稀疏正則化項(xiàng),而是在網(wǎng)絡(luò)訓(xùn)練的同時自動選擇各層神經(jīng)元數(shù)目.Figurnov 等人[37]提出Perforatedcnns,使用不同策略遮蔽激活值,被遮蔽的值用鄰近值表示.Lebedev 等人[38]利用文獻(xiàn)[19]中提出的OBD 算法,將卷積操作視作矩陣乘法計算,以group 方式稀疏化卷積核,變?yōu)橄∈杈仃嚦朔?提高運(yùn)算速度.Zhou 等人[39]提出引入稀疏約束,減少最后一個全連接層的參數(shù)數(shù)量.

        (2)filter 級別剪枝

        filter 級別剪枝也可以看作channel 級別剪枝.如圖4 所示,刪去該層的某些filter(即圖中刪去整個立方體),相當(dāng)于刪去其產(chǎn)生的部分feature map 和原本需要與這部分feature map 進(jìn)行卷積運(yùn)算的下一層部分filter.對filter 的評價準(zhǔn)則可分為以下4 種.

        ? 基于filter 范數(shù)大小

        Li 等人[40]提出計算filter 的L1 范數(shù),過濾掉較小L1 范數(shù)的filter 對應(yīng)的feature map,剪枝后再訓(xùn)練.Yang等人[15]利用Chen 等人的工作[41]提出的模型能耗工具Eyeriss 計算每一層能耗,對能耗大的層優(yōu)先剪枝;同時,為了避免不正確的剪枝,保留剪枝后精確度下降最大的權(quán)重.Yang 等人在其另一項(xiàng)工作[42]中提出的Netadapt 同樣也是將硬件度量指標(biāo)(延遲和能耗等)作為剪枝評價準(zhǔn)則,但與文獻(xiàn)[15]不同的是:使用經(jīng)驗(yàn)度量來評估,不需要對平臺有詳細(xì)的了解.算法在移動平臺上自動迭代對預(yù)訓(xùn)練網(wǎng)絡(luò)進(jìn)行剪枝,直到滿足資源預(yù)算.He 等人[43]提出設(shè)置剪枝概率刪去L2 范數(shù)最小的幾個卷積核,即將該filter 置0.其特殊之處在于:每次訓(xùn)練完一個epoch 進(jìn)行剪枝,但在上一個epoch 中被剪枝的filter 在當(dāng)前epoch 訓(xùn)練時仍然參與迭代.

        ? 自定義filter 評分因子

        Hu 等人[17]提出了Network trimming 方法,他們認(rèn)為激活值為0 的神經(jīng)元是冗余的,所以統(tǒng)計每一個filter中激活值為0 的數(shù)量,將其作為判斷一個filter 是否重要的標(biāo)準(zhǔn).Liu 等人[44]根據(jù)BN 層放縮因子γ來判斷channel的重要性.Huang 等人的工作[45]可以看作是文獻(xiàn)[44]的泛化,引入了額外的放縮因子對channel 加以評價.Ye 等人[46]在文獻(xiàn)[45]的基礎(chǔ)上進(jìn)行優(yōu)化,提出了基于ISTA 和重標(biāo)技術(shù)的梯度學(xué)習(xí)算法.Dai 等人[47]提出了基于變分信息瓶頸剪枝方法,在每一層只提取與任務(wù)相關(guān)的信息,將冗余神經(jīng)元的激活值推向0.He 等人[48]利用強(qiáng)化學(xué)習(xí)(reinforcement learning)提供壓縮策略,相比于手動啟發(fā)式方法,效果更好.

        ? 最小化重建誤差

        設(shè)神經(jīng)網(wǎng)絡(luò)中某一卷積層權(quán)重為W,通道數(shù)為C,輸入為X,輸出為Y,忽略偏置項(xiàng)B,則有:

        令:

        則有:

        令S作為從C個通道中取得的最優(yōu)子集,裁剪過程其實(shí)就是使子集S的最終輸出與原始C個通道的最終輸出Y的差別最小.即:

        Luo 等人[49]提出了Thinet,“貪婪地”剪去對下一層激活值影響最小的channel.He 等人[50]并沒有像文獻(xiàn)[49]那樣直接使用貪心策略,而是通過Lasso 回歸對channel 進(jìn)行選擇性刪除,然后利用最小二乘法重構(gòu)feature map.Yu 等人[51]定義最后一個與softmax 層相連的hidden layer 為final response layer(FRL),通過特征選擇器來確定各個特征的重要性得分,反向傳播,得到整個網(wǎng)絡(luò)各層的得分,再根據(jù)裁剪比率進(jìn)行裁剪.裁剪的原則是,FRL 輸出的重建誤差最小.Zhuang 等人[52]引入額外的識別感知loss,輔助選擇真正有助于識別的channel,聯(lián)合重建誤差共同優(yōu)化.

        ? 其他方法

        Molchanov 等人[53]將剪枝問題當(dāng)作一個優(yōu)化問題,從權(quán)重參數(shù)中選擇一個最優(yōu)組合,使得loss 的損失最小,認(rèn)為剪枝后預(yù)測精度衰減小的參數(shù)是不重要的.Lin 等人[54]工作的獨(dú)特之處在于:能夠全局性地評估各個filter的重要度,動態(tài)地、迭代地剪枝,并且能夠重新調(diào)用之前迭代中錯誤剪枝的filter.Zhang 等人[55]將剪枝問題視為具有組合約束條件的非凸優(yōu)化問題,利用交替方向乘法器(ADMM)分解為兩個子問題,可分別用SGD 和解析法求解.Yang 等人[16]的工作與文獻(xiàn)[55]的工作相比,加入能耗作為約束條件,通過雙線性回歸函數(shù)進(jìn)行建模.

        2.2 參數(shù)量化

        參數(shù)量化是指用較低位寬表示典型的32 位浮點(diǎn)網(wǎng)絡(luò)參數(shù),網(wǎng)絡(luò)參數(shù)包括權(quán)重、激活值、梯度和誤差等等,可以使用統(tǒng)一的位寬(如16-bit、8-bit、2-bit 和1-bit 等),也可以根據(jù)經(jīng)驗(yàn)或一定策略自由組合不同的位寬.參數(shù)量化的優(yōu)點(diǎn)是:(1)能夠顯著減少參數(shù)存儲空間與內(nèi)存占用空間,將參數(shù)從32 位浮點(diǎn)型量化到8 位整型,從而縮小75%的存儲空間,這對于計算資源有限的邊緣設(shè)備和嵌入式設(shè)備進(jìn)行深度學(xué)習(xí)模型的部署和使用都有很大的幫助;(2)能夠加快運(yùn)算速度,降低設(shè)備能耗,讀取32 位浮點(diǎn)數(shù)所需的帶寬可以同時讀入4 個8 位整數(shù),并且整型運(yùn)算相比浮點(diǎn)型運(yùn)算更快,自然能夠降低設(shè)備功耗.但其仍存在一定的局限性,網(wǎng)絡(luò)參數(shù)的位寬減少損失了一部分信息量,會造成推理精度的下降,雖然能夠通過微調(diào)恢復(fù)部分精確度,但也帶來時間成本的增加;量化到特殊位寬時,很多現(xiàn)有的訓(xùn)練方法和硬件平臺不再適用,需要設(shè)計專用的系統(tǒng)架構(gòu),靈活性不高.

        2.2.1 二值化

        二值化是指限制網(wǎng)絡(luò)參數(shù)取值為1 或-1,極大地降低了模型對存儲空間和內(nèi)存空間的需求,并且將原來的乘法操作轉(zhuǎn)化成加法或者移位操作,顯著提高了運(yùn)算速度,但同時也帶來訓(xùn)練難度和精度下降的問題.

        (1)二值化權(quán)重

        由于權(quán)重占據(jù)網(wǎng)絡(luò)參數(shù)的大部分,一些研究者提出對網(wǎng)絡(luò)權(quán)重進(jìn)行二值化,以達(dá)到壓縮網(wǎng)絡(luò)的目的.Courbariaux 等人[56]提出了Binaryconnect,將二值化策略用于前向計算和反向傳播,但在使用隨機(jī)梯度更新法(SGD)更新參數(shù)時,仍需使用較高位寬.Hou 等人[57]提出一種直接考慮二值化權(quán)重對loss 產(chǎn)生影響的二值化算法,采用對角海森近似的近似牛頓算法得到二值化權(quán)重.Xu 等人[58]提出局部二值卷積(LBC)來替代傳統(tǒng)卷積,LBC 由一個不可學(xué)習(xí)的預(yù)定義filter、一個非線性激活函數(shù)和一部分可以學(xué)習(xí)的權(quán)重組成,其組合達(dá)到與激活的傳統(tǒng)卷積filter 相同的效果.Guo 等人[59]提出了Network sketching 方法,使用二值權(quán)重共享的卷積,即:對于同層的卷積運(yùn)算(即擁有相同輸入),保留前一次卷積的結(jié)果,卷積核的相同部分直接復(fù)用結(jié)果.McDonnell 等人[60]將符號函數(shù)作為實(shí)現(xiàn)二值化的方法.Hu 等人[61]通過哈希將數(shù)據(jù)投影到漢明空間,將學(xué)習(xí)二值參數(shù)的問題轉(zhuǎn)化為一個在內(nèi)積相似性下的哈希問題.

        (2)二值化權(quán)重和激活值

        在二值化網(wǎng)絡(luò)權(quán)重的基礎(chǔ)上,研究人員提出可以同時二值化權(quán)重和激活值,以加快推理速度.Courbariaux 等人[62]首先提出了Binarized neural network(BNN),將權(quán)重和激活值量化到±1.Rastegari 等人[63]在文獻(xiàn)[62]的基礎(chǔ)上提出了Xnor-net,將卷積通過xnor 和位操作實(shí)現(xiàn),從頭訓(xùn)練一個二值化網(wǎng)絡(luò).Li 等人[64]在Xnor-net[63]的基礎(chǔ)上改進(jìn)其激活值量化,提出了High-order residual quantization(HORQ)方法.Liu 等人[65]提出了Bi-real net,針對Xnor-net[63]進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)和訓(xùn)練優(yōu)化.Lin 等人[66]提出了ABC-Net,用多個二值操作加權(quán)來擬合卷積操作.

        2.2.2 三值化

        三值化是指在二值化的基礎(chǔ)上引入0 作為第3 閾值,減少量化誤差.Li 等人[67]提出了三元權(quán)重網(wǎng)絡(luò)TWN,將權(quán)重量化為{-w,0,+w}.不同于傳統(tǒng)的1 或者權(quán)重均值,Zhu 等人[68]提出了Trained ternary quantization(TTQ),使用兩個可訓(xùn)練的全精度放縮系數(shù),將權(quán)重量化到{-wn,0,wp},權(quán)重不對稱使網(wǎng)絡(luò)更靈活.Achterhold 等人[69]提出了Variational network quantization(VNQ),將量化問題形式化為一個變分推理問題.引入量化先驗(yàn),最后可以用確定性量化值代替權(quán)值.

        2.2.3 聚類量化

        當(dāng)參數(shù)數(shù)量龐大時,可利用聚類方式進(jìn)行權(quán)重量化.Gong 等人[70]最早提出將k-means 聚類用于量化全連接層參數(shù),如圖5 所示,對原始權(quán)重聚類形成碼本,為權(quán)值分配碼本中的索引,所以只需存儲碼本和索引,無需存儲原始權(quán)重信息.Wu 等人[71]將k-means 聚類拓展到卷積層,將權(quán)值矩陣劃分成很多塊,再通過聚類獲得碼本,并提出一種有效的訓(xùn)練方案抑制量化后的多層累積誤差.Choi 等人[72]分析了量化誤差與loss 的定量關(guān)系,確定海森加權(quán)失真測度是量化優(yōu)化的局部正確目標(biāo)函數(shù),提出了基于海森加權(quán)k-means 聚類的量化方法.Xu 等人[73]提出了分別針對不同位寬的Single-level network quantization(SLQ)和Multi-level network quantization(MLQ)兩種方法,SLQ 方法針對高位寬,利用k-means 聚類將權(quán)重分為幾簇,依據(jù)量化loss,將簇分為待量化組和再訓(xùn)練組,待量化組的每個簇用簇內(nèi)中心作為共享權(quán)重,剩下的參數(shù)再訓(xùn)練.而MLQ 方法針對低位寬,不同于SLQ 方法一次量化所有層,MLQ 方法采用逐層量化的方式.

        Fig.5 Flow chart of clustering quantization圖5 聚類量化流程圖

        2.2.4 混合位寬

        (1)手工固定

        由于二值網(wǎng)絡(luò)會降低模型的表達(dá)能力,研究人員提出,可以根據(jù)經(jīng)驗(yàn)手工選定最優(yōu)的網(wǎng)絡(luò)參數(shù)位寬組合.Lin 等人[74]在BNN[62]的基礎(chǔ)上,提出把32-bit 權(quán)重概率性地轉(zhuǎn)換為二元和三元值的組合.Zhou 等人[75]提出了DoReFa-Net,將權(quán)重和激活值分別量化到1-bit 和2-bit.Mishra 等人[76]提出了WRPN,將權(quán)重和激活值分別量化到2-bit 和4-bit.K?ster 等人[77]提出的Flexpoint 向量有一個可動態(tài)調(diào)整的共享指數(shù),證明16 位尾數(shù)和5 位共享指數(shù)的Flexpoint 向量表示在不修改模型及其超參數(shù)的情況下,性能更優(yōu).Wang 等人[78]使用8 位浮點(diǎn)數(shù)進(jìn)行網(wǎng)絡(luò)訓(xùn)練,部分乘積累加和權(quán)重更新向量的精度從32-bit 降低到16-bit,達(dá)到與32-bit 浮點(diǎn)數(shù)基線相同的精度水平.除了權(quán)重和激活值,研究者們將梯度和誤差也作為可優(yōu)化的因素.這些同時考慮了權(quán)重、激活值、梯度和誤差的方法的量化位數(shù)和特點(diǎn)對比可見表4.表中的W、A、G和E分別代表權(quán)重、激活值、梯度和誤差.

        Table 4 Comparison of several mixed bit-width quantization methods表4 幾種混合位寬量化法對比

        (2)自主確定

        由于手工確定網(wǎng)絡(luò)參數(shù)位寬存在一定的局限性,可以設(shè)計一定的策略,以幫助網(wǎng)絡(luò)選擇合適的位寬組合.Khoram 等人[18]迭代地使用loss 的梯度來確定每個參數(shù)的最優(yōu)位寬,使得只有對預(yù)測精度重要的參數(shù)才有高精度表示.Wang 等人[84]提出兩步量化方法:先量化激活值再量化權(quán)重.針對激活值量化,提出了稀疏量化方法.對于權(quán)重量化,將其看成非線性最小二乘回歸問題.Faraone 等人[85]提出了基于梯度的對稱量化方法SYQ,設(shè)計權(quán)值二值化或三值化,并在pixel 級別、row 級別和layer 級別定義不同粒度的縮放因子以估計網(wǎng)絡(luò)權(quán)重;至于激活值,則量化為2-bit 到8-bit 的定點(diǎn)數(shù).Zhang 等人[86]提出了Learned quantization(LQ-nets),使量化器可以與網(wǎng)絡(luò)聯(lián)合訓(xùn)練,自適應(yīng)地學(xué)習(xí)最佳量化位寬.

        2.2.5 訓(xùn)練技巧

        由于量化網(wǎng)絡(luò)的網(wǎng)絡(luò)參數(shù)不是連續(xù)的數(shù)值,所以不能像普通的卷積神經(jīng)網(wǎng)絡(luò)那樣直接使用梯度下降方法進(jìn)行訓(xùn)練,而需要特殊的方法對這些離散的參數(shù)值進(jìn)行處理,使其不斷優(yōu)化,最終實(shí)現(xiàn)訓(xùn)練目標(biāo).Zhou 等人[87]提出了一種增量式網(wǎng)絡(luò)量化方法INQ,先對權(quán)重進(jìn)行劃分,將對預(yù)測精度貢獻(xiàn)小的權(quán)重劃入量化組;然后通過再訓(xùn)練恢復(fù)性能.Cai 等人[88]提出了Halfwave Gaussian quantizer(HWGQ)方法,設(shè)計了兩個ReLU 非線性逼近器(前饋計算中的半波高斯量化器和反向傳播的分段連續(xù)函數(shù)),以訓(xùn)練低精度的深度學(xué)習(xí)網(wǎng)絡(luò).Leng 等人[89]提出,利用ADMM[90]解決低位寬網(wǎng)絡(luò)訓(xùn)練問題.Zhuang 等人[91]針對低位寬卷積神經(jīng)網(wǎng)絡(luò)提出3 種訓(xùn)練技巧,以期得到較高精度.Zhou 等人[92]提出一種顯式的loss-error-aware 量化方法,綜合考慮優(yōu)化過程中的loss 擾動和權(quán)值近似誤差,采用增量量化策略.Park 等人[93]提出了價值感知量化方法來降低訓(xùn)練中的內(nèi)存成本和推理中的計算/內(nèi)存成本,并且提出一種僅在訓(xùn)練過程中使用量化激活值的量化反向傳播方法.Shayer 等人[94]展示了如何通過對局部再參數(shù)化技巧的簡單修改,來實(shí)現(xiàn)離散權(quán)值的訓(xùn)練.該技巧以前用于訓(xùn)練高斯分布權(quán)值.Louizos 等人[95]引入一種可微的量化方法,將網(wǎng)絡(luò)的權(quán)值和激活值的連續(xù)分布轉(zhuǎn)化為量化網(wǎng)格上的分類分布,隨后被放寬到連續(xù)代理,可以允許有效的基于梯度的優(yōu)化.

        2.3 低秩分解

        神經(jīng)網(wǎng)絡(luò)的filter 可以看作是四維張量:寬度w×高度h×通道數(shù)c×卷積核數(shù)n,由于c和n對網(wǎng)絡(luò)結(jié)構(gòu)的整體影響較大,所以基于卷積核(w×h)矩陣信息冗余的特點(diǎn)及其低秩特性,可以利用低秩分解方法進(jìn)行網(wǎng)絡(luò)壓縮.低秩分解是指通過合并維數(shù)和施加低秩約束的方式稀疏化卷積核矩陣,由于權(quán)值向量大多分布在低秩子空間,所以可以用少數(shù)的基向量來重構(gòu)卷積核矩陣,達(dá)到縮小存儲空間的目的.低秩分解方法在大卷積核和中小型網(wǎng)絡(luò)上有不錯的壓縮和加速效果,過去的研究已經(jīng)比較成熟,但近兩年已不再流行.原因在于:除了矩陣分解操作成本高、逐層分解不利于全局參數(shù)壓縮,需要大量的重新訓(xùn)練才能達(dá)到收斂等問題之外,近兩年提出的新網(wǎng)絡(luò)越來越多地采用1×1 卷積,這種小卷積核不利于低秩分解方法的使用,很難實(shí)現(xiàn)網(wǎng)絡(luò)壓縮與加速.

        2.3.1 二元分解

        Jaderberg 等人[96]將w×h的卷積核分解為w×1 和1×h的卷積核,學(xué)習(xí)到的字典權(quán)重線性組合重構(gòu),得到輸出feature map.Liu 等人[97]使用兩階段分解法研究filter 的通道間和通道內(nèi)冗余.Tai 等人[98]提出一種計算低秩張量分解的新算法,利用BN 層轉(zhuǎn)換內(nèi)部隱藏單元的激活.Masana 等人[99]主要解決在大數(shù)據(jù)集上訓(xùn)練的網(wǎng)絡(luò)在小目標(biāo)域的使用問題,證明在壓縮權(quán)重時考慮激活統(tǒng)計量,會導(dǎo)致一個具有閉型解的秩約束回歸問題.Wen 等人[100]提出了Force regularization,將更多權(quán)重信息協(xié)調(diào)到低秩空間中.Wang 等人[101]提出了定點(diǎn)分解,再通過偽全精度權(quán)重復(fù)原,權(quán)重平衡和微調(diào)恢復(fù)性能.與其他基于filter 空間或信道數(shù)的低秩分解算法不同,Peng 等人[102]的工作基于filter 組近似,達(dá)到降低參數(shù)冗余的目的.Qiu 等人[103]提出將filter 分解為帶預(yù)固定基的截斷展開,展開系數(shù)從數(shù)據(jù)中學(xué)習(xí).Novikov 等人[104]提出Tensor train 分解來壓縮全連接層的稠密權(quán)值矩陣,而Garipov 等人[105]將其推廣到卷積層.Wang 等人[106]提出了Tensor ring 分解,用于壓縮卷積層和全連接層.

        2.3.2 多元分解

        對filter 的二元分解會引入w×h×c×d張量和d×n張量,由于第1 個張量w×h×c×d很大并且耗時,三元分解提出對其進(jìn)行分解.Kim 等人[107]提出了Tucker 分解,對第1 個張量沿輸入通道維進(jìn)行二元分解,得到w×1、1×h和1×1 的卷積.由于第2 個分量d×n也需要大量計算,但其在輸入和輸出通道維數(shù)上的秩已經(jīng)很低,Wang 等人[108]提出了基于低秩和群稀疏分解的塊項(xiàng)分解(BTD),用一些較小的子張量之和近似原始權(quán)重張量.在三元分解的基礎(chǔ)上,Lebedev 等人[109]提出了CP 分解,即位tensor 分解,將四維卷積核分解成4 個:1×1、w×1、1×h和1×1的卷積,即,將1 層網(wǎng)絡(luò)分解為5 層低復(fù)雜度的網(wǎng)絡(luò)層.

        2.4 參數(shù)共享

        參數(shù)共享是指利用結(jié)構(gòu)化矩陣或聚類等方法映射網(wǎng)絡(luò)參數(shù),減少參數(shù)數(shù)量.參數(shù)共享方法的原理與參數(shù)剪枝類似,都是利用參數(shù)存在大量冗余的特點(diǎn),目的都是為了減少參數(shù)數(shù)量.但與參數(shù)剪枝直接裁剪不重要的參數(shù)不同,參數(shù)共享設(shè)計一種映射形式,將全部參數(shù)映射到少量數(shù)據(jù)上,減少對存儲空間的需求.由于全連接層參數(shù)數(shù)量較多,參數(shù)存儲占據(jù)整個網(wǎng)絡(luò)模型的大部分,所以參數(shù)共享對于去除全連接層冗余性能夠發(fā)揮較好的效果;也由于其操作簡便,適合與其他方法組合使用.但其缺點(diǎn)在于不易泛化,如何應(yīng)用于去除卷積層的冗余性仍是一個挑戰(zhàn).同時,對于結(jié)構(gòu)化矩陣這一常用映射形式,很難為權(quán)值矩陣找到合適的結(jié)構(gòu)化矩陣,并且其理論依據(jù)不夠充足.

        2.4.1 循環(huán)矩陣

        如果一個大小為m×n的矩陣能夠用少于m×n個參數(shù)來描述,這個矩陣就是一個結(jié)構(gòu)化矩陣.循環(huán)矩陣作為結(jié)構(gòu)化矩陣的一種,是參數(shù)共享法常用的一種映射形式.令向量:

        循環(huán)矩陣的每一行都是由上一行的各元素依次右移一個位置得到,即:

        Cheng 等人[110]提出用循環(huán)投影代替?zhèn)鹘y(tǒng)的線性投影.對于具有d個輸入節(jié)點(diǎn)和d個輸出節(jié)點(diǎn)的神經(jīng)網(wǎng)絡(luò)層,將時間復(fù)雜度從O(d2)降低到O(d×logd),空間復(fù)雜度從O(d2)降低到O(d).Wang 等人[111]利用循環(huán)矩陣來構(gòu)造特征圖,對filter 進(jìn)行重新配置,建立從原始輸入到新的壓縮特征圖的映射關(guān)系.Sindhwani 等人[112]提出一個統(tǒng)一的框架來學(xué)習(xí)以低位移秩(LDR)為特征的結(jié)構(gòu)參數(shù)矩陣.Zhao 等人[113]證明:具有LDR 權(quán)值矩陣的神經(jīng)網(wǎng)絡(luò),在保持較高精度的同時,可以顯著降低空間和計算復(fù)雜度.Le 等人[114]提出Fastfood 變換,通過一系列簡單矩陣的乘法來代替稠密矩陣與向量的乘積,這些簡單矩陣通過規(guī)則一次生成,后面無需調(diào)整.Yang 等人[115]在文獻(xiàn)[114]的基礎(chǔ)上提出自適應(yīng)Fastfood 變換,對全連接層的矩陣-向量乘法進(jìn)行重新參數(shù)化,替換成Fastfood 層.

        2.4.2 聚類共享

        Chen 等人[116,117]使用哈希函數(shù)將網(wǎng)絡(luò)參數(shù)隨機(jī)分組到哈希桶中,同一個桶的參數(shù)共享一個通過標(biāo)準(zhǔn)反向傳播學(xué)習(xí)到的值.Wu 等人[118]提出對權(quán)值進(jìn)行k-means 聚類,并引入一種新的頻譜松弛的k-means 正則化方法.Son 等人[119]將k-means 聚類應(yīng)用于3×3 卷積核,一個filter 用放縮因子×聚類中心來表示.

        2.4.3 其他方法

        Reagen 等人[120]提出了有損權(quán)值編碼方案Bloomier filter,以引入隨機(jī)誤差為代價來節(jié)省空間,利用神經(jīng)網(wǎng)絡(luò)的容錯能力進(jìn)行再訓(xùn)練.Havasi 等人[121]提出了放松權(quán)重決定論,使用權(quán)重上的全變分分布,實(shí)現(xiàn)更加有效的編碼方案,以提高壓縮率.Jin 等人[122]提出了Weight Sampling Network (WSNet),沿著空間維度和通道維度進(jìn)行加權(quán)采樣.Kossaifi 等人[123]提出了Tensorized-network(T-net),使用單個高階張量來參數(shù)化地表示整個網(wǎng)絡(luò).

        2.5 緊湊網(wǎng)絡(luò)

        以上4 種利用參數(shù)冗余性減少參數(shù)數(shù)量或者降低參數(shù)精度的方法雖然能夠精簡網(wǎng)絡(luò)結(jié)構(gòu),但往往需要龐大的預(yù)訓(xùn)練模型,在此基礎(chǔ)上進(jìn)行參數(shù)壓縮,并且這些方法大都存在精確度下降的問題,需要微調(diào)來提升網(wǎng)絡(luò)性能.設(shè)計更緊湊的新型網(wǎng)絡(luò)結(jié)構(gòu),是一種新興的網(wǎng)絡(luò)壓縮與加速理念,構(gòu)造特殊結(jié)構(gòu)的filter、網(wǎng)絡(luò)層甚至網(wǎng)絡(luò),從頭訓(xùn)練,獲得適宜部署到移動平臺等資源有限設(shè)備的網(wǎng)絡(luò)性能,不再需要像參數(shù)壓縮類方法那樣專門存儲預(yù)訓(xùn)練模型,也不需要通過微調(diào)來提升性能,降低了時間成本,具有存儲量小、計算量低和網(wǎng)絡(luò)性能好的特點(diǎn).但其缺點(diǎn)在于:由于其特殊結(jié)構(gòu)很難與其他的壓縮與加速方法組合使用,并且泛化性較差,不適合作為預(yù)訓(xùn)練模型幫助其他模型訓(xùn)練.

        2.5.1 卷積核級別

        (1)新型卷積核

        Iandola 等人[124]提出了Squeezenet,使用1×1 卷積代替3×3 卷積,為了減少feature map 的數(shù)量,將卷積層轉(zhuǎn)變成兩層:squeeze 層和 expand 層,減少了池化層.Howard 等人[125]提出了 MobileNet,將普通卷積拆分成depth-wise 卷積和point-wise 卷積,減少了乘法次數(shù).Sandler 等人[126]提出的MobileNetV2 相比MobileNet[125],在depth-wise 卷積之前多加了一個 1×1 expand 層以提升通道數(shù),獲得了更多的特征.Zhang 等人[127]提出了ShuffleNet,為克服point-wise 卷積的昂貴成本和通道約束,采用了逐點(diǎn)組卷積(point-wise group convolution)和通道混洗(channel shuffle)的方式.Ma 等人[128]提出的ShuffleNetV2 相比ShuffleNet[127],為了減少內(nèi)存訪問成本,提出了通道分割(channel split)這一概念.Zhang 等人[129]提出了交錯組卷積(IGC),引入第2 次組卷積,其每組輸入通道來自于第1 次組卷積中不同的組,從而與第1 次組卷積交替互補(bǔ).Xie 等人[130]在文獻(xiàn)[129]的基礎(chǔ)上進(jìn)行泛化,提出交錯的稀疏化組卷積,將兩個結(jié)構(gòu)化稀疏卷積核組成的構(gòu)建塊擴(kuò)展到多個.Wan 等人[131]提出了完全可學(xué)習(xí)的組卷積模塊(FLGC),可以嵌入任何深度神經(jīng)網(wǎng)絡(luò)進(jìn)行加速.Park 等人[132]提出了直接稀疏卷積,用于稠密的feature map 與稀疏的卷積核之間的卷積操作.Zhang 等人[133]證明:高性能的直接卷積在增加線程數(shù)時性能更好,消除了所有內(nèi)存開銷.

        (2)簡單filter 組合

        Ioannou 等人[134]提出了從零開始學(xué)習(xí)一組小的不同空間維度的基filter,在訓(xùn)練過程中,將這些基filter 組合成更復(fù)雜的filter.Bagherinezhad 等人[135]提出對每層構(gòu)建一個字典,每個filter 由字典中的某些向量線性組合得到.將輸入向量和整個字典里的向量進(jìn)行卷積,查表得到該輸入向量和filter 的卷積結(jié)果.Wang 等人[136]提出了構(gòu)建高效CNN 的通用filter,二級filter 從主filter 中繼承,通過整合從不同感受域提取的信息來增強(qiáng)性能.

        2.5.2 層級別

        Huang 等人[137]提出了隨機(jī)深度用于類似ResNet 含殘差連接的網(wǎng)絡(luò)的訓(xùn)練,對于每個mini-batch,隨機(jī)刪除block 子集,并用恒等函數(shù)繞過它們.Dong 等人[138]為每個卷積層配備一個低成本協(xié)同層(LCCL),預(yù)測哪些位置的點(diǎn)經(jīng)過ReLU 后會變成0,測試時忽略這些位置的計算.Li等人[139]將網(wǎng)絡(luò)層分為權(quán)重層(如卷積層和全連接層)和非權(quán)重層(如池化層、ReLU 層等),提出了將非權(quán)重層與權(quán)重層進(jìn)行合并的方法,去除獨(dú)立的非權(quán)重層后,運(yùn)行時間顯著減少.Prabhu 等人[140]使用同時稀疏且連接良好的圖來建模卷積神經(jīng)網(wǎng)絡(luò)filter 之間的連接.Wu 等人[141]通過平移feature map 的形式取代傳統(tǒng)的卷積,從而減小了計算量.Chen 等人[142]引入稀疏移位層(SSL)來構(gòu)造高效的卷積神經(jīng)網(wǎng)絡(luò).在該體系結(jié)構(gòu)中,基本塊僅由1×1 卷積層組成,對中間的feature map 只進(jìn)行少量的移位操作.

        2.5.3 網(wǎng)絡(luò)結(jié)構(gòu)級別

        Kim 等人[143]提出了SplitNet,自動學(xué)會將網(wǎng)絡(luò)層分成多組,獲得一個樹形結(jié)構(gòu)的網(wǎng)絡(luò),每個子網(wǎng)共享底層權(quán)重.Gordon 等人[144]提出了Morphnet,通過收縮和擴(kuò)展階段循環(huán)優(yōu)化網(wǎng)絡(luò):在收縮階段,通過稀疏正則化項(xiàng)識別效率低的神經(jīng)元從網(wǎng)絡(luò)中去除;在擴(kuò)展階段,使用寬度乘數(shù)來統(tǒng)一擴(kuò)展所有層的大小,所以含重要神經(jīng)元更多的層擁有更多計算資源.Kim 等人[145]提出了嵌套稀疏網(wǎng)絡(luò)NestedNet,每一層由多層次的網(wǎng)絡(luò)組成,高層次網(wǎng)絡(luò)與低層次網(wǎng)絡(luò)以Network in network (NIN)的方式共享參數(shù):低層次網(wǎng)絡(luò)學(xué)習(xí)公共知識,高層次網(wǎng)絡(luò)學(xué)習(xí)特定任務(wù)的知識.

        2.6 知識蒸餾

        知識蒸餾最早由Buciluǎ 等人[146]提出,用以訓(xùn)練帶有偽數(shù)據(jù)標(biāo)記的強(qiáng)分類器的壓縮模型和復(fù)制原始分類器的輸出.與其他壓縮與加速方法只使用需要被壓縮的目標(biāo)網(wǎng)絡(luò)不同,知識蒸餾法需要兩種類型的網(wǎng)絡(luò):教師模型和學(xué)生模型.預(yù)先訓(xùn)練好的教師模型通常是一個大型的神經(jīng)網(wǎng)絡(luò)模型,具有很好的性能.如圖6 所示,將教師模型的softmax 層輸出作為soft target 與學(xué)生模型的softmax 層輸出作為hard target 一同送入total loss 計算,指導(dǎo)學(xué)生模型訓(xùn)練,將教師模型的知識遷移到學(xué)生模型中,使學(xué)生模型達(dá)到與教師模型相當(dāng)?shù)男阅?學(xué)生模型更加緊湊高效,起到模型壓縮的目的.知識蒸餾法可使深層網(wǎng)絡(luò)變淺,極大地降低了計算成本,但也存在其局限性.由于使用softmax 層輸出作為知識,所以一般多用于具有softmax 損失函數(shù)的分類任務(wù),在其他任務(wù)的泛化性不好;并且就目前來看,其壓縮比與蒸餾后的模型性能還存在較大的進(jìn)步空間.

        Fig.6 Flow chart of knowledge distillation圖6 知識蒸餾流程圖

        2.6.1 學(xué)生模型的網(wǎng)絡(luò)結(jié)構(gòu)

        知識蒸餾法的研究方向之一就是如何為學(xué)生模型選擇合適的網(wǎng)絡(luò)結(jié)構(gòu),幫助學(xué)生模型更好地學(xué)習(xí)教師模型的知識.Ba 等人[147]提出:在保證教師模型和學(xué)生模型網(wǎng)絡(luò)參數(shù)數(shù)量相同的情況下,設(shè)計更淺的學(xué)生模型,每一層變得更寬.Romero 等人[148]與文獻(xiàn)[147]的觀點(diǎn)不同,他們認(rèn)為更深的學(xué)生模型分類效果更好,提出Fitnets 使用教師網(wǎng)絡(luò)的中間層輸出Hints,作為監(jiān)督信息訓(xùn)練學(xué)生網(wǎng)絡(luò)的前半部分.Chen 等人[149]提出使用生長式網(wǎng)絡(luò)結(jié)構(gòu),以復(fù)制的方式重用預(yù)訓(xùn)練的網(wǎng)絡(luò)參數(shù),在此基礎(chǔ)上進(jìn)行結(jié)構(gòu)拓展.Li 等人[150]與文獻(xiàn)[149]觀點(diǎn)一致,提出分別從寬度和深度上進(jìn)行網(wǎng)絡(luò)生長.Crowley 等人[151]提出將知識蒸餾與設(shè)計更緊湊的網(wǎng)絡(luò)結(jié)構(gòu)相結(jié)合,將原網(wǎng)絡(luò)作為教師模型,將使用簡化卷積的網(wǎng)絡(luò)作為學(xué)生模型.Zhu 等人[152]提出基于原始網(wǎng)絡(luò)構(gòu)造多分支結(jié)構(gòu),將每個分支作為學(xué)生網(wǎng)絡(luò),融合生成推理性能更強(qiáng)的教師網(wǎng)絡(luò).

        2.6.2 教師模型的學(xué)習(xí)信息

        除了使用softmax 層輸出作為教師模型的學(xué)習(xí)信息以外,有研究者認(rèn)為,可以使用教師模型中的其他信息幫助知識遷移.Hinton 等人[153]首先提出使用教師模型的類別概率輸出計算soft target,為了方便計算,還引入溫度參數(shù).Yim 等人[154]將教師模型網(wǎng)絡(luò)層之間的數(shù)據(jù)流信息作為學(xué)習(xí)信息,定義為兩層特征的內(nèi)積.Chen 等人[155]將教師模型在某一類的不同樣本間的排序關(guān)系作為學(xué)習(xí)信息傳遞給學(xué)生模型.

        2.6.3 訓(xùn)練技巧

        Czarnecki 等人[156]提出了Sobolev 訓(xùn)練方法,將目標(biāo)函數(shù)的導(dǎo)數(shù)融入到神經(jīng)網(wǎng)絡(luò)函數(shù)逼近器的訓(xùn)練中.當(dāng)訓(xùn)練數(shù)據(jù)由于隱私等問題對于學(xué)生模型不可用時,Lopes 等人[157]提出了如何通過extra metadata 來加以解決的方法.Zhou 等人[158]的工作主要有兩個創(chuàng)新點(diǎn):第一,不用預(yù)訓(xùn)練教師模型,而是教師模型和學(xué)生模型同時訓(xùn)練;第二,教師模型和學(xué)生模型共享網(wǎng)絡(luò)參數(shù).

        2.6.4 其他場景

        由于softmax 層的限制,知識蒸餾法被局限于分類任務(wù)的使用場景.但近年來,研究人員提出多種策略使其能夠應(yīng)用于其他深度學(xué)習(xí)場景.在目標(biāo)檢測任務(wù)中,Li 等人[159]提出了匹配proposal 的方法,Chen 等人[160]結(jié)合使用文獻(xiàn)[148,153]提出的方法,提升多分類目標(biāo)檢測網(wǎng)絡(luò)的性能.在解決人臉檢測任務(wù)時,Luo 等人[161]提出將更高隱層的神經(jīng)元作為學(xué)習(xí)知識,其與類別輸出概率信息量相同,但更為緊湊.Gupta 等人[162]提出了跨模態(tài)遷移知識的做法,將在RGB 數(shù)據(jù)集學(xué)習(xí)到的知識遷移到深度學(xué)習(xí)的場景中.Xu 等人[163]提出一種多任務(wù)指導(dǎo)預(yù)測和蒸餾網(wǎng)絡(luò)(PAD-net)結(jié)構(gòu),產(chǎn)生一組中間輔助任務(wù),為學(xué)習(xí)目標(biāo)任務(wù)提供豐富的多模態(tài)數(shù)據(jù).

        2.7 混合方式

        以上這些壓縮與加速方法單獨(dú)使用時能夠獲得很好的效果,但也都存在各自的局限性,組合使用可使它們互為補(bǔ)充.研究人員通過組合使用不同的壓縮與加速方法或者針對不同網(wǎng)絡(luò)層選取不同的壓縮與加速方法,設(shè)計了一體化的壓縮與加速框架,能夠獲得更好的壓縮比與加速效果.參數(shù)剪枝、參數(shù)量化、低秩分解和參數(shù)共享經(jīng)常組合使用,極大地降低了模型的內(nèi)存需求和存儲需求,方便模型部署到計算資源有限的移動平臺[164].知識蒸餾可以與緊湊網(wǎng)絡(luò)組合使用,為學(xué)生模型選擇緊湊的網(wǎng)絡(luò)結(jié)構(gòu),在保證壓縮比的同時,可提升學(xué)生模型的性能.混合方式能夠綜合各類壓縮與加速方法的優(yōu)勢,進(jìn)一步加強(qiáng)了壓縮與加速效果,將會是未來在深度學(xué)習(xí)模型壓縮與加速領(lǐng)域的重要研究方向.

        2.7.1 組合參數(shù)剪枝和參數(shù)量化

        Ullrich 等人[165]基于Soft weight sharing 的正則化項(xiàng),在模型再訓(xùn)練過程中實(shí)現(xiàn)了參數(shù)量化和參數(shù)剪枝.Tung 等人[166]提出了參數(shù)剪枝和參數(shù)量化的一體化壓縮與加速框架 Compression learning by in parallel pruning-quantization(CLIP-Q).如圖7 所示,Han 等人[167]提出了Deep compression,將參數(shù)剪枝、參數(shù)量化和哈夫曼編碼相結(jié)合,達(dá)到了很好的壓縮效果;并在其基礎(chǔ)上考慮到軟/硬件的協(xié)同壓縮設(shè)計,提出了Efficient inference engine(Eie)框架[168].Dubey 等人[169]同樣利用這3 種方法的組合進(jìn)行網(wǎng)絡(luò)壓縮.

        Fig.7 Flow chart of Deep Compression[167]圖7 Deep Compression[167]流程圖

        2.7.2 組合參數(shù)剪枝和參數(shù)共享

        Louizos 等人[170]采用貝葉斯原理,通過先驗(yàn)分布引入稀疏性對網(wǎng)絡(luò)進(jìn)行剪枝,使用后驗(yàn)不確定性確定最優(yōu)的定點(diǎn)精度來編碼權(quán)重.Ji 等人[171]通過重新排序輸入/輸出維度進(jìn)行剪枝,并將具有小值的不規(guī)則分布權(quán)重聚類到結(jié)構(gòu)化組中,實(shí)現(xiàn)更好的硬件利用率和更高的稀疏性.Zhang 等人[172]不僅采用正則化器鼓勵稀疏性,同時也學(xué)習(xí)哪些參數(shù)組應(yīng)共享一個公共值以顯式地識別出高度相關(guān)的神經(jīng)元.

        2.7.3 組合參數(shù)量化和知識蒸餾

        Polino 等人[173]提出了加入知識蒸餾loss 的量化訓(xùn)練方法,有浮點(diǎn)模型和量化模型,用量化模型計算前向loss,并對其計算梯度,用以更新浮點(diǎn)模型.每次前向計算之前,用更新的浮點(diǎn)模型更新量化模型.Mishra 等人[174]提出用高精度教師模型指導(dǎo)低精度學(xué)生模型的訓(xùn)練,有3 種思路:教師模型和量化后的學(xué)生模型聯(lián)合訓(xùn)練;預(yù)訓(xùn)練的教師模型指導(dǎo)量化的學(xué)生模型從頭開始訓(xùn)練;教師模型和學(xué)生模型都進(jìn)行了預(yù)訓(xùn)練,但學(xué)生模型已經(jīng)量化,之后在教師模型的指導(dǎo)下再進(jìn)行微調(diào).

        3 壓縮效果比較

        我們從以上介紹的7 種主流網(wǎng)絡(luò)壓縮技術(shù)中選出其中一些具有代表性的方法,按照文獻(xiàn)中聲明的壓縮與加速效果進(jìn)行對比.通過對相關(guān)文獻(xiàn)中使用較多的數(shù)據(jù)集和模型的統(tǒng)計,我們使用MNIST[175]、CIFAR-10[176]和ImageNet[177]這三大常用數(shù)據(jù)集,在LeNet、AlexNet、VGG-16、ResNet 等公開深度模型上進(jìn)行壓縮方法測試,比較其壓縮效果.圖表中的Δaccuracy=壓縮后模型accuracy-原始模型accuracy,#Params↓=原始模型參數(shù)量/壓縮后模型參數(shù)量,#FLOPs↓=原始模型浮點(diǎn)計算次數(shù)/加速后模型浮點(diǎn)計算次數(shù).Weight bits 和activation bits 分別代表權(quán)值和激活值被量化后的表示位數(shù).T-accuracy代表教師模型的accuracy,S-accuracy代表學(xué)生模型的accuracy.T-#Params代表教師模型的參數(shù)數(shù)量,S-#Params代表學(xué)生模型的參數(shù)數(shù)量.

        表5 展示了參數(shù)剪枝、緊湊網(wǎng)絡(luò)、參數(shù)共享、知識蒸餾和混合方式這5 類壓縮技術(shù)的一些代表性方法使用MNIST 數(shù)據(jù)集在LeNet-5 上的壓縮效果,可以看出,除了文獻(xiàn)[157]帶來較大的accuracy損失以外,其他方法的壓縮效果都不錯.從accuracy的角度來看,自適應(yīng)fastfood 變換[115]的效果更好,在達(dá)到壓縮效果的同時,還提升了accuracy;從參數(shù)壓縮量的角度來看,混合方式在accuracy輕微下降的情況下,都實(shí)現(xiàn)了較大的壓縮比,其中,文獻(xiàn)[169]的效果最好.

        Table 5 Compression effects of different compression methods on LeNet-5 on MNIST表5 不同壓縮方法在LeNet-5 on MNIST 上的壓縮效果

        表6 展示了參數(shù)剪枝、緊湊網(wǎng)絡(luò)、參數(shù)共享和混合方式這4 類壓縮技術(shù)的一些代表性方法使用CIFAR-10數(shù)據(jù)集在VGG-16 上的壓縮效果,可以看出,這4 類方法的壓縮效果差別比較大.整體來看,結(jié)構(gòu)化剪枝[40]效果更好,同時起到了網(wǎng)絡(luò)壓縮和加速的效果,accuracy甚至有些提升.權(quán)值隨機(jī)編碼方法[121]能夠?qū)崿F(xiàn)高達(dá)159x 的參數(shù)壓縮比,accuracy略有下降.

        Table 6 Compression effects of different compression methods on VGG-16 on CIFAR-10表6 不同壓縮方法在VGG-16 on CIFAR-10 上的壓縮效果

        表7 展示了參數(shù)剪枝、緊湊網(wǎng)絡(luò)、低秩分解、參數(shù)共享和混合方式這5 類壓縮技術(shù)的一些代表性方法使用ImageNet 數(shù)據(jù)集在AlexNet 上的壓縮效果.整體來看,5 類方法達(dá)到的壓縮效果和加速效果比較均衡,accuracy都略有下降.其中,參數(shù)剪枝和混合方式能夠?qū)崿F(xiàn)更大的壓縮比,但低秩分解的加速效果更好;另兩類方法都有不同程度的accuracy下降.

        表8 展示了參數(shù)剪枝、低秩分解、參數(shù)共享和混合方式這4 類壓縮技術(shù)的一些代表性方法在使用ImageNet數(shù)據(jù)集在VGG-16 上的壓縮效果.整體的壓縮與加速效果都很明顯,其中,剪枝方法的accuracy略微有所提升;混合方式達(dá)到的壓縮比最高.另外兩類方法雖然accuracy有所下降,但加速效果更優(yōu)秀.

        表9 展示了參數(shù)剪枝、緊湊網(wǎng)絡(luò)、參數(shù)共享和混合方式這4 類壓縮技術(shù)的一些代表性方法在使用ImageNet數(shù)據(jù)集在ResNet-50 上的壓縮效果.整體來看,accuracy的下降趨勢比較明顯,壓縮與加速效果不如其他網(wǎng)絡(luò)在ImageNet 上的好.其中,混合方式壓縮效果最好,文獻(xiàn)[169]達(dá)到15.8x 的壓縮比;而在參數(shù)共享方法中,循環(huán)矩陣[111]達(dá)到了最高加速比5.82x.

        Table 7 Compression effects of different compression methods on AlexNet on ImageNet表7 不同壓縮方法在AlexNet on ImageNet 上的壓縮效果

        Table 8 Compression effects of different compression methods on VGG-16 on ImageNet表8 不同壓縮方法在VGG-16 on ImageNet 上的壓縮效果

        Table 9 Compression effects of different compression methods on ResNet-50 on ImageNet表9 不同壓縮方法在ResNet-50 on ImageNet 上的壓縮效果

        表10 展示了一些主流量化技術(shù)使用ImageNet 數(shù)據(jù)集在AlexNet 上的壓縮效果,其中,weight bits 為1 表示二值化網(wǎng)絡(luò),weight bits 為2 表示三值化網(wǎng)絡(luò).除此之外還有一些特殊位寬,其中,文獻(xiàn)[89]中的3{±2}表示權(quán)值從{0,±1,±2}中選擇,3{±2 ±4}表示權(quán)值從{0,±1,±2,±4}中選擇.XNOR-Net[63]雖然能夠達(dá)到比較好的壓縮性能,但accuracy損失太大.SYQ[85]在實(shí)現(xiàn)權(quán)重二值化、三值化的同時,將激活值也量化到8 位,accuracy幾乎沒有損失,還略有提升.

        Table 10 Compression effects of different quantization methods on AlexNet on ImageNet表10 不同量化方法在AlexNet on ImageNet 上的壓縮效果

        表11 展示了一些主流量化技術(shù)使用ImageNet 數(shù)據(jù)集在ResNet-18 上的壓縮效果.整體來看,accuracy的下降程度更大,對權(quán)值和激活值的大尺度量化帶來不同程度的精度損失,SLQ[73]和INQ[87]將權(quán)值量化到5 位,accuracy略有提升.

        Table 11 Compression effects of different quantization methods on ResNet-18 on ImageNet表11 不同量化方法在ResNet-18 on ImageNet 上的壓縮效果

        表12 展示了一些有代表性的知識蒸餾方法在MNIST、CIFAR-10、CIFAR-100 和ImageNet 數(shù)據(jù)集上的壓縮效果.由于使用的教師模型和學(xué)生模型的網(wǎng)絡(luò)結(jié)構(gòu)不同,所以我們將兩個模型的accuracy和參數(shù)數(shù)量都展示出來,以方便讀者對比.可以看出,相比其他方法,知識蒸餾的模型accuracy下降更多,壓縮比更小.目前來看,未來知識蒸餾在模型壓縮與加速領(lǐng)域還有很大的發(fā)展空間.

        Table 12 Compression effects of different knowledge distillation methods表12 不同知識蒸餾方法的壓縮效果

        結(jié)論:我們總結(jié)的7 類壓縮與加速方法各有利弊,由于實(shí)驗(yàn)使用的硬件平臺不同,并不能量化地確定孰優(yōu)孰劣.依據(jù)不同的應(yīng)用場景和現(xiàn)實(shí)需要,可以進(jìn)行方法的選取.例如:對于存儲有限的嵌入式設(shè)備,可以使用非結(jié)構(gòu)化剪枝或者二值、三值量化,以大幅度地減少模型占用的內(nèi)存大小.對于沒有預(yù)訓(xùn)練模型的情況,可以考慮緊湊網(wǎng)絡(luò)法,直接訓(xùn)練網(wǎng)絡(luò).對于期望較高壓縮比與加速比的應(yīng)用場景,可以使用混合方式,組合使用幾種壓縮與加速方法.

        4 未來研究方向

        截止到目前,深度學(xué)習(xí)模型壓縮與加速技術(shù)尚未發(fā)展成熟,在實(shí)際部署和產(chǎn)品化水平上還有很大的進(jìn)步空間.下面介紹幾個值得關(guān)注與討論的研究方向.

        (1)知識蒸餾作為一種遷移學(xué)習(xí)的形式,可使小模型盡可能多地學(xué)習(xí)到大模型的知識,具有方法靈活、不依賴硬件平臺的特點(diǎn),但目前,其壓縮比和蒸餾后性能都有待提高.未來知識蒸餾可從以下幾個方向展開研究:打破softmax 函數(shù)的限制,結(jié)合中間特征層,使用不同形式的知識;在選擇學(xué)生模型的結(jié)構(gòu)時,可以與其他方法集成;打破任務(wù)的限制,例如將圖片分類領(lǐng)域的知識遷移到其他領(lǐng)域;

        (2)將模型壓縮技術(shù)與硬件架構(gòu)設(shè)計相結(jié)合.目前的壓縮與加速方法大多僅從軟件層面對模型進(jìn)行優(yōu)化,并且不同方法由于使用的硬件平臺不同,也很難比較其加速效果的好壞.未來可針對主流的壓縮與加速方法專門設(shè)計硬件架構(gòu),既能在現(xiàn)有基礎(chǔ)上加速模型,又方便不同方法的比較;

        (3)制定更智能的模型結(jié)構(gòu)選擇策略.目前,無論是參數(shù)剪枝方法還是設(shè)計更緊湊的網(wǎng)絡(luò)結(jié)構(gòu),都是基于現(xiàn)有模型作為主干網(wǎng)絡(luò),手動選擇或使用啟發(fā)式策略進(jìn)行結(jié)構(gòu)縮減,縮小了模型搜索空間.未來可以利用強(qiáng)化學(xué)習(xí)等策略進(jìn)行自動網(wǎng)絡(luò)結(jié)構(gòu)搜索,得到更優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu);

        (4)將模型壓縮技術(shù)推廣到更多任務(wù)和更多平臺.目前的壓縮與加速方法多是為圖片分類任務(wù)的卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計,然而實(shí)際應(yīng)用中,還有大量其他模型應(yīng)用于人工智能領(lǐng)域,例如語音識別和機(jī)器翻譯領(lǐng)域常使用的遞歸神經(jīng)網(wǎng)絡(luò)(RNN)、知識圖譜領(lǐng)域的圖神經(jīng)網(wǎng)絡(luò)(GNN).為卷積神經(jīng)網(wǎng)絡(luò)模型設(shè)計的壓縮與加速方法能否直接用于RNN 與GNN,還需要探索.同時,小型移動平臺(如智能手機(jī)、機(jī)器人、無人駕駛汽車等)的硬件限制及其有限的計算資源阻礙了深度學(xué)習(xí)模型的直接部署,如何為這些平臺設(shè)計獨(dú)有的壓縮方法,仍是一個巨大的挑戰(zhàn);

        (5)模型壓縮后的安全問題.由于當(dāng)前壓縮與加速方法更注重壓縮完成后的任務(wù)完成度(例如分類任務(wù)accuracy是否有降低),而忽略了模型壓縮可能帶來的安全隱患,例如:相比原模型,是否更容易被對抗樣本攻擊.所以,未來在提升模型性能的同時,也應(yīng)注意模型是否安全.

        5 總結(jié)

        本文首先介紹深度學(xué)習(xí)模型壓縮與加速技術(shù)的研究背景;其次,對目前主流的方法進(jìn)行分析,從參數(shù)剪枝、參數(shù)量化、緊湊網(wǎng)絡(luò)、知識蒸餾、低秩分解、參數(shù)共享、混合方式這7 個方面進(jìn)行分類總結(jié);然后,對各類壓縮技術(shù)中的一些代表性方法進(jìn)行壓縮效果比較;最后,探討了模型壓縮領(lǐng)域未來的發(fā)展方向.希望本文能夠給研究者帶來關(guān)于模型壓縮與加速技術(shù)的更多了解,促進(jìn)和推動模型壓縮與加速技術(shù)的未來發(fā)展.

        猜你喜歡
        效果方法模型
        一半模型
        按摩效果確有理論依據(jù)
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        迅速制造慢門虛化效果
        抓住“瞬間性”效果
        中華詩詞(2018年11期)2018-03-26 06:41:34
        可能是方法不對
        3D打印中的模型分割與打包
        模擬百種唇妝效果
        Coco薇(2016年8期)2016-10-09 02:11:50
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        国产一区二区三区在线爱咪咪| 久久国产色av免费观看| a级毛片成人网站免费看 | 国产午夜福利精品一区二区三区 | 日本一区二区不卡视频| 久久精品视频中文字幕无码| 成人爽a毛片在线播放| 亚洲成人av在线第一页| 国产免码va在线观看免费| 日产精品久久久久久久性色| 在线综合网| 中文字幕日韩人妻在线| 国产视频一区2区三区| 久久伊人最新网址视频| 尤物在线精品视频| 亚洲av日韩av高潮潮喷无码| 99国产免费热播视频| 国产精品久久久久亚洲| 国产色视频在线观看了| 久久天天躁夜夜躁狠狠| 国产精品99久久久久久宅男| 91精品国产闺蜜国产在线| 中文字幕日本五十路熟女| av网站在线观看入口| 福利体验试看120秒| 久久一日本道色综合久久大香| 色男色女午夜福利影院| 在线播放免费人成毛片乱码| 亚洲高潮喷水无码av电影| 亚洲熟女av中文字幕网站| 国产在线观看女主播户外| 国产三级精品三级| 精品88久久久久88久久久| 富婆叫鸭一区二区三区| 色翁荡熄又大又硬又粗又动态图| 久久久噜噜噜www成人网| 激情 一区二区| 婷婷丁香开心五月综合| 中文字幕在线精品视频入口一区| 久久久久亚洲AV无码专| 国产一区在线视频不卡|