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

結合剪枝與流合并的卷積神經網絡加速壓縮方法

2020-06-06 02:07:30謝斌紅鐘日新潘理虎張英俊
計算機應用 2020年3期
關鍵詞:方法模型

謝斌紅,鐘日新,潘理虎,2,張英俊

(1. 太原科技大學計算機科學與技術學院,太原030024; 2. 中國科學院地理科學與資源研究所,北京100101)

(*通信作者電子郵箱997865222@qq.com)

0 引言

從計算機視覺到語音識別,再到自然語言處理,卷積神經網絡(Convolutional Neural Network,CNN)的應用越來越廣泛。然而隨著深度卷積神經網絡的快速發展,網絡的層數和模型的體積也在不斷擴大,龐大的規模和高昂計算復雜度使得這些模型很難部署和應用于自動駕駛等實時性要求較高的場景,以及車載設備、移動手機等在計算能力、存儲容量等資源受限的環境中,制約了其在更廣闊領域的應用和推廣,因此優化卷積神經網絡結構,壓縮并加速網絡模型已成為工業界和學術界亟待解決的難題之一。

為了解決這一難題,早在20世紀90年代,LeCun等[1]率先提出了最佳腦損失(Optimal Brian Damage)方法,然而由于當時神經網絡大多屬于淺層網絡,對于結構優化的需求尚不強烈,因此未能引起廣泛關注。如今卷積神經網絡的規模日益龐大,大量應用場景都無法提供相應的必需資源,因此關于網絡結構優化的研究逐漸深入,大量成果不斷涌現。目前深度卷積神經網絡模型壓縮方法從參數數量、參數存儲空間、卷積核大小以及網絡模型結構等方面進行,主要包括參數剪枝、模型量化、低秩分解和新型網絡模型的設計等4類。

參數剪枝的基本思想是設計一種評判機制,通過移除預訓練好的深度網絡模型中冗余的、信息量少的權值,從而減少網絡模型的參數,達到壓縮模型存儲空間和提高模型訓練速度的目的。Hassibi 等[2]提出的基于最優化腦手術(optimal brain surgeon)的剪枝策略,根據Hession 矩陣反向傳播計算權值的二階偏導,同時利用矩陣來構造每個權值的重要性分數,低于重要性分數的權值會被刪掉。與這種方法不同,Srinivas等[3]提出不依靠對數據的訓練和反向傳播,直接構造Hassion矩陣,刪除冗余的節點。Wen 等[4]通過把深度神經網絡的卷積核、通道和網絡層數的正則化限制加入到損失函數中,在模型進行剪枝的同時,對參數進行懲罰。Li 等[5]利用L1 正則化來對卷積核進行重要性評價,人為設定剪枝比例后,將該層不重要的卷積核直接剔除,同時進行微調(Fine-tune),雖然相比之前的方法有了明顯的提高,但網絡的整體結構仍有冗余。

參數量化作為參數共享的最直接的表現形式,得到了廣泛的應用。參數共享是通過構造一種映射使多個參數共享同一個數據,從而降低模型的存儲空間。Gupta 等[6]將全精度浮點型參數量化到16 位固定長度表示,隨后Gysel 等[7]通過微調,將權值量化到了8 位。其主要原理是在模型訓練過程中直接學習二值權值或激活。量化雖使模型存儲代價減小,但模型的精度難以保證。

低秩分解是利用矩陣和張量分解技術估計并分解深度模型中的原始卷積核,降低了模型的計算復雜度,從而達到深度卷積神經網絡壓縮和加速的目的。早在2013年,Denil等[8]從理論上利用低秩分解的技術并分析了深度神經網絡存在大量的冗余信息,開創了基于低秩分解的深度網絡模型壓縮與加速的新思路。Jaderberg 等[9]利用張量的低秩分解技術,將原始的網絡參數分解成2 個小的卷積核。根據同樣的思想,Denton 等[10]先對卷積層參數進行低秩近似,然后通過微調來恢復模型精度。然而低秩分解技術已經很成熟,目前的網絡都開始采用像1×1、3×3 這樣的卷積核,用矩陣分解的方法對像這樣小的卷積核進行網絡壓縮和加速是一件困難的事情;另外,目前的分解方法都是逐層進行低秩近似,難以對全局參數進行壓縮,并且由于移動應用和嵌入式處理器受到位寬和性能的限制,導致常規的計算需求很難在該環境實施。

