卜文銳
(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院 陜西省西安市 710300)
神經(jīng)網(wǎng)絡(luò)在人工智能的發(fā)展當(dāng)中起到了重要作用,它通常包含著較為復(fù)雜的結(jié)構(gòu)和數(shù)量龐大的參數(shù),其優(yōu)化過程的主要目的就是有針對性地更新各類參數(shù),使得為解決問題而設(shè)定的損失函數(shù)取得令人滿意的最小值。一般而言,在許多實(shí)用性較強(qiáng)的領(lǐng)域中,神經(jīng)網(wǎng)絡(luò)的優(yōu)化過程是一個較為復(fù)雜的問題,其主要原因是在將實(shí)際問題抽象為數(shù)學(xué)模型的過程中,需要引入相當(dāng)數(shù)量的各類參數(shù),神經(jīng)網(wǎng)絡(luò)需要處理的參數(shù)無論是較大的數(shù)量還是復(fù)雜的結(jié)構(gòu)都讓最優(yōu)解的求解較為困難。
在神經(jīng)網(wǎng)絡(luò)優(yōu)化算法當(dāng)中,非常經(jīng)典的方法是選取網(wǎng)絡(luò)參數(shù)的梯度作為最小化損失函數(shù)的突破口,在很大程度上借鑒了工程數(shù)學(xué)研究中關(guān)于最速下降方法的研究成果,具體算法稱為隨機(jī)梯度下降法,簡稱SGD。相比于盲目地在參數(shù)空間中搜索,SGD 方法已經(jīng)具有巨大的優(yōu)勢了。但是,根據(jù)需要求解的具體問題,也有著比SGD 更好的優(yōu)化算法。
1.2.1 SGD
SGD 方法的表達(dá)式如式(1)所示,W 是神經(jīng)網(wǎng)絡(luò)的權(quán)重,?L/?W 是損失函數(shù)對W 的偏導(dǎo)數(shù),η 為學(xué)習(xí)率(一般取0.01 或0.001)。
SGD 方法的局限性從式(1)中也可以看出,那就是梯度的方向并不一定總是指向最小值的方向。因此,在出現(xiàn)此類情況的問題中,SGD 方法的搜索效率將會大打折扣。
1.2.2 Momentum
Momentum 的表達(dá)式如式(2)和式(3)所示,W 是神經(jīng)網(wǎng)絡(luò)的權(quán)重,?L/?W 是損失函數(shù)對W 的偏導(dǎo)數(shù),η 為學(xué)習(xí)率,v 為速度。
Momentum 方法對應(yīng)的物理模型非常類似非光滑、非真空環(huán)境下,在平面上滾動的球體,式(2)中的第一項代表了球體運(yùn)動時受到的各種阻力。
1.2.3 AdaGrad
在神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)中,學(xué)習(xí)率(數(shù)學(xué)式中記為η)的設(shè)定對于網(wǎng)絡(luò)參數(shù)的優(yōu)化具有重要意義。其設(shè)定過小,相當(dāng)于在搜索過程中步長過小,優(yōu)化效率較低;其設(shè)定過大,相當(dāng)于在搜索過程中選定了較大的步長,可能長時間在最小值附近擺動而無法收斂。在解決工程問題的過程中,學(xué)習(xí)率衰減的方法被廣泛采用:在搜索開始距離最小值較遠(yuǎn)時,采用較大的搜索步長;當(dāng)搜索逐漸進(jìn)行,接近最小值附近時,調(diào)小搜索步長。在此基礎(chǔ)之上,AdaGrad 方法拓展了該方法的細(xì)節(jié),針對各個參數(shù)在神經(jīng)網(wǎng)路模型中的不同用途,專門為其設(shè)定衰減率,相當(dāng)于更加細(xì)化的學(xué)習(xí)率衰減方法。
圖1:四類算法最優(yōu)化結(jié)果對比
用數(shù)學(xué)式表示AdaGrad 的更新方法如式(4)和式(5)所示,W 是神經(jīng)網(wǎng)絡(luò)的權(quán)重,?L/?W 是損失函數(shù)對W 的偏導(dǎo)數(shù),η 為學(xué)習(xí)率。其中參數(shù)h 的設(shè)置就是為了抑制某些參數(shù)因搜索步長過大而無法收斂,具體而言:從式(4)可以看出,如果某個參數(shù)的梯度變化較大,則其h 值也會發(fā)生較大改變:而式(5)中h 值存在于分母上,就確保權(quán)重W 值只發(fā)生較小的改變,也就確保了搜索步長有針對性地衰減。
1.2.4 Adam
在優(yōu)化算法的發(fā)展過程中,各類算法相互借鑒,不斷優(yōu)化的案例十分豐富,也往往有著意想不到的效果。Adam 方法就是結(jié)合了Momentum 方法和AdaGrad 方法的特點(diǎn),并進(jìn)行了一些獨(dú)特算法特征的引入,在2015年正式進(jìn)入最優(yōu)化方法的行列。
MNIST 是機(jī)器學(xué)習(xí)領(lǐng)域最有名的數(shù)據(jù)集之一,從各類AI 訓(xùn)練的典型實(shí)驗到許多知名期刊發(fā)表的論文都能見到其被廣泛使用。實(shí)際上,在閱讀圖像識別或機(jī)器學(xué)習(xí)的各類資料時,它是非常典型的研究對象,包含可以用于學(xué)習(xí)和推理的訓(xùn)練圖像6 萬張,測試圖像1 萬張。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程與其它AI 的訓(xùn)練類似,也即將訓(xùn)練集上的訓(xùn)練結(jié)果用于測試集上的圖像進(jìn)行分類,而分類的效率和準(zhǔn)確率通常是度量神經(jīng)網(wǎng)路模型好壞的基本參數(shù)。
圖2:不同迭代次數(shù)下四種算法損失函數(shù)對比
MNIST 數(shù)據(jù)集是由28×28 像素的圖像組成,每個像素點(diǎn)根據(jù)其灰度的差異在0-255 之間取值,并以此保存為一個數(shù)組。在訓(xùn)練過程中,每個數(shù)據(jù)所對應(yīng)的分類標(biāo)簽(0-9 總共10 個分類)會被輸入神經(jīng)網(wǎng)絡(luò)作為參考;而在測試過程中,數(shù)據(jù)的標(biāo)簽將不提供給神經(jīng)網(wǎng)絡(luò)。
3.1.1 四類算法對比
以求解式(6)所示的函數(shù)最小值作為四類算法對比研究的目標(biāo),在工程優(yōu)化問題當(dāng)中此類函數(shù)也經(jīng)常被作為研究對象,根據(jù)其等高線圖對比最優(yōu)化算法的好壞。
針對該函數(shù)的特征,不同類型算法在最優(yōu)化參數(shù)的過程中往往會表現(xiàn)出各不相同的特征。
3.1.2 MNIST 數(shù)據(jù)集實(shí)驗參數(shù)
在MNIST 數(shù)據(jù)集上,我們比較前述SGD、Momentum、AdaGrad 和Adam 這四種算法的優(yōu)化效果,并確認(rèn)不同的方法在學(xué)習(xí)進(jìn)展方面的差異。我們采用一個5 層神經(jīng)網(wǎng)絡(luò),其中每層設(shè)置100 個神經(jīng)元,激活函數(shù)采用ReLU 函數(shù),迭代次數(shù)分別設(shè)定為1000、2000、3000 和4000。
3.2.1 四類算法對比實(shí)驗
SGD、Momentum、AdaGrad 和Adam 算法在式(6)所示最優(yōu)化問題上的結(jié)果如圖1 所示。SGD 方法主要體現(xiàn)了Z 字形搜索方式,而其它三種方法的搜索則有較顯著的非線性特征。從結(jié)果來看,AdaGrad 方法的結(jié)果最優(yōu)。但是,在最優(yōu)化問題中,結(jié)果會根據(jù)需要解決的問題而有較大的變化;并且,根據(jù)超參數(shù)(學(xué)習(xí)率等)設(shè)定的差異,結(jié)果也會發(fā)生變化。所以,在神經(jīng)網(wǎng)絡(luò)解決實(shí)際問題的過程中,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)定和各類參數(shù)的設(shè)置往往決定著最終優(yōu)化算法的結(jié)果。
3.2.2 MNIST 數(shù)據(jù)集最優(yōu)化算法對比
從圖2 的結(jié)果中可知,與SGD 算法相比,其它3 種算法學(xué)習(xí)效率較高,而且速度較為接近,細(xì)致分析不同迭代次數(shù)的學(xué)習(xí)效果圖可以看出,AdaGrad 算法的學(xué)習(xí)效率總體略高于其它算法。和求解函數(shù)最小值問題時類似,我們只能確定,在當(dāng)前設(shè)定的實(shí)驗參數(shù)條件下,另3 種方法學(xué)習(xí)效率比SGD 算法更高,在多數(shù)情況下最終識別手寫數(shù)字的精度也更好。
神經(jīng)網(wǎng)絡(luò)參數(shù)的優(yōu)化是人工智能研究當(dāng)中非常重要的問題,基于不同的算法設(shè)計理念,四種常用方法均有著各自的特色。在求解函數(shù)最小值問題的過程當(dāng)中,AdaGrad 算法在SGD、Momentum、AdaGrad 和Adam 算法中具有較好的結(jié)果;在學(xué)習(xí)手寫數(shù)字識別領(lǐng)域典型的MNIST 數(shù)據(jù)集時,我們設(shè)定的迭代次數(shù)在1000、2000、3000 和4000 的5 層神經(jīng)網(wǎng)絡(luò)(每層設(shè)置100 個神經(jīng)元,激活函數(shù)采用ReLU 函數(shù))結(jié)果體現(xiàn)出與SGD 算法相比,另3 種方法學(xué)習(xí)效率更高,同時AdaGrad 算法的學(xué)習(xí)效率總體略高于其它算法。