楊 康,郭榮佐+,李 超,許建榮,嚴(yán)陽(yáng)春,宮祿齊
(1.四川師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,四川 成都 610101;2.中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100190;3.北京工業(yè)大學(xué) 信息學(xué)部光電子技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京 100124)
龐大的深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中必然存在著與模型性能相關(guān)性不明顯的結(jié)構(gòu)[1],所以剪枝的根本意義在于找出這些相關(guān)性不大的結(jié)構(gòu),將其裁剪,從而簡(jiǎn)化網(wǎng)絡(luò)結(jié)構(gòu)。目前的剪枝方法中,例如Louizos等、Hao Li等、Yang He等[2-4]提出的按照結(jié)構(gòu)正則化大小剪枝網(wǎng)絡(luò)的方法,He Yang等[5]、Lin Mingbao等[6]按照各種結(jié)構(gòu)之間相關(guān)性進(jìn)行裁剪,但是都沒(méi)有提出對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)中的不同層設(shè)置不同剪枝量方法。盡管已有方法分析深度卷積神經(jīng)網(wǎng)絡(luò)各層對(duì)剪枝的敏感性[7],但是此方法使用完整的深度卷積神經(jīng)網(wǎng)絡(luò)研究各層對(duì)剪枝的敏感性,完整的網(wǎng)絡(luò)結(jié)構(gòu)與最終的剪枝網(wǎng)絡(luò)結(jié)構(gòu)差異較大,剪枝以后各層最終的敏感性變化也相對(duì)較大,該方法判斷剪枝網(wǎng)絡(luò)各層結(jié)構(gòu)與模型性能的相關(guān)性上有所不足。
本文主要有以下幾項(xiàng)突出工作:
(1)提出逐層復(fù)原剪枝網(wǎng)絡(luò)的方法:在各層已被同等比例剪枝的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)上,逐層復(fù)原各層網(wǎng)絡(luò),探索神經(jīng)網(wǎng)絡(luò)各層與模型性能的相關(guān)性。相比于已有剪枝敏感性分析方法[7],能更加準(zhǔn)確、可靠地分析出各層與模型性能的真實(shí)相關(guān)性;
(2)根據(jù)各層與模型性能的相關(guān)性對(duì)各層分類級(jí)。不同相關(guān)性的層分到不同類級(jí)中;
(3)標(biāo)定各層網(wǎng)絡(luò)模型在不同剪枝比例下的最終剪枝量,為各類級(jí)網(wǎng)絡(luò)設(shè)置剪枝量。根據(jù)各層的剪枝量,結(jié)合FPGM[5]方法對(duì)模型進(jìn)行剪枝。
深度卷積神經(jīng)網(wǎng)絡(luò)模型壓縮的主流方式有如下幾種:①剪枝:對(duì)現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行裁剪;②知識(shí)蒸餾:用大網(wǎng)絡(luò)的結(jié)構(gòu)信息,指導(dǎo)小網(wǎng)絡(luò)的構(gòu)建與訓(xùn)練[8,9];③參數(shù)共享,量化:多個(gè)參數(shù)近似、共享一個(gè)值,或者降低參數(shù)的浮點(diǎn)數(shù)的表示位數(shù)[10-14];④矩陣分解:大的網(wǎng)絡(luò)矩陣,分解為多個(gè)小的網(wǎng)絡(luò)矩陣[15,16];⑤輕量化網(wǎng)絡(luò)設(shè)計(jì):設(shè)計(jì)結(jié)構(gòu)更緊湊,計(jì)算量更小的網(wǎng)絡(luò)結(jié)構(gòu)[17-19]。但是輕量化網(wǎng)絡(luò)的設(shè)計(jì)相對(duì)復(fù)雜困難,需要強(qiáng)大的團(tuán)隊(duì)基礎(chǔ),且輕量化網(wǎng)絡(luò)中仍然存在著冗余,仍然可以被剪枝。
深度卷積神經(jīng)網(wǎng)絡(luò)模型壓縮方式多種多樣,且各有優(yōu)劣。對(duì)已有神經(jīng)網(wǎng)絡(luò)模型進(jìn)行剪枝不僅能大幅度壓縮深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),且實(shí)現(xiàn)性上相對(duì)簡(jiǎn)潔,易操作,在工業(yè)及科研領(lǐng)域上有重要的研究?jī)r(jià)值。所以近年來(lái)眾多學(xué)者對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)剪枝進(jìn)行研究,剪枝方法又可以分為兩大類:非結(jié)構(gòu)化剪枝和結(jié)構(gòu)化剪枝。
非結(jié)構(gòu)化剪枝:剪枝過(guò)程不拘于某一種結(jié)構(gòu)形式,是最小權(quán)重單元的剪枝。非結(jié)構(gòu)化剪化枝的根本只是將網(wǎng)絡(luò)結(jié)構(gòu)中的某些模型權(quán)重值設(shè)置為0,使卷積矩陣稀疏化,因此也被叫作稀疏化剪枝。非結(jié)構(gòu)化剪枝的剪枝過(guò)程實(shí)質(zhì)如圖1所示。許多非結(jié)構(gòu)化剪枝選擇在卷積核上做非結(jié)構(gòu)化的剪枝,稀疏化卷積核,例如Han Song等[1]提出一種迭代式的方法多次裁剪低于某個(gè)閾值的網(wǎng)絡(luò)權(quán)重。Carreira-Perpinán等[20]將剪枝看作優(yōu)化問(wèn)題,非結(jié)構(gòu)化的剪枝對(duì)模型性能影響最小的權(quán)重。非結(jié)構(gòu)化剪枝在剪枝過(guò)程中因不拘于某一種結(jié)構(gòu),所以相對(duì)結(jié)構(gòu)剪枝形式來(lái)說(shuō)較為靈活,剪枝量相對(duì)更高。但是非結(jié)構(gòu)化剪枝,只是稀疏化了卷積矩陣,不能直接簡(jiǎn)化模型實(shí)際運(yùn)算復(fù)雜度。所以需要再次采用稀疏矩陣的加速方式來(lái)加速網(wǎng)絡(luò)運(yùn)算。
圖1 非結(jié)構(gòu)化剪枝過(guò)程實(shí)質(zhì)
結(jié)構(gòu)化剪枝以某種特定結(jié)構(gòu)粒度為基本單元進(jìn)行裁剪,其過(guò)程實(shí)質(zhì)如圖2所示。在實(shí)際剪枝過(guò)程中,許多方法如文獻(xiàn)[2,21-26]都會(huì)結(jié)合訓(xùn)練過(guò)程多次迭代。Hao Li等[3]采用L1正則化標(biāo)準(zhǔn)判斷卷積核與模型性能相關(guān)性。Yang He等[4]采用L2正則化標(biāo)準(zhǔn)判斷卷積核與模型性能相關(guān)性,并且創(chuàng)造性提出SFP的方法,將剪枝過(guò)程與訓(xùn)練過(guò)程結(jié)合。Liu Zhuang等[27]將BN層γ(縮放)系數(shù)加入到訓(xùn)練loss中,γ引導(dǎo)網(wǎng)絡(luò)結(jié)構(gòu)稀疏化,以此為基礎(chǔ)來(lái)剪枝神經(jīng)網(wǎng)絡(luò),該方法在工業(yè)領(lǐng)域被廣泛使用。Yang He等[5],采用同層內(nèi)卷積核之間的歐幾里得距離為判斷標(biāo)準(zhǔn)的方法,判斷各卷積核與模型性能的相關(guān)性,創(chuàng)造性的使用裁剪歐幾里得距離中位數(shù)卷積核的方法式。Lin Mingbao等[6]采用卷積核的秩的大小來(lái)判斷卷積核與模型性能的相關(guān)性,在小樣本剪枝訓(xùn)練中取得了優(yōu)異的成績(jī)。結(jié)構(gòu)化剪枝相較于非結(jié)構(gòu)化剪枝剪枝維度受限,所以剪枝量相對(duì)較小。但是此方法能夠直接加速網(wǎng)絡(luò)運(yùn)算。所以近年來(lái)更多研究學(xué)者關(guān)注此維度的剪枝。
圖2 結(jié)構(gòu)化剪枝過(guò)程實(shí)質(zhì)
近年來(lái)眾多學(xué)者都關(guān)注于新穎的剪枝方法,甚至多種剪枝方法分步迭代使用,以此達(dá)到較高的剪枝量。但是我們?cè)诩糁ρ芯恐邪l(fā)現(xiàn),具有分層結(jié)構(gòu)的深度卷積神經(jīng)網(wǎng)絡(luò)模型不同層含有不同的信息量,剪枝中應(yīng)當(dāng)對(duì)不同層設(shè)置不同的剪枝量。通過(guò)這種設(shè)置,在模型總體剪枝基本相同F(xiàn)LOPs(浮點(diǎn)數(shù)運(yùn)算量)情況下,模型性能損失更??;或者在保證模型有良好性能表現(xiàn)下,模型能剪枝更高的比例。
這一章節(jié)將分為4部分來(lái)闡述如何獲得各層與模型性能的相關(guān)性及如何對(duì)各層分類級(jí)。第一部分,闡述通過(guò)逐層復(fù)原各層結(jié)構(gòu)分析模型性能相關(guān)性以及如何對(duì)層分級(jí)的思路流程;第二部分,通過(guò)對(duì)比已有層剪枝敏感性分析方法來(lái)詳細(xì)闡明逐層復(fù)原分析各層結(jié)構(gòu)與模型性能相關(guān)性的方法;第三部分,根據(jù)各層結(jié)構(gòu)與模型性能相關(guān)性,運(yùn)用分類級(jí)算法對(duì)模型各層進(jìn)行分類級(jí)。第四部分,標(biāo)定各層實(shí)際剪枝量,為各類級(jí)設(shè)定剪枝率。
深度卷積神經(jīng)網(wǎng)絡(luò)模型中的各個(gè)結(jié)構(gòu)對(duì)模型性能的貢獻(xiàn)度是不同的,剪枝的整體思路就是找到各個(gè)模型結(jié)構(gòu)與模型性能之間的相關(guān)性,按相關(guān)性大小對(duì)模型實(shí)施裁剪。傳統(tǒng)的各層等比例剪枝法,各個(gè)結(jié)構(gòu)之間相關(guān)性排序范圍是在各層之內(nèi),而層分級(jí)剪枝法將性能相關(guān)性的排序的范圍拓寬到了各層之間。各層對(duì)模型性能的相關(guān)性的準(zhǔn)確度量是層模型層分類級(jí)的基礎(chǔ)。所以在運(yùn)用分類級(jí)法前需要先獲得各層與模型性能相關(guān)性的準(zhǔn)確度量。基于模型性能相關(guān)性的分級(jí)剪枝率剪枝方法整體步驟如下:
(1)利用已有剪枝策略對(duì)神經(jīng)網(wǎng)絡(luò)模型進(jìn)行各層等剪枝比例的裁剪;
(2)使用逐層復(fù)原的方法,依次得到復(fù)原每一層以后模型性能。多次實(shí)驗(yàn),取性能的平均值;
(3)根據(jù)各層結(jié)構(gòu)與模型性能相關(guān)性,運(yùn)用分類級(jí)算法對(duì)模型各層進(jìn)行分類級(jí);
(4)標(biāo)定神經(jīng)網(wǎng)絡(luò)模型在不同剪枝量下各層的實(shí)際剪枝量,為每一類網(wǎng)絡(luò)層設(shè)置相同的剪枝量;
(5)使用FPGM剪枝方法,按照步驟(4)中的每一層的剪枝量對(duì)神經(jīng)網(wǎng)絡(luò)每一層做剪枝。
已有的剪枝敏感性分析法[3],是在完整神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,每次剪枝一層網(wǎng)絡(luò),逐層進(jìn)行,得到只剪枝某層網(wǎng)絡(luò)后模型的性能。剪枝敏感性分析法原理如圖3所示,其中ACC表示完整網(wǎng)絡(luò)模型的性能,ACC1表示只剪枝第一層網(wǎng)絡(luò)模型的性能,同理有(ACC2,ACC3, ……)。而逐層復(fù)原與逐層剪枝相反,用已經(jīng)被等剪枝率剪枝了的模型為基礎(chǔ),每次復(fù)原一層剪枝網(wǎng)絡(luò),逐層進(jìn)行。逐層復(fù)原剪枝網(wǎng)絡(luò)原理如圖4所示,其中ACC′表示等剪枝率剪枝網(wǎng)絡(luò)模型性能,ACC′1表示只恢復(fù)第一層網(wǎng)絡(luò)結(jié)構(gòu)以后模型的性能。同理有(ACC′2,ACC′3……)。使用ACC′n與ACC′的差值作為該層與模型性能相關(guān)性的標(biāo)定。即模型各層與模型性能之間的相關(guān)性可以表示為
X={ACC′1-ACC′,ACC′2-ACC′,……,ACC′n-ACC′}T
圖3 剪枝敏感性分析法原理
圖4 逐層復(fù)原剪枝網(wǎng)絡(luò)原理
X(i)越大說(shuō)明復(fù)原這一層與模型性能的相關(guān)性越高,可以為該層設(shè)置較低的剪枝率。在求各層性能相關(guān)性以后,會(huì)出現(xiàn)ACC′n-ACC′為負(fù)數(shù)的情況,說(shuō)明復(fù)原這一層網(wǎng)絡(luò)模型后性能反而降低了,所以這層應(yīng)該剪枝更高的比例,當(dāng)X(i)≤0時(shí)X(i)取X中非零值中的最小值。逐層復(fù)原方法得到模型各層與模型性能之間相關(guān)性的方法與已有剪枝敏感性分析法比較有以下兩個(gè)優(yōu)勢(shì):①相關(guān)性更加準(zhǔn)確:判斷性能相關(guān)性的網(wǎng)絡(luò)結(jié)構(gòu)更加接近于最終的剪枝模型;②在實(shí)驗(yàn)過(guò)程中可以節(jié)省大量的實(shí)驗(yàn)時(shí)間,因?yàn)檫x用已經(jīng)裁剪的網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò),相比較選用完整網(wǎng)絡(luò)作為基礎(chǔ)網(wǎng)絡(luò)有更小的網(wǎng)絡(luò)結(jié)構(gòu)。
用集合G表示所有層的所有結(jié)構(gòu),用M表示神經(jīng)網(wǎng)絡(luò)的層數(shù),用N表示神經(jīng)網(wǎng)絡(luò)每一層結(jié)構(gòu)數(shù)量。則有Gpq∈G,表示神經(jīng)網(wǎng)絡(luò)的任一結(jié)構(gòu)。其中p∈{1,2,3,…,M},q∈{1,2,3,…,N}。剪枝的理想狀態(tài)是在整個(gè)G中按順序剪枝模型性能相關(guān)性較小的結(jié)構(gòu)Gij。因?yàn)樯窠?jīng)網(wǎng)絡(luò)模型具有黑盒性,所以很難對(duì)整個(gè)網(wǎng)絡(luò)的所有結(jié)構(gòu)做與模型性能相關(guān)性的精準(zhǔn)標(biāo)定。只能通過(guò)一些表象反推結(jié)構(gòu)與模型性能之間的相關(guān)性,做結(jié)構(gòu)與模型性能相關(guān)性的相對(duì)標(biāo)定。且在實(shí)際訓(xùn)練過(guò)程中,模型初始化等會(huì)帶來(lái)隨機(jī)性,也不可能做到結(jié)構(gòu)與模型性能相關(guān)性的絕對(duì)標(biāo)定。所以本文提出將深度神經(jīng)網(wǎng)絡(luò)層分類級(jí)剪枝法,將待剪枝的神經(jīng)網(wǎng)絡(luò)層進(jìn)行分類,為不同類的層結(jié)構(gòu)設(shè)置不同的剪枝量。此方法將會(huì)帶來(lái)以下兩個(gè)好處:①網(wǎng)絡(luò)訓(xùn)練過(guò)程中的隨機(jī)初始化雖然會(huì)造成網(wǎng)絡(luò)性能相關(guān)性的波動(dòng),但是在一定范圍內(nèi)波動(dòng)且在多次實(shí)驗(yàn)取平均值以后的網(wǎng)絡(luò)層會(huì)被分到同一類級(jí)當(dāng)中;②分類級(jí)方法還能在一定程度上保證原始網(wǎng)絡(luò)結(jié)構(gòu)的特性,減少每層不同剪枝量對(duì)原始模型結(jié)構(gòu)特點(diǎn)的改變。
使用上述方法分析得到VGG-16網(wǎng)絡(luò)各層模型性能相關(guān)性折線圖,如圖5所示,從圖中可以看出相鄰兩層之間的模型性能相關(guān)性不會(huì)出現(xiàn)突變式的變化。這是因?yàn)楫?dāng)某一層網(wǎng)絡(luò)在復(fù)原以后,下一層網(wǎng)絡(luò)的裁剪比例也會(huì)有相對(duì)應(yīng)的網(wǎng)絡(luò)結(jié)構(gòu)復(fù)原(2.4小節(jié)詳細(xì)分析這一原因)。所以當(dāng)對(duì)模型性能相關(guān)性分類級(jí)以后,在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中上下相鄰的兩層一般設(shè)置相同的剪枝比例。這樣就可以使剪枝網(wǎng)絡(luò)保留更多原始網(wǎng)絡(luò)的結(jié)構(gòu)信息。
圖5 VGG-16模型各層性能相關(guān)性
各層剪實(shí)際枝量剖析如圖6所示,設(shè)卷積層第n層卷積核的剪枝量為Pn%,如圖中,模型第n層中淺色陰影部分,那么會(huì)造成n層卷積層的輸出通道數(shù)相應(yīng)減少Pn%,此輸出通道也是n+1層的輸入通道,如圖中第n+1層輸入通道中用淺陰影表示的部分,為了卷積維度能夠?qū)?yīng)起來(lái),那么在n+1層的卷積核中相應(yīng)的通道也會(huì)相應(yīng)剪枝Pn%。如圖中,n+1層的卷積核中淺色的陰影部分。因此當(dāng)n層卷積核剪枝Pn%時(shí),實(shí)際上會(huì)同時(shí)造成下一層卷積層輸入通道數(shù)和卷積核通道數(shù)都剪枝Pn%,但第n層卷積核的剪枝對(duì)第n+2層的輸入通道數(shù)和卷積核數(shù)都不會(huì)造成直接變化。所以某一層剪枝只會(huì)使與其直接相連的下一層網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化。又假設(shè)n+1層剪枝量為Pn+1%,如圖6中,第n+1層卷積核中深色陰影部分,結(jié)合圖6分析,可以得出此時(shí)第n+1層的實(shí)際剪枝量為:pn%+pn+1%-pn%×pn+1%。深度卷積神經(jīng)網(wǎng)絡(luò)的FLOPs統(tǒng)計(jì)中,卷積運(yùn)算所包含F(xiàn)LOPs遠(yuǎn)遠(yuǎn)大于其它層運(yùn)算量例如:BN層運(yùn)算、池化層運(yùn)算等,為了簡(jiǎn)化分析,本文忽略這些層的FLOPs。所以當(dāng)n層剪枝Pn%和n+1層剪枝Pn+1%時(shí),深度神經(jīng)網(wǎng)絡(luò)模型n+1層實(shí)際上減少的計(jì)算量為
圖6 各層剪枝量分析
pn%+pn+1%-pn%×pn+1%
在為每一類級(jí)的神經(jīng)網(wǎng)絡(luò)設(shè)置不同剪枝率的時(shí)候,神經(jīng)網(wǎng)絡(luò)的剪枝的FLOPs的計(jì)算需要逐層進(jìn)行計(jì)算,假設(shè)網(wǎng)絡(luò)等比例剪枝30%,結(jié)合以上公式,將各層網(wǎng)絡(luò)分為3個(gè)類級(jí)時(shí),可以給各類級(jí)設(shè)置剪枝量為20%、30%、40%。結(jié)合網(wǎng)絡(luò)中各層所包含的計(jì)算量,可以使網(wǎng)絡(luò)整體剪枝量依然保持在一個(gè)基本相同的水平。
綜上所述,本文提出通過(guò)逐層復(fù)原各層網(wǎng)絡(luò)結(jié)構(gòu)分析該層結(jié)構(gòu)與模型性能相關(guān)性的方法,在標(biāo)定每一層與模型性能相關(guān)性時(shí),網(wǎng)絡(luò)結(jié)構(gòu)更接近最終的剪枝網(wǎng)絡(luò)結(jié)構(gòu),能夠更加準(zhǔn)確標(biāo)定每一層與模型性能的相關(guān)性。并且使用神經(jīng)網(wǎng)絡(luò)層分類級(jí)的算法,將不同層分類,能夠減少模型訓(xùn)練時(shí)參數(shù)初始化帶來(lái)的隨機(jī)性。為不同類級(jí)的層設(shè)置不同剪枝量的方法,相對(duì)于已有各層同等剪枝率剪枝的方法,此方法可以更靈活的為每一層網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置剪枝量,進(jìn)而可以更準(zhǔn)確剪枝與模型性能相關(guān)性更小的網(wǎng)絡(luò)結(jié)構(gòu)。
本研究實(shí)驗(yàn)代碼,均在Pytorch編程框架上編程開(kāi)發(fā)。實(shí)驗(yàn)所使用的硬件資源主要是NVIDIA RTX 2080ti 顯卡,本節(jié)將分為4部分來(lái)闡述實(shí)驗(yàn)情況及結(jié)果。第一部分:闡述實(shí)驗(yàn)的基本情況,基本設(shè)置。第二部分:闡述在ResNet[28]網(wǎng)絡(luò)下的實(shí)驗(yàn)情況及結(jié)果。第三部分:闡述在VGG網(wǎng)絡(luò)下的實(shí)驗(yàn)結(jié)果。第四部分:實(shí)驗(yàn)總結(jié)。
3.1.1 實(shí)驗(yàn)網(wǎng)絡(luò)結(jié)構(gòu)和數(shù)據(jù)集
為了驗(yàn)證層分類級(jí)剪枝方法的實(shí)驗(yàn)效果,本實(shí)驗(yàn)選取被計(jì)算機(jī)視覺(jué)領(lǐng)域科研工作者廣泛采用的cifar10數(shù)據(jù)集,一個(gè)用于普適物體分類的計(jì)算機(jī)視覺(jué)數(shù)據(jù)集。該數(shù)據(jù)集一共分為10個(gè)類別,每一類有60 000張32×32大小的3通道RGB彩色照片,其中50 000張用來(lái)訓(xùn)練,10 000張用來(lái)測(cè)試。本實(shí)驗(yàn)首先剪枝沒(méi)有分支結(jié)構(gòu)的VGG網(wǎng)絡(luò)結(jié)構(gòu),然后剪枝網(wǎng)絡(luò)層數(shù)更深的帶有分支結(jié)構(gòu)的ResNet網(wǎng)絡(luò)。其中VGG網(wǎng)絡(luò)選擇常見(jiàn)的VGG-16;ResNet按照He Kaiming等[28]的研究,在cifar數(shù)據(jù)集上實(shí)驗(yàn)室選擇深度為20,32,56,110的網(wǎng)絡(luò)結(jié)構(gòu)。
3.1.2 訓(xùn)練方法
本研究實(shí)驗(yàn)遵循He Yang等[4]實(shí)驗(yàn)的訓(xùn)練方法設(shè)置,學(xué)習(xí)率設(shè)置范圍為動(dòng)態(tài)0.1-0.0008,bitch_size設(shè)置為128,其它參數(shù)均按照SFP實(shí)驗(yàn)?zāi)J(rèn)設(shè)置。本實(shí)驗(yàn)選擇軟剪枝(SFP)訓(xùn)練方法,在不使用預(yù)訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)的情況下從隨機(jī)初始化開(kāi)始訓(xùn)練,訓(xùn)練和剪枝同時(shí)進(jìn)行,訓(xùn)練過(guò)程中已剪枝的網(wǎng)絡(luò)結(jié)構(gòu)可以參與下一次訓(xùn)練過(guò)程中的參數(shù)更新。在剪枝完成以后,可以不用對(duì)網(wǎng)絡(luò)進(jìn)行進(jìn)一步的微調(diào)訓(xùn)練,模型也能有很好的實(shí)驗(yàn)效果。
He Yang等[5]提出的FPGM剪枝方法,相比于大部分傳統(tǒng)剪枝某些小數(shù)的剪枝方法,該方法創(chuàng)造性地提出剪枝各個(gè)卷積核之間歐幾里得距離中位數(shù)的方法,目前在剪枝領(lǐng)域有很好的剪枝效果。所以本實(shí)驗(yàn)選用此方法作為逐層復(fù)原分析法的基礎(chǔ)模型,在上一章節(jié)中已經(jīng)對(duì)不同層設(shè)置不同剪枝量情況下,模型每一層的實(shí)際剪枝量已有一個(gè)明確的標(biāo)定。雖然模型的實(shí)際剪枝量很難精確把控,但是在本實(shí)驗(yàn)中會(huì)保持模型剪枝計(jì)算量或者剪枝后模型的性能最大可能一致。ResNet網(wǎng)絡(luò)結(jié)構(gòu)涉及到支路結(jié)構(gòu),對(duì)于支路結(jié)構(gòu)的處理:在支路聚合時(shí),當(dāng)分支路剪枝量大于主路剪枝量時(shí),分支路不足的卷積結(jié)構(gòu)用0補(bǔ)足;當(dāng)分支路的剪枝量小于主路時(shí),分支路多余的卷積結(jié)構(gòu)舍棄。對(duì)于ResNet網(wǎng)絡(luò)逐層復(fù)原,通過(guò)分類級(jí)的方法,將各層與模型性能相關(guān)性進(jìn)行分類分析,從而將各層分類級(jí),各層分級(jí)詳細(xì)結(jié)果見(jiàn)表1。
在表1基礎(chǔ)上對(duì)各類層做剪枝量的標(biāo)定,性能相關(guān)性高的第一類設(shè)置剪枝量30%,相關(guān)性次高的第二類設(shè)置剪枝量40%,相關(guān)性最低的第三類為50%。在本實(shí)驗(yàn)中還在保證模型性能損失很小情況下,結(jié)合FPGM方法嘗試進(jìn)行更高的剪枝量,分別設(shè)置為:35%、45%、55%,在與FPGM剪枝差不多相同浮點(diǎn)數(shù)運(yùn)算量條件下,模型性能有一定的提升,實(shí)驗(yàn)結(jié)果見(jiàn)表2。實(shí)驗(yàn)結(jié)果更高剪枝比例表,見(jiàn)表3。
表1 各層分類級(jí)結(jié)果
表2 相似剪枝比例下模型性能對(duì)比
表3 更高剪枝比例
VGG-16網(wǎng)絡(luò)至上而下只有一條通路,沒(méi)有任何的支路結(jié)構(gòu)。在目前傳統(tǒng)的剪枝實(shí)驗(yàn)中VGG-16網(wǎng)絡(luò)結(jié)構(gòu)一般只剪枝30%左右,本實(shí)驗(yàn)中嘗試了做更多剪枝比例,模型性能依然能保持良好的性能。首先是逐層獲得各層與模型性能的相關(guān)性,然后使用分類級(jí)方法將模型各層分類。結(jié)合模型各層實(shí)際剪枝量標(biāo)定方法,設(shè)置各類層剪枝量分別是10%、20%、30%,則有模型最終減少FLOPs為32.86%,VGG-16實(shí)驗(yàn)結(jié)果結(jié)果見(jiàn)表4。
表4 VGG-16實(shí)驗(yàn)結(jié)果
Li, Hao等[3]已經(jīng)驗(yàn)證了逐層剪枝敏感性分析的方法,此方法在VGG-16模型上得到VGG-16模型的第3~7卷積層修剪與模型性能的相關(guān)性比較大,所以在剪枝過(guò)程中對(duì)3~7卷積層不做任何的剪枝,對(duì)剩余的卷積層均剪枝50%。很顯然這種簡(jiǎn)單的方式很難靈活的給模型各層設(shè)置剪枝量。而逐層復(fù)原分析方法可以對(duì)神經(jīng)網(wǎng)絡(luò)模型的每一層靈活地設(shè)置剪枝量,進(jìn)而讓模型總體上實(shí)現(xiàn)更高的剪枝比例。從表4中可以看出,F(xiàn)PGM剪枝方法剪枝VGG-16模型34.2%的FLOPs的時(shí)候,模型性能幾乎沒(méi)有損失,所以在對(duì)該模型剪枝34.2%左右時(shí),再比較模型性能損失意義不大。但是使用分類級(jí)法設(shè)置剪枝比例時(shí),可以對(duì)模型進(jìn)行更高比例的剪枝,模型性能損失依然能控制在很低的水平上。
將已有的剪枝敏感性分析方法得出的模型性能相關(guān)性高的層和逐層復(fù)原法得到的剪枝比例高的層對(duì)比。兩種方法下模型性能相關(guān)性相對(duì)較高層對(duì)比見(jiàn)表5,可以看出兩種方法得到的剪枝量相對(duì)高的層基本對(duì)應(yīng),4-6層的復(fù)原能相對(duì)大幅提升模型性能。但是第3,7層兩種方法在剪枝量的設(shè)置上有一點(diǎn)區(qū)別。
表5 兩種方法下模型性能相關(guān)性相對(duì)較高層對(duì)比
本研究實(shí)驗(yàn)選用VGG和ResNet神經(jīng)網(wǎng)絡(luò)模型,通過(guò)本研究提出的逐層復(fù)原分析法,分析模型各層結(jié)構(gòu)與性能相關(guān)性,然后對(duì)模型進(jìn)行分類級(jí)設(shè)置剪枝比例的剪枝,最終兩種模型下實(shí)驗(yàn)都取得了良好的效果。最終剪枝模型都對(duì)于cifar10數(shù)據(jù)集中驗(yàn)證集的分類性能良好。
本文提出逐層復(fù)原模型結(jié)構(gòu),分析各層與模型性能相關(guān)性,然后根據(jù)相關(guān)性分類級(jí)設(shè)置各層剪枝比例的方法。能夠解決已有各層相同剪枝比例剪枝方法造成模型剪枝不均的問(wèn)題。FPGM剪枝方法結(jié)合分類級(jí)設(shè)置剪枝比例法,可以在保證對(duì)模型設(shè)置基本相同剪枝量的前提下,剪枝模型能夠有更好的模型性能,也可以在保證模型性能損失很小的情況下,模型能剪枝更多的剪枝量。在未來(lái)的研究中,有很多方面還值得進(jìn)一步的研究,比如可以剪枝更復(fù)雜、更新穎的深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),例如GoogLeNet[17],MobileNet[18]等?;蛘咴诖朔椒ǖ幕A(chǔ)上結(jié)合更多的模型壓縮的方法,例如元學(xué)習(xí)等方法,探究剪枝量與模型性能損失平衡的問(wèn)題。