關于輕量化網絡結構的設計,Buciluǎ等[11]提出利用知識遷移(Knowledge Transfer,KT)來對模型進行壓縮;Hinton 等[12]提出了知識蒸餾的框架,這種方法是通過軟化父網絡的學習能力和懲罰子網絡,利用父網絡的輸出結果作為標簽,對子網絡進行壓縮和訓練。雖然知識蒸餾的結構能使深度神經網絡在壓縮和加速方面有提高,并且很大程度上節省了計算消耗,但模型的假設比較嚴格,只能用于具有Softmax損失函數的網絡模型中,這使得在性能方面與其他的壓縮方法缺乏競爭力。

本文在這些工作的基礎上,結合最新進展和研究成果,提出一種從網絡參數和模型結構兩種角度對卷積神經網絡(Convolutional Neural Network,CNN)進行壓縮的方法。首先從模型的內部角度考慮出發,通過剪枝技術移除貢獻度較低的參數,并對每一層的參數進行懲罰[13];其次從模型的結構進行優化[14],將非必要的層與重要的層進行流合并,并通過調整參數,使其可以替代合并之前的層,從而實現了對模型的整體壓縮和加速。

1 混合壓縮方法

本文提出的混合壓縮方法框架如圖1 所示:首先對預訓練好的CNN 模型進行參數剪枝,然后對模型進行流合并處理,最后將得到的壓縮模型進行多次迭代直至滿足要求。

1.1 參數剪枝

1.1.1 建立初始CNN模型

首先建立一個CNN模型,對其進行微調至令人滿意的結果。在預訓練的模型中,使用了隨機梯度下降(Stochastic Gradient Descent,SGD)算法對參數進行更新和迭代,如式(1):

通過梯度下降算法使模型的參數達到收斂,得到一個穩定的卷積神經網絡模型。

圖1 模型壓縮框架Fig. 1 Framework of model compression

1.1.2 參數的重要性評價

CNN有很多參數,每一層的參數的數量和大小各不一樣,參數的重要性是根據參數的值與閾值T比較后得出,若大于閾值則判定為重要的,否則為不重要,因此閾值的設置尤為關鍵。由中心極限定理可知,很多獨立隨機變量的和近似服從高斯分布,這意味著在很多復雜的實際情況中都可以被成功地建模為高斯分布的噪聲。故利用這一思想,把各個層參數的和用高斯分布進行建模,把每一層參數的和經過高斯函數計算后的標準差設置為閾值,如式(3):

其中:N為當前層參數的個數,xi為參數的值,r為參數的平均值。參數的評價流程如圖2所示。將初始化后的參數(W)與閾值(T)進行比較:若大于閾值將參數與標量值1相乘,輸出參數值;否則,與標量值0相乘,輸出參數值。最后得到評價后的參數。

圖2 參數重要性評價流程Fig. 2 Process of parameter's importance evaluation

1.1.3 參數剪枝

經過重要性評價后,對模型中不重要的參數進行剪枝。這里設置了一個標量值mask來進行剪枝,首先初始化mask的值為零,設定閾值,將所輸入的參數利用給定的公式進行運算到收斂為止(其中t表示循環的次數);然后將參數逐個與閾值相比較,如果大于閾值則將mask置為1,并與比較的參數進行點乘,使參數保留下來;而小于閾值的參數,將mask置為0,與比較參數進行點乘,使其不參與后面的運算,從而“剪掉”。具體參數剪枝流程如算法1所示。

