?

基于梯度的深度網絡剪枝算法

2020-06-07 07:06王忠鋒徐志遠宋純賀張宏宇蔡穎凱
計算機應用 2020年5期
關鍵詞:剪枝權值梯度

王忠鋒 ,徐志遠 ,4*,宋純賀 ,張宏宇 ,蔡穎凱

(1.機器人學國家重點實驗室(中國科學院沈陽自動化研究所),沈陽110016;2.網絡化控制系統重點實驗室(中國科學院沈陽自動化研究所),沈陽110016;3.中國科學院機器人與智能制造創新研究院,沈陽110169; 4.中國科學院大學,北京100049;5.國網遼寧省電力有限公司,沈陽110016)

(?通信作者電子郵箱2414065292@qq.com)

0 引言

近年來,深度神經網絡已經成為人工智能行業主流的計算模型[1-2]。在圖像識別、語音識別和自然語言處理等諸多領域表現出相當優越的性能[3-4]。目前比較流行的高效網絡結構有 Res-NET[5]、GoogLeNet[6]、VGG-Net[7]等。但是隨著網絡性能的提升,網絡層數也由最初的幾層、十幾層到現在的一百多層。在深度神經網絡中有很多卷積層,卷積層的計算占據了整個網絡的絕大部分計算量,卷積層越多,計算量就越大。例如VGG-Net-16網絡結構中卷積層有13層,卷積層占據了大約90%~95%的計算量;全連接(Full Connection,FC)層雖然占據了95%的參數量,但是計算量確只占5%~10%。隨著網絡層數的加深其計算量和存儲資源的占用也越來越大,需要使用高性能的GPU(Graphics Processing Unit)或者GPU集群實現神經網絡的計算。嵌入式設備計算能力、存儲容量有限,這就限制了深度網絡在嵌入式設備中的應用,所以有很多研究人員投入到深度神經網絡的壓縮與加速工作中,目的是在保持網絡性能的同時,減少網絡的計算量和模型的存儲使其能夠部署在嵌入設備中。

關于深度神經網絡的壓縮與加速目前有很多方法,如矩陣分解[8-10]、低精度權值[11-13]、知識蒸餾[14-15]和剪枝[16-17],其中,絕大部分的方法是基于權值矩陣本身來操作,即權值越小貢獻越小,通過盡可能地剔除數值小的權值來達到剔除冗余權值參數的目的。但是利用權值本身的大小為依據來判斷權值的重要性缺乏理論依據,正如文獻[18]所描述,有的權值雖然小,但是它卻很重要。文獻[18]提到了一種基于梯度的剪枝算法,梯度是計算損失函數對權值的偏導數,反映了損失對權值的敏感程度,這恰恰可以當作評判權值重要性的理論依據,所以本文設計的GDP(Gradient-based Deep network Pruning)算法也是基于梯度的剪枝算法。

在以往的剪枝算法中,以權值大小為重要性依據的剪枝算法,很容易剪掉重要的權值。以人臉識別為例,在人臉的諸多特征中,眼睛的細微變化如顏色、大小、形狀,對于人臉識別的結果有很大影響。對應到深度網絡中的權值,即使權值本身很小,但是它的細微變化對結果也將產生很大的影響,這類權值是不應該被剪掉的。而GDP算法以梯度作為剪枝的依據,就避免了這個問題,該算法剪掉的權值都是在一定程度上對分類結果影響不大的權值。

1 相關工作

在邊緣側設備中上部署人工智能算法是一個很有前景的工作[19-20],吸引了很多學者投入到深度學習的模型壓縮工作中。由于復雜深度學習模型的計算量很高,而一般邊緣側設備通常難以滿足復雜模型對于計算資源的需求,因此如何在保證計算精度的情況下對復雜深度學習模型的計算量進行壓縮,成為在邊緣側上部署人工智能算法的一個核心問題。

1.1 基于矩陣分解的深度神經網絡壓縮與加速

基于矩陣分解的方法把卷積層中參數看作一個4D矩陣,將這個4D矩陣的計算分解成數個矩陣的乘積來近似計算原始的4D矩陣計算結果。分解后的矩陣擁有更小的計算量,可以有效加速深度網絡。

