張睿權(quán),覃 華
(廣西大學(xué) 計(jì)算機(jī)與電子信息學(xué)院,廣西 南寧 530004)
目前圖像分類[1-6]主要用深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)[7-11],其中ResNet網(wǎng)絡(luò)[12]具有網(wǎng)絡(luò)層數(shù)較深時(shí)不容易出現(xiàn)梯度消失和爆炸的優(yōu)點(diǎn),但存在訓(xùn)練收斂難和過(guò)擬合等問(wèn)題,這些不足與ResNet全連接層上的梯度訓(xùn)練算法有關(guān)。為此,出現(xiàn)了一些ResNet的改進(jìn)訓(xùn)練算法。文獻(xiàn)[13]用動(dòng)態(tài)衰減率自適應(yīng)梯度解決訓(xùn)練算法在某些應(yīng)用場(chǎng)景中泛化能力下降的問(wèn)題,文獻(xiàn)[14]使用最大化過(guò)去平方梯度更新參數(shù)解決歷史梯度對(duì)學(xué)習(xí)率的影響。文獻(xiàn)[15]采用過(guò)去梯度的固定大小窗口來(lái)縮放梯度,改進(jìn)了梯度算法的收斂性。文獻(xiàn)[16]用混合冪和多維更新策略改進(jìn)了梯度算法的收斂性。文獻(xiàn)[17]提出的AdaBound算法通過(guò)學(xué)習(xí)率的上下界限實(shí)現(xiàn)了一種新的自適應(yīng)梯度法,具有良好的訓(xùn)練收斂效果。受此上述文獻(xiàn)啟發(fā),為改善ResNet的訓(xùn)練穩(wěn)定性和收斂性,本文提出一種模糊策略的梯度下降法(fuzzy policy gradient descent,F(xiàn)PGD)用于ResNet全連接層的訓(xùn)練,核心思想是:首先把ResNet的訓(xùn)練看作一個(gè)無(wú)約束優(yōu)化問(wèn)題,推導(dǎo)出基于一階梯度的神經(jīng)元連接權(quán)重的迭代更新公式;接著設(shè)計(jì)一種模糊決策函數(shù),用來(lái)自適應(yīng)模糊調(diào)整權(quán)重更新公式的學(xué)習(xí)率。最后在經(jīng)典的圖像分類數(shù)據(jù)集CIFAR-100和CINIC-10上驗(yàn)證所提算法;與最新的AdaBound訓(xùn)練算法相比,所提算法在綜合分類指標(biāo)Kappa系數(shù)上分別提高了9.30%和9.27%,而準(zhǔn)確率分別提高了9.16%和8.14%,宏召回率提高了9.16%和8.14%,宏精確率提高了8.09%和7.89%,宏F1提高了9.26%和8.17%。
ResNet深度神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)如圖1所示,它是由一系列卷積層、殘差模塊和全連接層組成,其中Conv1、Conv2和Conv5等是由殘差模塊堆疊而成,其中殘差模塊是由卷積層串聯(lián)在一起。圖1中的上側(cè)實(shí)線快捷連接是直接使用恒等快捷連接,有著恒等映射的作用;下側(cè)虛線的快捷連接有兩種選項(xiàng):第一種是經(jīng)過(guò)1×1的卷積核下采樣,第二種是額外填充零輸入以增加維度,不會(huì)引入額外的參數(shù)。全連接層是使用訓(xùn)練算法學(xué)習(xí)連接權(quán)重,最終產(chǎn)生輸出。

圖1 ResNet深度神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
考慮一個(gè)無(wú)約束優(yōu)化問(wèn)題
minf(x)x∈Rn
(1)
其中,f是Rn→R上的連續(xù)可導(dǎo)函數(shù),本文中此函數(shù)對(duì)應(yīng)于深度神經(jīng)網(wǎng)絡(luò)的損失函數(shù),而x是神經(jīng)網(wǎng)絡(luò)全連接層的連接權(quán)重。
解式(1)問(wèn)題的一階隨機(jī)梯度迭代公式可寫為