其中輸入包括初始化為零的標量值mask,閾值(threshold)和隨機初始化的權重參數(w);輸出為經過評價后的權重參數。

算法1 剪枝算法。

輸入:mask=0,threshold,初始參數W(0)~N(0,μ);

1.1.4 Lasso懲罰

經過參數剪枝后,模型的稀疏度很高,導致難以優化網絡模型并且容易出現過擬合的情況。因此通過對剪枝后的參數使用(Least absolute shrinkage and selection operator,Lasso)懲罰和Dropout技術有效地解決了這一問題。其中Lasso是指統計學習中的特征選擇方法,如式(4):

其中:β是模型中卷積核的參數,y代表模型中的實際值,X表示模型輸入的參數。Lasso懲罰就是在模型的基礎上對其進行正則化。L2正則化是最常用的正則化方法,可表示為式(5):

其中:F表示正則化后的損失函數,F0是原始的損失函數,λ表示懲罰因子。而常用的交叉熵損失函數可以表示為式(6):其中:x代表樣本,n代表樣本的總數,y是實際值,a是輸出值。由式(6)可知,交叉熵損失函數F是由原始的損失函數F0與L2正則化相加所得出;而Lasso懲罰(即L2正則化)是根據在損失函數中加入了對權重進行正則化的懲罰因子項(λ)來增加損失值達到減小權重的效果。利用函數的數學原理來對懲罰因子的大小進行調整,懲罰力度大小的不同,直接影響到損失函數的變化,即λ越大,減小權重的趨勢越明顯;反之,則減小原始的損失函數的趨勢就越明顯。在剪枝訓練的過程中,Lasso懲罰的力度將影響權重的大小,從而影響網絡中的哪些連接將被去除。

然而,與Lasso懲罰原理不同,Dropout是通過調整網絡的連接比例來解決過擬合的問題。在訓練過程中,Dropout以一定的概率將某些權重的連接劃掉,而概率的值是由式(7)、(8)確定的:

其中:Ci表示第i層的連接數,Ni表示第i層的神經元數目,Ci0表示原來的連接數,D0表示原始的Dropout率。

1.1.5 敏感度分析

