999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于連接敏感度的CNN初始化剪枝方法

2020-11-12 10:39:34張瑞琰安軍社姜秀杰
計算機應用與軟件 2020年11期
關鍵詞:模型

張瑞琰 安軍社 姜秀杰

1(中國科學院國家空間科學中心復雜航天系統電子信息技術重點實驗室 北京 100190) 2(中國科學院大學 北京 100049)

0 引 言

深度卷積神經網絡(DCNN)在圖像分類[1]、圖像檢測[2]和視頻跟蹤[3]等領域有著廣泛應用。然而參數冗余和計算量大的問題限制了其在嵌入式設備的部署。比如一幅227×227的圖像在AlexNet網絡中訓練時,參數量可達122 MB,MFLOPS高達724,其中高參數多集中于全連接層,而高計算量主要集中于卷積層。為解決高參數的問題,多采用卷積層替代全連接層的方法,因此卷積層的優化成為網絡壓縮關注的熱點,這引發了本文對算法優化的探究。

剪枝[4]作為一種簡便的網絡壓縮的有效方法,常用在目標檢測[5]和機器翻譯[6]等領域。一個標準化剪枝流程分為:預訓練、剪枝和微調,如圖1(a)所示。預訓練即訓練一個基準網絡,該網絡往往是參數量冗余的復雜網絡。網絡訓練完成后,其參數按照規定的某個標準進行排序,以判斷這些參數的重要性,將其中不重要的參數進行剪枝處理,得到精簡化模型,這一過程即為剪枝。而此時模型精度會有所下降,需要對模型再進行訓練達到要求的精度,稱作微調。該流程中,多次訓練十分消耗資源,因此本文更傾向于在預訓練之前實行一次性剪枝[7],獲取精簡模型,下一步只需以正常步驟訓練精簡模型即可。如此可節省大量的計算和存儲資源,同時也可以加快前向推斷速度,該流程如圖1(b)所示。

圖1 標準化剪枝流程和初始化剪枝流程

傳統的剪枝往往是數據驅動剪枝,根據訓練好的參數數值來進行排序。而文獻[8]指出結構化剪枝[9]的意義在于獲得一個優化模型架構,重要的是結構而非權重的值。因此,本文試圖尋找一種適合結構化剪枝的方法,得到模型的精簡結構。同時考慮到精簡模型的結構往往是手工設計好的,譬如PFEC[9]利用敏感度分析的方法確定基準網絡每一層的剪枝通道數,其中敏感度分析是控制其他層不變,改變某一層的輸出通道數來訓練,對于一次性全局剪枝而言,該方法并不完全適用;SFP[10]將卷積層按照相同比例進行“裁剪”(這里的“裁剪”只是將其置0)。基于此,本文認為以相同比例裁剪網絡有利于保存網絡的層間結構,輔以某種全局的權重重要性標準,可以一次性得到更好的精簡化網絡結構。考慮到權重的連接敏感度常用來判斷某個權重是否重要,因此可將其擴展為整個濾波器的重要性判斷標準。

綜上,本文提出了一種初始化全局剪枝的方法,綜合考慮層間結構和權重連接敏感度。剪枝基于濾波器的粗粒度方式,產生了一個緊湊的精簡模型,便于后續訓練和部署。

1 相關工作

網絡壓縮已經是神經網絡研究中越來越重要的課題之一。人們為了將人工智能產品(算法)落地化而不得不考慮實際需求,如計算量、資源分配、存儲等等。而在網絡壓縮中,較熱門的四個分支為低秩分解、量化、剪枝和輕型網絡。

低秩分解[11-12]是將權重矩陣分解為多個小矩陣,如奇異值分解(SVD)和CP分解等;量化主要是對權重和特征圖做量化處理,極限量化方式有二值化[13-14]和低比特[15]量化等,其缺點是需要配套的專用硬件來進行卷積運算;輕型網絡[16-17]即利用小卷積、分組卷積或殘差網絡的方式設計網絡結構,可大大減少運算量,其缺點是會引入新型處理層。

剪枝即為剔除網絡中的冗余連接,原理來源于哺乳動物的發育過程,幼兒時期神經元個數達到巔峰,個體成熟之后不重要的神經元逐漸退化掉。剪枝從方法上分類,可分為結構化剪枝和非結構化剪枝[18]。其中非結構化剪枝是裁剪掉權重的連接,形成稀疏化的卷積核,理論上可以提高運算速度,減少存儲空間,但需要配套的稀疏運算庫才能實際加速。結構化剪枝則不同,它將卷積的參數矩陣以輸出通道為基準劃分,每個輸出通道代表的三維參數矩陣看作一個濾波器(下文統稱filter)。裁剪掉的是若干個filter,因此不需要對現有的軟件庫和算法框架修改,可直接運行剪枝算法,本文主要討論結構化剪枝。

