文晨銳,楊歆豪,張嘉慧,張 珂
(蘇州大學機電工程學院,江蘇 蘇州 215006)
隨著深度學習的發(fā)展,圖像識別等各類任務(wù)已由傳統(tǒng)的手工提取特征轉(zhuǎn)向神經(jīng)網(wǎng)絡(luò)自動提取特征,同時隨著神經(jīng)網(wǎng)絡(luò)架構(gòu)逐漸變深,其參數(shù)量也越來越大,參數(shù)的更新問題是實現(xiàn)網(wǎng)絡(luò)進行圖像識別等任務(wù)的基本問題[1-4]。神經(jīng)網(wǎng)絡(luò)訓練的關(guān)鍵在于用優(yōu)化器進行參數(shù)更新,根據(jù)調(diào)整學習速率策略的不同,將優(yōu)化器分為兩類:①手動調(diào)整學習速率優(yōu)化器,如隨機梯度下降法(Stochastic Gradient Descent,SGD)、帶有動量的SGD算法(Stochastic Gradient Descent with Momentum,SM)等[5-7]。②自動學習速率優(yōu)化器,如Adagrad(Adaptive gradient algorithm)、RMSProp(Root Mean Square Prop)、Adam等[8,9]。
盡管自動學習速率優(yōu)化器在許多深度學習任務(wù)中取得了成功,但是有研究[10]表明,手動調(diào)整學習速率的優(yōu)化器能夠以相同甚至更快的速度獲得更好的結(jié)果。目前深度模型的研究工作,由于自動學習速率優(yōu)化器的泛化效果較差,通常采用基于動量的方法進行訓練。
深度模型中運用廣泛的優(yōu)化器大多基于梯度的優(yōu)化方法。SGD算法的前身是梯度下降法,該方法簡單易理解,但它受到大數(shù)據(jù)集冗余計算的限制。SGD算法通過對整個數(shù)據(jù)集的隨機子集進行采樣,解決了梯度下降法因數(shù)據(jù)集過大而訓練過慢的問題。然而SGD算法因隨機梯度導致下降速度較慢,且易在局部最優(yōu)點附近振蕩。SM算法在原有的SGD算法的基礎(chǔ)上加入動量項,即將先前累積的梯度方向作為當前下降方向的重要參考,加快了梯度下降,但SGD算法存在的局部最優(yōu)點振蕩問題并沒有在此得到解決。當出現(xiàn)局部最優(yōu)點振蕩,訓練過程將花費更多的時間成本和計算成本,同時會阻礙SM算法收斂,因此,緩解該問題能夠節(jié)約資源以及實現(xiàn)更好的收斂。
動量項的存在使得過去累積梯度時刻對當前梯度作用,正是如此,當出現(xiàn)在局部最優(yōu)點時,過去累積梯度促進當前梯度繼續(xù)向著原始方向前進,從而產(chǎn)生局部最優(yōu)點振蕩。本文提出了一種用于深度網(wǎng)絡(luò)訓練的優(yōu)化算法——SSM(Separated SM)算法。通過分離動量項,防止當前梯度受過去累積梯度的影響,從而緩解局部最優(yōu)點振蕩問題,這是其它優(yōu)化算法中不曾考慮的方面。本文的主要工作如下:①提出一種用曲率半徑分離動量項的一階動量算法。②采用不同網(wǎng)絡(luò)模型以及利用不同的數(shù)據(jù)集進行訓練測試,驗證算法的可行性與準確性。
SM算法[6]通過積累過去梯度的指數(shù)衰減移動平均值,調(diào)節(jié)梯度方向,朝著一致的方向移動,其擬合速度快。更新規(guī)則如下所示
vt+1=αvt-r?Lt
θt+1=θt+vt+1
(1)
其中vt是指歷史梯度積累,α∈(0,1)是衰減移動平均值。由Wangpeng An的研究[10]所知,?Lt表示的梯度,可將其理解為誤差et,因此將上式展開后可得到
(2)
式中,α是為了解決在進行小批量訓練時隨機梯度的問題,減少干擾。
將該算法運用到一個正定二次目標q(x)=xTAx/2+bTx中進行定量分析,A=UTDU,用y=Ux重新參數(shù)化q(x)可得
p(y)≡q(x)=yTDy/2+(Ub)Ty
(3)
式中[p]i(t)=λit2/2+cit,c=Ub,λi>0為A矩陣的特征值。用SMz(α,p,y,v)表示參數(shù)向量,z∈{x,v},可得:
SMz(α,p,y,v)=αv-r?p(y)
(4)
從式(4)可以看出SM算法可同時作用n個一維參數(shù)向量,動量存在于每項單維參數(shù)問題中,作用于參數(shù)更新過程。
SM算法的動量項使得當前梯度受過去累積梯度的影響,實際上從研究中可以得出,SM算法在任何情況下都使用過去累積梯度來影響當前梯度,這會導致當前梯度方向產(chǎn)生偏差。尤其是當梯度在局部最優(yōu)點附近時,過去累積梯度會直接影響當前梯度向前探尋,由此,該算法出現(xiàn)在局部最優(yōu)點附近振蕩。
此外,Ilya Sutskever的研究[12]表明,在一個二維橢圓二次目標中,SM算法所采取的優(yōu)化路徑沿高曲率垂直方向表現(xiàn)出較大的振蕩。本文嘗試用SM算法找尋Rosenbrock函數(shù)[13]的最小值,初始點設(shè)置為(1,0),20次迭代結(jié)果如圖1所示。由圖1(b)圖可以看出,SM算法在到達最小值后仍有明顯的軌跡上升,由左側(cè)的等高線圖可以看出,迭代軌跡明顯遠離最小值。因此證明動量項的存在有時阻礙了擬合過程。
圖1 SM算法的迭代路徑圖
SM算法引入的動量項考慮了過去和現(xiàn)在的梯度,依此更新網(wǎng)絡(luò)參數(shù)。而當過去累積梯度超過當前梯度太多,則無法修正更新方向,從而出現(xiàn)振蕩現(xiàn)象。因此,需要在適當?shù)臅r機減弱過去累計梯度的影響,本文借助曲率適當消除動量項。
曲率能夠表明參數(shù)在某一時刻的變化程度,曲率半徑能夠描述曲率的變化,進而能夠描述參數(shù)值的變化情況。不同時刻下的參數(shù)點的曲率各不相同[14]。常用的曲率的數(shù)學公式為
(5)
當曲率半徑小于閾值時,去掉動量項,以免累積梯度影響當前更新方向;當曲率半徑大于閾值時,保留動量項,加速梯度下降。為了實現(xiàn)對動量項的限制,設(shè)置了一個動量開關(guān)項,如式(6)所示
η(ρt,λ)=ρt1{ρt>λ}
(6)
η(ρt,λ)是動量開關(guān)項,ρt為當前時刻的曲率半徑,λ為曲率半徑閾值。
(7)
參數(shù)更新規(guī)則如式(7)所示,式中的α指的是動量項系數(shù),設(shè)為0.999,?Lt是t時刻的梯度。
由于該算法借助曲率半徑限制動量項,因此需要選擇曲率半徑閾值λ。使用Resnet模型對CIFAR10數(shù)據(jù)集進行圖像識別,優(yōu)化階段使用本文的算法,通過對曲率數(shù)據(jù)的觀測,將曲率半徑范圍限制在[10,70]進行實驗,實驗結(jié)果如下表1所示。
表1 不同曲率半徑下驗證集的準確率
前兩次迭代的準確率在閾值為60、70時最高,從第三次迭代到第七次迭代,λ=20時,準確率呈現(xiàn)平穩(wěn)小波動上升,第八次到第十次迭代,λ=30時,隨著迭代次數(shù)的增加,準確率逐漸升高,第十次迭代準確率可達79.97%。整體數(shù)據(jù)來看,曲率半徑閾值為30時,準確率呈現(xiàn)出無大幅振蕩的上升趨勢。因此,后續(xù)的迭代閾值設(shè)為30。初始化閾值設(shè)為60,閾值設(shè)定具體見式(8),第四章實驗部分表明,在不同的數(shù)據(jù)集以及不同的深度模型下,實驗效果較好。
(8)
將本文算法運用到正定二次目標q(x),用SSMz(α,p,y,v)表示參數(shù)向量,可得
SSMz(α,p,y,v)=αηv-r?p(y)
(9)
在高曲率特征方向,曲率半徑較小,ηi為0時,即表示對于第i個參數(shù)變化到高曲率部分,在高曲率特征方向消除動量項,可以防止振蕩。
同樣,用本文算法找尋Rosenbrock函數(shù)[13]的最小值,初始點設(shè)置相同,20次迭代結(jié)果如圖2所示。由圖2(b)可以看出,SSM算法在到達最小值后軌跡同樣出現(xiàn)上升趨勢,但上升趨勢不大。由左側(cè)的等高線圖可以看出,迭代軌跡集中在最小值附近。對比圖1圖2,SSM算法能夠緩解振蕩問題。
為了驗證SSM算法的有效性,本文分別在三個公開數(shù)據(jù)集MNIST、CIFAR10和CIFAR100上進行實驗[16,17]。MNIST為數(shù)字手寫體數(shù)據(jù)集,MNIST是數(shù)據(jù)集NIST的子集,包含60000個訓練數(shù)據(jù)和10000個測試數(shù)據(jù),圖像是固定為28×28大小的灰度圖像。cifar-10數(shù)據(jù)集共有60000張RGB圖像,圖像大小為32×32,圖像標簽分為10個類,每類6000張圖像。在此數(shù)據(jù)集上,分別在Resnet模型和Densenet模型上進行實驗[18,19],在兩個模型上分別對SM算法和SSM算法進行對比實驗。
此外,本文算法與SM算法在CIFAR100的數(shù)據(jù)集上進行對比,測試不同數(shù)據(jù)集下的算法的準確性。CIFAR100數(shù)據(jù)集包含100小類,每小類包含600張圖像,分別是500張訓練圖像和100張測試圖像。100小類被分組為20個大類,這是比CIFAR10更精細分類的數(shù)據(jù)集。實驗所用的計算機配置為:Intel Core i5-8300H CPU,8GB RAM,GPU為GeForce GTX 1050Ti。
為了對比本文算法與SM算法的性能,本文首先用MNIST數(shù)據(jù)集訓練LeNet,20次迭代的訓練批大小為64,學習率設(shè)為0.1。經(jīng)實驗所得實驗結(jié)果如圖3所示。
圖3 MNIST數(shù)據(jù)集對比實驗結(jié)果
SM算法早期準確率在正常范圍內(nèi),由圖3(a)可知,在第六次迭代時,測試集準確率尚在94.87%,在第七次迭代時極速衰減至10.28%,圖3(b)中損失也相應(yīng)地極速增大。該現(xiàn)象表明前六次累積梯度影響了第七次迭代的下降方向,使其偏離尋優(yōu)軌跡。
反觀本文算法,前期準確率就高于SM算法2%,整體曲線保持波動不大的水平狀態(tài),準確率穩(wěn)定在98%上下,由此表明,本文算法相較于SM算法并未因?qū)W習步長大而大量累積過去梯度,該實驗結(jié)果證明了本文算法的優(yōu)良性能。
本文采用Resnet模型[18]對SM算法和本文的算法進行對比驗證。實驗初始化學習率為0.1,迭代次數(shù)為100時,降至0.01,迭代次數(shù)為200時,降至0.0001。實驗結(jié)果如圖4所示。
圖4 Resnet模型下不同算法的對比實驗結(jié)果
從圖4(a)中可以看出,本文的SSM算法訓練集的準確率整體高于SM算法。學習率為0.1的100次迭代過程中,本文算法準確率高出SM算法準確率的2%,訓練至220次時最終準確率持平于99.8%左右。測試集的準確率如圖4(b)所示,學習率為0.1的100次迭代過程中,本文算法的準確率普遍高于SM算法,平均高出2%,且準確率曲線波動幅度較小。前100次迭代可以看出目標函數(shù)已到達最優(yōu)點附近,當學習率降至0.01時,參數(shù)更新的步伐變小,準確率有了顯著提升。從圖中可以看出,第100次迭代到第200次迭代過程中,SM算法出現(xiàn)了明顯的局部最優(yōu)點振蕩問題,而本文的算法明顯改善了該問題,使得準確率保持在92.5%左右。
Densenet通過通道上的連接實現(xiàn)特征重復利用,所需的參數(shù)和計算成本相較于Resnet更少[19]。本文為驗證不同模型下算法的有效性,在CIFAR10數(shù)據(jù)集上使用Densenet模型進行訓練和驗證,初始化學習率為0.1,Densenet的深度設(shè)為19,設(shè)定迭代次數(shù)為150,在迭代次數(shù)為100時,學習率降為0.01,實驗結(jié)果如圖5所示。
圖5 Densenet模型下不同算法的對比實驗
訓練集的準確率曲線由圖5(a)展現(xiàn),本文的SSM算法150次迭代后最終的準確率為90.63%,而SM算法的訓練集準確率最高為88.12%。測試集的準確率如圖5(b)所示,由前100次迭代過程可以看出,由于學習率較大,準確率曲線振蕩明顯,本文算法所呈現(xiàn)的準確率普遍高于SM算法,但振蕩程度有所改善。當學習率降至0.01時,本文的SSM算法的測試集準確率基本穩(wěn)定在87.17%,而SM算法仍振蕩明顯,平均準確率為84.8%。實驗結(jié)果表明用不同的網(wǎng)絡(luò)模型訓練能達到相同的改善效果,局部最優(yōu)點的振蕩問題均得以改善。
本文在CIFAR100數(shù)據(jù)集進行SM算法與SSM算法的對比實驗。運用深度為22的Resnet模型對該數(shù)據(jù)集進行訓練和測試,初始學習率為0.1,迭代100次時降至0.01,實驗結(jié)果如表2所示。
表2 不同算法準確率與損失的比較
針對CIFAR100數(shù)據(jù)集,實驗將SM算法分別與曲率半徑閾值為30、40、50的SSM算法進行實驗對比。實驗分別計算出不同算法的前100次迭代與后50次迭代的驗證集準確率及訓練集準確率,分別計算出不同算法的訓練集與驗證集損失函數(shù)的最小值。從表中可以看出,前100次迭代,SM算法的驗證集準確率平均為46.70%,后50次迭代提升至66.53%,而曲率半徑閾值為40的SSM算法,驗證集準確率高出SM算法1.3%。由此可知,針對不同的數(shù)據(jù)集,本文提出的SSM算法仍能表現(xiàn)出良好的性能。
本文針對優(yōu)化算法中常見的局部最優(yōu)點振蕩問題,提出了一種動量項分離的優(yōu)化算法。通過計算目標函數(shù)在每個時刻的曲率半徑,根據(jù)閾值確定動量項能否存在,從而緩解振蕩。從模型準確性和擬合速度上得到如下結(jié)論:①準確性上,在不同模型結(jié)構(gòu)以及數(shù)據(jù)集中進行實驗對比,SSM算法相較于SM算法,具有高準確率、快速穩(wěn)定收斂的特點,且能夠適當減少迭代次數(shù)。該算法相較于一階動量算法,準確率平均提升了2個百分點。②擬合速度上,本文的算法由于引入附加的參數(shù),每次迭代相較于SM算法會花費多一點時間,迭代速度會變緩,然而,由于局部最優(yōu)點振蕩變?nèi)?,迭代次?shù)相應(yīng)能夠較少,總的迭代時間會縮短,提高一定的擬合速度。
綜上所述,本文提出的SSM算法具有較高的準確率,同時能夠穩(wěn)定而快速地實現(xiàn)任務(wù),是實現(xiàn)參數(shù)更新的一種有效的優(yōu)化算法。