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