Wen等[21]提出了一種強制正則(force regularization)的方法,利用該方法可以在訓練的過程中讓低秩空間中濾波器(filters)變得更加緊密,在低秩表達時更加近似原始矩陣的輸出;Yu等[22]提出一種新的低秩空間的近似方法,在重構誤差的過程中將參數矩陣設置為稀疏矩陣與低秩矩陣的和,可以更加接近原始網絡的輸出。但是基于矩陣分解的方法只能逐層分解,分解后的網絡結構丟失原始網絡的全局信息。

1.2 基于參數量化的深度神經網絡壓縮與加速

參數量化就是減少表示每個權值所需的比特數來壓縮原始網絡,文獻[23]提出了一種二值網絡,利用sign函數將網絡中權值轉成只有+1和-1兩類,可以極大地減少參數存儲空間。文獻[24]在此基礎上,不僅二值化了權值矩陣,還將層與層之間輸入也進行了二值化處理,在CIFAR-10數據集上有著10.17%的錯誤率。參數量化的方法使得神經網絡普遍訓練時間較長,因為在反向傳播的過程中仍然要使用原始參數,而且在較大數據集上如ImageNet表現并不好。文獻[25]提出了三值化權重網絡,與二值網絡類似只是將權值量化為三類:+1、-1、0。

1.3 基于知識蒸餾的深度神經網絡壓縮與加速

知識蒸餾的基本思想是將訓練好的復雜網絡模型學到的知識蒸餾到另一個簡單的小型神經網絡。

Hinton等[26]首次提出知識蒸餾的方法,將教師網絡(復雜、推理性能優越)的輸出進行含有溫度參數T的Softmax軟變換生成軟目標引入到學生網絡(精簡、低復雜度)的損失函數中指導訓練,實現知識蒸餾和遷移;Romero等[27]提出了基于知識蒸餾的FitNet,通過把學生網絡的權值對教師網絡的權值進行模擬,把一個寬且深的網絡蒸餾成一個窄且更深的網絡,更深的網絡能表現出更優越的網絡性能;文獻[28]描述了一種用于“蒸餾”蒙特卡羅近似值到后驗預測的方法,訓練一個學生網絡近似教師網絡的蒙特卡洛后驗概率分布,該方法最大特點是教師網絡可以實時指導學生訓練,但是蒸餾的方法是基于Softmax損失函數的,對于沒有Softmax的網絡結構,蒸餾方法就不再適用。

1.4 基于剪枝的深度神經網絡壓縮與加速

參數剪枝就是對訓練好的網絡進行冗余參數的剔除,進而提高模型的計算速度和減少模型的存儲空間。不僅如此,通過剪枝操作,還能防止網絡模型過擬合,進而提升網絡性能。

Han等[29]提出了一種剪枝網絡的方法,在訓練深度網絡的過程中,通過加入懲罰因子學習每個權值的重要性,在剔除不重要的權值后再對網絡進行微調,實驗結果表明,AlexNet網絡可以壓縮近10倍;Sun等[30]利用權值之間相關性進行剪枝,計算當前層的一個神經元與前一層的所有神經元的相關性,把相關性低的權值剔除,實驗結果表明,該方法與隨機剪枝結果相近;Han等[31]在剪枝的基礎上又對網絡參數進行聚類量化和哈夫曼編碼,極大地壓縮了網絡模型。

本文的GDP算法是一種剪枝算法,不同以往的剪枝策略,該算法是以梯度作為評判權值重要性的依據,并利用本文設計的一種自適應閾值的策略,找到合適的閾值T,剔除小于閾值T的梯度值所對應的權值來進行深度網絡的壓縮與加速。

2 深度網絡中權值與梯度的參數分析

以手寫數字數據集為例對深度網絡模型的權值與梯度分布進行分析。手寫數字數據集是神經網絡中的經典數據集,共包含10種類別:0~9的10個數字種類。每一張圖片都包含兩部分信息:第一部分是數字圖片的像素信息,圖片大小為28×28;另一部分是圖片的標簽,即圖片表示的數字是0~9中的哪一個。數據集總共包含60000張訓練樣本和10000張測試樣本。

2.1 AlexNet權值與梯度參數分析

AlexNet[32]網 絡 共 有 5 層 卷 積 層 conv1、conv2、conv3、conv4、conv5,三層全連接層FC6、FC7、FC8。在經過訓練了10 000次后在集合上的正確率達到了99.05%。網絡結構如表1所示。

表1 AlexNet結構Tab.1 Structure of AlexNet