(2)
其中,αk>0是標(biāo)量形式的學(xué)習(xí)率,k是迭代次數(shù)。f(xk) 是第k次的一階隨機(jī)梯度,xk是第k次的權(quán)重,xk+1是第k+1次的權(quán)重。傳統(tǒng)的學(xué)習(xí)率αk通常是一個(gè)常數(shù),不能根據(jù)實(shí)際迭代信息自適應(yīng)地動(dòng)態(tài)變化,從而影響了收斂速度和收斂效果,為此我們提出一種用二階梯度信息設(shè)計(jì)的學(xué)習(xí)率,表示為

(3)

根據(jù)擬牛頓法的思想,令Dk=αkI,其中I為單位陣。矩陣Dk滿足擬牛頓方程
Dksk-1=yk-1
(4)

ak=minD=αID-1sk-1-yk-1
(5)
解式(5)的極小化問(wèn)題,得
ak=sTk-1sk-1sTk-1yk-1
(6)
式(6)產(chǎn)生的學(xué)習(xí)率可能會(huì)過(guò)大或過(guò)小,導(dǎo)致算法迭代振蕩,影響收斂的穩(wěn)定性。為此,需要限制式(6)學(xué)習(xí)率的大小。本文提出了一種動(dòng)態(tài)上下邊界函數(shù)來(lái)控制式(6)的大小,方法如下。
αk的下邊界ηk,l可定義為
ηk,l=-λe-k+λ
(7)
αk的上邊界ηk,u定義為
ηk,u=(1-λ)e-k+λ
(8)
其中,λ是上下邊界的控制因子,k為當(dāng)前迭代次數(shù)。
在訓(xùn)練ResNet深度神經(jīng)網(wǎng)絡(luò)的過(guò)程中,由于圖像數(shù)據(jù)集的數(shù)量較多,所以通常會(huì)隨機(jī)選取多個(gè)圖像樣本組成一個(gè)小批量,然后用這個(gè)小批量來(lái)計(jì)算隨機(jī)梯度。小批量的隨機(jī)梯度定義如下

(9)

迭代次數(shù)k的取值范圍是從0到K。T表示整個(gè)數(shù)據(jù)集分成多少個(gè)批次,t表示1到T每個(gè)批次間隔,那么可得到如下的權(quán)重序列 {xk,t}
{x0,1,x0,2,x0,3,…x0,T,k=0x1,1,x1,2,…x1,T,k=1…}
(10)
此時(shí),使用歷史信息修正的隨機(jī)梯度寫為

(11)
其中,xk,t表示第k次中t個(gè)批次的權(quán)重,mk,t表示第k次中t個(gè)批次的梯度,mk,t+1表示第k中次t+1個(gè)批次的梯度。mk,t+1是歷史小批量梯度和當(dāng)前小批量隨機(jī)梯度加權(quán)平均。{βk}是在(0,1]范圍內(nèi)的序列,且該序列單調(diào)遞減,用于控制歷史小批量梯度對(duì)修正梯度的影響。那么,在兩次迭代epoch之間,修正前后梯度之差為
yk=mk,T-mk-1,T
(12)
其中,yk是修正后第k次中T個(gè)批次的梯度和第k-1次小批量中T個(gè)批次的梯度之差。
更新前后權(quán)重之差為
sk=xk,T-xk-1,TT
(13)
其中,sk是第k次中T個(gè)批次的權(quán)重和第k-1次中T個(gè)批次的權(quán)重之差。
由式(12)、式(13)以及式(6),可得
ak+1=sTksksTkyk
(14)
其中,ak+1是第k+1次的學(xué)習(xí)率。
由此,構(gòu)造一個(gè)模糊決策函數(shù)clip()來(lái)解決學(xué)習(xí)率的過(guò)大、過(guò)小問(wèn)題,實(shí)現(xiàn)學(xué)習(xí)率的自適應(yīng)模糊計(jì)算,表示為
ηk+1=clip(ηk,l,αk+1,ηk,u)
(15)
其中,ηk+1是clip()輸出的模糊學(xué)習(xí)率。clip()的工作原理是:如果ak+1<ηk,l, 則模糊學(xué)習(xí)率為ηk,l; 如果ak+1>ηk,u, 則模糊學(xué)習(xí)率為ηk,u; 其它情況,模糊學(xué)習(xí)率為ak+1。 由此可見(jiàn),clip()函數(shù)實(shí)現(xiàn)了一組模糊策略,它能自適應(yīng)地計(jì)算當(dāng)前迭代學(xué)習(xí)率的大小,防止學(xué)習(xí)率過(guò)大或過(guò)小。
用模糊學(xué)習(xí)率ηk+1和修正后的隨機(jī)梯度mk+1,t改寫式(2),得
xk+1,t+1=xk+1,t-ηk+1mk+1,t
(16)
式(16)就是本文所提模糊策略梯度下降法的迭代公式,可用于ResNet深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
輸入:圖像數(shù)據(jù)集Yi={Y1,Y2,Y3,…,YM}, 其中M為圖像樣本的總數(shù)目。算法最大迭代次數(shù)為K。
輸出:訓(xùn)練后的ResNet深度神經(jīng)網(wǎng)絡(luò)模型。
步驟1 算法參數(shù)初始化。設(shè)置初始學(xué)習(xí)率η、序列{βk}、上下邊界的控制因子λ。迭代次數(shù)k=0。每個(gè)批次數(shù)據(jù)集的大小|β|。數(shù)據(jù)集的批次T初始化方法為:如果M%|β| 為零,T=M/|β|, 否則T=M/|β|+1。 批次變量t=1。

