BP神經(jīng)網(wǎng)絡(luò)逼近非線性函數(shù)_第1頁
BP神經(jīng)網(wǎng)絡(luò)逼近非線性函數(shù)_第2頁
BP神經(jīng)網(wǎng)絡(luò)逼近非線性函數(shù)_第3頁
BP神經(jīng)網(wǎng)絡(luò)逼近非線性函數(shù)_第4頁
BP神經(jīng)網(wǎng)絡(luò)逼近非線性函數(shù)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、應(yīng)用BP神經(jīng)網(wǎng)絡(luò)逼近非線性函一、實驗要求1、逼近的非線性函數(shù)選取為 y=sin(x i)+cos(x 2),其中有兩個自變量即 xi,X2,一個因變 量即v。2、逼近誤差5%即:應(yīng)用測試數(shù)據(jù)對網(wǎng)絡(luò)進(jìn)行測試時,神經(jīng)網(wǎng)絡(luò)的輸出與期望值的最 大誤差的絕對值小于期望值的5%3、學(xué)習(xí)方法為經(jīng)典的 BP算法或改進(jìn)形式的 BP算法,鼓勵采用改進(jìn)形式的 BP算法。4、不允許采用 matlab中現(xiàn)有的關(guān)于神經(jīng)網(wǎng)絡(luò)建立、學(xué)習(xí)、仿真的任何函數(shù)及命令。二、實驗基本原理神經(jīng)網(wǎng)絡(luò)概述BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)的主要特點是信號前向傳播,誤差反向傳播。在前向傳遞中,輸入信號從輸入層經(jīng)隱含層逐層處理,直至輸出層

2、。每一層的神經(jīng)元狀態(tài)只影響下一層神經(jīng)元狀態(tài)。 如果輸出層得不到期望輸出,則轉(zhuǎn)入反向傳播,根據(jù)預(yù)判誤 差調(diào)整網(wǎng)絡(luò)權(quán)值和閾值,從而使 BP神經(jīng)網(wǎng)絡(luò)預(yù)測輸出不斷逼近期望輸出。 BP神經(jīng)網(wǎng)絡(luò)的拓 撲結(jié)構(gòu)如圖所示。BP神經(jīng)網(wǎng)絡(luò)預(yù)測前首先要訓(xùn)練網(wǎng)絡(luò),通過訓(xùn)練使網(wǎng)絡(luò)具有聯(lián)想記憶和預(yù)測能力。BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程包括以下幾個步驟。步驟1:網(wǎng)絡(luò)初始化。根據(jù)系統(tǒng)輸入輸出序列(X,Y)確定網(wǎng)絡(luò)輸入層節(jié)點數(shù) n、隱含層節(jié) 點數(shù)l、輸出層節(jié)點數(shù) m,初始化輸入層、隱含層和輸出層神經(jīng)元之間的連接權(quán)值co j , Wjk, 初始化隱含層閾值 a,輸出層閾值b,給定學(xué)習(xí)速率和神經(jīng)元激勵函數(shù)。步驟2:隱含層輸出計算。根據(jù)輸入變

3、量X,輸入層和隱含層間連接權(quán)值coij以及隱含層閾值a,計算隱含層輸出 HonHj f(jXi aj) j=1,2, .,Ii 1般選取為式中,I為隱含層節(jié)點數(shù),f為隱含層激勵函數(shù),該函數(shù)有多種形式,f(x)步驟3:輸出層輸出計算。根據(jù)隱含層輸出H,連接權(quán)值co jk和閾值b,計算BP神經(jīng)網(wǎng)絡(luò)預(yù)測輸出O。jk bkk=1,2,mlOk Hjj 1步驟4:誤差計算。根據(jù)網(wǎng)絡(luò)預(yù)測輸出O和期望輸出Y,計算網(wǎng)絡(luò)預(yù)測誤差e。步驟5:權(quán)值更新。步驟6:閾值更新。ekYkOk根據(jù)網(wǎng)絡(luò)預(yù)測誤差ij Hj(1jk根據(jù)網(wǎng)絡(luò)預(yù)測誤差aj aj Hj(1bkbkekk=1,2,me更新網(wǎng)絡(luò)連接權(quán)值3 jmHj)x(i

4、)jkeki=1,2,k 1j=1,2,e更新網(wǎng)絡(luò)節(jié)點閾值 amH j )jk ekk 1k=1,2,CO jk,n j=1,2,l k=1,2,boj=1,2,,l,mJ,m2。步驟7:判斷算法迭代是否結(jié)束,若沒有結(jié)束,返回步驟附加動量法經(jīng)典BP神經(jīng)網(wǎng)絡(luò)采用梯度修正法作為權(quán)值和閾值的學(xué)習(xí)算法,從網(wǎng)絡(luò)預(yù)測誤差的負(fù)梯 度方向修正權(quán)值和閾值,沒有考慮以前經(jīng)驗的積累,學(xué)習(xí)過程收斂緩慢。對于這個問題,可以采用附加動量法來解決,帶附加動量的算法學(xué)習(xí)公式為(k) (k 1)(k) a (k 1) (k 2)式中,co (k) , co (k-1) , co (k-2)分別為k, k-1 , k-2時刻的權(quán)

