
1.3 修補(bǔ)
在修補(bǔ)階段,本文使用NAS調(diào)整預(yù)剪枝模型中每層的卷積核數(shù)量,并保持網(wǎng)絡(luò)的卷積核總數(shù)不變,即本文的目標(biāo)是在保持剪枝率不變的條件下得到一個(gè)更好的剪枝結(jié)構(gòu).這里的剪枝率為被剪的數(shù)量除以總數(shù).由于不同層中卷積核的大小可能不同,導(dǎo)致不同子網(wǎng)絡(luò)在剪枝率相同的情況下依然可能具有不同的浮點(diǎn)運(yùn)算次數(shù)(Floating-Point Operations per Second, FLOPs).
NAS設(shè)計(jì)的要素一般包括搜索空間、搜索策略和性能估計(jì)策略[25].搜索策略在搜索空間中發(fā)現(xiàn)一個(gè)新的結(jié)構(gòu),并利用性能估計(jì)策略對結(jié)構(gòu)進(jìn)行評估.
本文采用基于遺傳算法的NAS進(jìn)行搜索,將剪枝子網(wǎng)絡(luò)結(jié)構(gòu)編碼為基因.具體地,將預(yù)剪枝的網(wǎng)絡(luò)結(jié)構(gòu)編碼為0號基因:
G0=[0,0,…,0],len(G0)=L.
基因G0給變異操作提供一個(gè)初始基因,性能也可作為參考基線.顯然,如果想給第l層增加2個(gè)卷積核,則只需將G0,l從0更改為2,其中G0,l表示G0的第l個(gè)值.
值得注意的是:1)網(wǎng)絡(luò)的編碼基因只能代表一個(gè)子網(wǎng)絡(luò)的結(jié)構(gòu),即只能得到每層中卷積核的數(shù)量,而不能得到權(quán)重.2)不同剪枝率下的G0是相同的.只有同時(shí)根據(jù)預(yù)剪枝結(jié)構(gòu)和基因,才能得到目標(biāo)結(jié)構(gòu).
圖1為修補(bǔ)階段使用基因和預(yù)剪枝結(jié)構(gòu)解碼出目標(biāo)結(jié)構(gòu)的一個(gè)例子.修補(bǔ)階段的任務(wù)是尋找最佳基因,以獲得最優(yōu)的精剪枝結(jié)構(gòu).

圖1 修補(bǔ)預(yù)剪枝網(wǎng)絡(luò)示意圖Fig.1 Sketch map of mending pre-pruned network
在NAS領(lǐng)域,利用遺傳算法尋找最優(yōu)結(jié)構(gòu)[23,26].變異操作是促進(jìn)種群適應(yīng)度不斷提高的重要操作.然而,在本文的搜索空間中使用變異操作會存在一個(gè)問題:典型的變異只發(fā)生在基因的一個(gè)位置,無論增加或減少卷積核的數(shù)量,都會引起整體剪枝率的變化.因此,本文設(shè)計(jì)新的變異方法,稱為成對變異.“對”意味著選擇一對位置同時(shí)變異,并產(chǎn)生一對后代.
以基因Gk進(jìn)行成對變異操作為例:首先選擇2個(gè)互不相同的隨機(jī)變異位點(diǎn)i、j,1≤i≤L,1≤j≤L.然后,根據(jù)一個(gè)給定的變異尺度S,使父代基因產(chǎn)生2個(gè)子代基因,即
Gchild1=[…,Gk,i+S,…,Gk,j-S,…],
Gchild2=[…,Gk,i-S,…,Gk,j+S,…].
成對變異操作的示意圖如圖2所示,S表示增加或減少的卷積核數(shù)量.最后,根據(jù)性能評估策略計(jì)算2個(gè)基因的適合度,將較好的一個(gè)基因加入群體中,直接丟棄另一個(gè)表現(xiàn)較差的基因.以這種變異方式,一個(gè)基因向量中所有值的和可始終保持為0,即整體剪枝率保持不變.此外,作為一種直觀的設(shè)計(jì),如果第i、j層中的一層需要更多的卷積核以提高子網(wǎng)絡(luò)的性能,并且減少另一層的卷積核數(shù)量,不會造成更多的性能損失,在兩個(gè)子代中將會有一個(gè)具有更好的性能.

