陳華裔
摘要:深度學習目前是計算機領域研究熱點之一,而神經(jīng)網(wǎng)絡是深度學習不可缺少的一部分,然而深度網(wǎng)絡模型參數(shù)巨大,導致遷移學習困難,硬件需求條件巨大。該文提出了一種基于MB-K-Means算法對權(quán)重進行聚類,并進行量化的壓縮方法。首先,對模型的參數(shù)權(quán)進行剪枝,并進行稀疏訓練恢復其精度。第二,基于MB k-means算法進行權(quán)重聚類,然后權(quán)重量化共享。利用算法能夠增加網(wǎng)絡的訓練速度,在深度卷積神經(jīng)網(wǎng)絡上進行參數(shù)壓縮,減少網(wǎng)絡模型大小。實驗表明,在ImageNet-1000數(shù)據(jù)集上,AlexNet模型縮小了31倍,VGG模型的縮小了45倍。
關鍵詞:網(wǎng)絡參數(shù);MB-K-Means算法;卷積網(wǎng)絡;參數(shù)壓縮
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2019)06-0157-02
1引言
近幾年來,隨著技術的發(fā)展,深度神經(jīng)網(wǎng)絡所代表的AI,是被大家所公認的技術。如今,深度神經(jīng)網(wǎng)絡已被廣泛的應用與計算機視覺、語音、自然語言等大領域,取得巨大的成功。特別在計算機視覺方面,圖像識別以及圖像檢測等方面,幾乎是目前所有的智能圖像識別系統(tǒng)都采用深度學習。
自從2012ILSVRC上AlexNet取得優(yōu)異的成績以后,越來越多研究員開始對卷積神經(jīng)網(wǎng)絡進行研究,其中最具有代表性的CNN模型,如VGG,GoogLeNet,RetNet等,大大提高了模型的準確率,然而這其中由于模型的層數(shù)過多,比如VGG網(wǎng)絡的卷積層占據(jù)了10%的參數(shù)規(guī)模;全連接層占據(jù)了大約90%的參數(shù)規(guī)模,這為深度網(wǎng)絡模型的壓縮提供了依據(jù),由于參數(shù)的原因?qū)е聼o法部署在手機或者更小的設備上。
2 相關工作
為了降低網(wǎng)絡復雜度,保證模型的性能沒有太大變化,目前有很多不同流派的模型壓縮和加速的方法,總體可以分五大類:設計新的網(wǎng)絡模塊、知識蒸餾、低秩分解、量化、剪枝。
對于設計新的網(wǎng)絡模塊,目前有比較代表的研究,如:SqueezeNet,MobileNet和ShuffleNet。對技巧和經(jīng)驗要求較高性能更好的模型。Lei等人提出了知識蒸餾(KD)方法,該方法有效降低計算量,使得模型層數(shù)變淺;但是由于只能使用Softmax損失函數(shù)的分類任務,導致在性能方面有所不足。低秩分解技術也越加成熟,現(xiàn)在越來越多的網(wǎng)絡采用1X1的小卷積核來分解實現(xiàn)網(wǎng)絡模型的壓縮,但是效果有限。
剪枝網(wǎng)絡通過微調(diào)來實現(xiàn)網(wǎng)絡的精度,已經(jīng)被廣泛應用與CNN的模型。Han等人16年提出的“Deep Compreession”方法,是當年的最佳論文,其中包括三種方法,參數(shù)剪枝、量化和霍夫曼編碼壓縮。目前通過剪枝、量化的方法是比較高效且效果較好的辦法。但是剪枝如何找到一個有效衡量權(quán)重或卷積核的重要性標準是目前所需要關注的的。主流的有通過確定一個閾值剪枝和通過老師-學生的網(wǎng)絡模型來剪枝。量化方法多種多樣,一般是對權(quán)值進行聚類后在進行量化操作。
3 模型參數(shù)壓縮方法
首先,對深層模型進行剪枝能降低模型參數(shù),解決模型對設備的大量需求,對于權(quán)重W進行剪枝,設定一個閾值,去掉低于這個閾值的權(quán)重連接,通過微調(diào)恢復模型精度,得到一個相對稀疏的網(wǎng)絡模型。第二,提出基于MB-K-MEANS方法進行權(quán)值聚類,取得聚類中心,然后在將對各層進行權(quán)值共享,進一步得到壓縮的模型。最后,使用哈夫曼編碼壓縮技術進一步壓縮模型。整體框架圖1如下:
3.1 網(wǎng)絡模型的剪枝
模型的剪枝過程主要分為三步:
1)首先對原先的網(wǎng)絡進行訓練,得到最開始訓練好后保存的模型。
2)然后設置一個閾值對該網(wǎng)絡進行剪枝操作,本文設置的閾值為前20%,將每層權(quán)重的絕對值排序,取前20%進行剪枝,達到壓縮的目的
3)然后對剪枝后的網(wǎng)絡進行恢復訓練,通過微調(diào)一些參數(shù),恢復到原來的精度。
剪枝完成后,原先連接比較密集的網(wǎng)絡,就會變成稀疏的網(wǎng)絡,然后經(jīng)過一輪一輪的迭代,精度隨著網(wǎng)絡的迭代次數(shù),恢復到原先的精度。
經(jīng)過網(wǎng)絡剪枝后變成稀疏網(wǎng)絡。而稀疏網(wǎng)絡一般用一種更緊湊的方式CSR(Compressed Sparse Row)或者CSC(Compressed Sparse Cloumn)來存儲,根據(jù)實驗對比,本文選用的是CSC格式的存儲模式。
3.2 基于MB-k-means算法的權(quán)值共享和量化
傳統(tǒng)的K-Means算法對于大數(shù)據(jù)處理的效率是較高的,且是可伸縮性的,但是且在大批量數(shù)據(jù)下,其效果往往優(yōu)于其它聚類算法,但是但是該算法對于初始聚類中心的選擇十分敏感,不同的初始點選擇方法,可能導致不一樣的結(jié)果,并且其計算速度也是個問題。
在該算法的基礎上,有一種新的變種聚類算法MB-K-means(Mini Batch K-Means)算法,是基于k-means算法的變種,采用小批量的數(shù)據(jù)子集大大減小計算時間的同時,由于分批對數(shù)字子集進行聚類,所以可以一定程度上減小初始聚類中心的敏感度。
其步驟如下:
1)從數(shù)據(jù)集中隨機抽取一些數(shù)據(jù)形成小批量,把他們分配給最近的質(zhì)心;
2)更新質(zhì)心;
對于每一個小批量,通過計算平均值得到更新質(zhì)心,并把小批量里的數(shù)據(jù)分配給該質(zhì)心,隨著迭代次數(shù)的增加,這些質(zhì)心的變化是逐漸減小的,直到質(zhì)心穩(wěn)定或者達到指定的迭代次數(shù),停止計算。
根據(jù)原始的權(quán)重W={w1,w2,......,wn} 得到的K個聚類中心,假設量化后是四類,梯度矩陣同樣量化為4類,對每類的梯度進行求和得到每類的偏置,和量化中心一起更新得到新的權(quán)值。
如圖2所示:拿圖為例,有16個連接,每一個連接需要用32位的數(shù)值進行比較,量化為4類,每類只需要兩個bit表示,每類的量化中心值32位。
3.3 基于哈夫曼編碼的壓縮
哈夫曼編碼是一種非常常用的無損編碼技術,它按照符號出現(xiàn)的概率大小來進行可變長度的編碼。主要用于解決因編碼長短不一而帶來的冗余問題。網(wǎng)絡中的權(quán)重參數(shù)分布是不均勻的,利用哈夫曼編碼來對其進行處理,最終可以使網(wǎng)絡的存儲得到進一步的壓縮。
4 實驗
本文選取ImageNet-1000作為數(shù)據(jù)集,分別在AlexNet網(wǎng)絡和vgg-16上進行壓縮實驗。本次實驗所用的計算機配置是i5-8600K、六核CPU,Windows10操作系統(tǒng)的tensorflow開發(fā)平臺做實驗。GTX1080顯卡、24G內(nèi)存來加速訓練。
4.1不同優(yōu)化方法的分析
當前流行的優(yōu)化算法有SGD隨機梯度下降法、RMSProp梯度下降法、AdaDela梯度下降法等,具體哪種算法最優(yōu),并沒有一個明確的說法。本文通過實驗對比,選擇了RMSProp梯度下降法。
4.2 數(shù)據(jù)集
我們使用的是ImageNet IlSVRC-2012的數(shù)據(jù)集作為實驗,其中其中訓練集為128167張圖片+標簽,驗證機為50000張圖片+標簽,分為1000類,我們采用TOP-1和TOP-5的精度來比較模型的效果。
4.3 實驗結(jié)果
在AlexNet網(wǎng)絡上各個層參數(shù)壓縮如下表,可以看出修剪過程壓縮了10倍,在經(jīng)過兩步壓縮,最終壓縮到了31被的壓縮率。
在VGG上使用同樣的辦法,修剪壓縮了14倍,在經(jīng)過后面兩步壓縮了45倍。
將模型的壓縮前后進行對比,得出參數(shù)大小以及模型TOP-1和TOP-5的精度等具體數(shù)值,如下表1所示。
根據(jù)以上的結(jié)果可以得知,AlexNet和VGG壓縮前后的TOP-1、TOP-5的精度可以看作并沒有損失,而VGG由于網(wǎng)絡更深所以精度比AlexNet高,但參數(shù)也多,因此壓縮的的倍數(shù)也比AlexNet高??梢钥吹?,AlexNet網(wǎng)絡模型的大小由 240MB 縮小到了 7.44MB,相對于原模型來說壓縮了 31 倍之多;VGG-16 網(wǎng)絡的模型大小則由 552MB 降低到了12.42MB,壓縮倍數(shù)達到了 45 倍之多。
5 結(jié)論
隨著人工智能時代的到來,很多應用圖像識別的領域,都要用到類似的模型。而實現(xiàn)這些效果的途徑之一就是深度神經(jīng)網(wǎng)絡。由于目前大多數(shù)的模型過大,因此模型的壓縮變得很有意義。本文提出的深度神經(jīng)網(wǎng)絡壓縮方法,通過一系列實驗,得到有效的證明。
【通聯(lián)編輯:光文玲】