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

基于激活-熵的分層迭代剪枝策略的CNN模型壓縮

2020-06-07 07:06:18陳程軍毛鶯池王繹超
計算機應用 2020年5期
關鍵詞:重要性策略模型

陳程軍,毛鶯池,王繹超

(河海大學計算機與信息學院,南京211100)

(?通信作者電子郵箱yingchimao@hhu.edu.cn)

0 引言

移動云計算作為移動互聯網和云計算相結合的產物,利用云端的存儲和計算等資源優勢,突破移動設備的資源限制,提供卷積神經網絡在移動終端部署的基礎條件。AlexNet[1]、VGG-16[2]、GoogleNet[3-4]、ResNet-50[5]和 DenseNet[6]等新型卷積神經網絡(Convolutional Neural Network,CNN)結構模型在相關領域內取得了較好的效果,但導致CNN模型朝層次增加方向發展,使大部分CNN模型都包含龐大的參數量,限制CNN模型在存儲受限的移動設備上部署。移動設備(例如智能手機、醫療工具和物聯網)幾乎無處不在,對設備上深度學習服務的需求很高,包括對象識別、語言翻譯、健康監控等,但目前大型深度學習模型因龐大的參數處理和存儲受限,部署到移動系統仍然很困難[7]。有關研究證明大稀疏模型始終優于小密度模型,壓縮大網絡能取得比直接訓練小網絡更好的結果[8],因此模型壓縮對于移動設備上部署CNN模型至關重要。

目前常用的模型壓縮技術分為:剪枝、量化、網絡分解、知識蒸餾和精細模型設計:剪枝包含基于正則化的剪枝[9]和基于重要性的剪枝,通過裁剪訓練好的神經網絡模型中冗余的權值或神經元,減少存儲空間和加速計算;量化[10]使用位運算代替浮點運算,減少權重的比特數來壓縮模型,加速模型計算;網絡分解利用張量或矩陣分解技術分解原始卷積核,有效減少了運算量;知識蒸餾[11]借助大模型學習知識,指導小模型訓練并代替原模型;精細模型設計重構了輕量級神經網絡結構,如 MobileNets[12]、ShuffleNet[13]等,達到較好的壓縮效果并顯著提升運算速度,但設計模型時需要較高的技巧。

上述壓縮方法中,模型剪枝策略靈活且容易實現,旨在深度神經網絡的各種連接矩陣中引入稀疏性,從而減少模型中非零值參數的數量,而稀疏性參數被證明是權衡模型準確性及其內存使用情況的有效方法[8],具有較高的實用價值。本文采用模型剪枝策略解決CNN模型在移動設備上存儲受限的問題。CNN模型在移動云環境中的部署架構如圖1所示,整個系統分為三層架構,CNN模型的訓練在云端進行,使用權重剪枝技術壓縮訓練好的模型,并將模型部署在移動設備和微云中。

圖1 移動云環境中CNN模型的部署架構Fig.1 Deployment architectureof CNNmodel in mobilecloud environment

針對CNN模型現有剪枝策略各盡不同和效果一般的問題,本文提出了一個基于激活-熵的分層迭代剪枝(Activation-Entropy based Layer-wise Iterative Pruning,AE-LIP)策略,保證模型精度在可控范圍內的前提下有效縮減模型的參數量,使CNN模型在移動設備中的部署成為可能。本文所做的主要貢獻如下:1)提出了基于激活-熵的權值重要性評判準則,計算權值在模型中的重要性得分,并裁剪重要性得分較低的權值;2)提出了面向層的迭代剪枝策略,使用試錯實驗法給每層單獨設定剪枝率和剪枝迭代次數,并遵循篩選-剪枝-微調的步驟來壓縮CNN模型。

1 相關工作

1.1 權值重要性評判準則