圖2 成對變異操作的示意圖Fig.2 Sketch map of pair-mutation operation
本文采用錦標(biāo)賽選擇法對當(dāng)前種群進(jìn)行采樣.在每個(gè)周期中,刪除群體中最老的基因[26].這種刪除策略在NAS領(lǐng)域被證明可防止高適應(yīng)度基因永遠(yuǎn)留在群體中,從而產(chǎn)生大量后代.此外,本文采用逐步變小的變異尺度S實(shí)現(xiàn)從粗到精的搜索.特別地,如果變異操作導(dǎo)致第l層中的卷積核數(shù)量超過[1,Nl]的限制范圍,則限制此次循環(huán)中使用的變異尺度,使卷積核數(shù)量控制在合法范圍內(nèi).具體地:如果變異操作得到的結(jié)果小于1,將該層的卷積核數(shù)量置為1;如果結(jié)果大于Nl,將該層的卷積核數(shù)量置為Nl.
本文還為搜索策略設(shè)計(jì)一個(gè)可選步驟——交叉操作.上述成對變異操作可在保持剪枝率不變的前提下快速提高種群適應(yīng)度,但本文還希望能尋找剪枝率更高但性能更優(yōu)的子網(wǎng)絡(luò),稱為幸運(yùn)子網(wǎng)絡(luò).此目標(biāo)類似于Chin等[20]的目標(biāo),旨在生成一組具有不同精度和延遲權(quán)衡的子網(wǎng)絡(luò).在本文的網(wǎng)絡(luò)編碼模式中,更高的剪枝率意味著基因向量所有值的和小于0.具體地,在候選基因中選擇2個(gè)不同的基因作為父代基因,隨機(jī)選擇一個(gè)位置交叉的2個(gè)基因,產(chǎn)生2個(gè)子代Gchild3和Gchild4.若2個(gè)父代基因向量的所有值的和都是0,不妨假設(shè)2個(gè)子代基因
sum(Gchild3)≤sum(Gchild4),
則一定可推導(dǎo)出
sum(Gchild3)≤0,sum(Gchild4)≥0.
本文直接丟棄Gchild4,計(jì)算Gchild3的適應(yīng)度,并放入種群中.在特殊情況下,如果將交叉操作產(chǎn)生的基因用作父代基因,則可能導(dǎo)致sum(Gchild3)和sum(Gchild4)同時(shí)小于0.假設(shè)
sum(Gchild3)>sum(Gchild4),
則直接舍棄Gchild4,保留和設(shè)定剪枝率更接近的子代,確保交叉操作只需要計(jì)算一個(gè)子代的適合度.
性能評估策略用于計(jì)算基因的適應(yīng)度.評估網(wǎng)絡(luò)結(jié)構(gòu)性能的一種簡單方法是從頭開始訓(xùn)練網(wǎng)絡(luò),并在驗(yàn)證集上評估準(zhǔn)確率,但耗時(shí)較大.因此,NAS領(lǐng)域中已研究一些加速估計(jì)策略[27],或稱為代理度量,只需計(jì)算不同結(jié)構(gòu)的相對性能,即可對比好壞.Zhou等[28]綜合不同的加速方法,設(shè)計(jì)不同的代理度量,并通過基于網(wǎng)絡(luò)性能排名計(jì)算的Spearman系數(shù)評價(jià)不同代理度量的優(yōu)劣.
本文的代理度量包括:1)只使用少量的訓(xùn)練輪數(shù)微調(diào)子網(wǎng)絡(luò)以計(jì)算它們的適合度,但會引入評估偏差.2)利用預(yù)剪枝階段的卷積核排序快速初始化新結(jié)構(gòu).使用卷積核排序?qū)ΡA舻木矸e核進(jìn)行初始化相當(dāng)于剪枝操作,即保留排序中重要的卷積核,刪掉不重要的結(jié)構(gòu).本文通過實(shí)驗(yàn)證實(shí)這種初始化方法可減少評估偏差,提高評估策略的穩(wěn)定性.對于由基因產(chǎn)生的目標(biāo)結(jié)構(gòu),可將其看作是對原大網(wǎng)絡(luò)進(jìn)行剪枝得到的子結(jié)構(gòu),不同于預(yù)剪枝的操作,每層卷積核的數(shù)量不再由剪枝率決定,而由基因決定.
最終本文方法框圖如圖3所示.

