鞏凱強(qiáng),張春梅,曾光華
(北方民族大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,銀川 750021)
(?通信作者電子郵箱kq192011@sina.com)
近年來,卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)為代表的神經(jīng)網(wǎng)絡(luò)在計(jì)算機(jī)視覺、自然語言處理等領(lǐng)域取得了突破性的進(jìn)展。然而,隨著神經(jīng)網(wǎng)絡(luò)的識(shí)別精度不斷提升,網(wǎng)絡(luò)結(jié)構(gòu)也越復(fù)雜,需要占用更多的計(jì)算和存儲(chǔ)資源,“深度結(jié)構(gòu)”帶來高效性的同時(shí),也增大了模型的參數(shù)量。卷積網(wǎng)絡(luò)模型的復(fù)雜度主要體現(xiàn)在兩個(gè)方面:一是卷積層包含了網(wǎng)絡(luò)90%的運(yùn)算量;二是卷積層產(chǎn)生的龐大參數(shù)量,解決這兩個(gè)問題,具有重要的應(yīng)用理論意義。現(xiàn)階段的神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練主要在服務(wù)器和圖形處理器(Graphics Processing Unit,GPU)端,對(duì)于一些應(yīng)用場(chǎng)景已經(jīng)不能滿足實(shí)際的需求,如在自動(dòng)駕駛、知識(shí)推理的落地,當(dāng)前阻礙神經(jīng)網(wǎng)絡(luò)落地的原因主要是龐大的參數(shù)量難以在嵌入式端等資源受限的設(shè)備上部署,因此,模型壓縮以降低模型中冗余參數(shù)為目標(biāo),將有利于神經(jīng)網(wǎng)絡(luò)在嵌入式端的落地。
本文的主要工作如下:
1)研究了卷積神經(jīng)網(wǎng)絡(luò)的剪枝方法。以Lenet5 和更快的區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Faster Region with Convolutional Neural Network,F(xiàn)aster RCNN)為剪枝對(duì)象,分析不同均值和方差的濾波器提取的圖像特征,得出本文衡量卷積核參數(shù)重要性的評(píng)價(jià)標(biāo)準(zhǔn),以此標(biāo)準(zhǔn)對(duì)卷積網(wǎng)絡(luò)進(jìn)行剪枝。
2)研究了網(wǎng)絡(luò)模型加速方法。以Faster RCNN 為壓縮對(duì)象,將本文的剪枝評(píng)價(jià)標(biāo)準(zhǔn)結(jié)合張量分解的方法,在稀疏度較高的卷積核分解,并選擇一組最優(yōu)秩作為張量分解的重構(gòu)誤差值對(duì)Faster RCNN 進(jìn)行混合壓縮,壓縮后測(cè)試模型在樹莓派4B上的加速效果。
剪枝以神經(jīng)網(wǎng)絡(luò)的冗余參數(shù)剪除為目標(biāo),反向傳播(Back Propagation,BP)神經(jīng)網(wǎng)絡(luò)[1]流行之后,對(duì)神經(jīng)網(wǎng)絡(luò)的剪枝相應(yīng)地發(fā)展起來[2]。Mozer 等[3]提出Skeletonization 算法對(duì)神經(jīng)網(wǎng)絡(luò)剪枝;LeCun 等[4]提出了OBD(Optimal Brain Damage),使用二階梯度衡量網(wǎng)絡(luò)模型參數(shù)的重要性,從而去除冗余參數(shù)。當(dāng)卷積神經(jīng)網(wǎng)絡(luò)發(fā)展起來后,Jaderberg 等[5]使用低秩分解方法對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分解,實(shí)現(xiàn)了4.5 倍的加速效果而準(zhǔn)確度誤差在1%內(nèi);Zhang 等[6]采用多次“剪枝-重訓(xùn)練”的方式對(duì)AlexNet 進(jìn)行網(wǎng)絡(luò)剪枝;Liu 等[7]采用稀疏結(jié)構(gòu)對(duì)卷積網(wǎng)絡(luò)壓縮;Han 等[8]使用L1 范數(shù)和L2 范數(shù)作為模型參數(shù)的重要性評(píng)價(jià);Lebedev 等[9]使用最小絕對(duì)值收斂和選擇算子(Least absolute shrinkage and selection operator,Lasso)對(duì)參數(shù)約束以產(chǎn)生稀疏性;Yuan 等[10]使用分組變量回歸對(duì)權(quán)值參數(shù)約束;Molchanov等[11]基于泰勒展開提出使用一階導(dǎo)數(shù)與權(quán)重的乘積絕對(duì)值作為參數(shù)重要性評(píng)價(jià)進(jìn)行漸進(jìn)式剪枝;Li等[12]提出量級(jí)裁剪方式,使用權(quán)重的絕對(duì)值和大小作為衡量參數(shù)重要性的評(píng)價(jià)方式進(jìn)行多次剪枝;He 等[13]對(duì)通道剪枝(Channel Pruning)進(jìn)行改進(jìn),使用強(qiáng)化學(xué)習(xí)得到各層剪枝率的最優(yōu)組合,然后對(duì)卷積核進(jìn)行剪枝。
一個(gè)深度卷積網(wǎng)絡(luò)模型中,高層卷積層維度較大,其權(quán)值稀疏度較高,壓縮的直接方法是低秩表示原張量,低秩分解是通過減少卷積核參數(shù)達(dá)到壓縮模型的效果,其思想就是使用因子分解將一個(gè)張量用幾個(gè)參數(shù)較少的張量來近似表示。低秩分解按照對(duì)卷積核的分解維度的不同主要有兩種:空間維度的分解和通道維度的分解,前者將3×3的卷積核分解為3×1或者1×3;后者將輸入和輸出通道的維度分解(如512×512 分解為300×300)。Denton 等[14]用低秩分解的ZFNet網(wǎng)絡(luò)的卷積層進(jìn)行加速,實(shí)現(xiàn)2.5倍的實(shí)際加速同時(shí)準(zhǔn)確率下降在1%以內(nèi)。Lebedev等[15]提出了簡單二步法加速卷積層:第一步,使用非線性最小二乘法來計(jì)算CP(Canonical Polyadic)分解,將卷積核張量分解為秩為1的張量形式;第二步,使用CP分解將具有小卷積核的四個(gè)卷積層替換原來的卷積層。Tai等[16]提出了一種計(jì)算低秩張量分解的新算法,用于去除卷積核中的冗余。
以往的剪枝算法,以權(quán)值大小來衡量卷積核的貢獻(xiàn)度,這容易裁剪重要的權(quán)值,如在人臉關(guān)鍵點(diǎn)檢測(cè)時(shí),整張人臉的很多特征:眼睛的邊緣和顏色特征,即使權(quán)值很小但它提取的特征有利于分類與回歸。本文基于上述研究,從圖像濾波器的角度出發(fā),剪除每層冗余濾波器來減少模型中的冗余參數(shù)和計(jì)算量;同時(shí)探索剪枝結(jié)合張量分解對(duì)卷積神經(jīng)網(wǎng)絡(luò)壓縮。
在一個(gè)確定結(jié)構(gòu)的深度卷積網(wǎng)絡(luò)模型中,大量的參數(shù)能夠提升網(wǎng)絡(luò)模型的分類能力,但同時(shí)也容易使網(wǎng)絡(luò)模型過擬合,反之過少的參數(shù)使網(wǎng)絡(luò)模型欠擬合,可見有效的壓縮參數(shù)量方法對(duì)網(wǎng)絡(luò)模型性能的重要性。
在傳統(tǒng)的圖像處理方法中,通過人工設(shè)定卷積核參數(shù)進(jìn)行卷積運(yùn)算來獲得圖像的特征表示,提取特征方式通過卷積操作如式(1):
如圖1(卷積核不同權(quán)值參數(shù)提取的圖像特征)可得出:Prewitt 算子(圖1(b))和Laplace 算子(圖1(c))可以獲得圖像的邊緣特征,CNN 學(xué)習(xí)到的卷積核存在與Prewitt 算子和Laplace 算子相似的特征提取作用;若對(duì)圖像進(jìn)行均值濾波器(圖1(d))卷積操作,可以看出提取到圖像的基本輪廓信息,同樣CNN 中存在很多權(quán)值相近均值濾波器,這說明圖像集中在低頻和高頻特征可以用不同權(quán)值參數(shù)的濾波器提取,通過激活函數(shù)對(duì)提取的特征進(jìn)行非線性變換,多個(gè)濾波器提取的非線性變換的向量最后組合成一幅圖像整體特征。
圖1 卷積核不同權(quán)值參數(shù)提取的圖像特征Fig.1 Image features extracted by different weight parameters of convolution kernel
基于上述分析,均值較大的卷積核提取到低頻信號(hào),而方差較大的卷積核銳化圖像,提取到高頻信號(hào),方差較大的提取算子更能提取出圖像的邊緣特征。而邊緣是構(gòu)成圖像的最基本的特征,卷積核邊緣提取的效果直接影響圖像識(shí)別和理解。濾波器裁剪的模型壓縮即在裁剪過程中,最大限度地保留能夠提取到圖像輪廓信息和邊緣信息的濾波器,因此,本文認(rèn)為卷積網(wǎng)絡(luò)中均值和方差較小的濾波器為冗余濾波器,采用聚類的方式將均值和方差較小的濾波器分離出進(jìn)行裁剪。以訓(xùn)練好的Faster RCNN 模型為例,該主干網(wǎng)絡(luò)中共有13 層卷積層:Conv1_1、Conv1_2、Conv2_1、Conv2_2、Conv3_1、Conv3_2、Conv3_3、Conv4_1、Conv4_2、Conv4_3、Conv5_1、Conv5_2、Conv5_3,以及在區(qū)域推薦網(wǎng)絡(luò)(Region Proposal Network,RPN)中的RPN_Conv、RPN_Cls 卷積層,分別計(jì)算每個(gè)卷積核參數(shù)的均值m 和方差s,設(shè)定卷積核C 形狀為(h,w,n,t),其均值和方差如式(2)和式(3):
Conv3_1層卷積核均值直方圖如圖2所示,方差直方圖如圖 3 所示,則 Conv3_1 層卷積核均值范圍為-0.000 5~-0.002,Conv3_1層卷積核方差范圍為0.015~0.025,該區(qū)間內(nèi)的濾波器離散度相似,對(duì)其他層的卷積層參數(shù)提取后分布情況與之類似。
依據(jù)卷積核權(quán)值分布特征,通過距離相似性度量關(guān)系對(duì)均值和方差具有相似性的濾波器聚類,則Conv3_1 層卷積核統(tǒng)計(jì)量特征分類如圖4所示。
卷積核的貢獻(xiàn)度評(píng)估分類展出了卷積核參數(shù)的3 個(gè)特點(diǎn):1)每層卷積核參數(shù)的均值和方差分布在不同區(qū)間,有些卷積核的均值很低,說明該卷積核學(xué)習(xí)的權(quán)值參數(shù)提取到圖像中的低頻信號(hào)部分或者背景部分,即存在冗余性參數(shù);2)卷積核參數(shù)類似正態(tài)分布,可以將每個(gè)卷積核的貢獻(xiàn)度按照相似性函數(shù)分為兩大類;3)均值較低和方差較大的卷積核說明其學(xué)習(xí)的權(quán)值參數(shù)波動(dòng)大,提取到圖像的灰度值等變化幅度較大的高頻信號(hào),該類卷積核的貢獻(xiàn)度較大,因此剪枝過程中考慮方差評(píng)價(jià)標(biāo)準(zhǔn)對(duì)卷積核的貢獻(xiàn)度度量也是較為重要。
圖2 Conv3_1層均值直方圖Fig.2 Mean histogram of Conv3_1 layer
圖3 Conv3_1層方差直方圖Fig.3 Variance histogram of Conv3_1 layer
圖4 卷積核統(tǒng)計(jì)量特征的貢獻(xiàn)度評(píng)估分類Fig.4 Contribution evaluation classification of convolution kernel statistics features
由于卷積神經(jīng)網(wǎng)絡(luò)規(guī)模逐漸向更深、更大層次發(fā)展,一般而言,網(wǎng)絡(luò)性能正相關(guān)于網(wǎng)絡(luò)深度和參數(shù)量,但過深的網(wǎng)絡(luò)和過多的參數(shù)會(huì)帶過擬合、梯度消失現(xiàn)象。一種改進(jìn)現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)的手段是將卷積層等密集連接結(jié)構(gòu)轉(zhuǎn)化為稀疏的連接形式,因?yàn)檫@可以降低計(jì)算冗余度,同時(shí)維持網(wǎng)絡(luò)的表達(dá)能力,其數(shù)學(xué)依據(jù)是一個(gè)大型稀疏矩陣分解為小的密集子矩陣,以此來近似稀疏結(jié)構(gòu),張量分解對(duì)于去除冗余信息和加速卷積計(jì)算是一種極為有效的方法,本文對(duì)深層次的卷積網(wǎng)絡(luò)模型,剪枝結(jié)合張量分解進(jìn)行模型壓縮。向量稱為一維張量,矩陣稱為二維張量,以一個(gè)二維張量表示的圖像為例,低秩表示后重構(gòu)圖像信息如圖5(奇異值數(shù)對(duì)圖像壓縮的失真對(duì)比)可得出:一張300×200 大小的圖像,奇異值Rank 分別設(shè)定為(20,40,150),Rank=40(圖5(c))前40 個(gè)奇異值就能大致還原圖像,這是因?yàn)樵谄娈愔稻仃囍衅娈愔禍p小得特別快,可以用最大的奇異值和對(duì)應(yīng)的左右奇異向量來近似描述矩陣,因此對(duì)具有稀疏性的矩陣或者張量用其低秩近似表示可以有效壓縮參數(shù)量。
卷積神經(jīng)網(wǎng)絡(luò)中的卷積核為四維張量,表示為W ∈Rd×d×I×O,其中d、I、O分別表示卷積核的尺寸、輸入通道和輸出通道。常見的張量分解方法有CP分解和Tucker分解,Tucker 分解可將卷積核分解為一個(gè)核心張量與若干因子矩陣,是一種高階張量的主成分分析方法,設(shè)分解的秩(r1,r2,r3,r4),其表達(dá)形式如式(4):
圖5 奇異值數(shù)對(duì)圖像壓縮的失真對(duì)比Fig.5 Distortion comparison of singular value number to image compression
圖6 展示了將一個(gè)張量W ∈Rd×d×I×O,分解為和W'∈Rr4×d×d×I過程,W(圖6(a))為原始張量,參數(shù)量q=d2IO;P和W('圖6(b))為分解后張量,此時(shí)參數(shù)量對(duì)于大多數(shù)網(wǎng)絡(luò)Or4遠(yuǎn)遠(yuǎn)小于,并且秩越小,壓縮效果則越明顯。
圖6 張量分解過程示意圖Fig.6 Schematic diagram of tensor decomposition process
本章詳細(xì)描述均值方差剪枝結(jié)合張量分解的混合壓縮方法,壓縮方法流程如圖7 所示,主要包括剪枝流程和張量分解的低秩表示,剪枝方法剪除相對(duì)不重要的權(quán)值參數(shù)使得參數(shù)量減少,而張量分解將具有稀疏性的張量低秩表示,通常深層次的卷積神經(jīng)網(wǎng)絡(luò),單獨(dú)的剪枝方法會(huì)帶來較大的精度損失,在網(wǎng)絡(luò)微調(diào)時(shí)需增加迭代次數(shù)使模型收斂,帶來重訓(xùn)練時(shí)間長的問題,若在稀疏性較大的高維度卷積層低秩分解,就避免了剪枝方法剪除重要的權(quán)值帶來的精度損失,同時(shí)產(chǎn)生的不同尺寸稀疏級(jí)聯(lián)卷積層可以加速壓縮后的網(wǎng)絡(luò)模型收斂。
一個(gè)卷積核的均值和方差越小的條件下,說明該卷積核學(xué)習(xí)到背景信息或者低頻冗余信號(hào),在保證網(wǎng)絡(luò)精度的前提下裁剪這些貢獻(xiàn)度較小的卷積核。
網(wǎng)絡(luò)訓(xùn)練是優(yōu)化卷積核參數(shù)W 的過程,來減小定義的損失函數(shù)E(T|f,W),T 為訓(xùn)練集,網(wǎng)絡(luò)裁剪時(shí)優(yōu)化參數(shù)子集Wp,其中貢獻(xiàn)度較大的卷積核Wp∈W,優(yōu)化裁剪的精度損失如式(5),剪枝流程如圖8所示。
圖7 剪枝結(jié)合張量分解的混合壓縮流程Fig.7 Flowchart of mixed compression of pruning and tensor decomposition
基于均值和方差的卷積核裁剪過程,其卷積層的具體剪枝流程如算法1所示。
算法1 剪枝算法。
輸入 訓(xùn)練好的網(wǎng)絡(luò)模型,開始剪枝的卷積層,聚類終止閾值threshold。
輸出 壓縮后的網(wǎng)絡(luò)模型。
第1步 根據(jù)2.1節(jié)剪枝標(biāo)準(zhǔn)計(jì)算卷積層W的每個(gè)卷積核均值和方差,組成聚類數(shù)據(jù)樣本dataset{(m(1),s(1)),(m(2),s(2)),…,(m(n),s(n))},其中m(1),m(2),…,m(n)>T0。
第2步 優(yōu)化值E ≥threshold時(shí)
1)初始2 個(gè)聚類中心Zj(O),計(jì)算dataset 中的每個(gè)點(diǎn)與質(zhì)心的距離Di,j,并劃分到距離較近的質(zhì)心(C1、C2)所屬集合;
2)重新計(jì)算每個(gè)集合的質(zhì)心qi;
4)如果E <threshold,返回C1和C2的索引值Index0 和Index1。
第3 步 比較C1和C2兩類卷積核均值的絕對(duì)值和即|S1|、|S2|,保留較大的一類卷積核。
第4 步 在較小的一類卷積核中找出方差大于閾值T1,則該濾波器保留。
第5 步 上一層剪枝后,重構(gòu)下一層卷積核的連接通道,繼續(xù)用上述剪枝步驟,直到完成所有需剪枝的卷積層。
第6 步 對(duì)深度卷積網(wǎng)絡(luò)剪枝后進(jìn)行微調(diào)。剪枝完成后,加載剪枝前訓(xùn)練好的參數(shù)繼續(xù)訓(xùn)練使網(wǎng)絡(luò)重新收斂。
第7步 輸出剪枝的網(wǎng)絡(luò)。
算法實(shí)現(xiàn)中,從裁剪的第一層卷積層開始,獨(dú)立地裁剪每一層濾波器。裁剪時(shí)本文沒有采用根據(jù)均值或方差閾值大小直接對(duì)模型進(jìn)行裁剪,因?yàn)槿粼谀骋粚訛V波器的均值或方差值均小于閾值,則該層所有濾波器均會(huì)被裁剪而對(duì)模型產(chǎn)生結(jié)構(gòu)性破壞,本文依據(jù)模型中各層卷積層濾波器學(xué)習(xí)到的數(shù)據(jù)固有屬性,通過聚類的方法對(duì)濾波器分類,這樣做的好處是剪枝中自動(dòng)找出均值和方差的剪枝閾值,盡可能地將較小均值和方差冗余濾波器提取到圖像重要特征的濾波器分為幾個(gè)不同簇,之后保留冗余濾波器中方差大于T1的濾波器,該方法適用于卷積核均值和方差連續(xù)分布在不同區(qū)間,采用類聚方式找出冗余濾波器的分布區(qū)間從而裁剪。
圖8 卷積核裁剪流程Fig.8 Pruning process of convolution kernel
數(shù)學(xué)上一個(gè)矩陣的奇異值分解是唯一的,從而可以將一個(gè)矩陣運(yùn)算稀疏化,而一個(gè)四階張量分解是一個(gè)非確定性多項(xiàng)式(Nondeterministic Polynomially,NP)問題,分解結(jié)果存在多樣性,目前可行的分解方法為高階正交迭代算法。對(duì)于3×3 或者5×5 大小的卷積核,其分解因子矩陣為單位陣,假設(shè)待分解張量W(h,w,s,t),卷積核分解的正交迭代步驟如下:
1)確定壓縮張量輸入和輸出通道方向的壓縮秩(r3,r4)。
2)分解輸入和輸出通道方向的因子矩陣A1、A2,其中A1∈Rs×r3,初始化W(1)為展開的前r3個(gè)主奇異值對(duì)應(yīng)的左奇異向量組;A2∈Rr4×t,初始化W(2)為展開的前r4個(gè)主奇異值對(duì)應(yīng)的左奇異向量組。
3)求解分解的核心張量g,如式(6):
5)得到的核心張量g 及因子矩陣構(gòu)造相似矩陣Rec(h,w,s,t),然后計(jì)算構(gòu)造誤差如式(7):
6)重復(fù)過程3)~5)步驟,直到構(gòu)造誤差小于閾值10-5。
7)算法返回g(h,w,s,t),U(1,1,s,r3),V(1,1,r4,t),其中g(shù)、U、V張量分別作為分解后的第2、1、3個(gè)卷積核的權(quán)值。
為了驗(yàn)證上述方法,本文以Lenet5 和VGG16 基礎(chǔ)的Faster RCNN 為研究對(duì)象,Lenet5 網(wǎng)絡(luò)進(jìn)行剪枝,剪枝流程如前文所述?!凹糁?張量分解”對(duì)深度卷積網(wǎng)絡(luò)Faster RCNN 壓縮,訓(xùn)練集/測(cè)試集采用Pascal VOC 數(shù)據(jù)集,實(shí)驗(yàn)環(huán)境:Windows 10 操作系統(tǒng)、8 GB 內(nèi)存、網(wǎng)絡(luò)模型訓(xùn)練框架tensorflow和嵌入式系統(tǒng)樹莓派4B。
對(duì)Lenet5 中的兩層卷積層剪枝,然后測(cè)試其準(zhǔn)確度在Minst 數(shù)據(jù)集變化,剪枝前后的卷積核形狀和裁剪率如表1所示。
本文中的剪枝方法和主流的剪枝后準(zhǔn)確度對(duì)比如表2所示。
為了驗(yàn)證本文中均值和方差的剪枝評(píng)價(jià)標(biāo)準(zhǔn),剪枝后的Lenet5 和文獻(xiàn)[12]的剪枝標(biāo)準(zhǔn)在Minst 數(shù)據(jù)集上特征圖可視化,如圖9(不同剪枝標(biāo)準(zhǔn)剪枝后特征)可得出:加入方差剪枝標(biāo)準(zhǔn)(圖9(c))的壓縮方法,剪枝后更能夠準(zhǔn)確提取到圖像邊緣、輪廓等特征。
表1 Lenet5剪枝前后卷積核形狀Tab.1 Shape of convolution kernel before and after pruning of Lenet5
表2 所提方法與其他方法的剪枝結(jié)果對(duì)比 單位:%Tab.2 Pruning result comparison of the proposed method with other pruning methods unit:%
圖9 不同剪枝標(biāo)準(zhǔn)剪枝后Minst數(shù)據(jù)集的特征圖Fig.9 Feature map of Minst dataset after pruning with different pruning standards
Faster RCNN 算法是目標(biāo)檢測(cè)領(lǐng)域領(lǐng)先的算法之一,該算法框架由2 個(gè)部分組成:特征提取網(wǎng)絡(luò)和區(qū)域生成網(wǎng)絡(luò),本節(jié)對(duì)VGG16 為基礎(chǔ)的特征提取網(wǎng)絡(luò)和區(qū)域生成網(wǎng)絡(luò)的卷積層剪枝結(jié)合張量分解壓縮,來驗(yàn)證這種方法的壓縮效果。Conv4層前網(wǎng)絡(luò)的卷積層輸出維度較低,輸出通道的稀疏性較低,因此采用2.1 節(jié)剪枝標(biāo)準(zhǔn)剪除冗余濾波器;而在維度較高的Conv5 層的輸入輸出通道均為512,其權(quán)值分布如圖10 所示,縱坐標(biāo)表示在不同迭代次數(shù)下權(quán)值大小,權(quán)值參數(shù)范圍為-0.01~0.01,如此稀疏的數(shù)據(jù)分布適合低秩壓縮。
圖10 Faster RCNN中Conv5_1權(quán)值分布Fig.10 Weight distribution of Conv5_1 in Faster RCNN
在tensorboard 中可視化本文的剪枝標(biāo)準(zhǔn)結(jié)合張量分解的損失值,并比較相同壓縮率下直接用權(quán)值閾值方式的損失值,在高維卷積層進(jìn)行張量分解的剪枝迭代30 000 步收斂于0.6附近,而權(quán)值閾值的剪枝方式需要迭代40 000~50 000 步才能達(dá)到收斂。這是因?yàn)閺埩糠纸鈱⒊砻艿木矸e層分解為幾個(gè)稀疏結(jié)構(gòu)的卷積層,可以降低計(jì)算復(fù)雜度和參數(shù)量,同時(shí)將一層變?yōu)槎鄬拥牟呗裕ㄟ^選擇一組秩得到較小的重構(gòu)誤差,近似出原卷積核參數(shù),在fine-tune 時(shí)可以較快地達(dá)到收斂狀態(tài),對(duì)于更深層次的卷積網(wǎng)絡(luò)而言,結(jié)合張量分解的剪枝可以加快網(wǎng)絡(luò)收斂,有效縮短了剪枝后的網(wǎng)絡(luò)重訓(xùn)練時(shí)間。
混合壓縮后Faster RCNN 卷積核參數(shù)量如表3 所示,Conv4_3~Conv5_2 低秩分解時(shí)秩設(shè)定為(128,128),網(wǎng)絡(luò)層的參數(shù)量為每個(gè)維度值之積,計(jì)算得出混合壓縮后所有卷積層的參數(shù)量大小為31.3 MB,網(wǎng)絡(luò)卷積層參數(shù)量達(dá)到了54%的壓縮率。
表3 混合壓縮后的Faster RCNN卷積核參數(shù)量Tab.3 Convolution kernel parameters of Faster RCNN after mixed compression
低秩分解后網(wǎng)絡(luò)的前向計(jì)算加速如表4所示,以Conv5_1層為例,實(shí)驗(yàn)結(jié)果表明,秩值取(128,128)或者(256,256)基本能重構(gòu)待分解的張量。
表4 張量分解秩值對(duì)卷積層前向計(jì)算加速效果Tab.4 Comparison of forward calculation acceleration effect of convolutional layer with tensor decomposition of different rank
壓縮前后Faster RCNN 在PASCAL VOC 的P-R(Precision-Recall)曲線以及AP(Average Precision)如圖11所示。
圖11 壓縮前后Faster RCNN的PR曲線Fig.11 PR curve of Faster RCNN before and after compression
將提出的“均值、方差剪枝+張量分解方法”與其他裁剪算法下的Faster RCNN的AP值進(jìn)行比較,具體結(jié)果如表5所示。
1)基于張量分解的壓縮算法[18]:低維卷積層到高維卷積層均用奇異值分解(Singular Value Decomposition,SVD)。
2)隨機(jī)裁剪(Random Pruning)[19]:對(duì)于每一個(gè)卷積層,隨機(jī)裁剪一定量的濾波器來對(duì)模型進(jìn)行壓縮和加速。
3)卷積層先基于Lasso 回歸進(jìn)行網(wǎng)絡(luò)剪枝[20],再進(jìn)行SVD。
表5 不同壓縮方法下的Faster RCNNTab.5 Faster RCNN under different compression methods
在對(duì)比實(shí)驗(yàn)中,以刪除冗余參數(shù)作為有效的壓縮神經(jīng)網(wǎng)絡(luò)手段[21],對(duì)權(quán)值具有稀疏性的Faster RCNN 為壓縮模型,分別用3 種策略進(jìn)行對(duì)比壓縮后的模型效果:文獻(xiàn)[18]中所有卷積層進(jìn)行張量分解,在稀疏度不大的低維卷積核分解誤差累積到高維卷積核從而影響精確度;文獻(xiàn)[19]隨機(jī)方式裁剪濾波器,裁剪率越大,貢獻(xiàn)度較大的濾波器被裁剪的概率也越大;文獻(xiàn)[20]是L1 范數(shù)懲罰權(quán)值小的方式,剪枝中也會(huì)裁剪離散度較大卷積核,采用均值和方差的權(quán)值貢獻(xiàn)度評(píng)價(jià)方式能夠保留映射邊緣、輪廓特征的卷積核,在具有稀疏性的高維度卷積層只需對(duì)訓(xùn)練好的模型奇異值分解,達(dá)到網(wǎng)絡(luò)模型加速的目的;本文從不同的角度壓縮模型,提出的均值和方差剪枝標(biāo)準(zhǔn)結(jié)合張量分解的方法優(yōu)于其他方法,由于該方法的精確度變化和模型加速取決于分解時(shí)的秩,因此需要多組秩值確定壓縮模型的最優(yōu)秩。
本文針對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)擁有巨大的參數(shù)量和計(jì)算量,研究了基于均值和方差剪枝+張量分解的壓縮方法,為了驗(yàn)證算法有效減少參數(shù)量和計(jì)算量,分別在Lenet5 和Faster RCNN 進(jìn)行了剪枝,明顯降低了模型的存儲(chǔ)需求,使得模型在損失精度極少的情況下,運(yùn)行效率和存儲(chǔ)效率同時(shí)提升。未來工作是進(jìn)一步探索表征卷積核參數(shù)重要性的量,利用張量稀疏性,找出卷積層最優(yōu)秩占比算法,使得壓縮后模型精確度和加速效果達(dá)到最優(yōu)。