深度神經網絡存在大量冗余參數,刪除其中冗余的參數是一種有效的壓縮手段[14]。模型剪枝的一般流程是通過分析權值或神經元的重要性,剪掉重要性低的權值或神經元,再進行模型微調。如何有效衡量權重對模型精度的影響是剪枝需解決的關鍵問題。基于Hessian矩陣的神經網絡剪枝算法OBS(Optimal Brain Surgeon)[15],分析了權重變化對模型精度的影響,但計算Hessian矩陣的復雜度過高,使其在實際使用中受限制。基于幅度的剪枝方法使用權重的絕對值評判其重要性,絕對值越大的權重對模型精度的貢獻越高并優先裁剪小權重[16],與其他剪枝方法相比,該方法簡單且容易實現,但權重的大小難以反映權重在模型中的重要性,實驗證明基于幅度的剪枝方法會誤刪一些重要的權值,導致模型精度在剪枝后大幅下降[17]。針對以上問題,學者們提出了其他評判準則,例如計算兩個神經元激活值的相關性[18]、計算每個濾波器輸出的熵值[19]、計算每個權值在下一層神經元激活值中的貢獻度[20]等準則,作為衡量權值重要性的依據。

1.2 四類剪枝方法

根據剪枝粒度可分為連接級剪枝和神經元級剪枝,圖2展示了兩者區別。連接級剪枝又稱為非結構化剪枝,以權重為單位進行裁剪,例如基于神經元相關性裁剪權重[18];神經元級剪枝又稱為結構化剪枝,作用于單個神經元或濾波器,剪掉一個神經元相連的所有權重,例如根據幾何中值對濾波器進行剪枝[21]。與神經元級剪枝相比,連接級剪枝具有更精細的裁剪粒度,對模型精度的影響較小。連接級剪枝會讓原始網絡變成稀疏網絡,權重需使用稀疏矩陣存儲,帶來額外的存儲開銷,不利于緩存優化和內存訪問,并且難以在通用硬件平臺上加速。結合權重和卷積核的混合剪枝方法[22],將這兩種粒度結合起來剪枝。

圖2 連接級剪枝和神經元級剪枝的對比Fig.2 Comparison of connected pruningand neuronal pruning

根據剪枝是基于整個網絡或單層可分為全局剪枝和逐層剪枝:全局剪枝在剪枝過程中分析模型的所有權重,篩選出一定數量的權重進行裁剪,例如逐步全局剪枝方法[24];逐層剪枝為網絡中不同的層設置不同的剪枝比例,單獨剪枝每一層。與全局剪枝相比,逐層剪枝考慮了模型中不同層的差異,對模型精度的影響較少,但確定每層的剪枝率是待解決的難題,處理過程較為繁瑣。

根據剪枝過程是否迭代可分為單步剪枝和迭代剪枝。單步剪枝只進行一輪剪枝操作,剪枝完成后微調模型補償精度損失,例如基于神經元連接靈敏度的單步剪枝策略[25],可以避免迭代剪枝的復雜性。單步剪枝可能一次剪掉大量參數,造成模型精度的大幅下降。迭代剪枝分為多輪,每一輪剪枝都會移除一定比例的權重并微調模型,通過多輪的剪枝-微調操作完成壓縮。迭代剪枝對模型精度影響較小,但剪枝過程消耗時間更多。

根據剪枝后權重能否恢復可分為靜態剪枝和動態剪枝。模型中各個神經元之間存在復雜的連接關系,將某些權值裁剪后可能導致其他權值的重要性發生變化,動態剪枝方法可以重新恢復被裁剪的權重[26]。

本文提出基于激活-熵的分層迭代剪枝策略,采用基于激活-熵的權值重要性評判準則,計算權值在模型中的重要性得分,裁剪得分低的權重。考慮模型精度的影響程度,采用影響較小的連接級剪枝;考慮模型中不同層的差異,采用試錯實驗法給每層單獨設定剪枝率并逐層剪枝;考慮模型剪枝-微調后精度損失問題,采用迭代的方式進行多輪剪枝;考慮模型剪枝后神經元連接稀疏問題,采用靜態剪枝并使用壓縮稀疏行(Compressed Sparse Row,CSR)稀疏矩陣存儲微調后的稀疏網絡。

2 基于激活-熵的分層迭代剪枝

