陳 昀,蔡曉東,梁曉曦,王 萌
(桂林電子科技大學(xué) 信息與通信學(xué)院,廣西壯族自治區(qū) 桂林 541004)
得益于深度神經(jīng)網(wǎng)絡(luò)的應(yīng)用,許多領(lǐng)域[1-3]取得了重大進(jìn)展。然而,大多數(shù)深度神經(jīng)網(wǎng)絡(luò)模型對(duì)計(jì)算機(jī)內(nèi)存空間和計(jì)算能力有著較高的要求,這限制了其在一些存儲(chǔ)空間和計(jì)算能力較低的設(shè)備中部署。
在計(jì)算機(jī)視覺領(lǐng)域,深度卷積神經(jīng)網(wǎng)絡(luò)算法在圖像識(shí)別[4-5]和檢測(cè)[6-7]等任務(wù)中表現(xiàn)優(yōu)異。但是通過這些算法得到的模型通常不適用于移動(dòng)設(shè)備和嵌入式設(shè)備。例如:AlexNet[8]存在6 100百萬個(gè)參數(shù)需要249MB的存儲(chǔ)空間,使用其去分類一張圖片需要執(zhí)行15億次高精度運(yùn)算。對(duì)于那些參數(shù)更多的網(wǎng)絡(luò)如VGG[9]、Inception-ResNet[10]、DenseNet[11]、ResNeXt[12]等,則需要更高的存儲(chǔ)空間和計(jì)算能力。
為了在移動(dòng)設(shè)備和嵌入式設(shè)備中部署深度神經(jīng)網(wǎng)絡(luò)算法,大量的研究人員開始探索深度神經(jīng)網(wǎng)絡(luò)模型的參數(shù)冗余問題。該問題主要表現(xiàn)在權(quán)重矩陣和特征圖的冗余,通過消除這些冗余可實(shí)現(xiàn)在不影響準(zhǔn)確率的情況下壓縮深度神經(jīng)網(wǎng)絡(luò)模型以節(jié)省計(jì)算機(jī)內(nèi)存和計(jì)算資源。目前的研究主要在兩個(gè)方面:(1)減少深度神經(jīng)網(wǎng)絡(luò)的權(quán)重和連接[13-16];(2)對(duì)深度神經(jīng)網(wǎng)絡(luò)的權(quán)重編碼壓縮[17-18]。文中重點(diǎn)研究后者。
目前已經(jīng)有一些算法通過對(duì)權(quán)重量化編碼來壓縮深度神經(jīng)網(wǎng)絡(luò)模型。二值權(quán)重網(wǎng)絡(luò)[19](Binary Weight Networks,BWN)算法將全精度權(quán)重量化為-1和1,并引入一個(gè)縮放因子使量化后的權(quán)重去近似全精度權(quán)重,雖然可達(dá)到32倍的模型壓縮,但是識(shí)別準(zhǔn)確率大幅下降,已無法滿足復(fù)雜任務(wù)的識(shí)別或檢測(cè)。三值權(quán)重網(wǎng)絡(luò)(Ternary Weight Networks,TWN)[20]算法針對(duì)二值權(quán)重網(wǎng)絡(luò)算法識(shí)別準(zhǔn)確率大幅下降的問題提出了一種三值權(quán)重網(wǎng)絡(luò),將全精度權(quán)重量化為-1、0和1來提高深度神經(jīng)網(wǎng)絡(luò)模型的容量,并且通過兩位二進(jìn)制數(shù)編碼量化后的權(quán)重可實(shí)現(xiàn)16倍的模型壓縮。
在編碼壓縮階段,由于兩位二進(jìn)制數(shù)存在4種狀態(tài)而三值權(quán)重網(wǎng)絡(luò)算法只需要其中3種狀態(tài),未充分利用其編碼容量。因此,文中基于三值權(quán)重網(wǎng)絡(luò)算法提出權(quán)重量化的深度神經(jīng)網(wǎng)絡(luò)模型壓縮算法,將全精度權(quán)重量化為-2、-1、1和2四種狀態(tài)以充分利用兩位二進(jìn)制數(shù)的編碼容量,并同時(shí)提高壓縮后深度神經(jīng)網(wǎng)絡(luò)模型的容量。
深度神經(jīng)網(wǎng)絡(luò)模型壓縮主要是在高模型壓縮率和高模型容量間尋找一種最優(yōu)關(guān)系。文中在深度卷積神經(jīng)網(wǎng)絡(luò)上進(jìn)行算法設(shè)計(jì),但是可適用于其它類型的深度神經(jīng)網(wǎng)絡(luò)。對(duì)于模型壓縮率,二值權(quán)重網(wǎng)絡(luò)可實(shí)現(xiàn)32倍的模型壓縮,三值權(quán)重網(wǎng)絡(luò)可實(shí)現(xiàn)16倍的模型壓縮。對(duì)于模型容量,一個(gè)尺寸為3×3的卷積濾波器,二值權(quán)重網(wǎng)絡(luò)將權(quán)重量化為兩種狀態(tài),所以存在23×3=512種狀態(tài);三值權(quán)重網(wǎng)絡(luò)將權(quán)重量化為三種狀態(tài),所以存在33×3=19 683種狀態(tài)。文中基于三值權(quán)重網(wǎng)絡(luò)算法將全精度權(quán)重量化為四種狀態(tài),使用兩位二進(jìn)制數(shù)對(duì)其編碼可獲得16倍的模型壓縮,對(duì)于尺寸為3×3的卷積濾波器可達(dá)到43×3=262 144種狀態(tài)。相比三值權(quán)重網(wǎng)絡(luò),文中算法在保持相同模型壓縮率的情況下,模型容量可提高至約13.3倍。
(1)
其中,n表示濾波器的尺寸。對(duì)于尺寸為3×3的卷積濾波器,n等于9。
(2)
其中,*表示全連接層或卷積層運(yùn)算。
為了解決式(1)的優(yōu)化問題,將其進(jìn)行展開,如式(3)所示。
(3)
(4)
四值濾波器如式(5)所示。
(5)
其中,閾值Δ使用三值權(quán)重網(wǎng)絡(luò)[20]算法提出的計(jì)算方式,其值隨著網(wǎng)絡(luò)權(quán)重的更新不斷調(diào)整,如式(6)所示。
(6)
文中算法使用一個(gè)兩位二進(jìn)制數(shù)編碼一個(gè)四值權(quán)重,其中低位和高位編碼分別如式(7)和如(8)所示。
(7)
(8)
編碼轉(zhuǎn)換表如表1所示。
表1 四值權(quán)重編碼表
n1=0^(x1?(2×s)) ,
n2=n1^(x2?(2×s+1)) ,
?
n31=n30^(x1?(2×s)) ,
n31=n31^(x2?(2×s+1)) ,
(9)
其中,^表示二進(jìn)制異或運(yùn)算,s∈{0,1,…,15}。
壓縮后的模型在測(cè)試階段,首先需要對(duì)四值權(quán)重編碼后的32位二進(jìn)制編碼進(jìn)行解碼,如式(10)所示。其次使用解碼得到的四值權(quán)重進(jìn)行深度卷積神經(jīng)網(wǎng)絡(luò)的前向傳播計(jì)算。
(10)
其中,x1和x2通過循環(huán)位與運(yùn)算求解,如式(11)所示。
x1=m&(1?(2×j)) ,
x2=m&(1?(2×j+1)) ,
(11)
其中,m為32位的二進(jìn)制編碼,&表示二進(jìn)制與運(yùn)算,j∈{0,1,…,15}。
訓(xùn)練部分配置:Intel i3-4130 CPU(3.40GHz × 4)、8GB內(nèi)存、GTX980ti顯卡、ubuntu14.04操作系統(tǒng)、Caffe深度學(xué)習(xí)開源框架。測(cè)試部分配置:Intel i3-4130 CPU(3.40GHz × 4)、8GB內(nèi)存、GTX980ti顯卡、ubuntu14.04操作系統(tǒng)、Caffe深度學(xué)習(xí)開源框架。
圖1 MNIST數(shù)據(jù)集
MNIST數(shù)據(jù)集如圖1所示。該數(shù)據(jù)集是一個(gè)簡單的視覺計(jì)算數(shù)據(jù)集,包括55 000份訓(xùn)練數(shù)據(jù)和10 000份測(cè)試數(shù)據(jù),每份數(shù)據(jù)都由圖片和對(duì)應(yīng)的0~9標(biāo)簽組成,圖片尺寸均為28×28像素。
CIFAR-10數(shù)據(jù)集如圖2所示。該數(shù)據(jù)集包括10個(gè)分類,每個(gè)分類含有6 000張圖片,尺寸為32×32像素。其中分為5個(gè)訓(xùn)練和1個(gè)測(cè)試批次,每個(gè)批次有10 000張圖片。測(cè)試批次從10類圖片中每一類隨機(jī)取1 000張構(gòu)成,剩下的圖片隨機(jī)排列組合構(gòu)成訓(xùn)練批次。
圖2 CIFAR-10數(shù)據(jù)集
CIFAR-100數(shù)據(jù)集如圖3所示。該數(shù)據(jù)集由60 000張圖像構(gòu)成,包含100個(gè)類別,每個(gè)類別600張圖像,其中500張用于訓(xùn)練,100張用于測(cè)試,尺寸為32×32像素。
圖3 CIFAR-100數(shù)據(jù)集
文中采用CMC作為準(zhǔn)確率評(píng)估方法,將文中提出的算法與二值權(quán)重網(wǎng)絡(luò)和三值權(quán)重網(wǎng)絡(luò)進(jìn)行比較。
2.3.1 基于MNIST數(shù)據(jù)集準(zhǔn)確性與壓縮效率實(shí)驗(yàn)
本實(shí)驗(yàn)使用LeNet-5[21]網(wǎng)絡(luò)結(jié)構(gòu),也可使用其它優(yōu)秀的網(wǎng)絡(luò)結(jié)構(gòu),用于分析模型壓縮后對(duì)簡單的手寫體數(shù)字識(shí)別準(zhǔn)確率的影響,該網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。其中卷積層1的濾波器尺寸為5×5,步長為1,輸出為32,卷積層2的濾波器尺寸為5×5,步長為1,輸出為64,池化層1和池化層2的濾波器尺寸為2×2,步長為2,全連接層1的維度為512,全連接層2的維度為10,分類損失層使用Softmax Loss,并且在每個(gè)卷積層之后使用一個(gè)BatchNorm層對(duì)網(wǎng)絡(luò)進(jìn)行加速。
圖4 LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
網(wǎng)絡(luò)訓(xùn)練使用的超參數(shù)如表2所示。
MNIST數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表3所示。在CMC測(cè)試中,文中算法Top1準(zhǔn)確率為99.41%,與全精度深度卷積神經(jīng)網(wǎng)絡(luò)模型準(zhǔn)確率相同,相比三值權(quán)重網(wǎng)絡(luò)模型和二值權(quán)重網(wǎng)絡(luò)模型分別提高了0.06%和0.6%,這表明在MNIST數(shù)據(jù)集上三值權(quán)重網(wǎng)絡(luò)和二值權(quán)重網(wǎng)絡(luò)都有著優(yōu)秀的表現(xiàn),但是文中提出的四值權(quán)重模型更精確。
表2 MNIST數(shù)據(jù)集網(wǎng)絡(luò)訓(xùn)練超參數(shù)
表3 MNIST數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
文中算法的模型壓縮率為6.74%,與三值權(quán)重網(wǎng)絡(luò)算法相同,相比二值權(quán)重網(wǎng)絡(luò)算法的模型壓縮率增加至約2.14倍,這表明文中算法可實(shí)現(xiàn)與三值權(quán)重網(wǎng)絡(luò)相同的模型壓縮率,但是高于二值權(quán)重網(wǎng)絡(luò)的壓縮率。結(jié)果表明,對(duì)于簡單的手寫體數(shù)字識(shí)別任務(wù),文中算法實(shí)現(xiàn)了全精度深度神經(jīng)網(wǎng)絡(luò)模型的高精度小容量模型轉(zhuǎn)換。
2.3.2 基于CIFAR-10數(shù)據(jù)集準(zhǔn)確性與壓縮效率實(shí)驗(yàn)
本實(shí)驗(yàn)使用一種小型深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),也可使用其它優(yōu)秀的網(wǎng)絡(luò)結(jié)構(gòu),用于分析模型壓縮后對(duì)物體分類準(zhǔn)確率的影響,該網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。其中卷積層1和卷積層2的濾波器尺寸為5×5,步長為1,輸出為32,卷積層3的濾波器尺寸為5×5,步長為1,輸出為64,最大池化層1的濾波器尺寸為3×3,步長為2,平均池化層1和平均池化層2的濾波器尺寸為3×3,步長為2,全連接層1的維度為10,分類損失層使用Softmax Loss,并且在最大池化層1和平均池化層1之后使用一個(gè)BatchNorm層對(duì)網(wǎng)絡(luò)進(jìn)行加速。
圖5 小型深度卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
網(wǎng)絡(luò)訓(xùn)練使用的超參數(shù)如表4所示。
CIFAR-10數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表5所示。在CMC測(cè)試中,文中算法Top1準(zhǔn)確率為79.64%,相比三值權(quán)重網(wǎng)絡(luò)模型和二值權(quán)重網(wǎng)絡(luò)模型提高了0.82%和52.36%,相比全精度模型降低了1.58%,這表明在CIFAR-10數(shù)據(jù)集上二值權(quán)重網(wǎng)絡(luò)模型準(zhǔn)確率大幅度下降,而文中算法模型相比三值權(quán)重網(wǎng)絡(luò)模型具有更高的準(zhǔn)確率。
文中算法的模型壓縮率為6.88%,與三值權(quán)重網(wǎng)絡(luò)算法相同,相比二值權(quán)重網(wǎng)絡(luò)算法的模型壓縮率增加至約1.97倍。結(jié)果表明,在物體分類任務(wù)上,二值權(quán)重網(wǎng)絡(luò)模型已不適用,文中算法依然可實(shí)現(xiàn)全精度深度卷積神經(jīng)網(wǎng)絡(luò)模型的高精度小容量模型轉(zhuǎn)換,并且準(zhǔn)確率上優(yōu)于三值權(quán)重網(wǎng)絡(luò)模型。
表4 CIFAR-10數(shù)據(jù)集網(wǎng)絡(luò)訓(xùn)練超參數(shù)
表5 CIFAR-10數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
表6 CIFAR-10數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
2.3.3 基于CIFAR-100數(shù)據(jù)集準(zhǔn)確性與壓縮效率實(shí)驗(yàn)
本實(shí)驗(yàn)使用的網(wǎng)絡(luò)結(jié)構(gòu)與2.3.2節(jié)的相似,不同之處在于全連接層的輸出特征維度為100,以用于100種物體的分類。網(wǎng)絡(luò)訓(xùn)練的超參數(shù)與2.3.2節(jié)的一致。
CIFAR-100數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表6所示。在CMC測(cè)試中,文中算法Top1準(zhǔn)確率為36.19%,相比三值權(quán)重網(wǎng)絡(luò)模型和二值權(quán)重網(wǎng)絡(luò)模型提高了1.51%和27.94%,相比全精度模型降低了1.65%,模型壓縮率為6.62%,與三值權(quán)重網(wǎng)絡(luò)算法相同,相比二值權(quán)重網(wǎng)絡(luò)算法的模型壓縮率增加至約2倍。這表明在CIFAR-100數(shù)據(jù)集上,文中算法模型相比三值權(quán)重網(wǎng)絡(luò)模型壓縮率相同,但具有更高的準(zhǔn)確率。
文中基于三值權(quán)重網(wǎng)絡(luò)提出權(quán)重量化的深度神經(jīng)網(wǎng)絡(luò)模型壓縮算法,可對(duì)全精度權(quán)重進(jìn)行高效、精確的編碼壓縮。與三值權(quán)重網(wǎng)絡(luò)相比,文中算法將全精度權(quán)重量化為四種狀態(tài),既可提高編碼效率,也能提高壓縮后模型的容量。在MNIST、CIFAR-10和CIFAR-100數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,文中算法具有與三值權(quán)重網(wǎng)絡(luò)相同的模型壓縮能力,但是模型容量可得到大幅度提升。文中算法雖然可對(duì)模型進(jìn)行高效、精確的壓縮,但是無法提升特征提取速度。進(jìn)一步研究可結(jié)合輸入特征量化,減少前向傳播中的向量乘法運(yùn)算,以同時(shí)實(shí)現(xiàn)深度神經(jīng)網(wǎng)絡(luò)模型壓縮和加速。