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

?

基于梯度追蹤的結(jié)構(gòu)化剪枝算法

2022-09-28 09:53:10季繁繁袁曉彤
計(jì)算機(jī)仿真 2022年8期
關(guān)鍵詞:剪枝范數(shù)結(jié)構(gòu)化

王 玨,季繁繁,袁曉彤

(南京信息工程大學(xué)江蘇省大數(shù)據(jù)分析技術(shù)重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210044)

1 引言

現(xiàn)今,卷積神經(jīng)網(wǎng)絡(luò)(CNN)[1-3]在計(jì)算機(jī)視覺、自然語言處理、語音識別等深度學(xué)習(xí)的各個(gè)領(lǐng)域中迅速發(fā)展,而且表現(xiàn)出其優(yōu)越性能。通常情況下,神經(jīng)網(wǎng)絡(luò)的層數(shù)越深、結(jié)構(gòu)越寬,模型的性能也就越好。所以,CNN的大量可學(xué)習(xí)的參數(shù)使得網(wǎng)絡(luò)能夠擁有強(qiáng)大的表達(dá)能力。

盡管深度卷積神經(jīng)網(wǎng)絡(luò)取得了巨大成功,但CNN卻存在過參數(shù)化的問題。當(dāng)深度模型在硬件資源受限的環(huán)境(比如嵌入式傳感器、無人機(jī)、移動設(shè)備等)中實(shí)際工作時(shí),會出現(xiàn)以下三個(gè)問題:運(yùn)行時(shí)的內(nèi)存過多;可訓(xùn)練參數(shù)過多;計(jì)算代價(jià)過大。例如,在對分辨率為224×224的圖像進(jìn)行分類任務(wù)時(shí),ResNet-152[4]占用了不少于200MB的存儲空間,具有6020萬個(gè)參數(shù),需要23千兆的浮點(diǎn)運(yùn)算次數(shù)(FLOPs),這會導(dǎo)致CNN計(jì)算代價(jià)過大[5]。以上三個(gè)問題限制了深度CNN的實(shí)際部署。

為了有效緩解上述的問題,研究人員提出了一些新的技術(shù)來加速和壓縮深度CNN,包括低秩分解[6-7],量化[8-9],知識蒸餾[10]和網(wǎng)絡(luò)剪枝[5,11-12]等。他們在追求高精度的同時(shí),能夠降低過參數(shù)化網(wǎng)絡(luò)的計(jì)算代價(jià)以及存儲需求。

濾波器剪枝能夠剪除原始網(wǎng)絡(luò)中的冗余卷積核,從而獲得小網(wǎng)絡(luò),有效降低模型的運(yùn)算量和存儲量。作為模型壓縮技術(shù),濾波器剪枝有以下幾個(gè)優(yōu)勢:首先,它可以應(yīng)用于CNN的任何任務(wù)中,比如目標(biāo)檢測,人臉識別和語義分割等。其次,濾波器剪枝可以在顯著減少FLOPs、加快推理速度的同時(shí),不會損壞網(wǎng)絡(luò)結(jié)構(gòu)。因此,可以利用其它模型壓縮技術(shù)(例如,知識蒸餾[10]、量化[8-9])進(jìn)一步壓縮剪枝后的模型。此外,現(xiàn)有的深度學(xué)習(xí)庫可以支持濾波器剪枝,而不需要專用硬件和專用軟件。

一些代表性工作[5,12]可以通過計(jì)算網(wǎng)絡(luò)卷積層中的濾波器Lp范數(shù)的值,來衡量相應(yīng)濾波器的重要性。這種情況下,上述方法對濾波器的參數(shù)范數(shù)值排序,刪除對應(yīng)于小范數(shù)的不重要的濾波器,得到了較窄的卷積神經(jīng)網(wǎng)絡(luò)。

然而,這些剪枝準(zhǔn)則僅僅關(guān)注模型參數(shù)本身的信息(零階信息),卻忽略了其梯度信息(一階信息)對模型性能的影響,可能會剪去重要的濾波器。即使一些濾波器參數(shù)權(quán)值很小,但其參數(shù)變化對剪枝結(jié)果將產(chǎn)生很大的影響,這些梯度大的濾波器是不應(yīng)該被剪去的。模型的梯度信息對卷積神經(jīng)網(wǎng)絡(luò)來說是十分重要的。在神經(jīng)網(wǎng)絡(luò)中,前向傳遞輸入信號,反向傳播根據(jù)誤差來調(diào)整各種參數(shù)的值,即運(yùn)用鏈?zhǔn)角髮?dǎo)的思想。而且,CNN參數(shù)優(yōu)化的重要算法是根據(jù)梯度決定搜索方向的策略。因此,網(wǎng)絡(luò)的參數(shù)信息和梯度信息可以作為濾波器重要性的評判指標(biāo)。