全連接層占據著絕大部分參數,卷積層只占全部參數的7%。在進行剪枝之前首先對每一層的梯度進行分析如圖1~4所示(因為第一層卷積層和最后一層全連接層參數少且其參數會直接影響網絡模型的判斷結果,故conv1和FC8不列入本文分析及剪枝的部分)。

圖1 ALexNet卷積層權值分布直方圖Fig.1 Weight distribution histogram of AlexNet convolutional layers

圖2 AlexNet卷積層梯度分布直方圖Fig.2 Gradient distribution histogram of AlexNet convolutional layers

圖1~4展示出了網絡模型中權值與梯度的兩個特點:第一,梯度的值比其對應的權值要小很多;第二,每個網絡的層的大部分梯度值都在0附近并且對于全連接層這個特點比卷積層更加突出;恰恰是這第二個特點證明了基于梯度的剪枝算法是完全可行的。

圖3 AlexNet全連接層權值分布直方圖Fig.3 Weight distribution histogram of AlexNet full connection layers

圖4 AlexNet全連接層梯度分布直方圖Fig.4 Gradient distribution histogram of AlexNet full connection layers

2.2 VGG-Net權值與梯度參數分析

MINIST數據集對于VGG-Net,數據量太小且數據過于簡單,因此VGG-Net的參數分析是在CIFAR-10數據集上進行的。CIFAR-10數據集由10個類的60 000個32×32彩色圖像組成,每個類有6 000個圖像,5 000個訓練圖像和1 000個測試圖像。在訓練之前對數據進行了數據增強操作:每次從訓練集抽出128個圖像隨機進行切割、翻轉、亮度調節以及標準化處理作為一個batch,目的是增強樣本的多樣性、防止過擬合。

VGG-Net的原始標準模型是對ImageNet數據集分類,但是最近的研究把VGG-Net模型結構稍作改動用在CIFAR-10數據集上,并取得了很好的結果,其結構包括了13個卷積層和2個全連接層。本文使用了兩個VGG-Net模型——VGGNet和 VGG-BN-Net。

VGG-Net模型時根據原始標準模型進行同比參數壓縮如表2所示,同時還在全連接層加入Dropout層[33]防止過擬合。

另一個VGG-BN-Net模型結構如文獻[34]中所描述的結構,網絡結構如表3所示,以VGG-Net的標準模型為基礎,在每一層卷積層和第1層全連接層后面加BN(Batch-Normalization)層[34]和Dropout層[33]。與之前AlexNet網絡分析的一樣,VGG-Net模型的參數最多的部分仍然在全連接層,但是計算量最大部分是卷積層第三層和第四層,并且考慮到靠前的網絡層比較重要,所以應當從后往前壓縮本文,壓縮了FC14、conv5-3、conv5-2、conv4-3、conv4-2、conv4-1 共 6 層網絡。

表2 VGG-Net結構Tab.2 Structure of VGG-Net

表3 VGG-BN-Net結構Tab.3 Structureof VGG-BN-Net

對這兩種VGG-Net模型做參數分析如圖5~6所示。

圖5 加入BN層前VGG-Net梯度分布圖Fig.5 Gradient distribution histogram of VGG-Net beforeadding BNlayer

從圖中可以發現在加入BN層之前,參數梯度的分布有著兩極化的趨勢,在梯度為0附近分布大量的參數,在梯度大一點的在兩邊分布著相當少的參數,恰恰可以利用這種梯度分布特點,把在0附近的梯度所對應的權值篩選出來,因梯度接近于0,所以這部分權值正是那些冗余的、不重要的權值。在后面實驗中證明剔除這部分冗余的權值后,網絡性能不但沒有下降反而會提升很多;加入BN層后,梯度的分布比之前會均勻一些,參數分布隨著梯度的增大而逐漸減小,但是仍然是0附近的參數分布最多。

圖6 加入BN層后VGG-Net梯度分布圖Fig.6 Gradient distribution histogram of VGG-Net after adding BNlayer

3 GDP算法

GDP是一種基于梯度的剪枝算法。假設第i層的權值矩陣記為W(i)k×k×d×n,k×k×d×n表示它的形狀,其算法流程如下:步驟1 利用式(1)計算第i層的梯度矩陣,形狀不變。

步驟2 在矩陣G中找到梯度的絕對值的最大值記作gmax。設置m=100,利用式(2)、(3)求出步長step和候選閾值Tm,Tm表示第m個閾值。