剪枝從裁剪過程上分類,可分為初始化剪枝、運行過程中剪枝和訓練結束后剪枝。初始化剪枝是在訓練的開始階段,根據數據集和未剪枝的網絡結構來進行預先剪枝,多采用自動機器學習方法(AutoML),如強化學習[19]和元學習[20]等方法;運行過程中剪枝是動態剪枝過程[21],在訓練過程中隨時剔除或添加所需結構,缺點則是運行中的運算量和存儲資源比較大;訓練結束后剪枝對訓練完的參數選擇重要的部分留下,再經過微調達到剪枝前的準確度,現在很多較為成熟的方案便是訓練結束后剪枝,采用l1[9]、l2[10]范數剪枝或通道相似度[20]方式剪枝。

本文的思路和貢獻如下:為尋求對數據集來說冗余盡可能少的網絡結構,在數值敏感和結構敏感兩個方面對網絡進行裁剪。數值敏感是指根據權重值在方差縮放初始化時對損失函數的影響(即連接敏感度)的方法[22],判斷出filter中反映前景信息較為突出的特征圖,裁剪掉剩余的filter;結構敏感是指以每層特征圖通道數的一定比例為基準進行層間結構微調。以通道裁剪率為裁剪條件,提出超參數α以平衡數值敏感和結構敏感的關系,最終得到網絡的精簡結構。使用初始化剪枝的方式,實現一次性全局裁剪。在訓練和部署前向推斷時,均可減輕計算量和存儲量,同時模型分類的準確度基本保持不變。

2 基于連接敏感度的初始化剪枝

2.1 結構化剪枝

對于一定數量(batch)大小的輸入特征圖而言,設其大小為N×C×H×W,其中:N為batch的數量;C為通道數;H與W為圖像的高和寬,為空間信息。在卷積層中,每層的卷積核大小為Cout×Cin×K×K,Cout為輸出圖像通道數,Cin為輸入通道數,K為卷積核的尺寸,常用大小為3和1,其中Cin×K×K稱為一個filter,每個卷積層中有Cout個filter。

結構化剪枝是剪除每個卷積層的若干個filter,該過程如圖2所示。淺色部分為裁剪掉的通道數,深色部分為實際參與運算的部分。由于上層剪枝的緣故,輸入特征圖部分通道被裁剪,因此卷積層的卷積核對應的輸入通道數也被裁剪,再加上本卷積層自身有部分filter被剪掉,所以輸入特征圖的對應通道數也被修剪。

圖2 結構化剪枝流程

設剪枝率為r,假設每層均裁剪同樣的比例,則對于網絡中第i層,裁剪完后的filter數量為Cout×(1-r),可得到輸出圖像尺度為N×Cout×(1-r)×H×W。那么對于網絡中第i+1層,卷積核的大小為Cout×(1-r)×Cin×(1-r)×K×K。這種情況下,設兩層的輸入圖像空間信息不變,則結構化剪枝的參數裁剪率Rparameter和運算量裁剪率Rflop。此時可保證參數量和運算量裁剪比例的一致。

(1-r)2

(1)

(1-r)2

(2)

特別地,對于ResNet殘差網絡,因為有shortcut層的存在,需要對剪枝的過程稍作修改。這里只考慮常規的兩層Residual block模塊,如圖3所示。引入make_layer層,代表輸出通道數相同的若干個相鄰的Residual block模塊的集合。

圖3 ResNet中Residual block模塊

其裁剪分為兩個并行過程,即weight layer 1剪枝和weight layer 2剪枝。因為剪枝只包含輸出通道數的修剪,因此weight layer 1剪枝只涉及該模塊內部改變,而不影響整個模塊的輸入輸出。而weight layer 2剪枝時,其filter個數需要和上一個Residual block模塊的weight layer 2模塊的filter個數相同,因此需要同時考慮make_layer層中的所有weight layer 2模塊,為它們求取一個共同的filter個數。

2.2 連接敏感度

這里均只考慮卷積層。令L為損失函數,l為層數,X為輸入圖像,Y為分類標簽,W為原始權重,其中filter的個數為Cl(j∈Cl),W*為剪枝之后的權重,剪枝后的filter的個數為Cn(Cn≤Cl),g為激活函數,S為重要性判斷函數,則優化問題為:

minL(Y,g(X;W*{0,1,…,Cn}))s.t.W*=S(W{0,1,…,j,…,Cl})