步驟3 如果t=1,那么mk,1歷史小批量梯度提前設(shè)為零。用式(11)計(jì)算出修正的小批量梯度方向mk,t+1。
步驟4 如果k=1,模糊學(xué)習(xí)率直接取初值η。用式(16)更新小批量權(quán)重xk,t+1;
步驟5 如果t≤T, 迭代器t=t+1,轉(zhuǎn)步驟2繼續(xù)迭代。否則t重新設(shè)為1。
步驟6 計(jì)算出下一次迭代的模糊學(xué)習(xí)率:
(1)如果k=0,yk=mk,T, 否則用式(12)計(jì)算出在第k次和第k-1次中第T批次梯度之差yk;
(2)如果k=0,sk=xk,T, 否則用式(13)計(jì)算出在第k次和第k-1次中第T批次權(quán)重之差sk。
(3)用yk和sk結(jié)合式(14)計(jì)算出學(xué)習(xí)率ak+1。
(4)式(7)和式(8)計(jì)算出下邊界ηk,l和上邊界ηk,u。 調(diào)用式(15)計(jì)算出模糊學(xué)習(xí)率ηk+1。
(5)迭代計(jì)數(shù)k=k+1。轉(zhuǎn)步驟2繼續(xù)下一次迭代。
上述算法流程中的一些細(xì)節(jié)補(bǔ)充說(shuō)明如下:
(1)步驟1中,λ<1。
(2)步驟1中,|β|的取值范圍為[32,256],通常設(shè)為2的若干次方。
采用統(tǒng)計(jì)標(biāo)量R(K)[17]來(lái)判斷FPGD的收斂性,其定義為
R(K)=∑Kk=1f(xk)-minx∑Kk=1f(x)
(17)
若K→∞時(shí)有R(K)/K→0, 此時(shí)可判斷FPGD收斂。
本文引入文獻(xiàn)[17]的兩個(gè)假設(shè)來(lái)證明FPGD的收斂。
假設(shè)1:F?d為凸可行集。FPGD的訓(xùn)練權(quán)重xk∈F。 如果a-b∞≤D∞,a,b∈F, 那么D∞是F的邊界直徑。