步驟3 根據候選閾值Tm,在梯度矩陣G(i)k×k×d×n中統計梯度值小于Tm的梯度的個數記為Nm(m=1,2,…,100)。

步驟4 計算式(4),RN[m]表示使用閾值Tm剪枝時模型剩余的參數數量。

2.1 兩組患兒hs-CRP、β-hCG、PCT檢測結果比較 觀察組hs-CRP、β-hCG、PCT水平均高于對照組,差異有統計學意義(P<0.05)。見表1。

步驟5 重復m次步驟2~4。

步驟6 計算式(5),ΔRN[m]表示使用閾值Tm+1剪枝時剩余參數數量RN[m+1]與使用閾值Tm剪枝時剩余參數數量RN[m]之間的差。

步驟7 判斷式(5):若成立,則保存當前m值并由式(3)獲得最終閾值即T=Tm;若不成立,重復步驟6。

步驟8 把小于T的梯度值Gindex所對應的權值Windex置為0就完成了剪枝步驟,最后對修剪過后的參數進行重訓練。

GDP剪枝算法流程如圖7所示。

一般來說剪枝的原則是保留重要的權值,剔除不重要的權值。Tm如圖8所示表示一個矩形框,在矩形區域內是要被篩選出來需要剔除的部分,根據|Gindex|<T這個篩選條件可以推斷出這個方框是關于0對稱的,并且Tm是由小到大變化的,對應著矩形框應該是由實線矩形框到虛線矩形框的變化。在對m進行遍歷的過程記錄對每一個候選閾值Tm下,需要保留的參數量RN[m]如圖9左所示,表達的是RN[m]隨著m增加而減小的曲線,因為m值越大,矩形框的區域就越大,那么保留的參數量就應越少,可以發現在m值很小時,RN[m]的變化很明顯,在m值大到一定范圍后,RN[m]幾乎沒變。原因是絕大部分梯度都分布在0附近,換句話說就是在0附近參數數量非常大,矩形框增大一個步長都能引起RN[m]很大的改變,相反在參數數量分布比較少位置,矩形框增大一個步長RN[m]變化不明顯。接下來利用式(5)第m+1次的RN[m]值減去第m次的RN[m]值獲得一個減少量ΔRN[m]如圖9右所示。從圖9中找到ΔRN[m]變化相對較小時的值即Value。注意這個Value值需要根據不同的網絡結構而人為設定。圖9中,當ΔRN[m]達到-1000時,對應著圖9中RN[m]曲線開始出現平緩趨勢時位置,即AlexNet的Value值選為-1000比較合適。下文VGG-Net、VGG-BN-Net中Value值也用同樣的方法獲得。若ΔRN[m]>Value成立,則返回此時的m值,目的是利用式(3)計算此時的閾值Tm即得到最終的閾值T=Tm。得到閾值T后按照步驟8進行剪枝,最后進行重訓練恢復模型精度。

圖7 GDP算法流程Fig.7 Flow chart of GDPalgorithm

圖8 Tm壓縮區域可視圖Fig.8 Visibility map of Tm compression area

圖9 RN與ΔRN曲線圖Fig.9 Curve graphs of RN andΔRN

4 實驗與分析

4.1 在MINIST上的AlexNet剪枝

運用GDP算法對AlexNet進行剪枝,然后將剪枝后的網絡重訓練5 000次,結果如表4所示,其中壓縮率指壓縮前的模型內存大小與壓縮后的模型大小的比值。

表4 AlexNet剪枝結果Tab.4 AlexNet pruningresults

GDP算法在全連接層有著很好的表現,壓縮了近14倍,而正確率僅下降了0.63個百分點。全連接層FC6和FC7分別被壓縮了99.9%,98.0%。原網絡進行一次前向推斷要進行7.1×107個乘法,僅壓縮全連接層后進行一次前向推斷要進行5.8×107個乘法,計算量僅下降20個百分點。隨著剪枝層數的增加網絡性能下降得越來越多。當壓縮兩層全連接層FC6、FC7和卷積層conv5時,正確率下降了2.53個百分點,模型大小壓縮了31倍,進行一次前向推斷需要計算2.9×107個乘法,計算量下降了60個百分點。由此可見卷積層雖然參數量小,但是計算量特別大,壓縮卷積層能獲得更大加速效果,壓縮全連接層更能減少計算模型對存儲空間的占用。

4.2 在CIFAR-10上的VGG-Net剪枝

