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