景立森 丁志剛 鄭樹泉 廖 威
1(上海市計算技術研究所 上海 200040)2(上海產(chǎn)業(yè)技術研究院 上海 201206)3(上海計算機軟件技術開發(fā)中心 上海 201112)4(上海嵌入式系統(tǒng)應用工程技術研究中心 上海 201112)
近年來,隨著計算機硬件和人工智能的迅速發(fā)展,涌現(xiàn)出豐富的機器學習算法。由文獻[1]提出的對神經(jīng)網(wǎng)絡影響深遠的誤差反向傳播算法(Back Propagation Algorithm)作為最流行的算法之一,也是應用最廣泛的算法,其研究價值是不言而喻的。對于神經(jīng)網(wǎng)絡的優(yōu)化,梯度下降也是最常用的優(yōu)化方法之一。基于梯度下降的誤差反向傳播算法,在學術界和工業(yè)界都得到了很大程度的關注,對研究和改進此算法也是呈現(xiàn)極大的熱情。
基于vanilla策略是梯度下降算法中最簡單、方便的參數(shù)更新策略。參數(shù)沿著梯度變化的反方向更新,但此策略面對等高線或馬鞍面時學習速度較慢。為了克服這一缺點,文獻[2]提出了基于動量的更新策略[2]。在一定程度上提高了梯度下降的泛化能力和收斂速度,但是僅考慮到前一次梯度向量和當前梯度向量,沒有突出當前梯度的重要性。NAG算法[3]考慮到了前梯度向量邁出一步之后的梯度變化,使得梯度下降可以具有預測性,NAG雖然比較智能,但是當前梯度動量和邁出一步之后梯度方向動量沒有統(tǒng)一的標準,泛化能力還可以進一步優(yōu)化。本文在動量更新策略和NAG的基礎上,通過確定當前梯度和預測梯度呈黃金分割比例來優(yōu)化,泛化能力得到了進一步的提高。
對于BP神經(jīng)網(wǎng)絡隱含層神經(jīng)元的確定,以往都是憑經(jīng)驗確定,數(shù)目過多會過擬合,數(shù)目過少特征提取又不充分。經(jīng)驗主義的學者們都是基于定量的,這樣也不能很好地得到較優(yōu)的BP網(wǎng)絡。
本文對于當前誤差反向傳播神經(jīng)網(wǎng)絡存在的兩個問題,建立了基于黃金分割比的GNAG動量更新梯度策略,以及基于黃金分割比的隱含層神經(jīng)元確定策略,使得BP神經(jīng)網(wǎng)絡的性能得到進一步優(yōu)化。將此算法應用于手寫數(shù)字識別,得到了較好的收斂速度和評估結(jié)果。
BP神經(jīng)網(wǎng)絡是目前應用最廣泛的神經(jīng)網(wǎng)絡[4],對于經(jīng)典的三層結(jié)構(gòu)其拓撲結(jié)構(gòu)如圖1所示。

圖1 BP神經(jīng)網(wǎng)絡


(1)
網(wǎng)絡在(xk,yk)上的均方誤差為:
(2)
對于圖1的網(wǎng)絡,需要確定的參數(shù)有:輸入層到隱含層的d×q個權(quán)值,隱含層到輸出層的q×l個權(quán)值,q個隱含層神經(jīng)元的閾值,l個輸出層神經(jīng)元的閾值,總共有(d+l+1)q+l個參數(shù)需要確定[5]。
BP算法基于梯度下降策略,以目標的負梯度方向?qū)?shù)進行優(yōu)化,對式(2)的誤差Ek,給定學習率η,由偏微分的性質(zhì),則有:
(3)
由βj的定義,顯然可以得到:

(4)
根據(jù)式(1)和式(2),有:
(5)
將式(4)和式(5)代入式(3),即可得到BP算法關于whj的更新公式:
Δwhj=ηgjbh
(6)
對于輸出層神經(jīng)元閾值有:
(7)
對于輸入層和隱含層的權(quán)值,有:
(8)

對于隱含層的閾值,有:
(9)