為了解決上述剪枝方法的缺陷,根據(jù)梯度追蹤算法(GraSP)[13]的思路,本文提出了一種新的濾波器級的剪枝方法。本文將在優(yōu)化器步驟中實(shí)現(xiàn)所提方法,并且在所有卷積層中同時(shí)進(jìn)行剪枝操作。具體地來說,本文方法首先計(jì)算濾波器梯度的L1范數(shù)值,并對它們進(jìn)行排序,然后,選擇對應(yīng)最大梯度值的濾波器索引。隨后,本文算法將該索引和上一次迭代中得到的對應(yīng)最大權(quán)值的濾波器索引聯(lián)合,生成了一個(gè)包含參數(shù)信息和梯度信息的并集。除了參數(shù)信息,梯度信息也是衡量濾波器重要性的依據(jù)。然后,在該并集上利用隨機(jī)梯度下降的動量法(SGDM)[14]更新參數(shù)。在每次迭代結(jié)束時(shí),計(jì)算濾波器權(quán)重的L1范數(shù),對它們排序,選擇保留最大范數(shù)的濾波器,然后設(shè)置小濾波器為零。該剪枝方法允許已經(jīng)歸零的濾波器在往后的迭代中繼續(xù)訓(xùn)練。本文方法將繼續(xù)迭代直到模型收斂。最后,重建網(wǎng)絡(luò),從而獲得了剪枝后的小網(wǎng)絡(luò)。

本文的主要貢獻(xiàn)如下所述:

1)提出了一種改進(jìn)的結(jié)構(gòu)化剪枝方法來壓縮模型。與傳統(tǒng)的剪枝方法相比,采用梯度追蹤算法,創(chuàng)新地使用模型的梯度信息和參數(shù)信息來評判濾波器的重要性;

2)與硬剪枝方法[12,15-16]相比,本文方法從頭開始訓(xùn)練,不需要使用預(yù)訓(xùn)練的模型。因此,不需要剪枝后的微調(diào)步驟,省略微調(diào)時(shí)間;

3)將結(jié)構(gòu)化剪枝算法運(yùn)用到ResNet模型上,并在基準(zhǔn)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)。結(jié)果證明,本文方法能夠在不影響的模型性能情況下,減少網(wǎng)絡(luò)參數(shù)量和運(yùn)算量,使得深度卷積神經(jīng)網(wǎng)絡(luò)能在硬件資源受限的環(huán)境下部署。

2 網(wǎng)絡(luò)剪枝算法

網(wǎng)絡(luò)剪枝是模型壓縮的重要技術(shù)之一。它可以在神經(jīng)網(wǎng)絡(luò)模型的精度損失忽略不計(jì)的情況下,剪去網(wǎng)絡(luò)的冗余參數(shù),達(dá)到減少過參數(shù)化模型的大小和運(yùn)算量(例如FLOPs)的目的。一般來說,剪枝算法可以分為兩類,即非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝。

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

LeCun等[17]最先開創(chuàng)性地提出了OBD的方法,利用參數(shù)的二階導(dǎo)數(shù),來衡量且去除不重要的神經(jīng)元。但是,以上的剪枝方法并不能應(yīng)用在深度神經(jīng)網(wǎng)絡(luò)(DNN)上。Han等[11,18]提出一種剪枝方法,在預(yù)訓(xùn)練網(wǎng)絡(luò)中剪去那些參數(shù)權(quán)重低于預(yù)定義閾值的連接,然后重新訓(xùn)練以恢復(fù)稀疏模型的準(zhǔn)確性。該方法可以在深度神經(jīng)網(wǎng)絡(luò)中縮小模型尺寸。然而,如果剪枝失誤,則無法恢復(fù)連接。為了解決以上問題,Guo等[19]提出了一種動態(tài)網(wǎng)絡(luò)剪枝技術(shù),該方法可以利用剪枝和接合這兩個(gè)操作以動態(tài)地恢復(fù)剪枝后的重要連接,顯著地減少了訓(xùn)練迭代的次數(shù)。Jin等[20]在目標(biāo)函數(shù)上添加L0范數(shù)的約束,使得模型更加稀疏。它保留了最大權(quán)值的參數(shù),然后重新激活所有的連接。該方法是利用剪枝策略來提升模型精度。

非結(jié)構(gòu)化剪枝主要對模型參數(shù)剪枝,但是不能充分利用現(xiàn)有的BLAS庫。在實(shí)際應(yīng)用中,剪枝后的連接是不規(guī)則的,所以非結(jié)構(gòu)化剪枝在推理時(shí)的加速并不明顯,而且需要專用庫(如cuSPARSE)和專用的硬件平臺。

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

結(jié)構(gòu)化剪枝能夠剪除整個(gè)冗余濾波器,以顯著減少卷積神經(jīng)網(wǎng)絡(luò)的FLOPs,內(nèi)存空間和運(yùn)算功耗。

下面是引入可控超參數(shù)的剪枝方法:Wen等[21]提出了一個(gè)結(jié)構(gòu)化稀疏學(xué)習(xí)(SSL)的剪枝方法。該方法在損失函數(shù)中引入了分組LASSO正則化,來將一些濾波器逐漸歸零。Liu等[22]利用了批量歸一化(BN)層的信息,在目標(biāo)函數(shù)中加入BN層中的縮放因子γ,將γ的L1范數(shù)作為懲罰項(xiàng),然后剪去與較小縮放因子相對應(yīng)的通道。Ye等[23]針對BN運(yùn)算中的縮放因子γ,采用了迭代收縮閾值算法(ISTA)來稀疏參數(shù)。

