陳智軍++李洋瑩
摘要:傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)BP算法具有強大的自學習、自適應(yīng)及非線性映射能力,但算法具有收斂緩慢、易陷入局部極優(yōu)等缺點。針對傳統(tǒng)BP算法的不足提出改進方法,并用于解決異或問題和字符識別問題。實驗表明,改進算法能提高網(wǎng)絡(luò)學習速度、減小網(wǎng)絡(luò)誤差,具有更好的收斂性和魯棒性,各方面都明顯優(yōu)于傳統(tǒng)BP算法。
關(guān)鍵詞:神經(jīng)網(wǎng)絡(luò);BP算法;學習速率
DOIDOI:10.11907/rjdk.171726
中圖分類號:TP312文獻標識碼:A文章編號:16727800(2017)010003903
0引言
人工神經(jīng)網(wǎng)絡(luò)是由大量處理單元互聯(lián)組成的非線性、自適應(yīng)信息處理系統(tǒng),它是在現(xiàn)代神經(jīng)科學研究成果的基礎(chǔ)上提出的,通過模擬大腦神經(jīng)網(wǎng)絡(luò)處理、記憶信息的方式進行信息處理。截至目前,已有大量的訓練算法和網(wǎng)絡(luò)模型[17]被提出,其中BP神經(jīng)網(wǎng)絡(luò)應(yīng)用最為廣泛。BP神經(jīng)網(wǎng)絡(luò)的核心是“誤差反向傳播”學習算法。BP算法系統(tǒng)地解決了網(wǎng)絡(luò)中連接權(quán)值的學習問題,使BP網(wǎng)絡(luò)成為目前應(yīng)用最廣泛的網(wǎng)絡(luò)模型[8]。BP算法的基本思想是:學習過程由正向傳播和反向傳播組成。在正向傳播中,樣本從輸入層輸入,然后經(jīng)過隱層處理后傳播到輸出層。如果輸出與預(yù)期結(jié)果不一致,學習過程轉(zhuǎn)為反向傳播;在反向傳播中,誤差通過隱層被反饋到輸入層,成為網(wǎng)絡(luò)連接權(quán)值修改的基礎(chǔ)。網(wǎng)絡(luò)根據(jù)誤差調(diào)整各層的連接權(quán)值以減小誤差。這兩個傳播過程是權(quán)值調(diào)整的周期循環(huán)過程,即網(wǎng)絡(luò)的學習過程。然而,傳統(tǒng)的BP算法存在缺點:收斂速度慢,容易收斂到局部最優(yōu)而不是全局最優(yōu)解,這極大地阻礙了神經(jīng)網(wǎng)絡(luò)的進一步應(yīng)用。本文根據(jù)網(wǎng)絡(luò)學習過程分析這些問題產(chǎn)生的原因,并提出改進方法。改進后的算法可以提高學習速度,減小網(wǎng)絡(luò)誤差,并具有更好的收斂性和魯棒性。
1BP神經(jīng)網(wǎng)絡(luò)
1.1BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
BP神經(jīng)網(wǎng)絡(luò)模型[9]是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型,它屬于多層網(wǎng)絡(luò),包括輸入層、隱含層和輸出層。相鄰層中的所有神經(jīng)元都連接,而同一層的神經(jīng)元之間沒有連接。神經(jīng)元之間的連接權(quán)值可以通過學習過程調(diào)整。輸入信號從輸入層神經(jīng)元,依次通過各隱含層神經(jīng)元,最后傳遞到輸出層神經(jīng)元。
1.2BP算法
BP算法步驟如下:
(1)初始化權(quán)值。
(2)提供學習樣本,輸入Xi=x1,x2,,…,xm(i=1,…,L,表示學習樣本的數(shù)量;m表示輸入神經(jīng)元的個數(shù));對應(yīng)的期望輸出為Di=d1,d2,…,dn(n表示輸出神經(jīng)元的個數(shù))。
(3)計算實際輸出Yi=y1,y2,…,yn。
(4)計算誤差E=1L∑Lp=1Ep;Ep=∑ni=1(di-yi)2。
(5)調(diào)整權(quán)重Δwij=-ηEwij,η表示學習速率。
(6)如果網(wǎng)絡(luò)誤差足夠小或迭代步數(shù)溢出,停止算法;否則轉(zhuǎn)到步驟(2)。
2BP算法缺點及改進
2.1BP算法缺點
BP算法優(yōu)勢明顯,但在實際中有以下缺點[8,10]:
(1)收斂速度太慢。誤差減小太慢使得權(quán)值調(diào)整的時間太長,迭代步數(shù)太多。由于梯度逐漸變?yōu)?,越接近局部最優(yōu),收斂速度越慢。為了保證算法的收斂性,學習速率不能過大,否則會出現(xiàn)振蕩。
(2)算法往往收斂到局部最優(yōu)。BP算法調(diào)整權(quán)值的基礎(chǔ)是誤差梯度下降,而局部最優(yōu)的梯度和全局最優(yōu)的梯度均為0,因此算法不能將局部最優(yōu)與全局最優(yōu)區(qū)分開。
(3)隱層數(shù)和隱層神經(jīng)元的數(shù)目往往取決于經(jīng)驗而非理論指導。因此,網(wǎng)絡(luò)往往有很大冗余,這導致學習時間增加。
2.2BP算法改進
BP算法的突出問題是算法收斂速度太慢。為了提高收斂性能,傳統(tǒng)方法是在學習過程中添加動量項,即:
Δw(k+1)=-ηEw(k)+αΔw(k)(1)
在式(1)中,α表示動量項,η表示學習速率。
仿真實驗表明,該方法對提高收斂速度有一定效果,但還不夠好,主要問題是學習速率的選擇比較困難。從BP算法公式可以看出,學習速率決定了收斂速度。一般而言,學習速率越大,收斂速度越快。然而,如果學習速率過大,就會出現(xiàn)振蕩現(xiàn)象。如果學習速率保持不變,在誤差表面的平坦區(qū)域因為梯度小,收斂將非常緩慢。而在誤差表面曲率大的區(qū)域,因為梯度大,將會在局部最優(yōu)附近發(fā)生振蕩。
從上述分析可以看出,無論在平坦區(qū)域還是陡峭區(qū)域,如果學習速率能自適應(yīng)變化,收斂速度和收斂性能都會得到提高。文中本次迭代的誤差將與上一次迭代的誤差進行比較。如果誤差減小,意味著結(jié)果在逼近最優(yōu),學習速率應(yīng)增加;如果誤差加大,且超過一定的百分比,則意味著結(jié)果在偏離最優(yōu),最近一次的調(diào)整將被中止,并且學習速率將被降低。公式如下:
η(t+1)=(1+α)η(t)Et+1 在式(2)中,α和ξ都是正小數(shù)。 除了自適應(yīng)學習率的方法,本文同時還采用了以下幾項改進方法: (1)累積誤差校正。傳統(tǒng)的BP算法在每次輸入后對權(quán)值進行修正,而累積誤差校正積累所有樣本的誤差。如果有n個樣本,輸入后將有n個誤差。這n個誤差將被累積,并作為反向傳播調(diào)整權(quán)值的基礎(chǔ)。與傳統(tǒng)BP算法相比,權(quán)值調(diào)整的頻率明顯降低(每個學習過程減少n-1次調(diào)整),因此,收斂速度相應(yīng)增加。 (2)訓練樣本重組。傳統(tǒng)的BP算法中,如果在每個訓練步驟時樣本順序不變,則在上一步訓練中誤差較大的樣本在本步中仍會有較大誤差,這也是傳統(tǒng)BP算法收斂速度慢的另一個原因。在改進算法中,樣本的順序?qū)⒈恢亟M,以避免這種問題。 (3)隱含層數(shù)量選擇。神經(jīng)網(wǎng)絡(luò)的許多特點是由于隱含層的存在。然而,如何選擇隱含層的數(shù)量不得知。原則上,任何問題都可以由三層BP網(wǎng)絡(luò)解決,因此,為了簡化網(wǎng)絡(luò)結(jié)構(gòu)和提高速度,本文提出三層網(wǎng)絡(luò)結(jié)構(gòu)。
(4)隱含神經(jīng)元數(shù)量選擇。BP網(wǎng)絡(luò)的函數(shù)逼近能力與隱含神經(jīng)元數(shù)量有很大關(guān)系。如果隱含神經(jīng)元數(shù)量太小,網(wǎng)絡(luò)不能很好地訓練,則精度不會很高。隨著隱含神經(jīng)元數(shù)量的增加,網(wǎng)絡(luò)性能會得到改善,但同時收斂速度和魯棒性會降低。在實踐中,一個好的結(jié)果只能根據(jù)經(jīng)驗通過大量的實驗獲得。經(jīng)驗公式如下:
N=n+m(3)
式中,N表示隱層神經(jīng)元的數(shù)目,n表示輸入單元的個數(shù),m表示輸出單元的個數(shù)。
3實驗分析
3.1異或問題
根據(jù)異或問題的特點,輸入層和隱含層的神經(jīng)元個數(shù)為2,輸出層神經(jīng)元數(shù)為1。傳統(tǒng)BP算法和改進BP算法的學習結(jié)果對比如表1、表2所示。
從表1、表2可以看出,改進BP算法性能明顯優(yōu)于傳統(tǒng)BP算法,它能以更少的迭代步驟獲得更小的誤差。
3.2字符識別問題
將改進的BP算法應(yīng)用于字符識別問題,從另一方面驗證其性能。6個字符:A、B、C、D、E、F用5×7點陣表示作為實驗對象,如圖1所示。
圖1字符點陣
圖1中的每個字符點陣用一個數(shù)組表示,數(shù)組中“1”表示陰影點,“0”表示空白點。例如,字符“A”的點陣表示為數(shù)組{0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1 } 。
網(wǎng)絡(luò)有35個輸入單元(每個單元對應(yīng)點陣中的1個點)、7個隱含神經(jīng)元和6個輸出單元(每個單元對應(yīng)1個字符)。
傳統(tǒng)BP算法和改進BP算法在字符識別問題中的比較如表3所示。
從表3可以看出,改進BP算法的輸出比傳統(tǒng)BP算法更接近期望輸出“1”,并且與傳統(tǒng)BP算法相比,改進BP算法能以較少的步驟獲得較小的誤差。這些都表明,改進BP算法性能明顯優(yōu)于傳統(tǒng)BP算法。
此外,為了更充分地比較傳統(tǒng)BP算法和改進BP算法,將噪聲加入輸入數(shù)據(jù)。加入噪聲后,0~0.2都可以代表“0”,0.8~1都可以代表“1”。學習結(jié)果對比如表4所示。
從表4可以看出,當噪聲加入后,改進BP算法仍然明顯優(yōu)于傳統(tǒng)BP算法。將表3、表4相比較可以看出,當噪聲加入后,傳統(tǒng)BP算法的迭代步驟和誤差顯著增加,而改進BP算法的迭代步驟和誤差變化很小。這表明改進BP算法比傳統(tǒng)BP算法具有更好的魯棒性,也更適合在實踐中應(yīng)用。
4結(jié)語
綜上所述,本文提出的改進BP 算法在各方面均優(yōu)于傳統(tǒng)BP算法。從XOR問題和字符識別問題中可以看出,改進BP 算法具有3方面的優(yōu)勢:①可以明顯提高學習速度;②可以明顯減少網(wǎng)絡(luò)誤差;③具有更好的魯棒性。未來如果能在隱層數(shù)和隱層神經(jīng)元數(shù)量的選擇上取得突破,BP神經(jīng)網(wǎng)絡(luò)將有著更為廣闊的應(yīng)用前景。
參考文獻:
[1]邱天宇,申富饒,趙金熙.自組織增量學習神經(jīng)網(wǎng)絡(luò)綜述[J].軟件學報,2016,27(9):22302247.
[2]劉智斌,曾曉勤,劉惠義,等.基于BP神經(jīng)網(wǎng)絡(luò)的雙層啟發(fā)式強化學習方法[J].計算機研究與發(fā)展,2015,52(3):579587.
[3]徐昕,賀漢根.神經(jīng)網(wǎng)絡(luò)增強學習的梯度算法研究[J].計算機學報,2003,26(2):227233.
[4]胡伍生,迪達爾,王昭斌.神經(jīng)網(wǎng)絡(luò)BP改進算法及其性能分析[J].現(xiàn)代測繪,2016,39(6):14.
[5]丁碩,常曉恒,巫慶輝,等.數(shù)值優(yōu)化改進的BP神經(jīng)網(wǎng)絡(luò)逼近性能對比研究[J].山東科學,2014,27(1):6891.
[6]李康順,李凱,張文生.一種基于改進BP神經(jīng)網(wǎng)絡(luò)的PCA人臉識別算法[J].計算機應(yīng)用與軟件,2014,31(1):158161.
[7]關(guān)學忠,張璐.基于改進的BP神經(jīng)網(wǎng)絡(luò)車牌識別的研究[J].自動化技術(shù)與應(yīng)用,2015,34(7):6668.
[8]鄧萬宇,鄭慶華,陳琳,等.神經(jīng)網(wǎng)絡(luò)極速學習方法研究[J].計算機學報,2010,33(2):279286.
[9]李道倫,盧德唐,孔祥言,等.基于BP神經(jīng)網(wǎng)絡(luò)的隱式曲面構(gòu)造方法[J].計算機研究與發(fā)展,2007,44(3):467472.
[10]王磊,王汝涼,曲洪峰,等.BP神經(jīng)網(wǎng)絡(luò)算法改進及應(yīng)用[J].軟件導刊,2016,15(5):3840.
責任編輯(責任編輯:孫娟)endprint