至此,根據(jù)式(6)-式(9),BP網(wǎng)絡中(d+l+1)q+l個參數(shù)即可更新迭代BP網(wǎng)絡。
為了抑制欠擬合和過擬合,對于BP神經(jīng)網(wǎng)絡的隱含層的數(shù)目確定,既不能太多也不能太少[6],之前一般根據(jù)算法工程師的經(jīng)驗,去做相應的確定和優(yōu)化。
隨著人們對BP隱含層的深入研究,找到了一種相對來說有效的確定方法。對于圖1所示的BP神經(jīng)網(wǎng)絡,隱含層神經(jīng)元的數(shù)目q可以用以下公式來確定[7]:
(10)
式中:d是輸入層神經(jīng)元的維度;l是輸出層神經(jīng)元的維度;a是一個取1到10之間的調(diào)節(jié)常數(shù)。但是這種確定方法對于a的確定也是憑經(jīng)驗來調(diào)節(jié)的,需要很多嘗試,特別是對于維度比較小的BP網(wǎng)絡,a的確定偶然因素太大。
(11)
式中:w是粒子的坐標矢量。可以把式(3)看作是一種沒有質(zhì)量的特殊粒子的情況。
通過對比梯度下降算法的更新策略和運動物體在保守力作用下在粘性介質(zhì)中運動的對比,如果牛頓第二定律可以在梯度下降算法中起到某種作用,那將是很好的更新策略。下面來闡釋怎么把牛頓定律類比地用在梯度更新策略上的。為了方便,把式(11)離散化一下:
(12)
對式(12),左右調(diào)整變形一下可得:
(13)
在物理學中,一個運動的物體具有慣性,把這個思想運用到梯度下降算法中,也就是說在梯度更新時,既在一定程度上保留先前更新的梯度方向的同時,也利用當前梯度方向做相應的調(diào)整[2]。根據(jù)式(13)可以設:
(14)
式中:
到此,使用最速梯度下降的動量更新策略和物體的運動規(guī)律有機地結(jié)合在一起,可以看出,當ε=0意味著m=0,反之亦然。
當使用動量更新梯度算法時,可以看成是把一個小球扔下山坡,小球積累動量,速度變得越來越快,直到達到谷底。類似地,在動量更新策略沿著梯度最大的反方向往谷底滾去,直到抵達誤差函數(shù)的最低點。
對于式(14)的動量更新策略,小球從山上滾下去的時候,盲目地沿著斜率方向走,并不會得到最優(yōu)解。我們希望有一個智能的小球,可以知道自己要滾到哪里去,在下坡的過程中加速,在稍微有上坡的趨勢的時候減速。此策略不但加快了收斂速度,同時可以抑制搖擺[8]。NAG是一種能夠給動量這種預測能力的一種算法[9]。對于普通的動量更新策略如圖2所示。

圖2 普通動量更新策略
ε為更新先前一次梯度方向上的動量學習率,p為更新當前點梯度方向上的動量學習率。觀察式(14)可以把參數(shù)迭代分為兩步來走,如圖3所示。

圖3 NAG動量更新策略
先沿著先前的更新方向繼續(xù)前進ε×vi-1,到達點(wi-1)′,再沿著(wi-1)′的梯度方向前進p×d((wi-1)′),到達wi,此方法即為NAG。由于在更新動量之前,在點(wi-1)′做梯度方向的調(diào)整,屬于超前預測,這種做法是有一定的“向前看”的優(yōu)勢[10],適應性比較好。
黃金分割比是把一條線段分割為兩部分,使其中一部分與全長之比等于另一部分與這部分之比,如圖4所示。

圖4 黃金分割比線段
黃金分割比等式:
(15)
黃金分割具有嚴格的比例性、藝術性、和諧性,蘊藏著豐富的美學價值。由于按此比例設計的造型十分美麗,因此稱為黃金分割比,也成為中外比。這個數(shù)值的作用不僅僅體現(xiàn)在諸如繪畫、雕塑、音樂建筑等藝術領域,而且在管理、工程設計也有著不可忽視的作用。
本文把這個完美的比例,用在神經(jīng)網(wǎng)絡隱含層神經(jīng)元的數(shù)目確定和NAG動量更新中。
對于BP神經(jīng)網(wǎng)絡的隱含層的數(shù)目,過多過少都不合適,會呈現(xiàn)不同的欠擬合或過擬合結(jié)果,但是有一點是很明確的,即總的來說,隱含層神經(jīng)元的數(shù)目肯定要在某種程度上比輸入層和輸出層神經(jīng)元多,至于多多少,一般都是根據(jù)項目經(jīng)驗去嘗試從而確定合適的數(shù)目。即使用式(10)來確定,a也是憑經(jīng)驗來調(diào)節(jié)的,需要很多嘗試,偶然因素也比較大。
因此我們引入基于黃金分割比的隱含層的確定方法。對于圖1所示的BP網(wǎng)絡,令:
(16)
根據(jù)式(16),求輸入層和輸出層確定的隱含層的平均,令隱含層神經(jīng)元的個數(shù)為:
(17)
基于式(17)所確定的隱含層神經(jīng)元數(shù)目,蘊藏著豐富的美學,能有效規(guī)避經(jīng)驗主義,又能很好地提取數(shù)據(jù)特征,達到很好的特征提取和數(shù)據(jù)轉(zhuǎn)換工作,泛化能力進一步提高。
對于NAG算法,先沿著先前的更新方向繼續(xù)前進ε×vi-1,到達點(wi-1)′,再沿著(wi-1)′的梯度方向前進p×d((wi-1)′),到達wi,故有:
(18)
動量首先計算當前梯度,接著沿著梯度負方向邁出一大步,計算梯度值,然后做修正。這個具有預見性的更新防止前進得太快,同時增強了算法的響應能力。和普通動量更新策略作對比,如圖5所示。