圖3 本文方法框圖Fig.3 Flow chart of the proposed method
2 實(shí)驗(yàn)及結(jié)果分析
2.1 實(shí)驗(yàn)設(shè)置
為了驗(yàn)證本文方法(PAM)的有效性,在CIFAR-10[29]、CUB-200[30]數(shù)據(jù)集上進(jìn)行對比實(shí)驗(yàn).本文研究剪枝算法在卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)上的性能,包括單分支網(wǎng)絡(luò)(V-GG)[1]和殘差網(wǎng)絡(luò)(Residual Network, ResNet)[31].
本文選擇如下對比方法:Slim(Network Slim-ming)[7],Soft(Soft Pruning)[19],FPGM(Filter Pru-ning via Geometric Median)[15],HRank(High-Rank Feature)[18].Slim使用BN層比例因子和一個(gè)全局閾值.在高壓縮比的情況下,這種剪枝策略有可能剪掉一層中所有卷積核,導(dǎo)致網(wǎng)絡(luò)無法正確推理.在此次實(shí)驗(yàn)中,保證剪枝后網(wǎng)絡(luò)的每層至少保留一個(gè)卷積核.Soft和FPGM在每層都使用相同的剪枝率.HRank使用特征圖的秩判斷卷積核的重要性,在每層中使用一個(gè)預(yù)定義但各層不同的剪枝率.本文控制不同剪枝方法的壓縮情況(參數(shù)量和FLOPs)彼此之間相差不至過大,實(shí)現(xiàn)更公平的對比.
本文采用動(dòng)量為0.9、權(quán)重衰減為0.000 1的隨機(jī)梯度下降法(Stochastic Gradient Descent, SGD)[32]作為優(yōu)化器.在修補(bǔ)階段,設(shè)置種群大小為50,候選集大小為15,迭代次數(shù)為200.此外,初始變異尺度為16,變異尺度在第80輪調(diào)整為8,在第160輪調(diào)整為4.在計(jì)算基因適合度時(shí),將代理度量的微調(diào)輪數(shù)設(shè)置為5.在最后的微調(diào)階段,訓(xùn)練160輪.在種群演化的每輪中,首先進(jìn)行成對變異操作,種群增加一個(gè)由變異得到的子代基因,刪除最老的一個(gè)基因.再執(zhí)行交叉操作,種群增加一個(gè)由交叉得到的子代基因,刪除最老的一個(gè)基因.
2.2 實(shí)驗(yàn)結(jié)果對比
對于VGG網(wǎng)絡(luò),使用深度為19的結(jié)構(gòu),基礎(chǔ)剪枝率為90%.除了Soft和FPGM以外,其它方法得到的網(wǎng)絡(luò)結(jié)構(gòu)各不相同.因此,剪枝模型的FLOPs和參數(shù)量存在差異.在CIFAR-10數(shù)據(jù)集上,各方法在VGG19網(wǎng)絡(luò)上的剪枝結(jié)果如表1所示,表中baseline表示原始的預(yù)訓(xùn)練模型.由表可知,PAM得到的網(wǎng)絡(luò)具有最高的精度、最少的FLOPs和最少的參數(shù)量.

表1 各方法在VGG19網(wǎng)絡(luò)上的剪枝結(jié)果Table 1 Pruning results of different methods in VGG19 network
為了更清晰地展示預(yù)剪枝和修補(bǔ)的作用,各階段模型的準(zhǔn)確率如下:預(yù)訓(xùn)練模型為93.76%,預(yù)剪枝模型為56.89%,精剪枝模型為85.96%,輸出模型為92.02%.PAM得到的剪枝網(wǎng)絡(luò)各層的剪枝情況如圖4所示.由圖可看出,網(wǎng)絡(luò)輸入端和輸出端卷積層的剪枝率存在較大差異,VGG19是一個(gè)不同層卷積核冗余度差異較大的網(wǎng)絡(luò).實(shí)驗(yàn)證實(shí)PAM對其搜索最佳剪枝結(jié)構(gòu)的有效性.

圖4 VGG19網(wǎng)絡(luò)各層的剪枝率Fig.4 Pruning rate of each layer in VGG19 network
在實(shí)驗(yàn)中,ResNet網(wǎng)絡(luò)的深度為18,基礎(chǔ)剪枝率為90%.因?yàn)樵跉埐顗K的輸出部分有一個(gè)加法運(yùn)算,所以必須保持輸入輸出通道的對應(yīng)關(guān)系.如同大多數(shù)剪枝策略,PAM不剪枝殘差塊最后的卷積層和跨連分支.在CIFAR-10數(shù)據(jù)集上,各方法在ResNet-18網(wǎng)絡(luò)上的剪枝結(jié)果如表2所示.由表可見,PAM的綜合性能最好.