(3)

在第t次迭代更新時,第l層第i個權重的更新方式為:

(4)

(5)

可視化其特征圖也可以看出該統計意義的作用。在VGG16網絡初始化階段篩選出連接敏感度高的若干個filter,保持卷積層的參數不變,將已訓練好的網絡的第一層卷積層的特征圖可視化,如圖4所示。虛線左邊為剪掉的filter,右邊為連接敏感度高的filter。通過對比可得出保存的通道具備注意力(較亮的區域)集中在前景、提取的特征更豐富等特點,更便于后續的高維度特征分辨。

圖4 第一層卷積層的特征圖可視化

考慮到不同層的梯度值有層間差異,與初始化的標準差值以及每層的梯度量級遞減均有關。對VGG網絡,本文考慮實行層間的歸一化處理,該處理代表了層級分布的凸顯性,如式(6)所示。而對于ResNet網絡, shortcut層避免了梯度消失,可按需采用歸一化處理。

(6)

參照SPF的按比例剪枝的方法,既可以預防凸顯性剪枝造成的通道數為0的情況,也可以起到層間調節的輔助作用,對維持原始網絡結構有很大幫助。該特性記作結構維持特性,公式如下:

Struc(Fl)=Cl×r

(7)

綜合這兩個方面,本文給出最終剪枝的裁剪計量標準如下:

S(Fl,j)=α×Promi(Fl,j)+(1-α)×Struc(Fl)

(8)

式中:Promi(Fl,j)為數值參數,Struc(Fl)為結構參數,α為二者占比的調節超參數。

2.3 算法流程

因為數據集數量的龐大,如今的訓練均采用小批量數據集batch運算的方法。而用在本算法中,如果只訓練一次(不更新各參數)便得出結果,會對結果造成偏差。因此,本文采用多次訓練取平均的方法,且每個batch的構成都由每個類別內隨機采樣的數據組合得出。

本文方法簡單易操作,其基本流程為:先采用如算法1所示的步驟訓練出精簡模型所需要的網絡結構,按照這種結構對原始網絡稍作改變,之后采用與原始訓練方式相同的步驟訓練,即初始化參數,確定學習率、動量和迭代次數等超參數,開始訓練直至網絡收斂。

算法1獲取精簡網絡結構的剪枝算法

輸入:訓練數據X,裁剪率P,卷積層層數l,模型參數W={W(j),0≤j≤l},訓練次數epochmax。

輸出:精簡網絡的cfg和cfg_con(若存在)。

初始化模型參數W,據P確定保留的filter總數目

for epoch in range(0,epochmax):

根據訓練數據X獲取模型參數W的梯度值

forjin range(0,l):

據式(5)記錄每個filter梯度的l1范數

據式(6)做歸一化處理

記錄本卷積層的初始filter數目

end

據式(8)計算后排序獲取cfg和cfg_con(若存在)

更新cfg和cfg_con(若存在)

不更新優化器和模型參數

end

算法1的目的是得到網絡的各卷積層filter的個數,用列表cfg表示。對于ResNet,還需要確定weight layer 2剪枝的結果,用列表cfg_con表示。首先確定訓練次數epochmax;之后進行各filter的敏感度排序,確定精簡模型的網絡結構,即可得到cfg和cfg_con。

3 實 驗

本文在兩個數據集上驗證了該方法的有效性,實驗采用Pytorch架構,使用公開的訓練數據集來訓練。

3.1 數據集介紹

3.1.1CIFAR-10

CIFAR-10數據集由10個類的60 000個32×32彩色圖像組成,每個類有6 000幅圖像,共50 000幅訓練圖像和10 000幅測試圖像。數據集分為五個訓練批次和一個測試批次,每個批次有10 000幅圖像。測試批次包含來自每個類別的恰好1 000幅隨機選擇的圖像。

3.1.2IMAGENET-300

IMAGENET數據集包含120萬幅訓練圖片和5萬幅驗證圖片,共有1 000個類。因為硬件的限制,本文只訓練其中隨機挑選的300類來進行實驗說明,并計算這300類的均值和標準差來進行預訓練處理。

3.2 網絡模型

3.2.1CIFAR對應網絡

本文主要采用的基準網絡架構為簡化版的VGG16和ResNet系列網絡,這個簡化版本是正常版本的一種變異形式[9]。其中,簡化版VGG16最后只采用了兩層全連接層,因為輸入圖像的空間尺寸較小,因此最后的平均池化層參數不是7,而是2。對于ResNet而言,shortcut層會涉及到卷積步長大于1或輸入輸出通道不匹配的問題,標準的ResNet使用的1×1的卷積核來做變換,這里簡化版的ResNet只是通過補0或置0來使輸出通道適應輸入通道,不引入多余參數和計算量。同時只有3個make_layer層,即每個殘差模塊的輸出通道數都一樣,每個make_layer層的第一個殘差網絡可能會進行通道變換或者特征圖尺度放縮。綜上,這些簡化版本更適合于小尺寸的輸入圖像。

