


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第06講反向傳播網(wǎng)絡(luò)給定任意0和任意L2函數(shù)f :0,1nRnRm,存在一個三層 BP網(wǎng)絡(luò),可以在任意平方誤差精度內(nèi)逼近 f。實現(xiàn)任意N個輸入向量構(gòu)成的任何布爾函數(shù)的前向網(wǎng)絡(luò)所需權(quán)系數(shù)數(shù)目為:1 log2 N我們前面講到的感知器神經(jīng)網(wǎng)絡(luò)和線性神經(jīng)元網(wǎng)絡(luò)均為單層網(wǎng)絡(luò)結(jié)構(gòu),其傳遞函數(shù)都十分簡單,感知器為單邊符號函數(shù),線性神經(jīng)網(wǎng)絡(luò)為純線性函數(shù)。在此,我們將上面網(wǎng)絡(luò)結(jié)構(gòu)進行推廣,推廣到多層網(wǎng)絡(luò),并且將傳遞函數(shù)變?yōu)榉蔷€性可微分函數(shù),這就是BP網(wǎng)絡(luò)。反向傳播網(wǎng)絡(luò)(Back PropagationNetwork ,簡稱BP網(wǎng)絡(luò))是將 W H學習規(guī)則一般化,對非線性可微分函數(shù)進行權(quán)值訓練的多層網(wǎng)絡(luò)。由于感知器
2、神經(jīng)網(wǎng)絡(luò)中神經(jīng)元的變換函數(shù)采用符號函數(shù),其輸出為二值量,因此它主要用于模式分類。BP網(wǎng)絡(luò)是一種多層前向反饋神經(jīng)網(wǎng)絡(luò),其神經(jīng)元的變換函數(shù)是S型函數(shù),因此輸出量為0到1之間的連續(xù)量,它可以實現(xiàn)從輸入到輸出的任意的非線性映射。由于 其權(quán)值的調(diào)整采用反向傳播(Backpropagation )的學習算法,因此被稱為BP網(wǎng)絡(luò)。BP網(wǎng)絡(luò)主要用于:1)函數(shù)逼近:用輸入矢量和相應的輸出矢量訓練一個網(wǎng)絡(luò)逼近一個函數(shù);2)模式識別:用一個特定的輸出矢量將它與輸入矢量聯(lián)系起來;3)分類:把輸入矢量以所定義的合適方式進行分類;4) 數(shù)據(jù)壓縮:減少輸出矢量維數(shù)以便于傳輸或存儲。在人工神經(jīng)網(wǎng)絡(luò)的實際應用中,80 %90
3、%的人工神經(jīng)網(wǎng)絡(luò)模型是采用BP網(wǎng)絡(luò)或它的變化形式,它也是前向網(wǎng)絡(luò)的核心部分,體現(xiàn)了人工神經(jīng)網(wǎng)絡(luò)最精華的部分。在人們掌握反向傳播網(wǎng)絡(luò)的設(shè)計之前,感知器和自適應線性元件都只能適用于對單層網(wǎng)絡(luò)模型的訓練, 只是后來才得到了進一步拓展。6 . 1 BP網(wǎng)絡(luò)模型與結(jié)構(gòu)一個具有r個輸入和一個隱含層的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖6 . 1所示。s2xli = 1,2,si / k = A Z ,s2 ; j =匕 2,r.圖6.1具有一個隱含層的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)圖感知器和自適應線性元件的主要差別在激活函數(shù)上:前者是二值型的,后者是線性的。 BP網(wǎng)絡(luò)具有一層或多層隱含層,除了在多層網(wǎng)絡(luò)上與前面已介紹過的模型有不同外,
4、其主 要差別也表現(xiàn)在激活函數(shù)上。BP網(wǎng)絡(luò)的激活函數(shù)必須是處處可微的,所以它就不能采用二值型的閥值函數(shù)0, 1或符號函數(shù) 1 , 1, BP網(wǎng)絡(luò)經(jīng)常使用的是 S型的對數(shù)或正切激活 函數(shù)和線性函數(shù)。圖6 . 2所示的是S型激活函數(shù)的圖形。可以看到f ()是一個連續(xù)可微的函數(shù),其一階導數(shù)存在。對于多層網(wǎng)絡(luò),這種激活函數(shù)所劃分的區(qū)域不再是線性劃分,而是由一個非線性的超平面組成的區(qū)域。它是比較柔和、光滑的任意界面,因而它的分類比線性劃分精確、 合理,這種網(wǎng)絡(luò)的容錯性較好。另外一個重要的特點是由于激活函數(shù)是連續(xù)可微的,它可以 嚴格利用梯度法進行推算,它的權(quán)值修正的解析式十分明確, 其算法被稱為誤差反向傳播
5、法,也簡稱BP算法,這種網(wǎng)絡(luò)也稱為 BP網(wǎng)絡(luò)。網(wǎng)絡(luò)S型激活函數(shù)因為S型函數(shù)具有非線性放大系數(shù)功能,它可以把輸入從負無窮大到正無窮大的信號變換成-1到I之間輸出,對較大的輸入信號, 放大系數(shù)較?。欢鴮^小的輸入信號, 放大系 數(shù)則較大,所以采用 S型激活函數(shù)可以去處理和逼近非線性的輸入/輸出關(guān)系。不過,如果在輸出層采用 S型函數(shù),輸出則被限制到一個很小的范圍了,若采用線性激活函數(shù),則可 使網(wǎng)絡(luò)輸出任何值。所以只有當希望對網(wǎng)絡(luò)的輸出進行限制,如限制在0和1之間,那么在輸出層應當包含 S型激活函數(shù),在一般情況下,均是在隱含層采用S型激活函數(shù),而輸出層采用線性激活函數(shù)。BP網(wǎng)絡(luò)的特點:1、輸入和輸出是
6、并行的模擬量;2、網(wǎng)絡(luò)的輸入輸出關(guān)系是各層連接的權(quán)因子決定,沒有固定的算法;3、權(quán)因子是通過學習信號調(diào)節(jié)的,這樣學習越多,網(wǎng)絡(luò)越聰明;4、隱含層越多,網(wǎng)絡(luò)輸出精度越高,且個別權(quán)因子的損壞不會對網(wǎng)絡(luò)輸出產(chǎn)生大的影響。6 . 2 BP學習規(guī)則BP網(wǎng)絡(luò)的產(chǎn)生歸功于 BP算法的獲得。BP算法屬于3算法,是一種監(jiān)督式的學習算法。其主要思想為:對于q個輸入學習樣本:P1, P2,Pq,已知與其對應的輸出樣本為:T1,T2, Tq。學習的目的是用網(wǎng)絡(luò)的實際輸出A1, A2, Aq,與目標矢量T1 , T2, Tq ,之間的誤差來修改其權(quán)值,使A1, (1= 1, 2,q)與期望的T1盡可能地接近;即:使網(wǎng)絡(luò)
7、輸出層的誤差平方和達到最小。它是通過連續(xù)不斷地在相對于誤差函數(shù)斜率下降的方向上計算 網(wǎng)絡(luò)權(quán)值和偏差的變化而逐漸逼近目標的。每一次權(quán)值和偏差的變化都與網(wǎng)絡(luò)誤差的影響成正比,并以反向傳播的方式傳遞到每一層的。BP算法是由兩部分組成:信息的正向傳遞與誤差的反向傳播。在正向傳播過程中,輸入信息從輸入經(jīng)隱含層逐層計算傳向輸出層,每一層神經(jīng)元的狀態(tài)只影響下一層神經(jīng)元的狀態(tài)。如果在輸出層沒有得到期望的輸出,則計算輸出層的誤差變化值,然后轉(zhuǎn)向反向傳播,通過網(wǎng)絡(luò)將誤差信號沿原來的連接通路反傳回來修改各層神經(jīng)元的權(quán)值直至達到期望目標。為了明確起見,現(xiàn)以圖 6. 1所示兩層網(wǎng)絡(luò)為例進行 BP算法推導,其簡化圖如圖
8、6 .3 所。k = 1、2、s2; i = I、2,si;j = A Z * k圖6. 3 具有一個隱含層的簡化網(wǎng)絡(luò)圖輸出層內(nèi)設(shè)輸入為P,輸入神經(jīng)元有r個,隱含層內(nèi)有si個神經(jīng)元,激活函數(shù)為F1,有s2個神經(jīng)元,對應的激活函數(shù)為F2,輸出為A,目標矢量為T。6 . 2 . 1信息的正向傳遞1)隱含層中第i個神經(jīng)元的輸出為:r(6.1 )叫-/K S wigpj +blf) j = 2si 戶12)輸出層第k個神經(jīng)元的輸出為:(6.2 )alk = f 2(£w2用叫 +&2fc) , k = 1,2s2 i=l3)定義誤差函數(shù)為:(6.3)6. 2 . 2利用梯度下降法求權(quán)
9、值變化及誤差的反向傳播(1)輸出層的權(quán)值變化對從第i個輸入到第k個輸出的權(quán)值有:.3E3E 321w"加2& dw2ki=7(4 - fl2t) f2 al, =H 6W dlf(6.4)6=俄一。2上)=£左 f2f6 =ak(6.5)(6.6)其中:同理可得:“3E3EM2血二一T = -X-db2 枷丈 3b2kt(6.7)=r|(母一alk) f2f =T| * 8Jti(2)隱含層權(quán)值變化da2k dali_ 一dali 3wly對從第j個輸入到第i個輸出的權(quán)值,有:A tdEdEAwly =-T|t " -Tlrv uwlijdalks2=T另
10、(tk a2k) 4 f2f w2ki fV * pj =q ,廠 pj其中:(6.8) 1(6.9 )同理可得:AM: =1)6*1 V(6.10 )在MATLAB工具箱中,上述公式的計算均已編成函數(shù)的形式,通過簡單的書寫調(diào)用即可方便地獲得結(jié)果。具體有:1) 對于(6. 1)式所表示的隱含層輸出,若采用對數(shù)S型激活函數(shù),則用函數(shù)logsig.m ;若采用雙曲正切 S型激活函數(shù),則用函數(shù)tansig.m ;2) 對于(6 . 2)式所表示的輸出層輸出,若采用線性激活函數(shù)有purelin.m與之對應;3) 對于(6 . 3)式所表示的誤差函數(shù),可用函數(shù)sumsqr.m 求之;4) 有l(wèi)earnb
11、p.m 函數(shù)專門求(6 . 4)、(6 . 7)、(6 . 8)和(6. 10)式所表示的輸出層以及 隱含層中權(quán)值與偏差的變化量;5) 由(6.5)和(6.9)式所表示的誤差的變化有函數(shù)deltalin.m 、deltatan.m 、deltalog.m來解決。它們分別用于線性層、雙曲正切層和對數(shù)層。6 . 2. 3 誤差反向傳播的流程圖與圖形解釋誤差反向傳播過程實際上是通過計算輸出層的誤差ek,然后將其與輸出層激活函數(shù)的一階導數(shù)f2 '相乘來求得3 ki。由于隱含層中沒有直接給出目標矢量,所以利用輸出層的3ki鬥甲刀5即腳2麻反向傳遞來求出隱含層權(quán)值的變化量厶 w2 ki。然后計算,
12、并同樣通過將ei與該層激活函數(shù)的一階導數(shù) f1'相乘,而求得3 j,以此求出前層權(quán)值的變化量厶 w1 j。如果 前面還有隱含層,沿用上述同樣方法依此類推,一直將輸出誤差ek 一層一層的反推算到第一層為止。圖6 . 4給出了形象的解釋。k = I, 2. .it s2; i = l,2t si;圖6.4 誤差反向傳播法的圖形解釋BP算法要用到各層激活函數(shù)的一階導數(shù),所以要求其激活函數(shù)處處可微。對于對數(shù)型激活函數(shù)Ek其導數(shù)為:對于線性函數(shù)的導數(shù)有:ff (n) - nf =1所以對于具有一個 s型函數(shù)的隱含層,輸出層為線性函數(shù)的網(wǎng)絡(luò),有:/2 z =1 , /I z p(1t)6.3 BP
13、網(wǎng)絡(luò)的訓練過程為了訓練一個BP網(wǎng)絡(luò),需要計算網(wǎng)絡(luò)加權(quán)輸入矢量以及網(wǎng)絡(luò)輸出和誤差矢量,然后求得誤差平方和。當所訓練矢量的誤差平方和小于誤差目標,訓練則停止,否則在輸出層計算誤差變化,且采用反向傳播學習規(guī)則來調(diào)整權(quán)值,并重復此過程。當網(wǎng)絡(luò)完成訓練后, 對網(wǎng) 絡(luò)輸入一個不是訓練集合中的矢量,網(wǎng)絡(luò)將以泛化方式給出輸出結(jié)果。在動手編寫網(wǎng)絡(luò)的程序設(shè)計之前,必須首先根據(jù)具體的問題給出的輸入矢量P與目標矢量T,并選定所要設(shè)計的神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),其中包括以下內(nèi)容:網(wǎng)絡(luò)的層數(shù);每層的神經(jīng)元數(shù);每層的激活函數(shù)。由于BP網(wǎng)絡(luò)的層數(shù)較多且每層神經(jīng)元也較多,加上輸入矢量的組數(shù)龐大,往往使得采用一般的程序設(shè)計出現(xiàn)循環(huán)套循環(huán)的
14、復雜嵌套程序,從而使得程序編得既費時,又不易調(diào)通,浪費了大量的時間在編程中而無暇顧及如何設(shè)計出具有更好性能的網(wǎng)絡(luò)來。在這點上MatLAB工具箱充分展示出其神到之處。它的全部運算均采用矩陣形式,使其訓練既簡單, 又明了快速。為了能夠較好地掌握BP網(wǎng)絡(luò)的訓練過程,下面我們?nèi)杂脙蓪泳W(wǎng)絡(luò)為例來敘述BP網(wǎng)絡(luò)的訓練步驟。1)用小的隨機數(shù)對每一層的權(quán)值W和偏差B初始化,以保證網(wǎng)絡(luò)不被大的加權(quán)輸入飽和;并進行以下參數(shù)的設(shè)定或初始化:a)期望誤差最小值error_goal ;b)最大循環(huán)次數(shù) max_epoch ;c)修正權(quán)值的學習速率 1r,一般情況下 k = 0 . 010 . 7 ;d)從 1 開始的循環(huán)
15、訓練:for epoch = 1 : max_epoch ;2)計算網(wǎng)絡(luò)各層輸出矢量 A1和A2以及網(wǎng)絡(luò)誤差 E:A1 = tansig(W1*P , B1);A2 = purelin(W2*A1, B2);E= T-A ;3)計算各層反傳的誤差變化D2和D1并計算各層權(quán)值的修正值以及新權(quán)值:D2 = deltalin(A2 , E);D1 = deltatan(A1 , D2 , W2);dIWI , dBl = learnbp(P , D1 , Ir);dW2 , dB2 = 1earnbp(A1 , D2 , 1r);W1 = W1 十 dW1 ; B1 = B1 十 dBl ;W2 =
16、 W2 十 dW2 ; B2 = B2 十 dB2 ;4) 再次計算權(quán)值修正后誤差平方和:SSE= sumsqr(T-purelin(W2*tansig(W1*P, B1) , B2);5) 檢查SSE是否小于err_goal,若是,訓練結(jié)束;否則繼續(xù)。以上就是BP網(wǎng)絡(luò)在MATLAB中的訓練過程??梢钥闯銎涑绦蚴窍喈敽唵蚊髁说摹<词谷绱?,以上所有的學習規(guī)則與訓練的全過程,仍然可以用函數(shù)train bp.m 來完成。它的使用同樣只需要定義有關(guān)參數(shù):顯示間隔次數(shù),最大循環(huán)次數(shù),目標誤差,以及學習速率, 而調(diào)用后返回訓練后權(quán)值,循環(huán)總數(shù)和最終誤差:TP = disp_freq max_epoch e
17、rr_goal 1r;W, B, epochs , errors = trainbp(W , B,' F', P, T, TP);函數(shù)右端的F'為網(wǎng)絡(luò)的激活函數(shù)名稱。當網(wǎng)絡(luò)為兩層時,可從第一層開始,順序?qū)懗雒恳粚拥臋?quán)值初始值,激活函數(shù)名, 最后加上輸入、目標輸出以及 TP,即:W1 , B1 , W2 , B2 , W3 , B3, epochs , errors = trainbp(W1, B1 , ' F1' , W2 ,B2 , ' F2 ', W3 , B3 , ' F3 ', P , T , TP);神經(jīng)網(wǎng)絡(luò)工具
18、箱中提供了兩層和三層的BP訓練程序,其函數(shù)名是相同的,都是train bp.m ,用戶可以根據(jù)層數(shù)來選取不同的參數(shù)。例6 . 1用于函數(shù)逼近的BP網(wǎng)絡(luò)的設(shè)計。一個神經(jīng)網(wǎng)絡(luò)最強大的用處之一是在函數(shù)逼近上。 它可以用在諸如被控對象的模型辨識 中,即將過程看成一個黑箱子,通過測量其輸入輸出特性,然后利用所得實際過程的輸入輸 出數(shù)據(jù)訓練一個神經(jīng)網(wǎng)絡(luò),使其輸出對輸入的響應特性具有與被辨識過程相同的外部特性。下面給出一個典型的用來進行函數(shù)逼近的兩層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它具有一個雙曲正切型的激活函數(shù)隱含層,其輸出層采用線性函數(shù)。這里有21組單輸入矢量和相對應的目標矢量,試設(shè)計神經(jīng)網(wǎng)絡(luò)來實現(xiàn)這對數(shù)組的函數(shù)關(guān)系。P
19、=-1:0.1:1;T=-0.960.577-0.07290.3770.6410.660.4610.1336-0.201-0.434-0.5-0.393-0.16470.09880.30720.3960.34490.1816-0.0312-0.2183-0.3201;為此,我們選擇隱含層神經(jīng)元為5。較復雜的函數(shù)需要較多的隱含層神經(jīng)元,這可以根據(jù)試驗或經(jīng)驗來確定。圖6 . 5給出了目標矢量相對于輸入矢量的圖形。一般在測試中常取多于訓練用的輸入矢量來對所設(shè)計網(wǎng)絡(luò)的響應特性進行測試。在函數(shù)逼近的過程中,畫出網(wǎng)絡(luò)輸出相對于輸入矢量的圖形,可以觀察到網(wǎng)絡(luò)在訓練過程中的變化過程。為了達到這一目的, 我們定
20、義一個密度較大的第二個輸入矢量:P2=-1:0.025:1;首先對網(wǎng)絡(luò)進行初始化:R,Q = size(P) ;S2 , Q = size(T) ; S1 = 5 ;Wl , B1 = rands(S1 , R);W2 , B2 = rands(S2 , S1);通過測試,用輸入矢量P2來計算網(wǎng)絡(luò)的輸出:A2 = purelin(W2*tansig(W1*P2, B1), B2);可以畫出結(jié)果來觀察初始網(wǎng)絡(luò)是如何接近所期望訓練的輸入輸出關(guān)系,如圖6.6所示。其中,初始網(wǎng)絡(luò)的輸出值用實線給出。+卡+ + + + . + + + 亠10+ +辛+*+ + +十+一" 亠 亠 亠 - .
21、.圖6. 5 以目標矢量相對于輸入矢量的圖形圖6. 6 初始網(wǎng)絡(luò)的輸出曲線網(wǎng)絡(luò)訓練前的誤差平方和為11.9115,其初始值為:W10 = 0.77710.5336-0.38740.29800.0265;B10 = 0.1822 ;0.6920 ;-0.1758 ;0.6830 ;-0.4614;W20 = -0.16920.0746-0.0642-0.4256-0.6433;B20 = -0.6926;下面定義訓練參數(shù)并進行訓練disp_freq=10; max_epoch = 8000 ; error_goal = 0.02 ; lr = 0.01 ;TP=disp_freq max_epo
22、ch error_goal lr;train bp(W1 , B1 , ' tan sig ' W2, B2, purelin ' , P, T, TP)由此可以返回訓練后的權(quán)值、訓練次數(shù)和偏差。圖6.7至圖6.10給出了網(wǎng)絡(luò)輸出值隨訓練次數(shù)的增加而變化的過程。每個圖中標出了循環(huán)數(shù)目以及當時的誤差平方和。圖6.11給出了 6801次循環(huán)訓練后的最終網(wǎng)絡(luò)結(jié)果,網(wǎng)絡(luò)的誤差平方和落在所設(shè)定的0.02 以內(nèi)(0.0199968)。圖6.7訓練1000次的結(jié)果圖6.8訓練2000次的結(jié)果圖6.10 訓練5000次的結(jié)果圖6.11訓練結(jié)束后的網(wǎng)絡(luò)輸出與誤差結(jié)果因為反向傳播法采用的是
23、連續(xù)可微函數(shù),所以網(wǎng)絡(luò)對輸入/輸出的逼近是平滑的。另外,雖然網(wǎng)絡(luò)僅在輸入值-1 , -0.9 , -0.8,0.9 , 1.0處進行訓練,但對于其他輸入值的出現(xiàn), 例如,對訓練后的網(wǎng)絡(luò)輸入p = 0.33的值,網(wǎng)絡(luò)的輸出端可得其對應輸出為:A仁tansig(W1*0.33, B1);A2 = purelin(W2*AI , B2)A2=0.1659正如所希望的那樣, 這個值落在輸入矢量為 0.3和0.4所對應的輸出矢量之間。 網(wǎng)絡(luò)的 這個能力使其平滑地學習函數(shù),使網(wǎng)絡(luò)能夠合理地響應被訓練以外的輸入。這性質(zhì)稱為泛化性能。要注意的是,泛化性能只對被訓練的輸入/輸出對最大值范圍內(nèi)的數(shù)據(jù)有效,即網(wǎng)絡(luò)具
24、有內(nèi)插值特性,不具有外插值性。超出最大訓練值的輸入必將產(chǎn)生大的輸出誤差。6 . 4 BP網(wǎng)絡(luò)的設(shè)計在進行BP網(wǎng)絡(luò)的設(shè)計時,一般應從網(wǎng)絡(luò)的層數(shù)、每層中的神經(jīng)元個數(shù)和激活函數(shù)、初 始值以及學習速率等幾個方面來進行考慮。下面討論一下各自選取的原則。6. 4 . 1網(wǎng)絡(luò)的層數(shù)理論上已經(jīng)證明:具有偏差和至少一個s型隱含層加上一個線性輸出層的網(wǎng)絡(luò),能夠逼近任何有理函數(shù)。這實際上已經(jīng)給了我們一個基本的設(shè)計BP網(wǎng)絡(luò)的原則。增加層數(shù)主要可以更進一步的降低誤差,提高精度,但同時也使網(wǎng)絡(luò)復雜化,從而增加了網(wǎng)絡(luò)權(quán)值的訓練時間。而誤差精度的提高實際上也可以通過增加隱含層中的神經(jīng)元數(shù)目來獲得,其訓練效果也比增加層數(shù)更容易
25、觀察和調(diào)整。所以一般情況下,應優(yōu)先考慮增加隱含層中的神經(jīng)元數(shù)。另外還有一個問題:能不能僅用具有非線性激活函數(shù)的單層網(wǎng)絡(luò)來解決問題呢?結(jié)論是:沒有必要或效果不好。 因為能用單層非線性網(wǎng)絡(luò)完美解決的問題,用自適應線性網(wǎng)絡(luò)一定也能解決,而且自適應線性網(wǎng)絡(luò)的運算速度還更快。而對于只能用非線性函數(shù)解決的問題,單層精度又不夠高,也只有增加層數(shù)才能達到期望的結(jié)果。6. 4. 2隱含層的神經(jīng)元數(shù)網(wǎng)絡(luò)訓練精度的提高,可以通過采用一個隱含層,而增加其神經(jīng)元數(shù)的方法來獲得。這在結(jié)構(gòu)實現(xiàn)上,要比增加更多的隱含層要簡單得多。那么究競選取多少個隱合層節(jié)點才合適 ? 這在理論上并沒有一個明確的規(guī)定。在具體設(shè)計時,比較實際的
26、做法是通過對不同神經(jīng)元數(shù)進行訓練對比,然后適當?shù)丶由弦稽c余量。6 . 4 . 3初始權(quán)值的選取由于系統(tǒng)是非線性的,初始值對于學習是否達到局部最小、是否能夠收斂以及訓練時間的長短的關(guān)系很大。如果初始權(quán)值太大,使得加權(quán)后的輸入和n落在了 S型激活函數(shù)的飽和區(qū),從而導致其導數(shù) f' (s)非常小,而在計算權(quán)值修正公式中,因為占f' (n),當f' (n) t0時,則有0。這使得厶wijt0,從而使得調(diào)節(jié)過程幾乎停頓下來。所以,一般總是 希望經(jīng)過初始加權(quán)后的每個神經(jīng)元的輸出值都接近于零,這樣可以保證每個神經(jīng)元的權(quán)值都能夠在它們的S型激活函數(shù)變化最大之處進行調(diào)節(jié)。所以,一般取初始
27、權(quán)值在(1, 1)之間的隨機數(shù)。另外,為了防止上述現(xiàn)象的發(fā)生,威得羅等人在分析了兩層網(wǎng)絡(luò)是如何對一個函數(shù)進行訓練后,提出一種選定初始權(quán)值的策略:選擇權(quán)值的量級為;,其中si為第一層神經(jīng)元數(shù)目。利用他們的方法可以在較少的訓練次數(shù)下得到滿意的訓練結(jié)果。在MATLAB工具箱中可采用函數(shù) nwlog.m 或nwtan.m 來初始化隱含層權(quán)值 W1和B1。其方法僅需要 使用在第一隱含層的初始值的選取上,后面層的初始值仍然采用隨機取數(shù)。6 . 4. 4 學習速率學習速率決定每一次循環(huán)訓練中所產(chǎn)生的權(quán)值變化量。大的學習速率可能導致系統(tǒng)的不穩(wěn)定;但小的學習速率導致較長的訓練時間, 可能收斂很慢,不過能保證網(wǎng)絡(luò)
28、的誤差值不跳 出誤差表面的低谷而最終趨于最小誤差值。 所以在一般情況下,傾向于選取較小的學習速率 以保證系統(tǒng)的穩(wěn)定性。學習速率的選取范圍在 0. 01 0 . 8之間。和初始權(quán)值的選取過程一樣,在一個神經(jīng)網(wǎng)絡(luò)的設(shè)計過程中。網(wǎng)絡(luò)要經(jīng)過幾個不同的學習速率的訓練,通過觀察每一次訓練后的誤差平方和刀 e2的下降速率來判斷所選定的學習速 率是否合適。如果刀e2下降很快,則說明學習速率合適,若刀 e2出現(xiàn)振蕩現(xiàn)象,則說明學習 速率過大。對于每一個具體網(wǎng)絡(luò)都存在一個合適的學習速率。但對于較復雜網(wǎng)絡(luò),在誤差曲面的不同部位可能需要不同的學習速率。為了減少尋找學習速率的訓練次數(shù)以及訓練時間, 比較合適的方法是采用
29、變化的自適應學習速率,使網(wǎng)絡(luò)的訓練在不同的階段自動設(shè)置不同學習速率的大小。6 . 4. 5期望誤差的選取在設(shè)計網(wǎng)絡(luò)的訓練過程中, 期望誤差值也應當通過對比訓練后確定一個合適的值,這個所謂的“合適”,是相對于所需要的隱含層的節(jié)點數(shù)來確定,因為較小的期望誤差值是要靠 增加隱含層的節(jié)點, 以及訓練時間來獲得的。 一般情況下,作為對比, 可以同時對兩個不同 期望誤差值的網(wǎng)絡(luò)進行訓練,最后通過綜合因素的考慮來確定采用其中一個網(wǎng)絡(luò)。6 . 5限制與不足雖然反向傳播法得到廣泛的應用,但它也存在自身的限制與不足,其主要表現(xiàn)在于它的訓練過程的不確定上。具體說明如下:(1) 需要較長的訓練時間對于一些復雜的問題,
30、 BP算法可能要進行幾小時甚至更長的時間的訓練。這主要是由于學習速率太小所造成的。可采用變化的學習速率或自適應的學習速率來加以改進。(2) 完全不能訓練這主要表現(xiàn)在網(wǎng)絡(luò)出現(xiàn)的麻痹現(xiàn)象上。 在網(wǎng)絡(luò)的訓練過程中: 當其權(quán)值調(diào)得過大, 可能 使得所有的或大部分神經(jīng)元的加權(quán)總和 n偏大,這使得激活函數(shù)的輸入工作在 S型轉(zhuǎn)移函 數(shù)的飽和區(qū),從而導致其導數(shù)f' (n)非常小,從而使得對網(wǎng)絡(luò)權(quán)值的調(diào)節(jié)過程幾乎停頓下來。通常為了避免這種現(xiàn)象的發(fā)生,一是選取較小的初始權(quán)值,二是采用較小的學習速率, 但這又增加了訓練時間。(3) 局部極小值BP算法可以使網(wǎng)絡(luò)權(quán)值收斂到一個解,但它并不能保證所求為誤差超平面
31、的全局最小解,很可能是一個局部極小解。這是因為BP算法采用的是梯度下降法,訓練是從某一起始點沿誤差函數(shù)的斜面逐漸達到誤差的最小值。對于復雜的網(wǎng)絡(luò),其誤差函數(shù)為多維空間的曲面,就像一個碗,其碗底是最小值點。但是這個碗的表面是凹凸不平的,因而在對其訓練過 程中,可能陷入某一小谷區(qū),而這一小谷區(qū)產(chǎn)生的是一個局部極小值。由此點向各方向變化均使誤差增加,以致于使訓練無法逃出這一局部極小值。如果對訓練結(jié)果不滿意的話,通常可采用多層網(wǎng)絡(luò)和較多的神經(jīng)元,有可能得到更好的結(jié)果。然而,增加神經(jīng)元和層數(shù),同時增加了網(wǎng)絡(luò)的復雜性以及訓練的時間。在一定的情況 下可能是不明智的。 可代替的辦法是選用幾組不同的初姑條件對網(wǎng)
32、絡(luò)進行訓練,以從中挑選它們的最好結(jié)果。6 . 6 反向傳播法的改進方法由于在人工神經(jīng)網(wǎng)絡(luò)中,反向傳播法占據(jù)了非常重要的地位, 所以近十幾年來,許多研 究人員對其做了深入的研究, 提出了很多改進的方法。 主要目標是為了加快訓練速度, 避免 陷入局部極小值和改善其它能力。本節(jié)只討論前兩種性能的改進方法的有關(guān)內(nèi)容。6 . 6.1附加動量法附加動量法使網(wǎng)絡(luò)在修正其權(quán)值時,不僅考慮誤差在梯度上的作用,而且考慮在誤差曲面上變化趨勢的影響,其作用如同一個低通濾波器, 它允許網(wǎng)絡(luò)忽略網(wǎng)絡(luò)上的微小變化特性。 在沒有附加動量的作用下,網(wǎng)絡(luò)可能陷入淺的局部極小值,利用附加動量的作用則有可能滑 過這些極小值。該方法是
33、在反向傳播法的基礎(chǔ)上在每一個權(quán)值的變化上加上一項正比于前次權(quán)值變化 量的值,并根據(jù)反向傳播法來產(chǎn)生新的權(quán)值變化。帶有附加動量因子的權(quán)值調(diào)節(jié)公式為:(6.11 )+ 1) = (1 - mc)r|51pj + meAWy (fc) + 1) = (1 - mc)T|8(其中k為訓練次數(shù),me為動量因子,一般取 0. 95左右。附加動量法的實質(zhì)是將最后一次權(quán)值變化的影響,通過一個動量因子來傳遞。 當動量因1時,新的權(quán)值子取值為零時,權(quán)值的變化僅是根據(jù)梯度下降法產(chǎn)生;當動量因子取值為變化則是設(shè)置為最后一次權(quán)值的變化,而依梯度法產(chǎn)生的變化部分則被忽略掉了。以此方式,當增加了動量項后,促使權(quán)值的調(diào)節(jié)向著
34、誤差曲面底部的平均方向變化,當網(wǎng)絡(luò)權(quán)值進入誤差曲面底部的平坦區(qū)時,3 i將變得很小,于是, Wj(k+1) Awj (k),從而防止了 Wj=0的 出現(xiàn),有助于使網(wǎng)絡(luò)從誤差曲面的局部極小值中跳出。在MATLAB工具箱中,帶有動量因子的權(quán)值修正法是用函數(shù)learnbpm.m 來實現(xiàn)的。在使用此函數(shù)之前,先需將初始權(quán)值的變化置零:dW = 0*W ; dB=O*B ;然后,權(quán)值的變化可以根據(jù)當前層的輸入(比如p),誤差變化(D = deltalog.m ,deltatan.m , deltalin.m),學習速率Ir,以及動量因子 me求得:dW, dB = leambpm ( P, D, lr,
35、 me, dW, dB);函數(shù)learnbpm.m 返回一個新的權(quán)值變化和偏差變化矢量。當要訓練一個沒有偏差或具有固定偏差的網(wǎng)絡(luò)時,dB項可以從函數(shù)中消失,這樣,網(wǎng)絡(luò)的偏差則不被修正。根據(jù)附加動量法的設(shè)計原則,當修正的權(quán)值在誤差中導致太大的增長結(jié)果時,新的權(quán)值應被取消而不被采用, 并使動量作用停止下來, 以使網(wǎng)絡(luò)不進入較大誤差曲面;當新的誤差變化率對其舊值超過一個事先設(shè)定的最大誤差變化率時,也得取消所計算的權(quán)值變化。其最大誤差變化率可以是任何大于或等于1的值。典型的值取 1.04。所以在進行附加動量法的訓練程序設(shè)計時,必須加進條件判斷以正確使用其權(quán)值修正公式。訓練程序中對采用動量法的判斷條件為
36、:0 當 SSE(k) > SSE(k - 1廠 L040.95 當 SSE(k) < SSE(k - 1)(4.12)L me 其他所有這些判斷過程細節(jié)均包含在MATLAB工具箱中的函數(shù)trainbpm.m中,它可以訓 練一層直至三層的帶有附加動量因子的反向傳播網(wǎng)絡(luò)。以調(diào)用其他函數(shù)的同樣方式調(diào)用trainbpm.m ,只是對變量TP需提供較多的參數(shù)。下面是對單層網(wǎng)絡(luò)使用函數(shù)trainbpm.m的情形:W , B, epochs , errors = trainbpm(W , B,' F', P, T, TP);TP行矢量中的訓練函數(shù)是訓練過程中所需用到的參數(shù),它們
37、依次為:顯示結(jié)果的頻率disp_freq,期望的誤差目標error_goal ,學習速率1r,動量因子 me以及最大誤差變化率 err_ratio 。6 . 6. 2 誤差函數(shù)的改進前面定義的函數(shù)是一個二次函數(shù):當ak趨向1時,E趨向一個常數(shù),即處于 E的平坦區(qū),從而造成了不能完全訓練的麻痹現(xiàn)象。所以當一個網(wǎng)絡(luò)的誤差曲面存在著平坦區(qū)時,可以選用別的誤差函數(shù)f(tk, ak)來代替(t k-a k)2的形式,只要其函數(shù)在 ak=t k時能夠達到最小值即可。包穆(Baum)等人于1988年提出一種誤差函數(shù)為:E= E + +f(l-以)噸】*21 +21- ak該式同樣滿足當ak=t k時,E=
38、0,不過,當ak t土 1時,該式發(fā)散。所以能夠克服麻痹現(xiàn)象。如果采用雙曲正切函數(shù)來作為激活函數(shù),即取:f(n) = tanh(rt)=1- e 2711 + e? 2n(en+e-rt)2求誤差函數(shù)對輸出層的變量 n求一階導數(shù)并同時考慮關(guān)系式:"- fl if* 占(1 + 2.1 n哄(l* r* /I J37-(1 + 4)a)+ T(1-心 :(1- a去 2l + tk (l + ak)221- f* ak)2-rk 上=&舟與常規(guī)的誤差函數(shù)的情況3ij=f ' (n)(tk-ak)相比較,其中的f' (n)項消失了。這樣,當 n增大,進入激活函數(shù)的
39、平坦區(qū),使f' (n) t0時,不會產(chǎn)生不能完全訓練的麻痹現(xiàn)象。但由于失去了 f' (n)對Aw的控制作用,過大的厶w又有可能導致網(wǎng)絡(luò)過調(diào)或振蕩。為了解決這個問題,1989年,范爾曼(S.Fahlman)提出一種折中的方案,即取3 k = f' (n)+0.1(t k-ak),該式一方面恢復了f' (n)的某些影響,另一方面當|n|變大時,仍能保持3 k有一定的大小,從而避免了麻痹現(xiàn)象的發(fā)生。6 . 6. 3 自適應學習速率對于一個特定的問題,要選擇適當?shù)膶W習速率不是一件容易的事情。 通常是憑經(jīng)驗或?qū)?驗獲取,但即使這樣,對訓練開始初期功效較好的學習速率,不見得對后來的訓練合適。為了解決這一問題,人們自然會想到在訓練過程中, 自動調(diào)整學習速率。 通常調(diào)節(jié)學習速率的 準則是:檢查權(quán)值的修正值是否真正降低了誤差函數(shù), 如果確實如此,則說明所選取的學習 速率值小了,可以對其增加一個量; 若不是這樣,而產(chǎn)生了過調(diào),那么就應該減小學習速率 的值。下式給出了一種自適應學習速率的調(diào)整公式:L05n(Jt) SSE(k ¥1) < SSE(k)r(k +1)=J 0.7r|(fc) SSE(k + 1)> 1.04 SSE(k)(町其他初始學習速率n (0)的選取范圍可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福州墨爾本理工職業(yè)學院《企業(yè)資源規(guī)劃系統(tǒng)與應用》2023-2024學年第二學期期末試卷
- 鄭州大學《機器人機械系統(tǒng)》2023-2024學年第二學期期末試卷
- 衡水學院《影視文學研究》2023-2024學年第二學期期末試卷
- 廂式改裝車、特種車輛項目效益評估報告
- 羅定職業(yè)技術(shù)學院《別墅建筑空間設(shè)計》2023-2024學年第二學期期末試卷
- 《 峨日朵雪峰之側(cè)》教學設(shè)計 2024-2025學年統(tǒng)編版高中語文必修上冊
- 揚州大學廣陵學院《機器學習實驗》2023-2024學年第二學期期末試卷
- 昆玉職業(yè)技術(shù)學院《工業(yè)機器人基礎(chǔ)與實踐》2023-2024學年第二學期期末試卷
- 浙江外國語學院《水產(chǎn)養(yǎng)殖學創(chuàng)新創(chuàng)業(yè)教育》2023-2024學年第二學期期末試卷
- 【化學】認識有機化合物 第一課時教學設(shè)計 2024-2025學年高一下學期化學人教版(2019)必修第二冊
- 中國煙草總公司鄭州煙草研究院筆試試題2023
- 建設(shè)法規(guī)(全套課件)
- 心衰患者的容量管理中國專家共識-共識解讀
- 個人投資收款收據(jù)
- H3C全系列產(chǎn)品visio圖標庫
- 新生兒常見儀器的使用與維護 課件
- 工藝能力分析報告
- 《給校園植物掛牌》課件
- 氣道高反應性教學演示課件
- 健身房眾籌方案
- 護理帶教匯報課件
評論
0/150
提交評論