由假設(shè)1和假設(shè)2可得到
R(K)≤D2∞K2(1-β0)∑di=1η-1K+D2∞K2(1-β0)∑Kk=0∑di=1βkη-1k+
(2K-1)R∞G21-β0
(18)
由式(18)可知,統(tǒng)計(jì)標(biāo)量R(K)是有上界的。那么,當(dāng)K→∞時(shí),必然有R(K)/K→0, 因此FPGD是收斂的。
CIFAR-100[18]圖像數(shù)據(jù)集包括動(dòng)物、植物、車輛、食品、家用家具和家用電器等20個(gè)大類共100個(gè)小類。每個(gè)小類有500張訓(xùn)練圖像,100張測(cè)試圖像,每張圖像是32×32像素的彩色圖像。數(shù)據(jù)集共計(jì)有50 000張訓(xùn)練圖像,10 000個(gè)測(cè)試圖像。
CINIC-10[19]數(shù)據(jù)集像包括動(dòng)物交通工具等共計(jì)10個(gè)類別,共270 000張圖像。
在PC機(jī)上實(shí)現(xiàn)算法和仿真實(shí)驗(yàn),硬件環(huán)境為:CPU Intel i5-4590 3.3GHz,8GB內(nèi)存;軟件環(huán)境為Windows 10 64位,用Python 3.6和Pytorch 1.4實(shí)現(xiàn)算法。
將FPGD與經(jīng)典的深度學(xué)習(xí)梯度算法Momentum[20]、RMSProp[21]、Adam[22]、AMSGrad[14]和AdaBound[17]進(jìn)行比較。采用ResNet-18作為深度神經(jīng)網(wǎng)絡(luò)模型,應(yīng)用各訓(xùn)練算法對(duì)其進(jìn)行訓(xùn)練。
各梯度下降算法的初始學(xué)習(xí)率統(tǒng)一設(shè)置為1e-3。FPGD的上、下邊界控制因子λ=1e-3。所有梯度算法優(yōu)化器的權(quán)重衰減參數(shù)設(shè)為5e-4。訓(xùn)練ResNet深度神經(jīng)網(wǎng)絡(luò)的批量大小為256。最大迭代次數(shù)取100次。
因數(shù)據(jù)集屬于多分類問(wèn)題,本文采用多分類指標(biāo)評(píng)估各模型的圖像分類效果,包括準(zhǔn)確率(Accuracy,Acc)、宏精確率(macro-Precision,Pmarco)、宏召回率(macro-Recall,Rmarco)、宏F1值(macro-F1-score,F(xiàn)marco)以及Kappa系數(shù)[23],它們的定義如下
Acc=NrecNall
(19)
Pmacro=1n∑ni=1Pi
(20)
Rmacro=1n∑ni=1Ri
(21)
Fmacro=2×Rmacro×PmacroRmacro+Pmacro
(22)
Kappa=p0-pe1-pe
(23)
其中,Nrec表示預(yù)測(cè)正確的樣本數(shù)量,Nall表示總樣本數(shù)量;n表示類別數(shù)。Pi表示類別i的精確率。Ri表示類別i召回率。p0是每一類別正確分類的樣本數(shù)量之和除以總樣本數(shù),也就是總體分類精度;pe是所有類別分別對(duì)應(yīng)的“實(shí)際與預(yù)測(cè)數(shù)量的乘積”的總和除以“測(cè)試集總數(shù)的平方”。
4.3.1 CIFAR-100數(shù)據(jù)集上的結(jié)果
從表1中可看出,F(xiàn)PGD訓(xùn)練的ResNet-18,在CIFAR-100數(shù)據(jù)集上的5個(gè)評(píng)估指標(biāo)值均優(yōu)于相比較的其它梯度算法;其中綜合指標(biāo)Kappa系數(shù)值為0.7709,高于其它相比較算法。表1中Times是算法的計(jì)算時(shí)間,其中的h表示小時(shí),m表示分,s表示秒。由表1可見(jiàn),F(xiàn)PGD的耗時(shí)最少,但與其它算法差別不顯著。用表1數(shù)據(jù)可計(jì)算出FPGD相對(duì)其它梯度下降算法在各指標(biāo)上的變化百分率,結(jié)果如表2所示。在表2中,與最新的AdaBound相比,F(xiàn)PGD在Kappa指標(biāo)上提高了9.30%,而準(zhǔn)確率提高了9.16%,宏召回率提高了9.16%,宏精確率提高了8.09%,宏F1提高了9.26%。在綜合分類性能指標(biāo)Kappa系數(shù)上,F(xiàn)PGD比Momentum、RMSProp、Adam和AMSGrad分別提高了19.85%、14.70%、14.19%和12.36%,由此可見(jiàn),本文算法對(duì)提高ResNet-18的分類效果是有效的。