3.2.2IMAGENET對應網絡

IMAGENET數據集的圖像較大,不適宜再采用簡化版的網絡,因此直接采用標準化的ResNet網絡。采用上述的Residual block兩部分剪枝, shortcut層沿用標準化的1×1卷積核運算。

3.3 實驗數據

CIFAR數據集中,采用簡化版VGG16、ResNet20、ResNet56和ResNet110網絡,優化器為SGD,初始學習率0.1,均在總迭代數的0.5和0.75處進行學習率縮小十倍的操作,動量值設置為0.9,權重衰減率設置為1e-4。CIFAR10數據集的預處理包括周圍4像素外填充padding,隨機裁剪之后隨機水平翻轉,其余設置均未改變。batch的數量取128,訓練硬件為GPU GTX 1080。

IMAGENET數據集中,采用ResNet18和ResNet34網絡,分別在總迭代數的1/3處學習率變為之前的0.1。其余設置與CIFAR10數據集相同。

為保證訓練結果的公平性,未剪枝模型的計算量應保證和精簡網絡的計算量保持一致[8]:

epochbase×FLOPbase=epochprune×FLOPprune

(9)

式中:epoch代表訓練迭代次數;FLOP代表模型計算量;下標base和prune分別代表基準網絡和裁剪后的網絡。

3.4 實驗結果

3.4.1總體實驗結果

在數據集CIFAR10上,驗證集結果如表1所示。采用的網絡框架為簡化版VGG16、ResNet20、ResNet56和ResNet110。表格括號內前者為通道裁剪率,后者為超參數α的取值,ACC為訓練的分類準確度,FLOPS為前向訓練時的計算量,Para為參數量,Pruned為計算量裁剪和參數量裁剪的百分比。

表1 CIFAR驗證集結果

在VGG16基準網絡下,baseline為不裁剪的訓練結果。考慮到VGG網絡較為冗余,本文將通道裁剪率設置為60%和70%,可以看出分類準確度與PFEC和baseline結果相比無降低,且部分略有提升,同時實驗的參數量裁剪率在80%以上,計算量裁剪率在40%左右。在ResNet基準網絡下,在分類準確度基本維持不變時,本文實驗的計算量裁剪率和參數裁剪率均比對照組高。特別地,ResNet110網絡在計算量及參數量均裁剪掉50%以上時,模型分類的準確度依然維持較高水平。

在數據集IMAGENET300上,驗證集結果如表2所示,采用的網絡框架為Resnet18和Resnet34。表中均為通道剪枝率30%下的結果,與不裁剪的訓練結果baseline相比,準確度略微降低,且降低率在0.4%以內。此時,計算量裁剪率可達到30%左右,參數裁剪率為50%左右。

表2 IMAGENET驗證集結果

3.4.2α系數的影響

以ResNet20為例的cfg結果如圖5所示。可以看出α的大小控制著不同層的通道均衡程度。α趨于0時,意味著結構參數控制較大,各層裁剪通道數與原始輸出參數成比例;而α為1時,代表只有數值參數參與判斷,圖線波動較大,抖動很大,同時在shortcut層處的敏感度很高,因此保留的通道數較大。圖6為ResNet56各卷積層的通道數實例。

圖5 ResNet20的cfg結果

對于VGG網絡而言,只需要做層間歸一化,同時使用層間因子調節一下輸出通道數不為0即可,因此一般使α取趨向1的值。而對于簡化版的ResNet,考慮到shortcut層和make_layer層,為了保證shortcut層不引入多余的參數,本文將每個make_layer層看作一個整體而得出一個統一的輸出通道數,因此各個殘差模塊的中間輸出通道數的差距不應過大,所以α值取值比VGG網絡稍小。

圖6 ResNet56的cfg結果

3.4.3預訓練模型與初始化模型的cfg對比

使用本文方法分析預訓練模型的參數剪枝后能否恢復精度。實驗一使用初始化模型訓練出網絡結構列表cfg,之后對預訓練模型進行連接敏感度排序,每層只保留排序靠前的cfg中規定數目的通道數,之后進行40次的微調;實驗二使用預訓練模型直接進行全局連接敏感度排序及訓練cfg,剪枝后微調相同次數。