圖5 NAG動量和普通動量對比圖
雖然NAG有前瞻性,也有很好的預測性,收斂速度比較快,但是對于學習率ε和p,還是憑經(jīng)驗主義來人為設定的,泛化能力弱。通常情況下需要多次運行模型才能預估比較合適的學習率,偶然因素太大。再次引入黃金分割比,令:
(19)
稱滿足式(19)的NAG動量為黃金NAG動量算法,記為GNAG。由于原來需要兩個學習率的確定,現(xiàn)在讓其比值符合黃金分割比,有效地利用黃金分割的自然美學,融合到工程應用中。當前梯度負方向與下一步梯度負方向不一致時,兩個動量疊加會得到有效抑制和調(diào)整,當兩個動量方向大致一致時,二者疊加使得邁出一大步的學習步長。因此不但可以泛化學習算法,還可動態(tài)調(diào)整學習率,接下來利用實驗來驗證其有效性。
MNIST數(shù)據(jù)集是目前測試神經(jīng)網(wǎng)絡最流行的數(shù)據(jù)集之一,相對于N維奇偶問題[11]更具有代表性。采用MNIST數(shù)據(jù)集,來識別0~9的10個手寫數(shù)字,圖片大小是28×28,故輸入維度是784的變量,輸出維度是10,利用式(17),故隱含層神經(jīng)元數(shù)目為:
利用google的tensorflow開源框架來實現(xiàn)只含有一個隱含層的神經(jīng)網(wǎng)絡,設計并實現(xiàn)NAG的兩個動量向量大小之比為黃金分割比,從而達到構(gòu)建成GNAG的BP神經(jīng)網(wǎng)絡,利用matplotlib來可視化顯示數(shù)據(jù)分析結(jié)果。構(gòu)建的神經(jīng)網(wǎng)絡如圖6所示。

圖6 GNAG-BP神經(jīng)網(wǎng)絡
智能的NAG算法可用性已很高,而GNAG的性能比NAG更好,兩者在精確度的對比如圖7所示。

圖7 NAG和GNAG精確度對比
由圖7可知,GNAG的精確度更高,收斂速度更快,誤差平均損失函數(shù)更小,故學習能力更好,泛化能力更強。
對于GNAG優(yōu)化算法的精確度和交叉熵代價函數(shù)分別如圖8和圖9所示。

圖9 GNAG損失函數(shù)
根據(jù)圖8和圖9,可以看出,訓練的精度和誤差都很陡峭,說明GNAG的學習速度極快,GNAG訓練結(jié)果圍繞預測結(jié)果上下浮動,基本上預測結(jié)果在訓練集的中心部位,沒有出現(xiàn)過擬合或梯度消失等現(xiàn)象。雖然只是用的簡單的三層黃金分割比例的BP神經(jīng)網(wǎng)絡,可是對于MNIST數(shù)據(jù)集我們的正確率已經(jīng)達到了97.55%,比人眼識別率還要高,可見黃金比例運用到BP網(wǎng)絡中效果特別好。
本文在基于NAG算法的基礎上,引入了黃金分割比,有機地結(jié)合了自然美學和工程應用,在泛化能力和收斂速度上,都得到了一定程度的提高。應用實例表明,基于黃金分割比梯度動量更新策略的BP神經(jīng)網(wǎng)絡誤差更小,收斂速度更快,因此泛化能力更強。對于別的數(shù)據(jù)集,有待進一步研究和實驗。