表2 各方法在ResNet18在網(wǎng)絡(luò)上的剪枝結(jié)果Table 2 Pruning results of different methods in ResNet18 network
ResNet網(wǎng)絡(luò)各層的剪枝情況如圖5所示,圖中只展示可剪的卷積層.從網(wǎng)絡(luò)不同層的剪枝率差異可看出,ResNet18各層的冗余度差異小于VGG19,這可能是因?yàn)闅埐罱Y(jié)構(gòu)具有恢復(fù)剪枝造成的信息丟失的能力.

圖5 ResNet18網(wǎng)絡(luò)各層的剪枝率Fig.5 Pruning rate of each layer in ResNet18 network
對VGG19、ResNet18網(wǎng)絡(luò)通過交叉操作可獲得“幸運(yùn)子網(wǎng)絡(luò)”的結(jié)果.在搜索過程中增加交叉操作,可得到許多不同剪枝率的剪枝子網(wǎng)絡(luò).本文選擇幾種不同的剪枝率,并給出在每個(gè)選定的剪枝率下的最佳剪枝網(wǎng)絡(luò).結(jié)果見表3和表4.正如假設(shè)可見,在搜索過程中有一些幸運(yùn)的子網(wǎng)絡(luò).例如,剪枝率為90.83%的ResNet18比基礎(chǔ)剪枝率為90.00%的ResNet18性能更優(yōu).

表3 對VGG19進(jìn)行交叉操作的結(jié)果Table 3 Crossover operation results of VGG19

表4 對ResNet18進(jìn)行交叉操作的結(jié)果Table 4 Crossover operation results of ResNet18
此外,針對VGG19修補(bǔ)的種群,演化過程如圖6所示.圖中橫坐標(biāo)是從初始化種群開始計(jì)數(shù)的基因數(shù)目,縱坐標(biāo)是使用性能評估策略得到的基因適應(yīng)度,水平虛線是0號基因,即預(yù)剪枝模型的適應(yīng)度.由圖可見變異操作和交叉操作對修補(bǔ)VGG19預(yù)剪枝網(wǎng)絡(luò)的影響,上述操作使種群適應(yīng)度逐步上升最后趨于收斂.

圖6 修補(bǔ)階段的種群演化過程Fig.6 Evolutionary process of population in mending stage
本文分析剪枝的ResNet18網(wǎng)絡(luò)在遷移學(xué)習(xí)中的性能.由于NAS技術(shù)資源消耗較大,在大數(shù)據(jù)集上搜索會耗時(shí)較多.所以一些工作[24,28]會將CIFAR-10數(shù)據(jù)集上搜索到的結(jié)構(gòu)遷移到較大數(shù)據(jù)集上,如ImageNet、CUB-200數(shù)據(jù)集,以間接證實(shí)有效性.本文采取類似的實(shí)驗(yàn)方法.針對已在CIFAR-10數(shù)據(jù)集上剪枝和微調(diào)的網(wǎng)絡(luò),改變第一個(gè)卷積層和最后一個(gè)全連接層,其它部分不變.基線網(wǎng)絡(luò)(baseline)訓(xùn)練160輪.使用相同的遷移學(xué)習(xí)超參數(shù)設(shè)置,PAM與baseline的剪枝結(jié)果如表5所示,PAM-TL表示PAM的遷移學(xué)習(xí)結(jié)果,PAM-scratch表示剪枝過的網(wǎng)絡(luò)從頭開始訓(xùn)練,Top-1準(zhǔn)確率(Top-1 Accuracy)指預(yù)測的最大概率類別與真實(shí)類別相同的樣本所占的比率.因?yàn)榛€和剪枝模型的訓(xùn)練計(jì)算量差異較大,本文參考文獻(xiàn)[22]的工作,對剪枝模型使用與baseline相同的計(jì)算量進(jìn)行訓(xùn)練,表示為PAM-TL-B.表5說明PAM的剪枝模型可較好地轉(zhuǎn)移到其它數(shù)據(jù)集.從PAM-TL-B的結(jié)果可知,當(dāng)剪枝率較高時(shí),最好使用更多的訓(xùn)練輪數(shù),提高模型的準(zhǔn)確率.

