袁 煒,胡 飛
(天津大學(xué) 數(shù)學(xué)學(xué)院,天津 300350)
當(dāng)前,深度神經(jīng)網(wǎng)絡(luò)模型在視覺[1]、文本[2]和語音[3]等任務(wù)上都有著非常好的表現(xiàn).但是隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,模型的訓(xùn)練變得越來越困難.因此,研究人員開始關(guān)注優(yōu)化方法.隨機(jī)梯度下降法(SGD)是求解優(yōu)化問題的一種簡單有效的方法,SGD 被廣泛應(yīng)用于實(shí)際問題[4].該方法根據(jù)小批量(mini-batch)樣本的可微損失函數(shù)的負(fù)梯度方向?qū)δP蛥?shù)進(jìn)行更新,SGD具有訓(xùn)練速度快、精度高的優(yōu)點(diǎn).但由于其參數(shù)是每次按照一個小批量樣本更新的,因此如果每個小批量樣本的特性差異較大,更新方向可能會發(fā)生較大的變化,這導(dǎo)致了它不能快速收斂到最優(yōu)解的問題.因此,SGD有很多變種,一般可以分為兩類.第一類是學(xué)習(xí)率非自適應(yīng)性方法,使用梯度的一階矩估計(jì)——SGDM[5],結(jié)合每個小批量樣本的梯度求滑動平均值來更新參數(shù),極大地解決了SGD 算法收斂速度慢的問題,這個方法目前應(yīng)用非常廣泛,本文就針對這個方法進(jìn)行改進(jìn).第二類是學(xué)習(xí)率自適應(yīng)性方法,利用梯度的二階矩估計(jì)實(shí)現(xiàn)學(xué)習(xí)率的自適應(yīng)調(diào)整,包括AdaGrad[6],RMSProp[7],AdaDelta[8],Adam[9].其中Adam是深度學(xué)習(xí)中最常見的優(yōu)化算法,雖然Adam 在訓(xùn)練集上的收斂速度相對較快,但在訓(xùn)練集上的收斂精度往往不如非自適應(yīng)性優(yōu)化方法SGDM,且泛化能力不如SGDM.AmsGrad[10]是對Adam的一個重要改進(jìn),但是最近的研究表明,它并沒有改變自適應(yīng)優(yōu)化方法的缺點(diǎn),實(shí)際效果也沒有太大改善.RAdam[11]是Adam的一個新變體,可以自適應(yīng)的糾正自適應(yīng)學(xué)習(xí)率的變化.
目前很多研究都集中在第二類學(xué)習(xí)率自適應(yīng)性方法上,卻忽略了最基本的問題.無論自適應(yīng)還是非自適應(yīng)方法都用了指數(shù)滑動平均法,這些方法都試圖用指數(shù)滑動平均得到近似樣本總體的梯度,然而這種方法是有偏且具有滯后性的.針對這一問題我們提出了RSGDM算法,我們的方法計(jì)算梯度的差分,即計(jì)算當(dāng)前迭代梯度與上一次迭代梯度的差,相當(dāng)于梯度的變化量,我們在每次迭代時使用指數(shù)滑動平均估計(jì)當(dāng)前梯度的變化量,然后用這一項(xiàng)與當(dāng)前梯度的估計(jì)值進(jìn)行加權(quán)求和,這樣的做法可以降低偏差且緩解滯后性.
算法1.RSGDM 算法:所有向量計(jì)算都是對應(yīng)元素計(jì)算輸入:學(xué)習(xí)率,指數(shù)衰減率,隨機(jī)目標(biāo)函數(shù)α β f(θ)隨機(jī)初始化參數(shù)向量,初始化參數(shù)向量,初始化時間步長θt θ0m0=0,z0=0,?g1=0 t=0 While 不收斂 do t←t+1計(jì)算t 時間步長上隨機(jī)目標(biāo)函數(shù)的梯度:gt←?θ ft(θt?1)計(jì)算差分:?gt=gt?gt?1更新梯度和差分的一階矩估計(jì):mt←β?mt?1+(1?β)?gt zt←β?zt?1+(1?β)??gt用差分的一階矩估計(jì)修正對梯度的估計(jì):nt←mt+β?zt更新參數(shù):θt←θt?1?α?nt end Wimages/BZ_225_290_2831_291_2833.pnghile θt輸出:結(jié)果參數(shù)
算法1 展示了RSGDM 算法的整體流程.設(shè)f(θ)為關(guān)于θ 可微的目標(biāo)函數(shù),我們希望最小化這個目標(biāo)函數(shù)關(guān)于參數(shù) θ的期望值,即最小化E[f(θ)].我們使用f1(θ),f2(θ),···,fT(θ)來表示時間步長1,2,···,T對應(yīng)的隨機(jī)目標(biāo)函數(shù).這個隨機(jī)性來自于每個小批量的隨機(jī)采樣(minibatch)或者函數(shù)固有的噪聲.梯度為gt=?θft(θ),即在時間步長t時,目標(biāo)函數(shù)ft關(guān)于參數(shù)θ的偏導(dǎo)向量.使用?gt=gt?gt?1表示時間步長t和時間步長t?1對應(yīng)的梯度差,即本文提到的差分.不同于SGDM 算法只對gt做指數(shù)滑動平均,RSGDM 算法對gt和?gt都做指數(shù)滑動平均,并用后者的滑動平均值修正前者,下面列出SGDM算法和RSGDM 算法的更新公式.
1)SGDM 算法:
2)RSGDM 算法:
可以看出,RSGDM 算法比SGDM 算法多出式(2)和式(3),本文第2 節(jié)將證明SGDM中的式(1)mt對總體gt的估計(jì)是有偏的,我們就是使用式(2)和式(3)來進(jìn)行偏差修正的.RSGDM 算法相比于SGDM 算法沒有增加多余的超參,不會增加我們訓(xùn)練模型調(diào)參的負(fù)擔(dān).
首先我們分析用指數(shù)滑動平均估計(jì)總體梯度的偏差,首先由SGDM 算法中的式(1)可以得到:
對式(4)兩邊取期望可得:
可以發(fā)現(xiàn)E(mt)≠E(gt),其中:
當(dāng)?shù)螖?shù)較多時,1 ?βt可以忽略不計(jì),最大的偏差就來自于式(6).如果gt是一個平穩(wěn)序列,即E(gt)=C(C是常數(shù))時,有ξ=0,此時mt是gt的一個無偏估計(jì).但實(shí)際情況下,顯然這是不可能的,所以mt是gt的有偏估計(jì),且偏差主要來自于ξ.并且這個偏差會導(dǎo)致滯后性,比如梯度如果一直處在增大的狀態(tài),由于前面歷史時刻梯度值較小也會導(dǎo)致估計(jì)值mt偏小一些,或者梯度如果一直增大,但從某個時刻開始減小,由于歷史梯度的影響梯度的估計(jì)值mt可能還沒有反應(yīng)過來,這就是本文所說的滯后性帶來的影響.針對這種情況我們提出了RSGDM 算法,使用梯度的差分(變化量)估計(jì)來修正梯度的估計(jì)值mt.直觀上可以這樣理解,如果梯度越來越大且差分的估計(jì)也是大于0的,那么這個修正項(xiàng)起到加速收斂的作用,如果梯度越來越大,在某一時刻要開始減小,那這個修正項(xiàng)就會起到修正梯度下降方向的作用.下面我們從公式上解釋RSGDM 算法的優(yōu)勢:
首先由式(2),我們可以得到:
對RSGDM 算法中的式(3)兩邊取期望,我們可以得到:
nt是修正后的對gt的估計(jì),我們可以對比式(5)和式(8),我們設(shè)不難發(fā)現(xiàn) ?是RSGDM 算法的主要偏差來源,我們展開 ?,得到:
我們對比式(6)SGDM 算法的偏差項(xiàng) ξ和式(9)RSGDM 算法的偏差項(xiàng) ?,可以看出ξ受歷史梯度g1,g2,···,gt?1影響,而?受歷史梯度g2,g3,···,gt?1影響.由于t很大且 β 小于0,βt?1?[g1?E(gt)] 接近于0 可以忽略,那么可以得到?=β?ξ.可以看出RSGDM 算法偏差項(xiàng)?少了歷史梯度g1的影響,且由于 β 小于0,所以| ?|≤|ξ|.綜上,我們可以得出RSGDM 算法對比SGDM 算法有更小的偏差,且受歷史梯度影響要小(緩解了滯后性).
本節(jié)我們通過實(shí)驗(yàn)證明我們的RSGDM 算法比SGDM 算法更有優(yōu)勢.我們選擇圖像分類任務(wù)來驗(yàn)證算法的優(yōu)越性,實(shí)驗(yàn)使用了CIFAR-10和CIFAR-100數(shù)據(jù)集[12].CIFAR-10 數(shù)據(jù)集和CIFAR-100 數(shù)據(jù)集均由32×32 分辨率的RGB 圖像組成,其中訓(xùn)練集均是50000 張圖片,測試集10000 張圖片.我們在CIFAR-10 數(shù)據(jù)集上進(jìn)行10 種類別的分類,在CIFAR-100 數(shù)據(jù)集上進(jìn)行100 種類別的分類.我們分別使用ResNet18模型和ResNet50[13]模型在CIFAR-10和CIFAR-100數(shù)據(jù)集上進(jìn)行圖像分類任務(wù),每個任務(wù)使用SGDM 算法和我們的RSGDM 算法進(jìn)行比較,評價(jià)的指標(biāo)為分類的準(zhǔn)確率.我們使用的深度學(xué)習(xí)框架是PyTorch,訓(xùn)練的硬件環(huán)境為單卡NVIDIA RTX 2080Ti GPU.實(shí)驗(yàn)中的批量大小(batch-size)設(shè)置為128,SGDM 算法和RSGDM 算法的兩個超參數(shù)設(shè)置一樣,其中動量 β=0.9,初始學(xué)習(xí)率 α=0.01,訓(xùn)練時我們使用了權(quán)重衰減的方法來防止過擬合,衰減參數(shù)設(shè)置為5e–4,學(xué)習(xí)率每50輪(epoch)減少一半.
表1和表2分別給出了ResNet18和ResNet50 使用不同的優(yōu)化器在CIFAR-10和CIFAR-100 數(shù)據(jù)集上圖像分類的準(zhǔn)確率.我們可以看到在CIFAR-10 數(shù)據(jù)集上,SGDM和RSGDM 訓(xùn)練精度都達(dá)到了100%,測試精度我們的RSGDM 比SGDM 高了0.14%.在CIFAR-100 數(shù)據(jù)集上,SGDM和RSGDM 訓(xùn)練精度都是99.98%,在測試精度上RSGDM 比SGDM 高了0.57%.
表1 ResNet18 在CIFAR-10 上分類準(zhǔn)確率(%)
表2 ResNet50 在CIFAR-100 上分類準(zhǔn)確率(%)
圖1–圖4給出了ResNet18 在CIFAR-10 上使用SGDM 算法和RSGDM 算法的實(shí)驗(yàn)結(jié)果,包括訓(xùn)練準(zhǔn)確率、訓(xùn)練損失、測試準(zhǔn)確率、測試損失.由于我們實(shí)驗(yàn)設(shè)置每50個epoch 學(xué)習(xí)率減半,很明顯可以看出4 張圖在epoch50、100、150 均有一些波動.總體上看在訓(xùn)練準(zhǔn)確率和訓(xùn)練損失上,兩種方法無論收斂速度和收斂精度都大體相同,在收斂精度上訓(xùn)練后期我們的RSGDM 算法更具優(yōu)勢.
圖1 ResNet18 在CIFAR-10 上的訓(xùn)練準(zhǔn)確率
圖2 ResNet18 在CIFAR-10 上的訓(xùn)練損失
圖3 ResNet18 在CIFAR-10 上的測試準(zhǔn)確率
圖4 ResNet18 在CIFAR-10 上的測試損失
圖5–圖8給出了ResNet50 在CIFAR-100 上使用RSGDM 算法和SGDM 算法的實(shí)驗(yàn)結(jié)果.可以得出與CIFAR-10 類似的結(jié)果,在訓(xùn)練準(zhǔn)確率和訓(xùn)練損失上二者的幾乎相同,但是在收斂精度上,RSGDM 算法的表現(xiàn)在這個數(shù)據(jù)集上要領(lǐng)先SGDM 算法很多,可以看測試準(zhǔn)確率那張圖,從100個epoch 之后,我們的RSGDM 方法始終準(zhǔn)確率高于SGDM,并且最終準(zhǔn)確率比SGDM 高了0.57%.這進(jìn)一步說明我們的方法是有效的.
圖5 ResNet50 在CIFAR-100 上的訓(xùn)練準(zhǔn)確率
圖6 ResNet50 在CIFAR-100 上的訓(xùn)練損失
圖7 ResNet50 在CIFAR-100 上的測試準(zhǔn)確率
圖8 ResNet50 在CIFAR-100 上的測試損失
隨著深度學(xué)習(xí)模型的不斷復(fù)雜化,訓(xùn)練一個精度高的模型越來越不容易,一個好的優(yōu)化器具有非常重要的作用.本文分析了傳統(tǒng)方法SGDM 算法使用指數(shù)滑動平均估計(jì)總體梯度帶來的偏差與滯后性,并理論上證明了這個偏差與滯后性存在.我們提出了基于差分修正的RSGDM 算法,該算法對梯度的差分進(jìn)行估計(jì)并使用這個估計(jì)項(xiàng)修正指數(shù)滑動平均對梯度的估計(jì),我們從理論上說明了算法的可行性,并且在CIFAR-10和CIFAR-100 兩個數(shù)據(jù)集上進(jìn)行圖像分類任務(wù)的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果也進(jìn)一步說明了我們的RSGDM 算法的優(yōu)勢.值得一提的是,我們的RSGDM 算法沒有引入更多的需要調(diào)試的參數(shù),在不加重深度學(xué)習(xí)研究員調(diào)試超參負(fù)擔(dān)的情況下,提升了收斂精度.本文開頭介紹了當(dāng)前這個領(lǐng)域的其他方法,包括現(xiàn)在最常用的學(xué)習(xí)率自適應(yīng)性算法Adam 等,未來我們會使用現(xiàn)在的改進(jìn)思路去提出新的學(xué)習(xí)率自適應(yīng)性算法,提出更加準(zhǔn)確高效的算法.