王彩玲,王 炯,蔣國平
(南京郵電大學自動化學院、人工智能學院,江蘇南京 210023)
卷積神經網絡憑借著卓越的性能表現在圖像分類[1]、目標檢測[2-3]、語義分割[4]等計算機視覺任務中得到了廣泛的應用。然而這些具有卓越性能的深度神經網絡模型往往需要更高的算力開銷和更大的內存空間,因此很難部署在算力和內存資源受限的移動和穿戴設備上,這極大地限制了其實際應用。為了將深度神經網絡應用于實際,研究人員開始把更多的目光聚集于深度網絡模型壓縮方法的研究。最近被證實這些深度神經網絡通常都是過參數化的[5]。在刪除那些過渡參數化模型中的部分權值、激勵或者層的情況下,并不會引起網絡模型性能的顯著下降[6]。這使得在保證網絡性能良好的前提下,對網絡模型進行壓縮成為可能。目前,眾多壓縮深度神經網絡模型的方法被研究人員相繼提出。常用的 方法 有 網絡 剪 枝[7-9]、 低 秩分解[10]、 知識 蒸餾[11]、高效的神經架構[12]和參數量化[13]。
剪枝,作為壓縮深度神經網絡模型的主流方法之一,可以極大地減小內存占用和推理運算時間。在過去的十年內,激起了廣大研究者的興趣。剪枝主要分為結構化剪枝和非結構化剪枝。非結構化剪枝是將不重要的權值設置為0,從而實現高稀疏性,但是稀疏操作需要專門的硬件或者軟件庫來加快推理過程,因此限制了非結構化剪枝的應用。結構化剪枝則是移除原始網絡中不重要的濾波器(通道)。這種濾波器(通道)級別的剪枝只是對網絡模型的架構進行修改,并不會影響它的實際可用性。本文致力于通過濾波器剪枝來減少模型參數和加速模型運算,為低內存和低計算力的設備提供一個通用的策略。
濾波器剪枝的核心是根據設計好的評價標準,在保證網絡的性能不出現顯著下降的情況下,選擇并移除網絡模型中評價出的不重要濾波器。本文采用的是濾波器權值的信息熵作為該濾波器的重要性評價標準。濾波器的信息熵越大,則該濾波器對整個網絡而言越重要。
為了獲得具有緊湊性的模型,大多數方法是根據研究者的經驗對網絡模型的每一層使用固定的壓縮率進行剪枝[6,9]。 然而,這種根據經驗設置剪枝率的策略無法得到網絡模型的最優(yōu)結構。LEGR[14]算法率先引入了全局剪枝的概念,通過遺傳進化算法將濾波器在當前層中的局部重要性轉化成在整個網絡模型中的全局重要性。但是該算法充滿了不確定性,學習出的結果并不一定是最優(yōu)的。為此本文提出基于雙DDPG算法學習全局重要性的概念,即利用兩個DDPG分別學習出該卷積層中的每一個濾波器在整個網絡中的全局規(guī)模系數和全局偏差系數,從而實現全局重要性轉換。
最近,對剪枝得到的網絡從頭開始訓練的效果比微調的效果好[15]已被證實。為了進一步提高剪枝后網絡的表達能力,本文采用基于網絡參數自適應加權的多個相同網絡聯(lián)合并行訓練。
作為模型壓縮的主流方法之一,剪枝在一定程度上可以壓縮模型或者加速模型推理運算。網絡剪枝的主要思想是在不損失太多性能的情況下,減少原始網絡中冗余的權值和連接,得到一個緊湊的網絡。剪枝一般可分為兩大類:權重剪枝和濾波器剪枝(也稱通道剪枝)。
權重剪枝是Lecun等[8]在1990年首次提出的消除神經網絡中不重要的權值參數的概念,并且提出了根據網絡參數的二階偏導值作為評價參數重要性的方法。 Li等[6]提出了一種基于l?1范數重要性準則的剪枝方法,然后對剪枝后的網絡進行微調以恢復性能。Guo等[7]引入了動態(tài)剪枝的概念,利用動態(tài)剪枝來降低網絡的復雜度,將剪枝融入到訓練過程中,從而避免了錯誤剪枝。Aghasi等[16]則是設計了一個求解凸優(yōu)化的程序,在每一層尋找一個稀疏的權值集,刪除層中不重要的連接,同時保持了層的輸入和輸出與最初訓練的模型一致。Liu等[17]根據卷積層中空間的相關性提出了一種頻域動態(tài)剪枝的方案。在每次迭代中對頻域系數進行動態(tài)剪枝,并根據不同頻帶對精度的重要性,對不同頻帶進行區(qū)分剪枝。
權重剪枝是非結構化的剪枝,往往會產生稀疏權值矩陣,如果沒有專門的軟件庫或者硬件進行輔助處理是無法直接提高推理效率和減少內存空間占用。
濾波器(通道)剪枝是一種結構化的剪枝,在濾波器(通道)或者層的級別上刪除冗余的權值。通道剪枝能減少網絡模型占用的存儲空間和降低其在線推理的計算量。 Li等[6]提出了基于l?1范數的判斷準則,通過這種準則識別出對輸出精度較小影響的濾波器,從而移除該濾波器及其連接的特征圖,減少了計算開銷。He等[18]采用的是從零開始訓練和同時修剪模型的軟濾波器剪枝策略,可以有更大的容量用于訓練數據的學習。Huang等[19]把剪枝作為一個優(yōu)化問題,引入了一種新的參數縮放因子來縮放特定結構的輸出,然后把稀疏正則化加入到這些因子上,用隨機加速近端梯度(APG)方法求解該優(yōu)化問題。通過將一部分因子置為0,則可以移除相應的結構。Luo等[20]提出了一個高效統(tǒng)一的ThiNet框架,從下一層中提取相關信息去評判當前層中每一個濾波器的重要性。訓練階段和推理階段均在加速和壓縮CNN模型。Lin等[9]利用低秩的特征映射包含更少的信息和剪枝后的結果可以很容易地復制的特點,提出了一種基于高秩特征映射(HRank)的濾波器剪枝方法。從網絡架構角度出發(fā),結構剪枝的目的就是架構最優(yōu)的子網絡。但是這些方法均是預先定義好的體系架構,即根據經驗提前設置好每一層的剪枝率。這樣得到的模型架構并不是最優(yōu)的模型架構,存在一定偏差。He等[21]率先提出了基于強化學習的AutoML壓縮策略對模型進行壓縮。Lin等[22]把尋找最優(yōu)的剪枝結構作為目標,提出一種基于人工蜂群算法(ABC)的通道剪枝方法。Chin等[14]提出一種學習全局重要性剪枝的概念,即把濾波器在卷積層中的局部重要性經過遺傳進化算法(EA算法)轉換成全局重要性,從網絡整體角度對每一層中的濾波器進行剪枝。
在訓練過程中由于參數的減少,網絡模型通常收斂于局部最優(yōu)解。Liu等[15]表明,從零開始訓練修剪后的模型也可以取得與微調相當甚至更好的性能。
雖然這些方法取得了一定的效果,但仍存在剪枝過程耗時較長、未充分移除模型中的冗余參數以及未完全恢復剪枝后模型的性能等不足之處。針對上述問題,提出了一種基于雙DDPG的全局自適應濾波器剪枝方法?;陔p深度確定性策略梯度(DDPG)算法,從全局角度對網絡模型進行準確剪枝。在剪枝完成后進行多網絡聯(lián)合訓練,充分恢復網絡模型的性能。
本文方法主要分為基于濾波器權值?信息熵的局部重要性、基于雙DDPG學習全局重要性的剪枝和基于權值自適應加權的多個相同網絡聯(lián)合并行訓練3個部分。前者是負責計算出每個濾波器在當前卷積層中的信息熵,并作為其局部重要性得分。中間的做法是利用雙DDPG算法學習出深度網絡模型中每一個卷積層的全局規(guī)模系數和全局偏差系數,結合局部重要性得分即可求出每一個濾波器的全局重要性得分。隨后根據濾波器的全局重要性得分大小進行排序,并移除得分較小的濾波器。后者是一種新的訓練方法,對剪枝后的模型進行復制。對復制得到的多個相同子網絡采用不同的學習率和權值衰減同步并行訓練。在訓練過程中基于網絡模型中每個卷積層權值的信息熵對多網絡之間卷積層的權值自適應加權融合。
基于啟發(fā)式方法評估權值重要性是目前常用的剪枝策略,如基于輸出特征映射的秩作為權值的重要性判斷標準[9]。
熵是許多啟發(fā)式方法的起源。熵值越大,表明系統(tǒng)越混亂,網絡模型能從輸入圖像中提取出的信息也就越多[23]。即對于網絡模型中的濾波器(通道)而言,其權值的信息熵越小,在網絡中其重要性就越低。與濾波器權值的大小相比,濾波器權值的信息熵更能代表當前濾波器的重要性[24]。
假設 Wi,j∈ RNi×K×K為第 i個卷積層中第 j個濾波器的權值,其中Ni表示該層的輸入通道數,K×K表示濾波器中卷積核的大小。即當Wi,j的信息熵較小時,該濾波器從輸入中提取出的信息量就越少,對網絡模型的作用也就越小,可判定該濾波器為冗余的。假設Wi,j的元素值都是從隨機變量X的分布中采樣,并使用信息熵來度量該分布。為了進一步計算卷積層中濾波器的信息熵,把Wi,j中元素值的范圍均勻地分成N個區(qū)間,然后計算出每個區(qū)間的概率。最后,可以計算出該濾波器的信息熵為
其中,pk表示第k個區(qū)間內的元素個數占總元素個數的比值。
假設i層有C個過濾器,那么第i層的總信息熵為
式(1)和式(2)均是從單個濾波器角度出發(fā)計算濾波器和卷積層的信息熵,卻忽略了層中濾波器與濾波器之間的相關性。于是從層的角度計算信息熵,則網絡模型第i層的信息熵為
假設Ii,j為卷積神經網絡模型第i層中第j個濾波器的局部重要性,即
結構化的濾波器剪枝方法通??梢员硎緸?/p>
其中,L表示損失函數,N和W分別表示神經網絡模型及其參數,ri表示第i層的剪枝率。假設ci表示模型N中第i個濾波器個數,c′i表示剪枝后模型N′中第i個濾波器個數,即
大多數剪枝方法都是根據經驗,固定每一層的剪枝率ri。 LEGR[14]中率先提出了學習全局重要性剪枝的概念,即利用遺傳進化算法計算出每一層對應的全局規(guī)模系數α和全局偏差系數κ。 其中 α ∈RL,κ ∈RL。 但是其采用的遺傳進化算法迭代時間較久,且不能保證找到最優(yōu)解。設αi和κi分別表示第i層的全局重要性規(guī)模系數和全局偏差系數。為了快速而又準確地計算出每一層的 αi和 κi,本文提出了一種基于雙DDPG的學習全局重要性剪枝算法。算法流程如圖1所示。
圖1 基于雙DDPG的學習全局重要性剪枝算法流程圖
首先把網絡模型N的每一層的信息熵集合H={E(W1),…,E(WL)} 作為 DDPG1和 DDPG2的初始化輸入s10和s20。 把DDPG1和DDPG2的第t次迭代的輸出a1t和a2t作為網絡模型N的全局規(guī)模系數α和全局偏差系數κ。 即
即對于每一層,根據其αi和κi,可以計算出每一層中濾波器的全局重要性即
然后基于全局重要性進行排名,根據設置的剪枝率求出相應的閾值t,即
其中r表示對整個網絡模型的目標剪枝率。由閾值t即可求出, 即
結合式(6)和(10)可以得到每一層的剪枝率 (r1,r2,…,rL)。 剪枝過程如圖2所示。
圖2 全局剪枝過程
把剪枝后得到的子網絡模型 N′的準確度Acc(N′)作為反饋約束 reward返回給 DDPG1和DDPG2。
DDPG:采用DDPG的目的是尋找出連續(xù)變動空間中的最優(yōu)值(最優(yōu)的α和κ)。 DDPG的結構如圖3所示。
圖3 DDPG代理結構
本文策略與 AGMC[25]和 AMC[21]相似,采用截斷式正態(tài)分布進行噪聲處理
用損失函數更新DDPG代理
其中rt=reward=Acc(N′)為反饋約束。
Env:模擬環(huán)境,根據當前的st和at生成下一個狀態(tài)的 st+1, 即
其更新策略采用的是相應DDPG代理中Actor optimizer的更新策略。
剪枝后的模型由于網絡參數的減少,在訓練過程中極易陷入局部最優(yōu)解。為此采用了嫁接[26]的策略,即對得到的最優(yōu)子網絡進行基于權值自適應加權的多個相同網絡聯(lián)合并行訓練。
首先對剪枝得到的子網絡進行復制,然后對復制得到的多個子網絡采用不同的學習率和權重衰減率同時進行訓練。當所有子網絡使用訓練樣本完成一輪迭代之后進行一次網絡之間權值自適應加權,過程如圖4所示。
圖4 多個相同網絡權值自適應加權過程
假設W1i為模型N1′的第i層的權重參數,W2i為模型N2′的第i層的權重參數,則加權融合后模型N2′的第i層的權重參數為
其中β(0<β<1)為自適應加權融合參數,即
其中A和c為超參數。
最后,訓練完成之后,從多個相同網絡模型中選取性能最優(yōu)的子網絡模型。
為了分析和驗證本文所提方法的有效性,在CIFAR10、CIFAR100 和 ILSVRC?2012 ImageNet標準分類數據集上對幾種常用的卷積神經網絡模型(VGG16,ResNet56,MobileNetV2,ResNet50)進行實驗。其中 CIFAR10和 CIFAR100數據集,包含50 000張訓練圖像和10 000張測試圖像。CIFAR10數據集中圖像類別為10類,CIFAR100數據集中圖像類別為100類。ILSVRC?2012 ImageNet是規(guī)模龐大的數據集,其中包含128萬張訓練圖像和5萬張驗證圖像,圖像類別為1 000類。
深度學習框架為Pytroch,操作系統(tǒng)為Ubuntu 18.04,CPU 為 Intel@Veon(R) E5?1640 v4,運行內存為 8 GB,GPU 為 NVIDIA GeForce GTX2080Ti,GPU顯存為11 GB。
浮點運算量(Float Points Operations, FLOPs),表示運行該模型需要的浮點數運算量。此外對于CIFAR10、CIFAR100 和 ILSVRC?2012 ImageNet數據集均采用Top?1的分類預測準確度作為網絡模型的性能指標。
在CIFAR?10/100數據集上,通過隨機裁剪、隨機拉伸和隨機旋轉進行數據增強,把輸入圖像的尺寸大小統(tǒng)一為32?32?3。在利用雙DDPG算法學習全局規(guī)模系數和全局偏差系數過程中,epoch為300。在多個相同網絡并行訓練過程中,優(yōu)化器是隨機梯度下降和梯度集中[27],epoch為 90,余弦退火調整學習率,每一子網絡的初始學習率從[0.1,0.01]區(qū)間內隨機取值,權重衰減率從[1e-4,2e-3]區(qū)間內隨機取值,c=600,A=0.2。
在ILSVRC?2012 ImageNet數據集上,輸入圖像的尺寸大小統(tǒng)一為224?224?3。數據增強方法與CIFAR?10/100數據集的數據增強方法相同。在利用雙DDPG學習網絡模型每一個卷積層的全局規(guī)模系數和全局偏差系數中,epoch為300。在多個相同網絡并行訓練過程中,優(yōu)化器是隨機梯度下降和梯度集中[27],epoch為 60,學習率的調整策略為余弦退火,每一子網絡的初始學習率從[0.1,0.01]區(qū)間內隨機取值,權重衰減率從[1e-4,1e-3]區(qū)間內隨機取值,c=500,A=0.3。
3.5.1 CIFAR10數據集
為了驗證本文所提方法的通用性和有效性,本文對主流的深度神經網絡模型 ResNet56、VGG16、MobileNetV2進行結構化剪枝,并與現有的先進方法PF[6]、 HRank[9]、 GAL[28]、 AMC[21]、 DCP[29]、LEGR[14]、ABC[22]、MDP[30]、SSS[19]進行對比,證明本文提出方法的有效性。結果如表1所示。
對于ResNet56網絡而言,該網絡模型由殘差模塊組成,其包含55個卷積層。從表1可以看出,該方法得到的剪枝后的模型在FLOPs小于其他方法的情況下,網絡模型性能明顯優(yōu)于其他方法。最后還統(tǒng)計了剪枝后網絡模型中各個卷積層的剪枝率,如圖5所示。
圖5 在CIFAR10數據集上ResNet56每一層的剪枝率
對于VGG16網絡而言,該網絡模型包含3個全連接卷積層和13個順序卷積層。如表1所示,HRank方法在FLOPs降至73.7 M時,在CIFAR10測試數據集上的分類準確度為91.23%。而該方法在FLOPs降至78 M時,在CIFAR10測試數據集上的分類準確度為92.34%。
表1 不同剪枝方法在CIFAR10數據集上的對比結果
MobileNetV2是緊湊型網絡,結構為基于分離卷積的倒置殘差結構。網絡模型中包含52個卷積層。由于MobileNetV2的計算成本極小,對其進行剪枝是一件極具挑戰(zhàn)性的任務。盡管如此,本文所提出的方法是在減少30%FLOPs的條件下,通過相同多網絡并行訓練使得模型的精度增至96.09%。本文方法的效果明顯優(yōu)于所對比的幾種先進方法。
3.5.2 CIFAR100數據集
在CIFAR100數據集上對ResNet56網絡進行剪枝,并與具有先進代表性的方法 AMC[21]、LEGR?EA[14]以及 SFP[18]進行對比,如表 2 所示。由表2可以看出,通過本文的方法把標準的ResNet56網絡的FLOPs降至63.8 M時,網絡的性能只降低了0.68%。并且通過定量對比,發(fā)現該方法依舊優(yōu)于所對比的主流方法。圖6為剪枝后網絡模型中各個卷積層的剪枝率。通過對比圖5和圖6,發(fā)現對于同一個網絡,在FLOPs相近似的情況下,基于不同的數據集,每一層的剪枝率是不相同的。
表2 不同剪枝方法在CIFAR100數據集上的對比結果
圖6 CIFAR100數據集上ResNet56每一層的剪枝率
3.5.3 ImageNet數據集
表3為本文提出的剪枝方法與 HRank[9]、ThiNet?30[20]、MetaPruning[31]、ABC[22]等現有先進算法在大規(guī)模數據集ImageNet上的實驗結果。模型的FLOPs由4.136 G減少至0.927 G,模型精度則減少至70.73%。通過表3可以看出該方法在大規(guī)模數據集上面的表現仍然優(yōu)于現有的先進方法。
表3 不同剪枝方法在ImageNet數據集上的對比結果
本文提出了一種基于雙DDPG的全局自適應濾波器剪枝方法。首先計算出濾波器權值的信息熵,并作為該濾波器在當前層中的局部重要性得分。接著,基于雙DDPG算法學習出每一層的全局規(guī)模系數和全局偏差系數,從而計算出卷積層中每個濾波器的全局重要性得分。根據全局重要性得分進行剪枝,得到結構最優(yōu)的子網絡。最后為了恢復剪枝后得到子網絡的性能,采用了基于權值自適應加權的多個相同網絡聯(lián)合并行訓練。實驗結果表明,本文提出的方法在保證網絡性能良好的同時,能夠有效減少模型浮點計算量。在一些數據集上,子網絡模型的性能表現甚至超過了原始網絡模型。同時,通過該方法得到的剪枝后的模型具有較強的易用性,不需要特殊的硬件或軟件庫進行輔助,可以輕松地部署在可移動設備上或者移植到下游的計算機視覺任務中。下一步將嘗試把模型剪枝與其他模型壓縮方法(如量化、神經架構搜索)相結合。