BP神經(jīng)網(wǎng)絡(luò)預(yù)測理論及程序-學(xué)習(xí)_第1頁
BP神經(jīng)網(wǎng)絡(luò)預(yù)測理論及程序-學(xué)習(xí)_第2頁
BP神經(jīng)網(wǎng)絡(luò)預(yù)測理論及程序-學(xué)習(xí)_第3頁
BP神經(jīng)網(wǎng)絡(luò)預(yù)測理論及程序-學(xué)習(xí)_第4頁
BP神經(jīng)網(wǎng)絡(luò)預(yù)測理論及程序-學(xué)習(xí)_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

12、智能算法

12.1人工神經(jīng)網(wǎng)絡(luò)1、人工神經(jīng)網(wǎng)絡(luò)的原理假如我們只知道一些輸入和相應(yīng)的輸出,但是不清楚這些輸入和輸出之間的具體關(guān)系是什么,我們可以把輸入和輸出之間的未知過程看成是一個“網(wǎng)絡(luò)”,通過不斷的網(wǎng)絡(luò)輸入和相應(yīng)的輸出進(jìn)行“訓(xùn)練”(學(xué)習(xí)),網(wǎng)絡(luò)根據(jù)輸入和對應(yīng)輸出不斷調(diào)整連接網(wǎng)絡(luò)的權(quán)值,直到滿足我們的目標(biāo)要求,這樣就訓(xùn)練好了一個神經(jīng)網(wǎng)絡(luò),當(dāng)我們給定一個輸入,網(wǎng)絡(luò)就會計算出一個相應(yīng)的輸出。2、網(wǎng)絡(luò)結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)一般有一個輸入層,多個隱層,和一個輸出層。隱層并非越多越好。如下圖所示:12.2Matlab神經(jīng)網(wǎng)絡(luò)工具箱MATLAB神經(jīng)網(wǎng)絡(luò)工具箱幾乎涵蓋了所有的神經(jīng)網(wǎng)絡(luò)的基本常用模型,如感知器、BP網(wǎng)絡(luò)和RBFNN等。它由nftool,nctool,nprtool,nntraintool和nntool組成。主要應(yīng)用于函數(shù)逼近和數(shù)據(jù)擬合、信息處理和預(yù)測、神經(jīng)網(wǎng)絡(luò)控制和故障診斷等領(lǐng)域。在實際應(yīng)用中,針對具體的問題,首先需要分析利用神經(jīng)網(wǎng)絡(luò)來解決問題的性質(zhì),然后依據(jù)問題的特點,提取訓(xùn)練和測試數(shù)據(jù)樣本,確定網(wǎng)絡(luò)模型,最后通過對網(wǎng)絡(luò)進(jìn)行訓(xùn)練、仿真等檢驗網(wǎng)絡(luò)的性能是否滿足要求。具體過程如下:(1)確定信息表達(dá)的方式,主要包括數(shù)據(jù)樣本已知;數(shù)據(jù)樣本之間相互關(guān)系不明確;輸入/輸出模式為連續(xù)的或離散的;數(shù)據(jù)樣本的預(yù)處理;將數(shù)據(jù)樣本分成訓(xùn)練樣本和測試樣本。(2)網(wǎng)絡(luò)模型的確定。確定選擇何種神經(jīng)網(wǎng)絡(luò)以及網(wǎng)絡(luò)層數(shù)。(3)網(wǎng)絡(luò)參數(shù)的選擇,如輸入輸出神經(jīng)元個數(shù)的確定,隱層神經(jīng)元的個數(shù)等。(4)訓(xùn)練模式的確定,包括選擇合理的訓(xùn)練算法、確定合適的訓(xùn)練步數(shù)、指定適當(dāng)?shù)挠?xùn)練目標(biāo)誤差等(5)網(wǎng)絡(luò)測試,選擇合理的樣本對網(wǎng)絡(luò)進(jìn)行測試。簡單來講就是三個步驟:建立網(wǎng)絡(luò)(newXX)—訓(xùn)練網(wǎng)絡(luò)(trainXX)—仿真網(wǎng)絡(luò)(sim)12.3BP神經(jīng)網(wǎng)絡(luò)的Matlab相關(guān)函數(shù)BP算法的基本思想:學(xué)習(xí)過程由信號的正向傳播與誤差的反向傳播兩個過程組成。正向傳播時,輸入樣本從輸入層傳入,經(jīng)各隱層逐層處理后,傳向輸出層。若輸出層的實際輸出與期望輸出(教師信號)不符,則轉(zhuǎn)入誤差的反向傳播階段。誤差反傳是將輸出誤差以某種形式通過隱層向輸入層逐層反傳,并將誤差分?jǐn)偨o各層的所有單元,從而獲得各層單元的誤差信號,此誤差信號作為修正各單元權(quán)值的依據(jù)。權(quán)值不斷調(diào)整的過程就是神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)訓(xùn)練過程。BP神經(jīng)網(wǎng)絡(luò)的設(shè)計內(nèi)容:(1)網(wǎng)絡(luò)層數(shù)的確定。模式樣本較少時,選用較少的隱層節(jié)點,一般采用兩層BP網(wǎng)絡(luò);當(dāng)模式樣本較多時,減少網(wǎng)絡(luò)規(guī)模,可以增加一個隱層。(2)輸入層節(jié)點數(shù)的確定。輸入層起到緩沖存儲器的作用,其節(jié)點個數(shù)取決于輸入矢量的維數(shù)。(3)輸出層節(jié)點數(shù)的確定。取決于兩個方面,輸出數(shù)據(jù)類型和表示該類型所需的數(shù)據(jù)大小。當(dāng)BP網(wǎng)絡(luò)用語模式分類時,以二進(jìn)制形式來表示不同模式的輸出結(jié)果,則輸出層的節(jié)點數(shù)可根據(jù)分類模式數(shù)來確定。若待分類模式的總數(shù)為m,則有兩種方法確定輸出層的節(jié)點數(shù):1)節(jié)點數(shù)即待分類模式總數(shù)m,輸出為對應(yīng)的第j個分量為1,其余為0;2)節(jié)點數(shù)取經(jīng)驗值log2m,對應(yīng)m種輸出模式的二進(jìn)制編碼。(4)隱層節(jié)點數(shù)的確定。一般通過反復(fù)測試獲取較好的節(jié)點數(shù)。對于模式識別/分類的BP網(wǎng)絡(luò),根據(jù)經(jīng)驗公式n=n1+n0+a,n1為輸入節(jié)點數(shù),n0為輸出節(jié)點數(shù),(5)傳輸函數(shù)。一般采用S型函數(shù)fx=11+6)訓(xùn)練方法及其參數(shù)選擇。Matlab工具箱提供了多種訓(xùn)練函數(shù)可供選擇。Matlab工具箱中與BP神經(jīng)網(wǎng)絡(luò)相關(guān)的函數(shù):(1)創(chuàng)建一個BP網(wǎng)絡(luò)的函數(shù)newff,調(diào)用形式為:net=newff();在對話框中創(chuàng)建一個BP網(wǎng)絡(luò)net=newff(PR,[S1S2...SN],{TF1TF2...TFN},BTF,BLF,PF);PR:由每組輸入(共R組)元素的最大值和最小值組成的R×2維德矩陣;Si:第i層的長度,共有N層;TFi:第i層的傳遞函數(shù),默認(rèn)為tansig;BTF:BP網(wǎng)絡(luò)的訓(xùn)練函數(shù),默認(rèn)為trainlm;BLF:權(quán)值和閾值的學(xué)習(xí)算法,默認(rèn)為learngdm;PF網(wǎng)絡(luò)的性能函數(shù),默認(rèn)為mse.(2)傳遞函數(shù)有l(wèi)ogsig,dlogsig(導(dǎo)函數(shù)),tansig(雙曲正切),dtansgi,purelin,dpurelin等(3)學(xué)習(xí)函數(shù)有l(wèi)earngd(梯度下降權(quán)值/閾值學(xué)習(xí)函數(shù)),learngdm(梯度下降動量學(xué)習(xí)函數(shù))等(4)訓(xùn)練函數(shù)有trainbfg(BFGS準(zhǔn)牛頓算法),traingd,traingdm等;(5)性能函數(shù)有mse,msereg,mae等(6)顯示函數(shù)有plotperf,plotes(誤差曲面),plotep,errsurf等.舉例1:>>p=[12;-11;-21;-40]';>>t=[0.20.80.80.2];>>net=newff([-11;-11],[51],{'logsig','logsig'},'traingd');>>net.trainParam.goal=0.001;>>net.trainParam.epochs=5000;>>[net,tr]=train(net,p,t);>>saveBPnet1net;>>loadBPnet1net;>>p1=[12;-11;-21;-40]';>>a2=sim(net,p1);>>a2=a2>0.5a2=0110另一新版本程序:>>p=[12;-11;-21;-40]';>>t=[0.20.80.80.2];>>feedforwardnet(5,'traingd');>>>>net=newff([-11;-11],[51],{'logsig','logsig'},'traingd');>>net.trainParam.goal=0.001;>>net.trainParam.epochs=5000;>>[net,tr]=train(net,p,t);>>saveBPnet1net;>>loadBPnet1net;>>p1=[12;-11;-21;-40]';>>a2=sim(net,p1);>>a2=a2>0.5a2=1110程序解釋:Matlab程序如下:%定義輸入向量和目標(biāo)向量p=[12;-11;-21;-40]';t=[0.20.80.80.2];%創(chuàng)建BP網(wǎng)絡(luò)并定義訓(xùn)練函數(shù)及參數(shù)net=newff([-11;-11],[51],{'logsig','logsig'},'traingd');net.trainParam.goal=0.001;net.trainParam.epochs=5000;%訓(xùn)練神經(jīng)網(wǎng)絡(luò)[net,tr]=train(net,p,t);125saveBPnet1net;%保存網(wǎng)絡(luò)%仿真網(wǎng)絡(luò)loadBPnet1net;%加載網(wǎng)絡(luò)p1=[12;-11;-21;-40]';a2=sim(net,p1);a2=a2>0.5注:在新版本的Matlab中,創(chuàng)建前饋BP神經(jīng)網(wǎng)絡(luò)的函數(shù)已經(jīng)更新為feedforwardnet(hiddenSizes,trainFcn),相應(yīng)的程序修改為:%定義輸入向量和目標(biāo)向量p=[12;-11;-21;-40]';t=[0.20.80.80.2];%創(chuàng)建BP網(wǎng)絡(luò)并定義訓(xùn)練函數(shù)及參數(shù)feedforwardnet(5,'traingd');%訓(xùn)練神經(jīng)網(wǎng)絡(luò)[net,tr]=train(net,p,t);saveBPnet1net;%保存網(wǎng)絡(luò)。例2:BP網(wǎng)絡(luò)用于曲線擬合>>p=-1:0.1:0.9;>>t=[-0.832-0.423-0.0240.3441.2823.4564.023.2322.1021.504...0.2481.2422.3443.2622.0521.6841.0222.2243.0221.984]t=Columns1through8-0.8320-0.4230-0.02400.34401.28203.45604.02003.2320Columns9through162.10201.50400.24801.24202.34403.26202.05201.6840Columns17through201.02202.22403.02201.9840>>net=feedforwardnet(15);>>net.trainParam.epochs=2500;>>net.trainParam.goal=0.001;>>net.trainParam.show=10;>>net.trainParam.lr=0.005;>>net=train(net,p,t);>>saveBPnet2net;>>p=-1:0.1:0.9;t=[-0.832-0.423-0.0240.3441.2823.4564.023.2322.1021.504...0.2481.2422.3443.2622.0521.6841.0222.2243.0221.984];>>holdon>>plot(p,t,'r*');>>loadBPnet2net;>>r=sim(net,p);>>plot(p,r);>>perf=perform(net,t,r)perf=0.6447>>holdoff;12.4RBF神經(jīng)網(wǎng)絡(luò)的Matlab相關(guān)函數(shù)RBF神經(jīng)網(wǎng)絡(luò)的主要特點有:(1)RBF神經(jīng)網(wǎng)絡(luò)只有一個隱層,結(jié)構(gòu)簡單;(2)RBF神經(jīng)網(wǎng)絡(luò)的隱層神經(jīng)元和輸出層神經(jīng)元的模型不同,在網(wǎng)絡(luò)中起到的作用也是不同的;(3)RBF神經(jīng)網(wǎng)絡(luò)的隱層是非線性的,輸出層是線性的;(4)RBF神經(jīng)網(wǎng)絡(luò)的基函數(shù)計算的是輸入向量和中心的歐式距離,以此作為自變量;(5)RBF神經(jīng)網(wǎng)絡(luò)使用局部指數(shù)衰減的非線性函數(shù)對非線性輸入輸出映射進(jìn)行局部逼近。它的優(yōu)點有:(1)具有全局的非線性逼近能力;(2)相比其他神經(jīng)網(wǎng)絡(luò)具有更簡單的結(jié)構(gòu)];(3)因為神經(jīng)元的局部調(diào)整而具有更快的學(xué)習(xí)速率。它在非線性函數(shù)逼近、時間序列分析、模式識別、信息處理、數(shù)據(jù)分類、圖像處理、系統(tǒng)建模等方面具有廣泛的應(yīng)用.Matlab工具箱中與RBF神經(jīng)網(wǎng)絡(luò)相關(guān)的函數(shù):newrb:新建一個RBF神經(jīng)網(wǎng)絡(luò),逐個增加隱層神經(jīng)元的個數(shù),使誤差滿足要求。net=newrb(P,T,goal,spread,MN,DF)P:R-by-QmatrixofQinputvectorsT:S-by-QmatrixofQtargetclassvectorsgoal:Meansquarederrorgoal(default=0.0)spread:Spreadofradialbasisfunctions(default=1.0)MN:Maximumnumberofneurons(defaultisQ)DF:Numberofneuronstoaddbetweendisplays(default=25)newrbe:快速創(chuàng)建一個RBFNN,徑向基神經(jīng)元的數(shù)目等于輸入樣本數(shù),如果輸入像兩個數(shù)很多時會導(dǎo)致網(wǎng)絡(luò)規(guī)模很大,所以更常用的是newrb函數(shù)。net=newrbe(P,T,spread)P:RxQmatrixofQR-elementinputvectorsT:SxQmatrixofQS-elementtargetclassvectorsspread:Spreadofradialbasisfunctions(default=1.0)例

3:RBFNN

用于曲線擬合(續(xù)例

2)Matlab程序如下:>>p=-1:0.1:0.9;t=[-0.832-0.423-0.0240.3441.2823.4564.023.2322.1021.504...0.2481.2422.3443.2622.0521.6841.0222.2243.0221.984];>>net=newrb(p,t,0.1,0.2,20,5);NEWRB,neurons=0,MSE=1.73865NEWRB,neurons=5,MSE=0.0901476>>p=-1:0.1:0.9;t=[-0.832-0.423-0.0240.3441.2823.4564.023.2322.1021.504...0.2481.2422.3443.2622.0521.684

溫馨提示

  • 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

提交評論