還有是按照某個(gè)度量標(biāo)準(zhǔn)來衡量某些濾波器是否重要的剪枝方法:Li等[12]在預(yù)訓(xùn)練模型上,對每個(gè)濾波器計(jì)算卷積核權(quán)重的絕對值之和,對其排序,然后剪去其中不重要的濾波器。此方法是基于L1范數(shù)來判斷濾波器的重要性。然而,被剪去的濾波器無法在訓(xùn)練過程中繼續(xù)更新參數(shù),從而限制了網(wǎng)絡(luò)模型的表達(dá)能力。針對這一問題,He等[5]提出了一種軟剪枝(SFP)的方法。該方法剪去L2范數(shù)值較小的濾波器,并且從頭開始一邊剪枝一邊訓(xùn)練。已經(jīng)剪去的濾波器能夠繼續(xù)參與訓(xùn)練,從而節(jié)省了微調(diào)步驟的時(shí)間。但是,當(dāng)使用基于范數(shù)的剪枝準(zhǔn)則時(shí),應(yīng)該滿足以下兩個(gè)條件:范數(shù)標(biāo)準(zhǔn)差要大;最小范數(shù)接近于零。然而,這兩個(gè)條件并不總是成立。因此,He等[24]提出了一個(gè)基于濾波器幾何中位數(shù)(FPGM)的剪枝準(zhǔn)則。該方法選擇與同一層中其它濾波器的歐氏距離之和最小的濾波器,然后將其剪去,從而可以剪去冗余的濾波器。Lin等[25]提出了基于高秩特征圖的濾波器剪枝方法(HRank)。該方法計(jì)算每個(gè)濾波器的輸出特征圖的平均秩,將其排序,然后對平均秩比較小的相應(yīng)濾波器進(jìn)行剪枝。

還有通過重建誤差來確定哪些濾波器需要剪除的方法:Luo等[16]提出了一個(gè)ThiNet框架。該框架將通道選擇問題轉(zhuǎn)化為優(yōu)化問題的形式,并且在預(yù)訓(xùn)練模型上計(jì)算相應(yīng)的下一層統(tǒng)計(jì)信息。它將最小化剪枝前模型和剪枝后模型之間的輸出特征圖上的重建誤差。He等[15]將通道選擇問題轉(zhuǎn)化為最小二乘法的LASSO回歸問題。

2.3 探討

上述剪枝算法僅僅使用參數(shù)信息,所以容易忽略權(quán)值很小、梯度卻很大的濾波器。而本文方法既使用模型的參數(shù)信息,又使用其梯度信息,能有效減少神經(jīng)網(wǎng)絡(luò)中的冗余參數(shù)。本文方法先在當(dāng)前優(yōu)化器中選取梯度值較大的濾波器,聯(lián)合幅值較大的濾波器,從而得到一個(gè)濾波器索引的并集。然后,在該并集上使用隨機(jī)梯度下降法更新參數(shù),最后,剪去權(quán)值較小的濾波器。本文還使用不同的CNN架構(gòu)進(jìn)行大量剪枝實(shí)驗(yàn),證明了所提方法的有效性與優(yōu)越性。

3 梯度追蹤的網(wǎng)絡(luò)剪枝方法

本節(jié)介紹了利用梯度追蹤算法進(jìn)行結(jié)構(gòu)化剪枝的方法。首先,簡單介紹用于解決稀疏約束優(yōu)化問題的梯度追蹤算法(GraSP)。然后,針對壓縮深度卷積神經(jīng)網(wǎng)絡(luò)的問題,本文提出了采用GraSP的結(jié)構(gòu)化剪枝方法。

3.1 機(jī)器學(xué)習(xí)的梯度追蹤算法

本文所提出的算法受到梯度追蹤算法(GraSP)[13]的啟發(fā),利用GraSP的思想對CNN進(jìn)行結(jié)構(gòu)化剪枝。GraSP算法是一種用于近似求解壓縮感知[26]的稀疏約束優(yōu)化問題的方案。

在3.1節(jié)中,x∈d表示一個(gè)向量。表示x的稀疏估計(jì)值。表示向量x的L0范數(shù)(即向量x的非零項(xiàng)個(gè)數(shù))。supp(x)表示向量x的支撐集(即x的非零項(xiàng)索引)。A∪B表示集合A和集合B的并集。T表示集合T的補(bǔ)集。bk表示向量b的最大k項(xiàng)(按幅值大小)。

為了最小化目標(biāo)函數(shù)f(x),GraSP算法考慮以下稀疏約束的優(yōu)化問題

(1)

算法1.梯度追蹤算法。

輸入:f(·)與k。

repeat

選擇z中2k個(gè)最大值:Z=supp(z2k);

