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