資源描述:
《bp神經(jīng)網(wǎng)絡(luò)算法原理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。
1、BP網(wǎng)絡(luò)模型處理信息的基本原理是:輸入信號Xi通過中間節(jié)點(隱層點)作用于輸出節(jié)點,經(jīng)過非線形變換,產(chǎn)生輸出信號Yk,網(wǎng)絡(luò)訓練的每個樣本包括輸入向量X和期望輸出量t,網(wǎng)絡(luò)輸出值Y與期望輸出值t之間的偏差,通過調(diào)整輸入節(jié)點與隱層節(jié)點的聯(lián)接強度取值Wij和隱層節(jié)點與輸出節(jié)點之間的聯(lián)接強度Tjk以及閾值,使誤差沿梯度方向下降,經(jīng)過反復(fù)學習訓練,確定與最小誤差相對應(yīng)的網(wǎng)絡(luò)參數(shù)(權(quán)值和閾值),訓練即告停止。此時經(jīng)過訓練的神經(jīng)網(wǎng)絡(luò)即能對類似樣本的輸入信息,自行處理輸出誤差最小的經(jīng)過非線形轉(zhuǎn)換的信息。一BP神經(jīng)網(wǎng)絡(luò)模型BP網(wǎng)絡(luò)模型包
2、括其輸入輸出模型、作用函數(shù)模型、誤差計算模型和自學習模型。(1)節(jié)點輸出模型隱節(jié)點輸出模型:Oj=f(∑Wij×Xi-qj)???(1)輸出節(jié)點輸出模型:Yk=f(∑Tjk×Oj-qk)(2)f-非線形作用函數(shù);q-神經(jīng)單元閾值。(2)作用函數(shù)模型作用函數(shù)是反映下層輸入對上層節(jié)點刺激脈沖強度的函數(shù)又稱刺激函數(shù),一般取為(0,1)內(nèi)連續(xù)取值Sigmoid函數(shù):???????????????????????f(x)=1/(1+e-x)??????????????????(3)(3)誤差計算模型誤差計算模型是反映神經(jīng)網(wǎng)絡(luò)期望
3、輸出與計算輸出之間誤差大小的函數(shù):???????????????????Ep=1/2×∑(tpi-Opi)2???????????????(4)tpi-i節(jié)點的期望輸出值;Opi-i節(jié)點計算輸出值。(4)自學習模型神經(jīng)網(wǎng)絡(luò)的學習過程,即連接下層節(jié)點和上層節(jié)點之間的權(quán)重拒陣Wij的設(shè)定和誤差修正過程。BP網(wǎng)絡(luò)有師學習方式-需要設(shè)定期望值和無師學習方式-只需輸入模式之分。自學習模型為??????????????????????△Wij(n+1)=h×Фi×Oj+a×△Wij(n)(5)h-學習因子;Фi-輸出節(jié)點i的計算誤
4、差;Oj-輸出節(jié)點j的計算輸出;a-動量因子。二BP網(wǎng)絡(luò)模型的缺陷分析及優(yōu)化策略(1)學習因子h的優(yōu)化采用變步長法根據(jù)輸出誤差大小自動調(diào)整學習因子,來減少迭代次數(shù)和加快收斂速度。h=h+a×(Ep(n)-Ep(n-1))/Ep(n)a為調(diào)整步長,0~1之間取值(6)(2)隱層節(jié)點數(shù)的優(yōu)化????隱節(jié)點數(shù)的多少對網(wǎng)絡(luò)性能的影響較大,當隱節(jié)點數(shù)太多時,會導致網(wǎng)絡(luò)學習時間過長,甚至不能收斂;而當隱節(jié)點數(shù)過小時,網(wǎng)絡(luò)的容錯能力差。利用逐步回歸分析法并進行參數(shù)的顯著性檢驗來動態(tài)刪除一些線形相關(guān)的隱節(jié)點,節(jié)點刪除標準:當由該節(jié)點出
5、發(fā)指向下一層節(jié)點的所有權(quán)值和閾值均落于死區(qū)(通常取±0.1、±0.05等區(qū)間)之中,則該節(jié)點可刪除。最佳隱節(jié)點數(shù)L可參考下面公式計算:L=(m+n)1/2+c(7)m-輸入節(jié)點數(shù);n-輸出節(jié)點數(shù);c-介于1~10的常數(shù)。(3)輸入和輸出神經(jīng)元的確定利用多元回歸分析法對神經(jīng)網(wǎng)絡(luò)的輸入?yún)?shù)進行處理,刪除相關(guān)性強的輸入?yún)?shù),來減少輸入節(jié)點數(shù)。(4)算法優(yōu)化由于BP算法采用的是剃度下降法,因而易陷于局部最小并且訓練時間較長。用基于生物免疫機制地既能全局搜索又能避免未成熟收斂的免疫遺傳算法IGA取代傳統(tǒng)BP算法來克服此缺點。該程
6、序?qū)崿F(xiàn)神經(jīng)網(wǎng)絡(luò)的BP算法,輸入節(jié)點數(shù),輸出節(jié)點數(shù),隱層數(shù),隱層節(jié)點數(shù)任意,由用戶決定。其中隱層數(shù)指的是總共曾數(shù)包含輸出層,比如說異或算法為2層,第一層節(jié)點數(shù)為2,第二層也即輸出層節(jié)點數(shù)為1,輸入點數(shù)為2。但是該程序?qū)Ξ惢蛩惴▽崿F(xiàn)并不理想,對多層多節(jié)點的神經(jīng)網(wǎng)絡(luò)有較好的結(jié)果。#include"iostream.h"#include#include#include#include#include"stdio.h"#defineMAXCOUNT1e5//迭
7、代訓練次數(shù)上限//精度0.001的隨機浮點數(shù),范圍在-0.5——0.5floatrandf(){return(float)((rand()%1001)*0.001f-0.5);}//高斯隨機數(shù)產(chǎn)生函數(shù)doublegaussrand(){??staticdoubleV1,V2,S;????staticintphase=0;????doubleX;????if(phase==0){??do{?????doubleU1=(double)rand()/RAND_MAX;?????doubleU2=(double)rand()/
8、RAND_MAX;?????V1=2*U1-1;?????V2=2*U2-1;?????S=V1*V1+V2*V2;??}while(S>=1
9、
10、S==0);??X=V1*sqrt(-2*log(S)/S);????}else??X=V2*sqrt(-2*log(S)/S);????phase=1-phase;????return