在該并集上最小化:b=arg minf(x) s.t.x|T=0;

until 參數(shù)收斂。

3.2 梯度追蹤的結(jié)構(gòu)化剪枝算法

結(jié)構(gòu)化剪枝可以有效地壓縮加速網(wǎng)絡(luò),而且不會破壞網(wǎng)絡(luò)模型結(jié)構(gòu)。

如3.1節(jié)所述,GraSP[13]將梯度最大的信號與幅值最大的信號聯(lián)合,從而解決壓縮感知的稀疏約束優(yōu)化問題。而本文算法將GraSP的思路創(chuàng)新地應(yīng)用到CNN結(jié)構(gòu)化剪枝中。與基于參數(shù)信息的剪枝算法[5,12]相比,本文算法使用CNN的梯度信息和參數(shù)信息來評判濾波器的重要性,剪去被判為不重要的濾波器。這有助于提升結(jié)構(gòu)化剪枝的效果。

在CNN模型中,令i作為卷積層索引。網(wǎng)絡(luò)參數(shù)則表示為{Wi∈Ni+1×Ni×K×K,1≤i≤L},其中,Wi表示第i個(gè)卷積層中的參數(shù)權(quán)重矩陣。Ni表示第i層的輸入通道數(shù),Ni+1表示第i層的輸出通道數(shù)。K×K表示卷積核的大小。L表示網(wǎng)絡(luò)中卷積層個(gè)數(shù)。剪枝率Pi表示第i個(gè)卷積層中剪去的濾波器的比例。Wi,j∈Ni×K×K表示第i個(gè)卷積層的第j個(gè)濾波器。nonzero(x)表示x中非零元素的位置(索引)。topk(x)表示x中k個(gè)最大項(xiàng)索引。

本文定義Lp范數(shù)如下所示

(2)

其中,Ni是第i個(gè)卷積層中的輸入通道數(shù)。梯度追蹤的結(jié)構(gòu)化剪枝方法根據(jù)計(jì)算濾波器的L1范數(shù),以此評估濾波器的重要性。本文通過Ni+1(1-Pi)來計(jì)算k,本文方法在所有卷積層中使用相同的剪枝率Pi。

圖1 梯度追蹤的結(jié)構(gòu)化剪枝方法的框架圖

圖1清晰地概述了如何將GraSP的原理推廣到結(jié)構(gòu)化剪枝的流程框架。在圖1中,k表示某個(gè)卷積層中剪枝后剩余的濾波器數(shù)目。大的方框表示某卷積層中的濾波器空間。在濾波器空間中,黃色框表示k個(gè)最大L1范數(shù)的濾波器,綠色框表示k個(gè)最大梯度的濾波器,白色框表示其余的濾波器,虛線框表示濾波器設(shè)置為零。在某個(gè)卷積層中,W表示參數(shù)權(quán)重矩陣,g表示梯度矩陣。本文方法選擇k個(gè)梯度最大的濾波器,再將其索引與在上一次迭代中得到的濾波器支撐集聯(lián)合成一個(gè)并集。然后,本文算法在該并集上更新參數(shù)。在每次迭代結(jié)束時(shí),該算法選擇權(quán)值最大的濾波器,最后剪去小濾波器。

算法2詳細(xì)地描述了梯度追蹤的結(jié)構(gòu)化剪枝算法。本文所提的方法將從頭開始訓(xùn)練CNN,在所有卷積層中同時(shí)進(jìn)行剪枝操作。

算法2.梯度追蹤的結(jié)構(gòu)化剪枝算法。

輸入:訓(xùn)練數(shù)據(jù)X,剪枝率Pi,學(xué)習(xí)率η,CNN模型參數(shù)W={Wi,1≤i≤L},卷積層的層數(shù)L。

輸出:剪枝后模型,和它的參數(shù)W*。

隨機(jī)初始化網(wǎng)絡(luò)參數(shù)。

for each step=0 to stepmaxdo

計(jì)算當(dāng)前梯度:g=?f(Wstep);

for each i=0 to L do

end for

end for

重建剪枝后的模型,最終得到一個(gè)小網(wǎng)絡(luò)W*。

首先,隨機(jī)初始化模型參數(shù),本文方法在優(yōu)化器步驟中迭代地進(jìn)行剪枝過程。

在第step次迭代中,f(Wstep)是當(dāng)前的損失函數(shù)。該算法通過反向傳播計(jì)算當(dāng)前梯度g

g=?f(Wstep)

(3)

然后,計(jì)算gi,j的L1范數(shù),對其進(jìn)行排序,在向量gi中選擇k個(gè)梯度最大范數(shù)值的濾波器索引,如下式(4)所示。其中,gi,j表示在第i層中第j個(gè)濾波器對應(yīng)的梯度。

(4)

之后,將式(4)中的索引Z與當(dāng)前參數(shù)的權(quán)值Wstep的支撐集聯(lián)合,從而獲得一個(gè)并集T,如下所示

(5)

(6)