基于激活-熵的分層迭代剪枝策略主要分為基于激活-熵的權值重要性評判和面向層的迭代剪枝兩部分內容,前者負責計算每個權值的重要性得分和按剪枝數量對權值排序,為后者剪枝和微調模型提供依據,最后用稀疏矩陣存儲剪枝后的參數,節省存儲空間。

許多研究[27-28]指出,大多數全連接層中存在大量冗余,因此本文主要修剪-微調全連接層。如圖3所示,其中權重分布指當層所有權值在各取值區間的分布情況,它們近似服從高斯分布,在0附近區間內分布的小權重數遠多于兩端的大權重數,全連接層數量級遠高于卷積層。

圖3 AlexNet模型和VGG-16模型的權重分布情況Fig.3 Weight distributions of AlexNet model and VGG-16 model

2.1 基于激活-熵的權值重要性評判

給定神經網絡模型C和訓練集D={X={x0,x1,…,x N},Y={y0,y1,…,y N}},其中集合X和Y分別表示訓練集中的輸入和目標值。設神經網絡權重集合為W=其中H為模型的總層數,Ci為第i層的權重數量。訓練神經網絡的目標是通過確定權重集合W,使模型在訓練集D上的損失L(D|W)最小化。剪枝的目標是將原模型部分權重裁剪后保留M個權重得到新的權重集合W*,使剪枝后模型的精度損失最小[17]。剪枝可以轉換為組合優化問題,通過搜索2|W|的解空間,獲取剪枝的最優解,如式(1)和(2)所示:

由于CNN中權重數量龐大,采用遍歷所有組合求出最優解的方式在實際應用中并不可行。目前大多數剪枝策略都是采用啟發式方法評估權值重要性,優先裁剪不重要的權值,如基于激活的權值重要性評判準則[20],通過計算CNN模型在全連接層神經元激活值的期望,衡量權值的重要性。該準則證明了高度相關的對象對于深度架構中的后一層的活動具有更強的預測能力,通過計算神經元連接中的相關性,刪除絕大部分較小相關性值,保留少量權重以補償激活的變化。如圖4所示全連接層的前向傳播過程:i是上一層神經元的編號,j是當前層神經元的編號,上一層共有n個神經元,且神經元的輸出為X。W j代表神經元j與上一層神經元連接的權重矩陣,w i為神經元i和j連接的權重值。設激活函數f(x)為線性整流函數(Rectified Linear Unit,ReLU),根據神經網絡的前向傳播公式,當f(W jTX)> 0時,神經元j的激活值如式(3)所示,其期望值如式(4)所示,對每一個權重w i,abs(E(w i x i))的值越大,則權重w i對下一層神經元激活值的貢獻也越大,所以可通過神經元激活值期望的絕對值abs(E(w i x i)),衡量權值w i的重要性,即abs(E(w i x i))值越大,權值重要性越高。

圖4 全連接層的前向傳播過程Fig.4 Forward propagation process of fully connected layers

許多啟發式剪枝算法起源于計算相對熵最小化的近似,可以通過計算信息熵來衡量權值的重要性[19]。在信息論中信息熵越高,表明系統越混亂,不確定程度越高,能提供的信息量也越多,即剪枝策略中信息熵越小,其權值重要性越低[29]。w i x i的信息熵較小,則不同輸入下w i x i的值集中分布在少數區間中,信息量較少,權重w i的重要性不高。設p(x i)為x i發生的概率,則離散變量X的信息熵值如式(5)所示。同理從訓練集中隨機選取K個樣本,將w i x i的值劃分為D個區間,使用pi,z表示w i x i的值分布在區間z中的概率,根據式(5)計算得到w i x i的信息熵Hi值如式(6)所示:

神經元激活值期望的絕對值abs(E(w i x i))越大,權值w i重要性越高,信息熵Hi越小,權值w i重要性越低,因此激活值和信息熵關于權重重要性都呈正相關。后文實驗證明,激活值和信息熵相結合的基于激活-熵的權值重要性評判準則scorei,在保證精度的情況下,可以有效提高壓縮率。scorei可以用來衡量權值的重要性,得分越高,則權值在模型中的重要性也越高,在剪枝時優先裁剪重要性得分較低的權值,如式(7)所示:

