摘要:神經(jīng)網(wǎng)絡(luò)的研究是一個(gè)熱點(diǎn),但BP網(wǎng)絡(luò)也不是非常完美的, 為了更好的理解應(yīng)用神經(jīng)網(wǎng)絡(luò)進(jìn)行問題求解, 文章對它的優(yōu)缺點(diǎn)展開討論,并提出了幾種改進(jìn)算法。
關(guān)鍵詞:神經(jīng)網(wǎng)絡(luò) ;BP網(wǎng)絡(luò); 優(yōu)缺點(diǎn); 改進(jìn)算法
【中圖分類號】 TP183 【文獻(xiàn)標(biāo)識碼】 B【文章編號】 1671-1297(2012)09-0196-02
思維學(xué)普遍認(rèn)為,人類大腦的思維分為抽象(邏輯)思維、形象(直觀)思維和靈感(頓悟)思維三種基本方式。
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,NN)就是模擬人思維的第二種方式。這是一個(gè)非線性動力學(xué)系統(tǒng),其特色在于信息的分布式存儲和并行協(xié)同處理。雖然單個(gè)神經(jīng)元的結(jié)構(gòu)極其簡單,功能有限,但大量神經(jīng)元構(gòu)成的網(wǎng)絡(luò)系統(tǒng)所能實(shí)現(xiàn)的行為卻是極其豐富多彩的。人工神經(jīng)網(wǎng)絡(luò)系統(tǒng)從20世紀(jì)40年代末誕生至今僅短短半個(gè)多世紀(jì),但由于它具有信息的分布存儲、并行處理以及自學(xué)習(xí)能力等優(yōu)點(diǎn),已經(jīng)在信息處理、模式識別、智能控制及系統(tǒng)建模等領(lǐng)域得到越來越廣泛的應(yīng)用。
神經(jīng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的單隱層前饋網(wǎng)絡(luò),一般稱為三層前饋網(wǎng)或三層感知器,即:輸入層、中間層(也稱隱層)和輸出層。它的特點(diǎn)是:各層神經(jīng)元僅與相鄰層神經(jīng)元之間相互全連接,同層內(nèi)神經(jīng)元之間無連接,各層神經(jīng)元之間無反饋連接,夠成具有層次結(jié)構(gòu)的前饋型神經(jīng)網(wǎng)絡(luò)系統(tǒng)。單計(jì)算層前饋神經(jīng)網(wǎng)絡(luò)只能求解線性可分問題,能夠求解非線性問題的網(wǎng)絡(luò)必須是具有隱層的多層神經(jīng)網(wǎng)絡(luò)。
一 BP網(wǎng)絡(luò)
1986年,Rumelhart和Hinton提出了誤差反向傳播神經(jīng)網(wǎng)絡(luò)(Error Back Propagation Neural Network),簡稱BP網(wǎng)絡(luò)。它是一種能向著滿足給定的輸入輸出關(guān)心方向進(jìn)行自組織的神經(jīng)網(wǎng)絡(luò)。
1. BP網(wǎng)絡(luò)的原理
輸入層各神經(jīng)元負(fù)責(zé)接收來自外界的輸入信息,并傳遞給中間層各神經(jīng)元;中間層是內(nèi)部信息處理層,負(fù)責(zé)信息變換,根據(jù)信息變化能力的需求,中間層可以設(shè)計(jì)為單隱層或者多隱層結(jié)構(gòu);最后一個(gè)隱層傳遞到輸出層各神經(jīng)元的信息,經(jīng)進(jìn)一步處理后,完成一次學(xué)習(xí)的正向傳播處理過程,由輸出層向外界輸出信息處理結(jié)果。當(dāng)實(shí)際輸出與期望輸出不符時(shí),進(jìn)入誤差的反向傳播階段。誤差通過輸出層,按誤差梯度下降的方式修正各層權(quán)值,向隱層、輸入層逐層反傳。周而復(fù)始的信息正向傳播和誤差反向傳播過程,是各層權(quán)值不斷調(diào)整的過程,也是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)訓(xùn)練的過程,此過程一直進(jìn)行到網(wǎng)絡(luò)輸出的誤差減少到可以接受的程度,或者預(yù)先設(shè)定的學(xué)習(xí)次數(shù)為止。
2. BP網(wǎng)絡(luò)的特點(diǎn)
(1)輸入和輸出是并行的模擬量。
(2)網(wǎng)絡(luò)的輸入輸出關(guān)系是各層連接的權(quán)因子決定,沒有固定的算法。
(3)權(quán)因子是通過學(xué)習(xí)信號調(diào)節(jié)的,這樣學(xué)習(xí)越多,網(wǎng)絡(luò)越聰明。
(4)隱含層越多,網(wǎng)絡(luò)輸出精度越高,且個(gè)別權(quán)因子的損壞不會對網(wǎng)絡(luò)輸出產(chǎn)生大的影響。
3. BP網(wǎng)絡(luò)的優(yōu)點(diǎn)
(1)網(wǎng)絡(luò)實(shí)質(zhì)上實(shí)現(xiàn)了一個(gè)從輸入到輸出的映射功能,而數(shù)學(xué)理論已證明它具有實(shí)現(xiàn)任何復(fù)雜非線性映射的功能。這使得它特別適合于求解內(nèi)部機(jī)制復(fù)雜的問題。
(2)網(wǎng)絡(luò)能通過學(xué)習(xí)帶正確答案的實(shí)例集自動提取\"合理的\"求解規(guī)則,即具有自學(xué)習(xí)能力。
(3)網(wǎng)絡(luò)具有一定的推廣、概括能力。
4. BP網(wǎng)絡(luò)的缺點(diǎn)
BP算法的學(xué)習(xí)速度很慢,其原因主要有:
(1)由于BP算法本質(zhì)上為梯度下降法,而它所要優(yōu)化的目標(biāo)函數(shù)又非常復(fù)雜,因此,必然會出現(xiàn)\"鋸齒形現(xiàn)象\",這使得BP算法低效;
(2)存在麻痹現(xiàn)象,由于優(yōu)化的目標(biāo)函數(shù)很復(fù)雜,它必然會在神經(jīng)元輸出接近0或1的情況下,出現(xiàn)一些平坦區(qū),在這些區(qū)域內(nèi),權(quán)值誤差改變很小,使訓(xùn)練過程幾乎停頓;
(3)為了使網(wǎng)絡(luò)執(zhí)行BP算法,不能用傳統(tǒng)的一維搜索法求每次迭代的步長,而必須把步長的更新規(guī)則預(yù)先賦予網(wǎng)絡(luò),這種方法將引起算法低效。
網(wǎng)絡(luò)訓(xùn)練失敗的可能性較大,其原因有:
(1)從數(shù)學(xué)角度看,BP算法為一種局部搜索的優(yōu)化方法,但它要解決的問題為求解復(fù)雜非線性函數(shù)的全局極值,因此,算法很有可能陷入局部極值,使訓(xùn)練失敗;
(2)網(wǎng)絡(luò)的逼近、推廣能力同學(xué)習(xí)樣本的典型性密切相關(guān),而從問題中選取典型樣本實(shí)例組成訓(xùn)練集是一個(gè)很困難的問題。
難以解決應(yīng)用問題的實(shí)例規(guī)模和網(wǎng)絡(luò)規(guī)模間的矛盾。這涉及到網(wǎng)絡(luò)容量的可能性與可行性的關(guān)系問題,即學(xué)習(xí)復(fù)雜性問題。
網(wǎng)絡(luò)結(jié)構(gòu)的選擇尚無一種統(tǒng)一而完整的理論指導(dǎo),一般只能由經(jīng)驗(yàn)選定。為此,有人稱神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)選擇為一種藝術(shù)。而網(wǎng)絡(luò)的結(jié)構(gòu)直接影響網(wǎng)絡(luò)的逼近能力及推廣性質(zhì)。因此,應(yīng)用中如何選擇合適的網(wǎng)絡(luò)結(jié)構(gòu)是一個(gè)重要的問題。
新加入的樣本要影響已學(xué)習(xí)成功的網(wǎng)絡(luò),而且刻畫每個(gè)輸入樣本的特征的數(shù)目也必須相同。
二 BP網(wǎng)絡(luò)的改進(jìn)算法
BP算法最優(yōu)化的方向主要有權(quán)值調(diào)整、自適應(yīng)學(xué)習(xí)速率調(diào)整、網(wǎng)絡(luò)結(jié)構(gòu)調(diào)整等。常用的改進(jìn)方法有以下幾種:
1.加入動量項(xiàng)
利用附加動量的作用則有可能滑過局部極小值。該方法所加入的動量實(shí)質(zhì)上相當(dāng)于阻尼項(xiàng),它減小了學(xué)習(xí)過程的振蕩趨勢,改善了收斂性,這是目前應(yīng)用比較廣泛的一種改進(jìn)算法。
2.自適應(yīng)學(xué)習(xí)速率調(diào)整
對于一個(gè)特定的問題,要選擇適當(dāng)?shù)膶W(xué)習(xí)速率并不是一件容易的事情。對訓(xùn)練開始初期功效很好的學(xué)習(xí)速率,不一定對后來的訓(xùn)練合適。為了解決這一問題,人們自然會想到在訓(xùn)練過程中自動調(diào)整學(xué)習(xí)速率。
3.共軛梯度算法
在各種改進(jìn)算法中,共軛梯度法(Conjugate Gradient)是非常重要的一種。其優(yōu)點(diǎn)是所需存儲量小,具有N步收斂性,穩(wěn)定性高,而且不需要任何外來參數(shù)。
4.Levenberg-Marquart算法(最小二乘擬合算法)
除了改進(jìn)算法以外,通過改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)(隱層結(jié)點(diǎn)數(shù)和網(wǎng)絡(luò)層數(shù))、調(diào)整誤差等方法,也能加快BP算法的收斂速度。
參考文獻(xiàn)
[1] 張宏林.Visual C++數(shù)字圖象模式識別技術(shù)及工程世紀(jì)[M].北京:人民郵電出版社,2008.
[2] 楊偉,倪黔東,吳軍基.BP神經(jīng)網(wǎng)絡(luò)權(quán)值初始值與收斂性的研究[J].電力系統(tǒng)及其自動化學(xué)報(bào),2002,(2):20-22