本文算法將一直迭代,直到模型參數(shù)收斂。最后,該算法重建剪枝后的網(wǎng)絡(luò),生成小模型。

綜上所述,本文方法使用梯度學(xué)習(xí),考慮了模型的參數(shù)信息和梯度信息的聯(lián)合影響,從而能在剪枝后有效保留模型的重要信息。

4 實(shí)驗(yàn)結(jié)果與分析

為了驗(yàn)證本文所提算法的有效性,本文在三個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集(即MNIST[27],CIFAR-10[28]和CIFAR-100[28])上,使用梯度追蹤的結(jié)構(gòu)化剪枝方法,對幾種常見的CNNs進(jìn)行剪枝實(shí)驗(yàn),并將該算法與一些當(dāng)前已經(jīng)提出的剪枝技術(shù)進(jìn)行比較。本文使用所提出的剪枝方法在MNIST上對LeNet-5[27]模型、在CIFAR-10和CIFAR-100對ResNet[4]進(jìn)行剪枝實(shí)驗(yàn),從而壓縮神經(jīng)網(wǎng)絡(luò)。本文的實(shí)驗(yàn)使用Pytorch[29]深度學(xué)習(xí)框架,在型號為NVIDIA GeForce GTX 1080Ti的GPU上運(yùn)行程序。本文算法在優(yōu)化器步驟中迭代地執(zhí)行剪枝操作,在所有卷積層中同時(shí)進(jìn)行濾波器剪枝。為了進(jìn)行比較,實(shí)驗(yàn)關(guān)注剪枝率、精度變化以及FLOPs。使用Top-1準(zhǔn)確率來衡量基線模型和剪枝后模型的性能。剪枝率是剪枝后的網(wǎng)絡(luò)與原始網(wǎng)絡(luò)在參數(shù)量上相比減少的百分比。FLOPs是每秒浮點(diǎn)運(yùn)算次數(shù),F(xiàn)LOPs減少表示網(wǎng)絡(luò)運(yùn)算速度得到了加速。同樣地,本文將所有剪枝算法的最好的實(shí)驗(yàn)結(jié)果用粗體表示。

在4.1節(jié)和4.2節(jié)中,本文介紹了三個(gè)圖像分類的標(biāo)準(zhǔn)數(shù)據(jù)集和實(shí)驗(yàn)設(shè)置。然后在4.3節(jié)、4.4節(jié)和4.5節(jié)中,本文在三個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集上進(jìn)行結(jié)構(gòu)化剪枝實(shí)驗(yàn),將本文算法的結(jié)果與其它剪枝算法進(jìn)行比較,驗(yàn)證了本文算法的性能。在4.6節(jié)中的消融實(shí)驗(yàn)研究了不同的剪枝策略以及不同Lp標(biāo)準(zhǔn)對剪枝實(shí)驗(yàn)的影響。4.7節(jié)證明了本文方法也可以應(yīng)用于非結(jié)構(gòu)化剪枝。

4.1 數(shù)據(jù)集

MNIST[27]是一個(gè)手寫數(shù)字的通用數(shù)據(jù)集,其中包含了60,000個(gè)訓(xùn)練集樣本和10,000個(gè)測試集樣本。

CIFAR-10[28]是一個(gè)用于識別目標(biāo)的小型數(shù)據(jù)集,包含了60,000張分辨率為32×32的彩色圖像。它分為10個(gè)類別,包含了50,000訓(xùn)練圖像和10,000測試圖像。CIFAR-100[28]與CIFAR-10數(shù)據(jù)集類似。它有100個(gè)類別,每個(gè)類有600張圖片。

4.2 實(shí)驗(yàn)設(shè)置

首先,本文在數(shù)據(jù)集MNIST上對LeNet-5模型進(jìn)行實(shí)驗(yàn)。LeNet-5[27]是一種典型的CNN模型,它由兩個(gè)卷積層和兩個(gè)全連接層組成,具有431,000個(gè)可學(xué)習(xí)參數(shù)。對于MNIST實(shí)驗(yàn),本文使用SGDM[14]算法,其動量系數(shù)β設(shè)置為0.9,權(quán)重衰減為0.0005。本文算法從頭開始訓(xùn)練200個(gè)epoch,批量數(shù)據(jù)樣本數(shù)為64。實(shí)驗(yàn)初始學(xué)習(xí)率為0.01。在epoch為60、120和160的時(shí)候,學(xué)習(xí)率η乘以0.2。

在CIFAR-10和CIFAR-100的實(shí)驗(yàn)中,本文對ResNet-20、32、56和110模型進(jìn)行剪枝。SGDM[14]所使用的動量系數(shù)β為0.9,權(quán)重衰減為0.0005。本文使用梯度追蹤的結(jié)構(gòu)化剪枝方法從頭開始訓(xùn)練所有模型,一共訓(xùn)練250個(gè)epoch,批量數(shù)據(jù)樣本數(shù)為128。在第1、40、120、160和200個(gè)epoch時(shí),學(xué)習(xí)率η將分別設(shè)為0.1、0.02、0.004、0.0008、0.0002。