2.2 面向層的迭代剪枝策略

迭代剪枝對模型精度影響較小,配合剪枝策略,可以提升壓縮精度。逐層迭代剪枝策略使用試錯實驗法測試不同剪枝率下模型的精度變化,根據精度變化趨勢確定每一層合適的剪枝率。每層剪枝采用迭代方式,每一輪遵循篩選-剪枝-微調的步驟,避免一次剪掉大量權重造成模型精度大幅下降。設模型第m層共包含Nm個權重,且該層的剪枝率為pm,指定最大迭代次數Im,則每輪迭代需要剪掉的權重數量如式(8)所示:

本文提出的基于激活-熵的分層迭代剪枝策略(Activation-Entropy Based Layer-wise Iterative Pruning,AELIP)如下所示。

算法 AE-LIP策略。

輸入 原始CNN模型E,待剪枝層1,2,…,n,待剪枝層的剪 枝 率p1,p2,…,pn,待 剪 枝 層 的 剪 枝 迭 次 數I1,I2,…,In,待剪枝層的權重矩陣W1,W2,…,W n。

輸出 剪枝后的CNN模型E*。

for eachm=0 tondo //逐層進行剪枝

for eacht=0 toImdo //迭代進行剪枝

for eachi=0 toNmdo //權重矩陣W m中權值的總個數權值的重要性得分

end for

Δsm=pm NmIm//確定剪枝數量

index=Sort(scorei,Δsm)

//按重要性得分和剪枝數量對權值排序

Set(W m,index) //將篩選出的權重置為0

Retrain(E) //微調模型

end for

end for

returnE*//返回剪枝后的模型

面向層的迭代剪枝流程主要步驟如下:首先,使用數據集訓練神經網絡,得到原始CNN模型;然后,使用試錯實驗法確定待剪枝層的剪枝率,并設置每一層的剪枝迭代次數;最后,對待剪枝層逐層進行剪枝,每一層剪枝遵循篩選-剪枝-微調的步驟。從訓練集中選取部分樣本,根據式(7)計算每個權值的重要性得分,將權值按照重要性得分從小到大排序。然后根據式(8)計算需要每一輪需要裁剪的權重數量,并將篩選出的權重置為0。最后微調模型即重新訓練網絡,補償剪枝后模型的精度損失,其中已被置為0的權重不會被更新。完成所有待剪枝層的剪枝操作后,則獲得壓縮后的CNN模型。

2.3 稀疏權重存儲

模型剪枝后神經元之間的連接稀疏,通常采用稀疏矩陣存儲剪枝后的權重。常用的稀疏矩陣包括CSR、壓縮稀疏列(Compressed Sparse Column,CSC)、協調(COOrdinate,COO)、ELLPACK以及Hybrid等,其中CSR稀疏矩陣使用較為廣泛[30]。如圖5所示,CSR稀疏矩陣由非零元素、列索引和每行第一個非零元素索引三元組構成。設非零元素個數為b,行數為u,則CSR矩陣一共需要存儲2b+u+1個元素。剪枝后模型的存儲空間由兩部分組成,包括非零權重所占用的存儲空間以及稀疏矩陣所占用的存儲空間,稀疏矩陣的存儲開銷降低了模型的壓縮率。CSR矩陣可以在稀疏度高的網絡中達到更高的壓縮率[8],盡管存在額外的存儲開銷,與模型大小相近的稠密網絡模型相比,稀疏網絡模型的準確率更高,并且在大規模網絡中表現尤為明顯。

圖5 CSR稀疏矩陣存儲格式Fig.5 Storage format of CSRsparse matrix

3 實驗驗證

3.1 實驗環境與數據集

本章實驗使用Pytorch-1.0.0作為深度學習框架,實驗環境如表1所示。

表1 實驗環境Tab.1 Experimental environment

實驗使用CIFAR-10數據集訓練和測試卷積神經網絡模型。CIFAR-10是深度學習領域常用的一種用于普適物體識別的數據集,共包含50 000張訓練圖片和10000張測試圖片,圖片共包含10個類別,每張圖片都是大小為32×32的彩色圖片[31]。本實驗在CIFAR-10數據集上訓練了AlexNet和VGG-16兩種CNN模型。