表5 ResNet18剪枝網(wǎng)絡(luò)的遷移學(xué)習(xí)結(jié)果Table 5 Transfer learning results of pruned ResNet18 network
2.3 代理度量分析
本節(jié)討論剪枝后保留參數(shù)的價(jià)值,并說明本文性能估計(jì)策略的有效性.受Zhou等[28]的啟發(fā),本文使用Spearman系數(shù)評估代理度量.首先,隨機(jī)生成50個(gè)VGG19的剪枝子網(wǎng)結(jié)構(gòu)(剪枝率均為90%),并進(jìn)行充分訓(xùn)練(在CIFAR-10數(shù)據(jù)集上訓(xùn)練160輪),稱為原始設(shè)置.然后,對這50個(gè)子網(wǎng)絡(luò)結(jié)構(gòu),使用性能評估策略中的代理度量進(jìn)行訓(xùn)練微調(diào),并將這個(gè)簡化的設(shè)置表示為“我們的代理度量”.為了對比,還使用隨機(jī)權(quán)值初始化子網(wǎng)絡(luò),再進(jìn)行訓(xùn)練微調(diào),即這些網(wǎng)絡(luò)結(jié)構(gòu)不再使用保留參數(shù),將此簡化設(shè)置稱為“對比的代理度量”.最后,利用Spearman系數(shù)計(jì)算原始設(shè)置和每個(gè)簡化設(shè)置之間的相關(guān)性,結(jié)果如圖7所示,Spearman系數(shù)越高,說明代理度量越可靠.
實(shí)驗(yàn)表明,相比隨機(jī)初始化方法,本文的代理度量方法能更好地保持不同子網(wǎng)絡(luò)精度的排序.在剪枝算法中,保留權(quán)重的一般作用是加速剪枝后的微調(diào)過程.該實(shí)驗(yàn)還說明保留權(quán)重的另一個(gè)作用,即當(dāng)使用少量的訓(xùn)練輪數(shù)評價(jià)不同子網(wǎng)的相對性能時(shí),可提高評價(jià)的可靠性.
從實(shí)驗(yàn)結(jié)果可得出另一個(gè)結(jié)論:估計(jì)策略中使用的訓(xùn)練輪數(shù)越多,可靠性越強(qiáng).這對于調(diào)整搜索過程成本具有重要意義,可通過調(diào)整代理度量中使用的輪數(shù)控制整個(gè)算法的耗時(shí).
3 結(jié) 束 語
本文結(jié)合人工規(guī)則和自動(dòng)搜索方法,提出基于自動(dòng)修補(bǔ)策略的網(wǎng)絡(luò)剪枝.在預(yù)剪枝階段,基于角度和范數(shù)信息,識別冗余的卷積核,并在預(yù)剪枝后設(shè)計(jì)基于神經(jīng)架構(gòu)搜索實(shí)現(xiàn)的修補(bǔ)階段.相比基于貪心思想的經(jīng)典網(wǎng)絡(luò)剪枝算法,本文方法可求解更佳的網(wǎng)絡(luò)剪枝結(jié)構(gòu),獲得更高的網(wǎng)絡(luò)性能.同時(shí),基于預(yù)剪枝結(jié)構(gòu)的基因編碼策略及策略中的成對變異,結(jié)合預(yù)剪枝階段的先驗(yàn)知識都可提高本文方法的搜索效率.實(shí)驗(yàn)表明,本文方法能較好地剪枝分類任務(wù)的網(wǎng)絡(luò).
從算法的搜索和評估策略的角度分析,還可進(jìn)一步改進(jìn)本文方法.在修補(bǔ)階段種群演化的初期,得到的剪枝網(wǎng)絡(luò)之間性能差距較大,因此在評估策略中只需設(shè)置少量的訓(xùn)練輪數(shù)就可區(qū)分不同剪枝網(wǎng)絡(luò)的優(yōu)劣.而在演化的后期,得到剪枝網(wǎng)絡(luò)之間性能差距較小,需要更多的訓(xùn)練輪數(shù),可考慮在種群演化過程中動(dòng)態(tài)調(diào)整評估策略使用的訓(xùn)練輪數(shù),更合理地分配計(jì)算資源,提高搜索效率.此外,相比本文實(shí)驗(yàn)部分的分類網(wǎng)絡(luò),目標(biāo)檢測、語義分割任務(wù)的網(wǎng)絡(luò)結(jié)構(gòu)更復(fù)雜,需要進(jìn)一步驗(yàn)證剪枝算法的有效性.將本文方法應(yīng)用于更多的視覺任務(wù)是下一步研究的重點(diǎn).