VGG-Net的標準模型是對ImageNet數據集進行分類,輸入圖片大小是128×128,而CIFAR-10的圖片是32×32,為了避免參數過多帶來過擬合,把VGG-Net結構設置如表2所示。訓練50 000次,測試集正確率84%,Value值設置為-1000,表5記錄了GDP算法剪枝VGG-Net模型的conv4-2、conv4-3、conv5-2、conv5-3、FC14、FC15層后的結果,無論是卷積層還是全連接層,GDP算法都能剔除98%以上的參數,并仍舊能保持網絡性能明顯提升,在重訓練20 000次后,正確率最高為90.6%,計算量減少55.3個百分點。圖10表示剪枝后重訓練20 000次,實線是剪枝后的測試集正確率,虛線是剪枝前的測試集正確率。在剪枝前測試集已經基本穩定在83%左右的正確率,很難再提升,但是經過剪枝后正確率有了明顯提升。因為保留下來的權值都是重要的權值,即梯度大對loss影響大的權值,所以每訓練一次更新權值,網絡的性能隨之變化幅度稍微大一些,但是也基本都高于剪枝前的網絡性能,原因是剪掉了冗余的接近于0的梯度的權值能有效防止過擬合。那些梯度接近0的權值就像是一個多項式函數f(x)=C1x1+C2x2+…+C3xn中非??亢蟮闹笖当容^大的項,這些項越多函數對于訓練數據擬合得越好,但導致其泛化性大大降低,在測試集正確率不高。而本文GDP算法能夠剔除這些冗余的梯度,在壓縮參數的同時提升網絡性能。

表5 VGG-Net剪枝結果 單位:%Tab.5 VGG-Net network pruningresults unit:%

圖10 VGG-Net剪枝前后結果對比Fig.10 Comparison of resultsbeforeand after VGG-Net pruning

4.3 在CIFAR-10上的VGG-BN-Net剪枝

VGG-BN-Net結構相較于VGG-Net加入了Batch-Normalization層和Dropout層,目的是縮短訓練網絡的時間并且提升網絡的原始性能。經過訓練后VGG-BN-Net能達到91.17%的測試集正確率。根據上文所述獲取Value值的方法,選取全連接層的Value值為-10 000,卷積層的Value值為-20 000,剪枝后效果見表6。經過重訓練后正確率為91.03%,正確率下降了0.14個百分點,計算量下降了35.3個百分點,參數量僅為之前的29.3%。

表6 VGG-BN-Net剪枝結果Tab.6 VGG-BN-Net pruningresults

表 7將GDP算法與 PFEC(Pruning Filters for Efficient ConvNets)算法[35]、FPGM(Filter Pruning via Geometric Median)算法[36]進行了比較,證明了GDP算法有著更好的剪枝效果。

表7 GDP算法與其他算法對比 單位:百分點Tab.7 Comparison of GDPalgorithm with other algorithms unit:percentage points

5 結語

本文改進了文獻[18]中的基于梯度的剪枝算法,設計了一種自適應閾值的策略,解決了閾值選取的問題,使得每個網絡層都能找到適合的閾值。該算法在壓縮參數、加速計算的同時能減少過擬合的情況的發生,剪枝后的網絡性能會有一定程度的提升,但是對于含有BN層的網絡結構,本文GDP算法雖然沒有提升網絡性能,但是仍然能夠在剪枝參數的同時基本保持網絡模型的精度。一般來說,網絡層數越深,性能越好,GDP算法使一個層數少的AlexNet與層數較多VGG-Net在性能相近,但是計算量AlexNet要遠遠少于VGG-Net。在接下來的工作中,計劃將BN層與GDP算法相融合,既發揮該算法提升網絡性能優勢,又能發揮BN層加快網絡收斂的作用。為了使GDP算法用到更深層的網絡結構中去,將作進一步研究。

猜你喜歡
剪枝權值梯度
一種融合時間權值和用戶行為序列的電影推薦模型
基于應變梯度的微尺度金屬塑性行為研究
人到晚年宜“剪枝”
利用KL散度度量通道冗余度的深度神經網絡剪枝方法
基于YOLOv4-Tiny模型剪枝算法
一個具梯度項的p-Laplace 方程弱解的存在性
內容、形式與表達——有梯度的語言教學策略研究
航磁梯度數據實測與計算對比研究
剪枝
財務風險跟蹤評價方法初探
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合