特別地,對于CIFAR-10實(shí)驗(yàn),本文方法將與以下方法進(jìn)行定量比較:濾波器剪枝(L1-pruning-A,L1-pruning-B)[12]、Channel-pruning[15]、More is Less(LCCL)[30]、軟剪枝(SFP)[5]、HRank[25]、FPGM[24]。其中,Li等[12]認(rèn)為,ResNet模型的一些特定的卷積層對剪枝十分敏感,比如ResNet-56的第20、38和54層,或者ResNet-110的第36、38和74層。因此,它們跳過上述的卷積層,修剪其它層的10%的濾波器,這就是L1-pruning-A[12]。而Li等提出的L1-pruning-B[12]在不同階段使用不同的剪枝率。在ResNet-56中,L1-pruning-B跳過更多的卷積層(16,18,20,34,38,54),同時(shí)第一階段每個(gè)卷積層的剪枝率為60%,第二階段的剪枝率為30%,第三階段剪枝率為10%。在ResNet-110中,L1-pruning-B跳過第36、38和74層,第一階段剪枝率為50%,第二階段剪枝率為40%,第三階段剪枝率為30%。FPGM-only[24]表示只使用基于濾波器幾何中位數(shù)(FPGM)的剪枝準(zhǔn)則,那么,F(xiàn)PGM-mix[24]就將FPGM同基于范數(shù)的剪枝準(zhǔn)則相結(jié)合。

4.3 數(shù)據(jù)集MNIST的剪枝實(shí)驗(yàn)結(jié)果

表1 在MNIST數(shù)據(jù)集上本文方法對LeNet-5剪枝的實(shí)驗(yàn)結(jié)果

本文算法在MNIST數(shù)據(jù)集上對LeNet-5模型中的兩個(gè)卷積層進(jìn)行結(jié)構(gòu)化剪枝。實(shí)驗(yàn)中使用的剪枝率為10%、20%、30%、40%、50%、60%、70%和80%。表1表示了在MNIST數(shù)據(jù)集上LeNet-5模型的結(jié)構(gòu)化剪枝結(jié)果。實(shí)驗(yàn)結(jié)果表明,在剪去兩個(gè)卷積層的50%的濾波器的情況下,本文方法Top-1準(zhǔn)確率僅僅降低了0.12%。此外,本文方法可以在保持分類準(zhǔn)確率的情況下,甚至可以剪去80%的濾波器。

因此,本文通過在MNIST上的實(shí)驗(yàn)初步證明了該算法的實(shí)用性和有效性,驗(yàn)證了GraSP的原理可以應(yīng)用在CNNs上,同時(shí)使用梯度信息和參數(shù)信息的方法能夠有效地進(jìn)行結(jié)構(gòu)化剪枝。在以下的4.4節(jié)中,將在更深的卷積神經(jīng)網(wǎng)絡(luò)模型上(例如ResNet)上進(jìn)一步實(shí)現(xiàn)本文方法,并將該剪枝算法與其它剪枝方法進(jìn)行比較。

4.4 數(shù)據(jù)集CIFAR-10的剪枝實(shí)驗(yàn)結(jié)果

對于在CIFAR-10上的實(shí)驗(yàn),本文算法對ResNet-20、32、56和110模型按照五個(gè)不同的剪枝率進(jìn)行剪枝操作。

表2中表示了在CIFAR-10上的實(shí)驗(yàn)結(jié)果。該實(shí)驗(yàn)將本文算法與4.2節(jié)列出的對比方法進(jìn)行比較。對比算法的結(jié)果都在相應(yīng)論文中有所體現(xiàn)。

例如,ResNet-56模型的剪枝實(shí)驗(yàn)中,當(dāng)具有微調(diào)步驟的HRank[25]剪去50%的FLOPs時(shí),剪枝后結(jié)果比基準(zhǔn)精度減少了0.09%;在剪枝后的FLOPs減少了52.63%的情況下,具有微調(diào)步驟的FPGM-mix[24]方法的準(zhǔn)確率下降了0.33%;而本文方法沒有微調(diào)步驟,在FLOPs減少量為52.63%的情況下,其準(zhǔn)確率僅僅下降了0.04%。從實(shí)驗(yàn)結(jié)果來看,本文的方法能有效地對殘差網(wǎng)絡(luò)進(jìn)行剪枝,而且不需要微調(diào)步驟,能夠節(jié)省訓(xùn)練時(shí)間。

在ResNet-110的實(shí)驗(yàn)中,當(dāng)具有微調(diào)步驟的L1-pruning-B[12]剪去38.60%的FLOPs時(shí),其Top-1準(zhǔn)確率為93.30%;而LCCL[30]在剪去34.21%的FLOPs時(shí),獲得了93.44%的精度;當(dāng)沒有微調(diào)步驟的本文方法剪去40.78%的FLOPs時(shí),其準(zhǔn)確率為94.18%,比起原始模型提高了0.01%。因此,上述結(jié)果表明,本文算法使用了基于梯度和參數(shù)聯(lián)合的剪枝準(zhǔn)則,從而提供了比其它剪枝算法更為出色的性能,能夠在追求高精度和模型壓縮之間取得了更好的平衡。