表1 在CIFAR-100上各算法的計(jì)算結(jié)果

表2 在CIFAR-100上FPGD較其它算法指標(biāo)值提高的百分率/%
圖2是各算法在迭代中損失函數(shù)值的變化趨勢(shì)。由圖2可以看出,F(xiàn)PGD只需要30次左右的迭代,損失函數(shù)值就開(kāi)始趨于臨界點(diǎn)并保持平直態(tài)勢(shì);相對(duì)之下,其它算法的損失函數(shù)值降低速度較慢,并且波動(dòng)性大,例如AdBound和Momentum雖然接近FPGD的損失值,但兩者需要迭代50次和90次左右,收斂速度顯然慢于FPGD。AMSGrad、Adam和RMSPro在100次迭代中的最終損失函數(shù)值均大于FPGD。圖2說(shuō)明FPGP較其它算法具有更好的收斂性速度,從而驗(yàn)證了本文的模糊步長(zhǎng)策略是有效的。

圖2 CIFAR-100上各算法訓(xùn)練損失函數(shù)的變化
圖3是各算法訓(xùn)練準(zhǔn)確率變化趨勢(shì)。由圖3可看出,F(xiàn)PGD的訓(xùn)練準(zhǔn)確率與AdaBound和Momentum相近,但收斂速度明顯快于AdaBound和Momentum。AMSGrad、Adam和RMSProp雖然收斂速度與FPGD相近,但訓(xùn)練準(zhǔn)確率都低于FPGD,這說(shuō)明FPGD的尋優(yōu)能力相對(duì)較強(qiáng)。

圖3 CIFAR-100上各算法訓(xùn)練準(zhǔn)確率的變化
圖4是各算法的測(cè)試準(zhǔn)確率。由圖4可看出,F(xiàn)PGD的測(cè)試準(zhǔn)確率優(yōu)于其它算法。雖然FPGD的訓(xùn)練準(zhǔn)確率與AdaBound和Momentum的最終訓(xùn)練準(zhǔn)確率相近,但測(cè)試準(zhǔn)確率高于AdaBound和Momentum,說(shuō)明FPGD訓(xùn)練的ResNet-18模型的具有良好的預(yù)測(cè)能力,也驗(yàn)證了FPGD所獲的連接層權(quán)重能更好地?cái)M合數(shù)據(jù)集的特征,從而產(chǎn)生更好的測(cè)試準(zhǔn)確率。

圖4 CIFAR-100上各算法測(cè)試準(zhǔn)確率的變化
4.3.2 CINIC-10數(shù)據(jù)集上的結(jié)果
表3是各算法訓(xùn)練的ResNet-18在CINIC-10數(shù)據(jù)集的指標(biāo)值。從表3可看出,F(xiàn)PGD訓(xùn)練的ResNet-18,在CINIC-10數(shù)據(jù)集上的5個(gè)評(píng)估指標(biāo)值均優(yōu)于其它算法訓(xùn)練的ResNet-18模型。表3中Times是計(jì)算時(shí)間,其中h表示小時(shí),m表示分,s表示秒。由表3可見(jiàn),F(xiàn)PGD的耗時(shí)最少,但與其它算法差別也不顯著。用表3數(shù)據(jù)可計(jì)算出FPGD相對(duì)其它梯度下降算法在各指標(biāo)上的變化百分率,結(jié)果如表4所示。在表4中,與最新的AdaBound相比,F(xiàn)PGD在Kappa指標(biāo)上提高了9.27%,而準(zhǔn)確率提高了8.14%,宏召回率提高了8.14%,宏精確率提高了7.89%,宏F1提高了8.17%。在綜合指標(biāo)Kappa系數(shù)上,F(xiàn)PGD比Momentum、RMSProp、Adam和AMSGrad分別提高了12.62%、8.14%、10.01%和9.90%,由此可見(jiàn),本文算法對(duì)提高ResNet-18的分類效果是有效的。

表3 在CINIC-10上各算法的計(jì)算結(jié)果