AlexNet模型共有20層,其中8層含參數,包括5層卷積層 conv1、conv2、conv3、conv4、conv5以及 3層全連接層 fc6、fc7、fc8。訓練好的AlexNet模型在測試集上的準確率為77.15%。

VGG-16模型共有38層,其中16層含參數,包括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以及3層全連接層fc6、fc7、fc8。訓練好的VGG-16模型在測試集上的準確率為89.63%。

3.2 實驗結果與分析

3.2.1 單層剪枝實驗

單層剪枝實驗選取AlexNet和VGG-16模型部分全連接層,在不進行微調的情況下,逐步增大剪枝率,觀察模型在測試集上準確率變化情況,其中微調可以有效補償剪枝帶來的精度損失,但對算法的優劣不產生影響。本實驗通過選取基于幅度的權重剪枝[16](Magnitude)和基于相關性的權重剪枝[18](Correlation)策略與基于激活-熵的權重剪枝(Activation-Entropy)策略比較測試集上準確率變化情況,驗證本文提出的激活-熵評判準則的有效性。

如圖6所示,AlexNet和VGG-16模型由于全連接層中存在較多冗余權值,當剪枝率較低時模型精度無明顯變化。對于AlexNet模型的fc7層,當剪枝率在50%以下時,使用三種策略剪枝后的模型精度仍保持在70%~77%;當剪枝率達到95%時,全連接層中剩余的權重數量較少,剪枝后模型的精度都出現大幅下降。基于激活-熵的剪枝策略的精度損失大概為23.5%,基于相關性的剪枝策略的精度損失約為25.5%,基于幅度的剪枝策略的精度損失達到了26.4%。在剪枝過程中,基于幅度的剪枝方法效果最差,基于激活-熵的剪枝方法由于保留了對下一層神經元激活值貢獻較大的權重,精度損失相對較小。對于VGG-16模型的fc7層,基于幅度的剪枝方法在剪枝率達到90%時模型精度出現明顯下降,剪枝率達到95%時精度只有57%左右,而基于激活-熵的剪枝策略的精度可以達到61%。綜上所述,當剪枝率較低時AlexNet和VGG-16模型的精度幾乎沒有損失,而較高的剪枝率下基于激活-熵的權重剪枝效果較好。

圖6 AlexNet和VGG-16模型的fc層的單層剪枝實驗結果Fig.6 Single-layer pruning experimental results of fc layer for AlexNet and VGG-16 models

微調可以有效恢復剪枝后的模型精度。微調時設學習率為1×10-4,在整個訓練集上重新訓練,在微調過程中被裁剪的權重值不會被更新。從圖7可以看出,當剪枝率達到95%時,AlexNet模型經過微調后準確率從53.67%恢復到63.15%,VGG-16模型的準確率從61.49%恢復到75.46%。在模型剪枝中,微調是關鍵步驟,可以有效補償剪枝帶來的精度損失。

3.2.2 分層迭代剪枝實驗

本節實驗使用基于激活-熵的分層迭代剪枝策略對整個模型進行壓縮,比較三種剪枝策略在不同壓縮率下的模型精度變化情況,表2顯示了AlexNet和VGG-16模型的剪枝實驗結果。如表2所示,裁剪權重數量上升,模型壓縮率提高,模型準確率下降。經重訓練,基于激活-熵的分層迭代剪枝策略:使AlexNet模型壓縮了87.5%;準確率下降2.12個百分點,比基于幅度的權重剪枝策略提高1.54個百分點,比基于相關性的權重剪枝策略提高0.91個百分點。使VGG-16模型壓縮了84.1%;準確率下降2.62個百分點,比基于幅度的權重剪枝策略提高0.62個百分點,比基于相關性的權重剪枝策略提高0.27個百分點。