表2 在CIFAR-10數(shù)據(jù)集上對ResNet剪枝的比較結(jié)果

表3 在CIFAR-100數(shù)據(jù)集上利用本文方法對ResNet模型用不同剪枝率進(jìn)行濾波器剪枝

4.5 數(shù)據(jù)集CIFAR-100的剪枝實(shí)驗(yàn)結(jié)果

本節(jié)在CIFAR-100數(shù)據(jù)集上對ResNet-20、32、56和110模型使用本文算法進(jìn)行結(jié)構(gòu)化剪枝實(shí)驗(yàn)。如表3所述,在CIFAR-100對ResNet-56剪枝的實(shí)驗(yàn)中,本文算法在剪去14.74%的FLOPs時(shí),獲得了72.45%的準(zhǔn)確率,甚至比剪枝前提高了0.44%。實(shí)驗(yàn)結(jié)果說明了本文算法能夠有效緩解模型過擬合,提高模型精度。

在ResNet-110剪枝的實(shí)驗(yàn)中,當(dāng)剪去40.78%的FLOPs時(shí),本文算法可以獲得73.08%的Top-1準(zhǔn)確率,比剪枝前的基準(zhǔn)精度僅僅降低了0.83%。

綜上所述,本節(jié)通過在CIFAR-100數(shù)據(jù)集的剪枝實(shí)驗(yàn),證明了本文方法有助于確定在某一卷積層中保留哪些濾波器。

4.6 消融實(shí)驗(yàn)

為了研究本文方法中不同要素對剪枝結(jié)果的影響,本文對ResNet-56在CIFAR-10數(shù)據(jù)集上的結(jié)構(gòu)化剪枝實(shí)驗(yàn)進(jìn)行消融研究。

4.6.1 剪枝方法的選擇

首先,本文研究基于參數(shù)信息和梯度信息的策略對剪枝結(jié)果的影響。本文在CIFAR-10數(shù)據(jù)集上對ResNet-56模型進(jìn)行消融實(shí)驗(yàn)。該實(shí)驗(yàn)增加了兩個(gè)剪枝策略與本文方法比較:①保留梯度的范數(shù)值大的濾波器,即只使用梯度信息的剪枝準(zhǔn)則;②保留參數(shù)的范數(shù)值大的濾波器,即只使用參數(shù)信息的剪枝準(zhǔn)則。

表4總結(jié)了不同剪枝方法的選擇對實(shí)驗(yàn)結(jié)果的影響。原始模型的基準(zhǔn)精度為93.43%。表4中剪枝率的設(shè)置與表2的ResNet-56部分相同。在使用CIFAR-10數(shù)據(jù)集進(jìn)行剪枝的實(shí)驗(yàn)中,當(dāng)剪去40%的參數(shù)時(shí),F(xiàn)LOPs減少了52.63%,只使用梯度信息的剪枝方法的準(zhǔn)確率為92.59%,證明了梯度信息可以作為評判濾波器重要性的標(biāo)準(zhǔn)。只使用參數(shù)信息的剪枝方法的準(zhǔn)確率為93.09%,而把兩個(gè)信息結(jié)合的本文方法的Top-1準(zhǔn)確率為93.39%。與只利用參數(shù)信息的方法和只利用梯度信息的剪枝方法相比,本文算法的性能更為優(yōu)越。因此可以從該實(shí)驗(yàn)看出,把參數(shù)信息和梯度信息結(jié)合起來,能更好地剪去冗余的濾波器。

表4 在CIFAR-10數(shù)據(jù)集上對ResNet-56模型使用不同剪枝準(zhǔn)則的實(shí)驗(yàn)結(jié)果

4.6.2 Lp范數(shù)的選擇

為了研究不同Lp范數(shù)計(jì)算對估計(jì)濾波器重要性的影響,本文在CIFAR-10數(shù)據(jù)集上對ResNet-56模型進(jìn)行剪枝實(shí)驗(yàn)。在此,本文使用L1范數(shù)的剪枝方法和使用L2范數(shù)的剪枝方法進(jìn)行對比。

表5將L1范數(shù)與L2范數(shù)這種評估濾波器重要性的剪枝標(biāo)準(zhǔn)進(jìn)行比較。對于在CIFAR-10數(shù)據(jù)集上修剪ResNet-56的實(shí)驗(yàn),當(dāng)剪枝率為40%時(shí),F(xiàn)LOPs減少了52.63%,L2范數(shù)標(biāo)準(zhǔn)的準(zhǔn)確率為93.04%,L1范數(shù)的準(zhǔn)確率為93.39%??梢钥闯?,使用L1范數(shù)比使用L2范數(shù)更為優(yōu)越。所以,本文方法是使用L1范數(shù)來評估濾波器的重要性,然后剪去L1范數(shù)小的濾波器。

表5 在CIFAR-10數(shù)據(jù)集上對ResNet-56模型使用不同范數(shù)約束的實(shí)驗(yàn)結(jié)果