表4 CINIC-10上FPGD較其它算法指標(biāo)值提高的百分率/%
圖5是各算法在迭代中損失函數(shù)值的變化趨勢(shì)。由圖5可以看出,F(xiàn)PGD只需要40次左右的迭代,損失函數(shù)值就開(kāi)始趨于臨界點(diǎn)并保持平直態(tài)勢(shì);相對(duì)之下,其它算法的損失函數(shù)值降低速度較慢,并且波動(dòng)性大,例如AdBound、RMSProp和Momentum雖然接近FPGD的損失值,但三者都迭代了60次左右才達(dá)到FPGD相同的效果。AMSGrad和Adam在100次迭代中的最終損失函數(shù)值均大于FPGD。圖5說(shuō)明FPGP較其它算法具有更好的收斂性速度和收斂穩(wěn)定性,同時(shí)也驗(yàn)證了本文的模糊步長(zhǎng)策略在有效的、可行的。

圖5 CINIC-10上各算法訓(xùn)練損失函數(shù)的變化
圖6是各算法訓(xùn)練準(zhǔn)確率變化趨勢(shì)圖。由圖6可看出,F(xiàn)PGD的訓(xùn)練準(zhǔn)確率與AdaBound、Momentum和RMSProp相近,但收斂速度明顯快于AdaBound、Momentum和RMSProp。AMSGrad和Adam雖然收斂速度與FPGD相近,但訓(xùn)練準(zhǔn)確率都低于FPGD,這說(shuō)明FPGD的尋優(yōu)能力相對(duì)較強(qiáng)。

圖6 CINIC-10上各算法訓(xùn)練準(zhǔn)確率的變化
圖7是各算法的測(cè)試準(zhǔn)確率。由圖7可看出,F(xiàn)PGD的測(cè)試準(zhǔn)確率優(yōu)于其它算法。雖然FPGD的訓(xùn)練準(zhǔn)確率與AdaBound、Momentum和RMSProp的最終訓(xùn)練準(zhǔn)確率相近,但其測(cè)試準(zhǔn)確率高于AdaBound、Momentum和RMSProp,說(shuō)明FPGD訓(xùn)練的ResNet-18具有良好的預(yù)測(cè)能力,也驗(yàn)證了FPGD所獲的連接層權(quán)重能更好地?cái)M合數(shù)據(jù)集的特征,從而產(chǎn)生更好的測(cè)試準(zhǔn)確率。

圖7 CINIC-10上各算法測(cè)試準(zhǔn)確率的變化
綜合上述實(shí)驗(yàn)結(jié)果可看出,本文提出的模糊策略學(xué)習(xí)率梯度下降算法較相比較的其它梯度下降法具有更好的收斂性和穩(wěn)定性,對(duì)全連接層權(quán)重的尋優(yōu)能力更強(qiáng),訓(xùn)練出的ResNet深度神經(jīng)網(wǎng)絡(luò)模型分類效果更好;特別是在綜合性指標(biāo)Kappa系數(shù)上,F(xiàn)PGD在兩個(gè)數(shù)據(jù)集上的平均值較最新的AdaBound提高了9.28%,ResNet模型的改進(jìn)效果是顯著的。因此,本文所提的模糊策略學(xué)習(xí)率是有效的、可行的。
本文提出一種ResNet的模糊策略學(xué)習(xí)率梯度下降訓(xùn)練算法,具有良好收斂性,通過(guò)歷史梯度和修正梯度計(jì)算出學(xué)習(xí)率,通過(guò)模糊策略限制學(xué)習(xí)率的大小,提高了訓(xùn)練算法的尋優(yōu)能力和迭代穩(wěn)定性。在CINC-10和CIFAR-100兩個(gè)大型圖像數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果顯示,F(xiàn)PGP訓(xùn)練的ResNet各指標(biāo)均優(yōu)于相比較算法,因此,所提的模糊策略梯度下降訓(xùn)練算法是可行的和有效的。此外,雖然我們只在ResNet深度學(xué)習(xí)模型上驗(yàn)證FPGP的有效性,但FPGP設(shè)計(jì)上是通用的,對(duì)其它深度模型的全連接訓(xùn)練也同樣適用,有較好的普適性。