5、值;a為動量學(xué)習(xí)率,一般 取值為。程序流程圖開好三、程序簡述本次實驗選擇逼近的非線性函數(shù)為y=sin(x i)+cos(x 2)。程序首先創(chuàng)建用于神將網(wǎng)路訓(xùn)練的樣本數(shù)據(jù),取在區(qū)間,之間均勻分布的數(shù)值,由于有兩個自變量,所以一共產(chǎn)生361組輸入輸出數(shù)據(jù)。其次確定神經(jīng)網(wǎng)絡(luò)的訓(xùn)練參數(shù),比如隱含層節(jié)點數(shù)、學(xué)習(xí)速率、學(xué)習(xí)目標(biāo)、 隱含層和輸出層的權(quán)值閾值等,其中隱含層節(jié)點數(shù)在參考相關(guān)資料后確定為9,這樣不僅在訓(xùn)練結(jié)束后可以獲得較小的誤差,而且也不會使訓(xùn)練次數(shù)過大從而耗時較長;程序中隱含層和輸出層的權(quán)值閾值是采取隨機(jī)產(chǎn)生的方法獲得的,并且之后的修改方法采用了附加動量法,減少訓(xùn)練次數(shù)加快網(wǎng)絡(luò)收斂。由于 mat

6、lab可以采用矩陣運算的形式,所以輸入輸出數(shù)據(jù)和 網(wǎng)絡(luò)權(quán)值閾值構(gòu)建生成相應(yīng)的矩陣,這樣可以在全部數(shù)據(jù)遍歷一次之后再進(jìn)行權(quán)值閾值修改,同樣可以縮短網(wǎng)絡(luò)訓(xùn)練時間。最后,根據(jù)修正后的權(quán)值閾值就輸入數(shù)據(jù)預(yù)測網(wǎng)路輸出,和期望輸出數(shù)據(jù)進(jìn)行比較,計算輸出誤差,直至訓(xùn)練結(jié)束根據(jù)訓(xùn)練結(jié)果畫出相應(yīng)圖像。最初程序中神經(jīng)網(wǎng)絡(luò)訓(xùn)練只有當(dāng)最大預(yù)測誤差小于5%之后才停止,實際情況中,當(dāng)輸出接近0時只要有微小的變化就會產(chǎn)生較大的誤差,這樣不僅導(dǎo)致網(wǎng)絡(luò)訓(xùn)練次數(shù)增加耗時長,還會使網(wǎng)絡(luò)收斂速度變慢;在經(jīng)過查詢相關(guān)資料之后,訓(xùn)練結(jié)束條件除了最大預(yù)測誤差小于 5詼外,還增加了目標(biāo)函數(shù),目標(biāo)函數(shù)是取所有誤差的平方和,當(dāng)目標(biāo)函數(shù)的計算值小

7、于預(yù)期目標(biāo)時同樣也會停止訓(xùn)練,此時默認(rèn)訓(xùn)練已達(dá)目標(biāo)。 在實際檢驗過程中發(fā)現(xiàn),加入目標(biāo)函數(shù)后不僅可以有效地改善收斂速度慢耗時長的問題,同時各個坐標(biāo)點的預(yù)測誤差也在期望值之內(nèi),達(dá)到了實驗要求。四、實驗結(jié)果由于程序中權(quán)值閾值的取值是隨機(jī)的,所以取其中一次的結(jié)果展示。最大訓(xùn)練次數(shù)為 15329,訓(xùn)練結(jié)束后的最大誤差為。File Edit Mew Insert T a altDf sktcip Wlrdi&w H*lpu Tk : 、*”?與 a * cl 3 I o圖1非線性函數(shù)圖像圖2網(wǎng)絡(luò)圖XI Edit View In&erl Tod 弓 DeskTop wlrdcwv 口_ LZ? dl 捻 I