實驗結果表明,在單層剪枝實驗中,相同剪枝率下基于激活-熵的剪枝策略,比基于幅度的剪枝和基于相關性的權重剪枝策略精度損失更小。基于激活-熵的分層迭代剪枝策略能夠在模型精度損失較小的情況下有效縮減CNN模型的體積,可以解決CNN模型在移動設備上部署受限的問題。

圖7 AlexNet和VGG16模型剪枝微調實驗結果Fig.7 Pruning fine-tuning experimental results of AlexNet and VGG16 models

表2 AlexNet和VGG-16模型的分層迭代剪枝實驗結果Tab.2 Experimental results of layer-wise iterative pruning of AlexNet and VGG-16 models

4 結語

本文分析了現有研究工作中的權值重要性評判方法,提出基于激活-熵的分層迭代剪枝策略裁剪模型中的權重,并使用CSR稀疏矩陣存儲裁剪后的權重。實驗結果表明,本文提出的剪枝策略能夠在模型精度損失較小的情況下有效縮減模型的參數量,解決了模型在移動端的存儲問題,使CNN模型在移動設備中的部署成為可能。

猜你喜歡
重要性策略模型
一半模型
“0”的重要性
論七分飽之重要性
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
例談未知角三角函數值的求解策略
幼兒教育中閱讀的重要性
甘肅教育(2020年21期)2020-04-13 08:09:24
我說你做講策略
高中數學復習的具體策略
數學大世界(2018年1期)2018-04-12 05:39:14
3D打印中的模型分割與打包
主站蜘蛛池模板: 精品国产91爱| a天堂视频在线| 欧美色视频日本| 亚洲欧美一级一级a| 国产美女无遮挡免费视频网站| 亚洲国产成人在线| 久久精品娱乐亚洲领先| 香蕉蕉亚亚洲aav综合| 亚洲中文字幕23页在线| 2021国产精品自产拍在线观看| 激情乱人伦| 日韩av在线直播| 婷婷色狠狠干| 99中文字幕亚洲一区二区| 国产欧美网站| 色欲不卡无码一区二区| 日韩中文欧美| 国产一级片网址| 日韩激情成人| 亚洲无码精品在线播放| 国产清纯在线一区二区WWW| 亚洲欧美国产五月天综合| 欧美中文字幕在线播放| 国产成人av一区二区三区| 亚洲成年人片| 亚洲午夜福利精品无码不卡| 精品国产网站| 在线观看网站国产| 久久狠狠色噜噜狠狠狠狠97视色| 成人欧美日韩| 免费人成网站在线高清| 亚洲熟妇AV日韩熟妇在线| 国产免费怡红院视频| 一本大道东京热无码av| 欧美日韩中文字幕二区三区| 91久久夜色精品国产网站| 国产精品专区第一页在线观看| 天天色天天操综合网| 日韩欧美中文字幕在线韩免费| 日韩黄色大片免费看| 永久免费AⅤ无码网站在线观看| 免费在线观看av| 日韩欧美综合在线制服| 欧美中文字幕无线码视频| 成人午夜福利视频| 亚洲九九视频| 精品无码一区二区三区电影| 狠狠亚洲婷婷综合色香| 全午夜免费一级毛片| 欧美日本不卡| 重口调教一区二区视频| 亚洲人成在线免费观看| 日韩毛片免费| 老熟妇喷水一区二区三区| yjizz视频最新网站在线| 亚洲va欧美va国产综合下载| 天天做天天爱夜夜爽毛片毛片| 欧美狠狠干| 亚洲一区精品视频在线| 欧美色视频网站| 国产激爽大片在线播放| 亚洲Va中文字幕久久一区| 91黄色在线观看| 中文字幕亚洲另类天堂| 国产亚洲精久久久久久久91| 亚洲欧美一区在线| 97久久人人超碰国产精品| 久久99热66这里只有精品一| 一本色道久久88亚洲综合| 亚洲精品综合一二三区在线| 免费播放毛片| 日本在线国产| 五月婷婷综合色| 一级福利视频| 日本在线亚洲| 91系列在线观看| 免费一级无码在线网站| 久久综合伊人 六十路| 国产成人在线小视频| 美女毛片在线| 亚洲福利网址| 中文无码精品A∨在线观看不卡|