在VGG16上進行測試,將初始化參數固定。pre_cfg是采用實驗二得到的網絡結構列表cfg;initial_cfg是實驗一初始化階段得到的cfg。經過同樣的迭代次數之后,結果如表3所示。二者訓練出的通道數列表如圖7所示。實驗結果表明,前者的效果要比后者提高約0.7%。這說明了該方法只適應于初始化剪枝的方法,在已經訓練好的模型上效果并不理想。

表3 預訓練模型與初始化模型訓練結果對比

圖7 預訓練模型與初始化模型的cfg對比

3.5 討論分析

本文認為損失函數對權重的影響隨著訓練是會發生變化的。在剛開始時所有的權重都是需要訓練的,而在訓練多次之后,有些權重被認為已達到穩定值,此時損失函數對權重的影響是很小的。對于預訓練網絡,權重梯度的統計值更傾向于隨著網絡深度加速而逐級遞減的趨勢,此時如果按照當前權重梯度的l1范數進行裁剪,會對分類準確度造成較大損失。這說明本文的方法更適合于初始化模型剪枝,同時也側面印證了文獻[8]觀點的正確性,結構化剪枝最終得到的是網絡結構,而不是網絡參數。

4 結 語

本文提出一種卷積層的初始化剪枝方式,無須更新訓練中參數便可得出精簡模型的網絡結構,操作簡單,較易實現,且后續精簡模型訓練與正常訓練相同,而計算量和參數量有了大幅度減少,對通用的前向推斷硬件十分友好。

經過在不同數據集和不同架構上的測試,對比原始網絡分類訓練的結果,本文方法分類準確度基本不會下降,部分有所提升,其中ResNet110網絡在計算量及參數量均裁剪掉50%以上時,模型分類的準確度基本保持不變。

未來將研究對于輕小型網絡的剪枝優化算法,同時結合網絡量化的相關內容,進一步減少深度卷積神經網絡的計算量和參數量,便于其在嵌入式設備中的部署和應用。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 日韩欧美国产另类| 亚洲日本韩在线观看| 婷婷亚洲视频| 国产欧美日韩精品综合在线| 中国国产一级毛片| 国产福利观看| 香蕉久久国产超碰青草| 福利在线不卡一区| 57pao国产成视频免费播放| 成人精品亚洲| 亚洲国产欧美国产综合久久 | 97在线国产视频| 国产农村精品一级毛片视频| 亚洲首页在线观看| 国产成人亚洲无吗淙合青草| 亚洲一区二区成人| 国产欧美专区在线观看| 亚洲综合极品香蕉久久网| 国产手机在线ΑⅤ片无码观看| 一级毛片无毒不卡直接观看| 久久久久久尹人网香蕉| 欧美日韩精品一区二区在线线 | 丝袜国产一区| 精品一区二区无码av| 婷婷99视频精品全部在线观看| 一级毛片中文字幕| 天天爽免费视频| 日韩成人午夜| 伊人久久综在合线亚洲2019| 91人妻日韩人妻无码专区精品| 日本a∨在线观看| 成人免费黄色小视频| 国产黄色视频综合| 国产欧美自拍视频| 秋霞午夜国产精品成人片| 就去色综合| 免费无码在线观看| 欧美色视频日本| 欧美不卡视频在线| 国产一级小视频| 五月天婷婷网亚洲综合在线| 日本久久免费| 国产美女91呻吟求| 国产aaaaa一级毛片| 日本免费福利视频| 久久成人免费| 欧美日本中文| 青青操国产视频| 视频国产精品丝袜第一页| 日韩国产亚洲一区二区在线观看| AV片亚洲国产男人的天堂| 波多野衣结在线精品二区| 国产XXXX做受性欧美88| 伊人色综合久久天天| 成人国产精品一级毛片天堂 | 免费A∨中文乱码专区| 一区二区三区成人| 高潮毛片免费观看| 免费观看无遮挡www的小视频| 五月激激激综合网色播免费| 日韩第八页| 国产成人8x视频一区二区| 久久久久88色偷偷| 丁香综合在线| 亚洲精品欧美日韩在线| 国产成人亚洲精品无码电影| 日韩欧美国产另类| 在线免费不卡视频| 亚洲精品国产精品乱码不卞| 午夜日韩久久影院| 在线观看av永久| 国产在线精彩视频二区| a色毛片免费视频| 香蕉视频在线精品| 日韩久草视频| 97在线免费| www.亚洲一区二区三区| 欧美在线一二区| 免费一级无码在线网站| 色综合天天操| 久久久久人妻一区精品色奶水| 青青网在线国产|