8、 區(qū) 、。p | Hz) n圖 3 誤差曲線程序:clcclear%創(chuàng)建輸入數(shù)據(jù),產(chǎn)生361 組輸入輸出數(shù)據(jù)row = 1;for i=:for j=:input(row,1) = i;input(row,2) = j;output(row,1) = sin(input(row,1) + cos(input(row,2);row = row+1;endend%神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)inputnum = 2;%輸入層節(jié)點數(shù)hiddennum = 9;%隱含層節(jié)點數(shù)outputnum = 1;%輸出層節(jié)點數(shù)%網(wǎng)絡(luò)參數(shù)learnSpeed = ;%學(xué)習(xí)率learnGoal = ; % 目標(biāo)%隱含層及輸出層的權(quán)

9、值和閾值w1 = *rand(hiddennum,inputnum);b1 = *rand(hiddennum,1);w2 = *rand(outputnum,hiddennum);b2 = *rand(outputnum,1);%取訓(xùn)練數(shù)據(jù)和預(yù)測數(shù)據(jù)%采用全部樣本遍歷一次后再進(jìn)行權(quán)值閾值調(diào)整%調(diào)整采用附加動量法, 加快收斂速度,減少遍歷次數(shù)input_train = input ones(361,1);output_train = output;HH = w1 b1;OO = w2 b2;collectHH = ;collectOO = ;卿訓(xùn)練數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)aimJ = 0;max_

10、rate=100; % 初始化最大樣本誤差trainNum = 0; % 初始化訓(xùn)練次數(shù)while(max_ratelearnGoal)collectHiddenOut = logsig(HH*input_train); %計算隱含層輸出hiddenOut = collectHiddenOut ones(361,1);networkOut = OO*hiddenOut; % 計算網(wǎng)絡(luò)輸出error = output_train-networkOut; %計算誤差% 利用目標(biāo)函數(shù),判斷是否結(jié)束循環(huán)aimJ = sumsqr(error)if (aimJlearnGoal)break;end% 統(tǒng)

11、計訓(xùn)練次數(shù)trainNum = trainNum+1;% 權(quán)值閾值調(diào)整因子factor2 = error;factor1 = w2*factor2.*collectHiddenOut.*(1-collectHiddenOut);% 調(diào)整權(quán)值和閾值調(diào)節(jié)量dHH = factor1*input_train;dOO = factor2*hiddenOut;% 權(quán)值閾值調(diào)整if (trainNum3)HH = HH + learnSpeed*dHH;OO = OO + learnSpeed*dOO;collectHH = collectHH HH;collectOO = collectOO OO;w1

12、 = HH(:,1:inputnum);b1 = HH(:,1+inputnum);w2 = OO(:,1:hiddennum);b2 = OO(:,1+hiddennum);else% 附加動量法HH=HH+learnSpeed*dHH+*(collectHH(:,(trainNum-2)*3+1):(trainNum-2)*3+3)-collectHH(:,(trainNum-3)* 3+1):(trainNum-3)*3+3);OO=OO+learnSpeed*dOO+*(collectOO(1,(trainNum-2)*10+1):(trainNum-2)*10+10)-collect

13、OO(1,(trainNum- 3)*10+1):(trainNum-3)*10+10);collectHH = collectHH HH;collectOO = collectOO OO;w1 = HH(:,1:inputnum);b1 = HH(:,1+inputnum);w2 = OO(:,1:hiddennum);b2 = OO(:,1+hiddennum);end% 訓(xùn)練數(shù)據(jù)測試,計算最大誤差率hiddenOut_test = logsig(HH*input_train); %參數(shù)修改后的隱含層輸出network_test = w2*hiddenOut_test+repmat(b2,

14、1,361); %預(yù)測結(jié)果rate = (output_train-network_test)./output_train; %誤差率max_rate = max(abs(rate);%誤差率最大值end%顯示測試結(jié)果%標(biāo)準(zhǔn)函數(shù)圖像y=sin(x1)+cos(x2)x,y = meshgrid:,:;z = sin(x)+cos(y);mesh(x,y,z)xlabel(x1);ylabel(x2);zlabel(y);%網(wǎng)絡(luò)圖t1=linspace(min(input(:,1),max(input(:,1);t2=linspace(min(input(:,2),max(input(:,2);X,Y=meshgrid(t1,t2);Z=griddata(input(:,1),input(:,2),network_test,X,Y);mesh(X,Y,Z)xlabel(Input1);ylabel(Input2);zlab

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論