在剪枝時,每一層具有的敏感度不同,即每一層剪枝的比例大小會對精確度造成不同的影響。由文獻[5]可知,處于相同階段(具有相同的特征映射大?。┑膶訉π藜艟哂蓄愃频拿舾行裕瑢δ切┬藜艉苊舾械膶樱藜粢恍〔糠诌@些層的比例。而那些不敏感的層,根據這層修剪后的權重再次設置一個閾值(即權重的平均值),把低于閾值的權重重置為零,大于閾值的權重不發生改變,然后繼續訓練并微調至模型精度恢復,最后重復上述過程。

1.2 流合并

在一般的深度學習模型中,數據集的概率分布可以用多層構造的非常稀疏的大型深度卷積神經網絡來表示。通過分析當前層與前一層(或并行層)之間的相關性,可以將高度相關的層合并為一個新的層,并稱之為再生層。

文獻[14]研究表明,在CNN 網絡模型中,占用模型運行時間最多的層并不是卷積層,而是模型在進行完卷積操作之后的幾個層,如LRN(Local Response Normalization)層、BN(Batch Normalization)層等;另外,幾個連續的層可以看作是非線性變換的黑箱,這個黑箱通過調整參數,可以被一個新的卷積層所取代,來近似原來的幾個層的功能。如圖3所示。

圖3 流合并示意圖Fig. 3 Schematic diagram of stream merging

從圖3 中可以看出,LRN 層所花費的時間比它的前一層卷積層還要多,于是將它們合并,生成一個新的重生卷積層conv2/3×3,并調整新卷積層的步長和超參數,合并后的層與原始層相比,系統所花費的時間減少80%左右。

通過將非張量層(LRN 層、池化層)與張量層(卷積層)在前饋機構中合并,層之間的合并生成一個新的張量層(即再生層)。在分層重構后,對新生成的層的參數進行微調,對深度神經網絡模型進行再訓練。具體的操作如下:

合并池化層 池化層的作用是對前一層的特征圖進行降維采樣,因此,選擇將池化層和它的前一層進行“合并”。如圖4 所示:將原有的池化層(pooling)刪除,把合并后的卷積層的步長(Stride)改為池化層的步長。隨著新“合并”的卷積層的步長值的增大,它進一步減少了新模型所需的計算量。

圖4 池化層合并Fig. 4 Merging of pooling layers

合并非池化層 對于像LRN和BN層,采取的操作是直接從原始的深層神經網絡中將這些層去除,達到“合并”的目的。

最后,將合并后的層進行重新訓練,來恢復模型的精度。

2 實驗結果及分析

本文實驗環境:本文實驗設備是基于Windows 10 操作系統,采用Inter Core i5-3230M CPU 2.60 Hz 處理器、4 GB 內存、500 GB硬盤,在Pycharm環境下使用TensorFlow框架實現。

使用的數據集是MNIST[15]手寫數字識別。采用的網絡結構是CNN 中經典的LeNet-5。MNIST 數據集是由60 000 個訓練集和10 000個測試集組成。將原始網絡和經過混合壓縮后的網絡進行對比,檢驗混合壓縮方法在模型壓縮上的有效性。

2.1 LeNet-5壓縮結果與分析

LeNet-5包含了兩個卷積層與兩個全連接層(FC),以及一個分類層。LeNet-5 在MNIST 上的錯誤率達到了0.8%。在MNIST數據集上進行混合壓縮和訓練CNN。

使用LeNet-5 網絡在MNIST 數據集上驗證混合壓縮方法的有效性。如圖5所示是模型在進行第20次壓縮過程中準確率的變化:(橫軸代表迭代的次數,縱軸表示模型的準確率)。由圖5可以看出在模型迭代2 500 000次后,準確率逐漸趨于穩定。同時對模型中每個層進行分析來驗證模型的有效性。如圖6(損失函數的變化圖)可得出:conv2(圖6(a))和conv3(圖6(b))中,損失函數迅速趨于0,說明卷積層的訓練過程是有效的;在全連接層中的第一層fc_1(圖6(c)),損失函數同樣快速地趨于零,而在全連接層的第二層fc_2(圖6(d))中沒有加入損失函數,圖形呈高斯分布,達到了預期的效果。

圖5 準確率變化示意圖Fig. 5 Schematic diagram of accuracy change

圖6 損失函數的變化圖Fig. 6 Diagrams of loss functions

在迭代的過程中模型的體積大小的變化如圖7 所示:在迭代20次后模型的體積逐漸平穩,停止壓縮。

圖7 模型存儲代價Fig. 7 Cost of model storage

通過對模型內部的分析,發現混合壓縮后模型的卷積層的每層所占內存的消耗相比初始模型的消耗在每層上都有極大的減小。內存的消耗結果是由TensorBoard[16]可視化出來的,針對初始模型和最終模型顯示結果進行的對比。各個層之間的對比如圖8所示。

圖8 各層內存消耗對比Fig. 8 Memory consumption comparison of layers

如圖9 所示,經過流合并的處理后,對每一層所消耗的時間進行統計,與初始模型的時間消耗相比,每一層的運行速度都有不同程度的提升。同樣在TensorBoard 中可視化出來的結果進行的對比。模型的總體運行速度相比初始模型提高了8 倍。結果是由初始模型每層消耗的時間之和與最終模型的時間之和的比得出,即最后的加速效果。

圖9 時間消耗對比Fig. 9 Time consumption comparison of layers

2.2 與現有的實驗方法的對比分析

使用LeNet-5 模型和MNIST 數據集與目前的幾種主流的壓縮方法分別從準確率、模型存儲代價、加速效果以及壓縮倍數等方面進行了對比,具體結果如表1所示。

從實驗結果可以發現,單純對CNN 模型進行權重剪枝,只能壓縮模型的體積,沒有加速效果;卷積核的剪枝方法在加速和壓縮上的效果不理想;混合剪枝的方法相比權重剪枝和卷積核剪枝都有提升,而其壓縮的效果僅比權重剪枝高出一倍;文獻[19]提出的方法的壓縮效果有了提升,但加速效果只是略微提升;本文從不同的角度去壓縮模型,最后得到的結果優于其他方法。

表1 在LeNet-5上本文方法與現有的方法比較Tab. 1 Comparison of the proposed method with existing methods on LeNet-5

3 結語

針對深度卷積神經網絡參數冗余和訓練速度慢的問題,本文從不同角度對模型進行壓縮和加速,提出了一種內外相結合的混合壓縮方法。從模型的內部角度觀察,利用參數剪枝的技術來實現內部壓縮的最大化;從模型的整體結構考慮,把非張量層和張量層通過流合并生成新的層,實現模型運行速度的提升;最后通過重新訓練來恢復模型精度。實驗結果表明,這種內外相結合的壓縮方法可以有效減少參數冗余的問題,并在運行的速度上有了明顯的提高。接下來的工作將這種壓縮方法應用不同的神經網絡上(如循環神經網絡、對抗網絡等),以觀察這種方法的綜合性能。

猜你喜歡
方法模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
學習方法
3D打印中的模型分割與打包
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 久草视频一区| 中文字幕 91| 欧美在线网| 伊人激情综合网| 视频二区中文无码| 亚洲无码91视频| 老司国产精品视频91| 伊人成人在线| 国产精彩视频在线观看| 亚洲精品不卡午夜精品| 中文字幕永久在线观看| 91欧美亚洲国产五月天| 国产成人高清精品免费软件| 在线欧美a| 欧美高清国产| 欧美中文一区| 久久精品丝袜高跟鞋| 欧美精品高清| 日韩性网站| 亚洲精品成人片在线观看| 免费啪啪网址| 国产十八禁在线观看免费| 国产综合亚洲欧洲区精品无码| 欧美一级高清片欧美国产欧美| 午夜影院a级片| 成人字幕网视频在线观看| 看国产毛片| 蜜臀AVWWW国产天堂| 亚洲六月丁香六月婷婷蜜芽| 亚洲v日韩v欧美在线观看| 欧美日韩一区二区三区四区在线观看| 欧美激情第一区| 四虎在线高清无码| 亚洲欧美另类专区| 色综合手机在线| 国产sm重味一区二区三区| 日韩美女福利视频| 91麻豆国产视频| 美女无遮挡拍拍拍免费视频| 99成人在线观看| 中文字幕第4页| 国产精品无码AV片在线观看播放| 久久黄色小视频| 亚洲av无码人妻| 免费一级无码在线网站 | 视频二区国产精品职场同事| 国产v精品成人免费视频71pao| 日韩小视频在线观看| 99久久免费精品特色大片| 国产一区二区福利| 99久久国产综合精品2023| 九九视频免费在线观看| 国产浮力第一页永久地址| 国产1区2区在线观看| 亚洲最大福利视频网| 午夜影院a级片| 国产日韩丝袜一二三区| 97超爽成人免费视频在线播放| 99人妻碰碰碰久久久久禁片| 91麻豆精品国产高清在线| 欧美精品二区| 国产办公室秘书无码精品| 高清免费毛片| 麻豆精品国产自产在线| 亚洲aⅴ天堂| 国产精品视频猛进猛出| 免费在线视频a| 婷婷丁香色| 九九久久精品免费观看| 国产精品久久久久无码网站| 综合久久久久久久综合网| 国产欧美视频在线观看| 5555国产在线观看| 亚洲综合色区在线播放2019| 日韩精品一区二区三区中文无码| 亚洲色图欧美| 欧美α片免费观看| 青青热久免费精品视频6| 欧美日韩导航| 欧美性久久久久| 天天色天天操综合网| 亚欧成人无码AV在线播放|