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

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

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

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

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

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

表2 各方法在ResNet18在網絡上的剪枝結果Table 2 Pruning results of different methods in ResNet18 network
ResNet網絡各層的剪枝情況如圖5所示,圖中只展示可剪的卷積層.從網絡不同層的剪枝率差異可看出,ResNet18各層的冗余度差異小于VGG19,這可能是因為殘差結構具有恢復剪枝造成的信息丟失的能力.

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

表3 對VGG19進行交叉操作的結果Table 3 Crossover operation results of VGG19

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

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

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