4.7 本文算法在非結(jié)構(gòu)化剪枝的應(yīng)用

最后,本文所提出的算法也能夠應(yīng)用于非結(jié)構(gòu)化剪枝。

圖2 在CIFAR-10數(shù)據(jù)集上的ResNet-56不同剪枝率的非結(jié)構(gòu)化剪枝結(jié)果

圖2表示了在CIFAR-10數(shù)據(jù)集上不同剪枝率對ResNet-56模型進(jìn)行的非結(jié)構(gòu)化剪枝實(shí)驗(yàn)結(jié)果。圖中的基準(zhǔn)精度為稠密網(wǎng)絡(luò)的基準(zhǔn)精度。x軸剪枝率為0.1時(shí),網(wǎng)絡(luò)的剪枝率為10%。對于該剪枝實(shí)驗(yàn),當(dāng)剪枝率為20%,本文方法能夠得到93.97%的準(zhǔn)確率,甚至比基準(zhǔn)精度提升了0.54%。而且,當(dāng)剪枝率為10%、20%、40%、50%以及60%時(shí),剪枝后網(wǎng)絡(luò)的精度超過了基準(zhǔn)精度,本文方法能使CNN的性能有所提升。當(dāng)卷積層上的非結(jié)構(gòu)化剪枝率為80%,本文方法能夠得到92.70%的Top-1準(zhǔn)確率,與基準(zhǔn)精度相比僅僅下降了0.73%。

因此,可以從實(shí)驗(yàn)結(jié)果看出,本文方法能夠應(yīng)用在非結(jié)構(gòu)化剪枝中。當(dāng)剪枝率非常高時(shí),所提方法可以保持網(wǎng)絡(luò)性能。

5 結(jié)語

1)本文提出了一種新的剪枝算法,它利用梯度追蹤算法對CNN進(jìn)行濾波器剪枝。該剪枝算法使用了CNN的一階信息和零階信息。其主要思路是:在每次迭代開始時(shí),計(jì)算參數(shù)梯度的范數(shù)值,將梯度最大的濾波器索引與上一次迭代時(shí)保留的權(quán)值最大的濾波器索引結(jié)合,形成并集;然后在該并集上使用梯度下降法更新參數(shù);在每次迭代結(jié)束時(shí),通過計(jì)算每個(gè)濾波器的范數(shù)值,選擇且保留權(quán)值最大的濾波器;以上步驟將一直迭代至收斂;最后,獲得壓縮后的模型。

2)在基準(zhǔn)數(shù)據(jù)集上的幾個(gè)剪枝實(shí)驗(yàn)表明,該算法能夠在模型精度幾乎不變的情況下,使用比較高的剪枝率對卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行壓縮,從而有助于CNN的實(shí)際部署工作。例如,在CIFAR-10數(shù)據(jù)集上修剪ResNet-56的實(shí)驗(yàn)中,所提算法在不進(jìn)行微調(diào)的情況下,減少52.63%的FLOPs,而準(zhǔn)確率僅僅降低0.04%。所提方法的性能明顯高于當(dāng)前方法。

3)實(shí)驗(yàn)表明,本文也可以將梯度追蹤算法應(yīng)用在神經(jīng)網(wǎng)絡(luò)的非結(jié)構(gòu)化剪枝中。

在往后的工作中,將考慮使用其它的復(fù)雜數(shù)據(jù)集進(jìn)行進(jìn)一步研究。同時(shí),將嘗試與其它網(wǎng)絡(luò)壓縮方法結(jié)合,完善該算法。

猜你喜歡
剪枝范數(shù)結(jié)構(gòu)化
人到晚年宜“剪枝”
促進(jìn)知識結(jié)構(gòu)化的主題式復(fù)習(xí)初探
基于YOLOv4-Tiny模型剪枝算法
結(jié)構(gòu)化面試方法在研究生復(fù)試中的應(yīng)用
基于加權(quán)核范數(shù)與范數(shù)的魯棒主成分分析
矩陣酉不變范數(shù)H?lder不等式及其應(yīng)用
剪枝
天津詩人(2017年2期)2017-03-16 03:09:39
基于圖模型的通用半結(jié)構(gòu)化數(shù)據(jù)檢索
一類具有準(zhǔn)齊次核的Hilbert型奇異重積分算子的范數(shù)及應(yīng)用
一種面向不平衡數(shù)據(jù)分類的組合剪枝方法
邛崃市| 山东| 贺兰县| 成安县| 三都| 淳化县| 浏阳市| 通化市| 贞丰县| 吉安市| 金山区| 南宁市| 绵阳市| 师宗县| 鄂托克前旗| 忻城县| 普宁市| 嵊泗县| 法库县| 舒兰市| 辛集市| 吉隆县| 金堂县| 屏南县| 安义县| 福海县| 荔波县| 冷水江市| 集贤县| 乌恰县| 都江堰市| 雷山县| 任丘市| 仙居县| 宁远县| 阿克陶县| 莎车县| 双江| 马公市| 通江县| 宜章县|