BP神經(jīng)網(wǎng)絡(luò)實例_第1頁
BP神經(jīng)網(wǎng)絡(luò)實例_第2頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、BP神經(jīng)網(wǎng)絡(luò)實例智能控制第一章BP神經(jīng)網(wǎng)絡(luò)基本原理一、BP神經(jīng)網(wǎng)絡(luò)基本概念1、人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)ANN(ArtificialNeuralNetwork),是對人類大腦系統(tǒng)的一階特性的一種描述。簡單地講,它是一個數(shù)學模型,可以用電子線路來實現(xiàn),也可以用計算機程序來模擬,是人工智能研究地一種方法。近年來發(fā)展迅速并逐漸成熟的一種人工智能技術(shù),其來源于對神經(jīng)元細胞的模擬。人工神經(jīng)網(wǎng)絡(luò)具有以下三個特點:信息分布表示,運算全局并行與局部操作,信息非線性處理。由于這三個特點,使得由人工神經(jīng)網(wǎng)絡(luò)構(gòu)成的分類器具有強大的數(shù)據(jù)擬和與泛化能力,因而廣泛運用于模式識別與機器學習領(lǐng)域。神經(jīng)網(wǎng)絡(luò)模式識別的過程分為兩步

2、:首先是學習過程,通過大量的訓練樣本,對網(wǎng)絡(luò)進行訓練,根據(jù)某種學習規(guī)則不斷對連接權(quán)值進行調(diào)節(jié),然后使網(wǎng)絡(luò)具有某種期望的輸出,這種輸出就可以將訓練樣本正確分類到其所屬類別中去,此時可以認為網(wǎng)絡(luò)是學習到了輸入數(shù)據(jù)或樣本間的內(nèi)在規(guī)律。接下來是分類過程,應(yīng)用前面學習過程所訓練好的權(quán)值,對任意送入網(wǎng)絡(luò)的樣本進行分類。人工神經(jīng)網(wǎng)絡(luò)模型各種各樣,目前已有數(shù)十種。他們從各個角度對生物神經(jīng)系統(tǒng)的不同層次進行了描述和模擬。代表模型有感知機、多層映射BP網(wǎng)、RBF網(wǎng)絡(luò)、HoPfiled模型、Boit機等等。雖然人工神經(jīng)網(wǎng)絡(luò)有很多模型,但按神經(jīng)元的連接方式只有兩種型態(tài):沒有反饋的前向網(wǎng)絡(luò)和相互結(jié)合型網(wǎng)絡(luò)。前向網(wǎng)絡(luò)是多

3、層映射網(wǎng)絡(luò),每一層中的神經(jīng)元只接受來自前一層神經(jīng)元的信號,因此信號的傳播是單方向的。BP網(wǎng)絡(luò)是這類網(wǎng)絡(luò)中最典型的例子。在相互結(jié)合型網(wǎng)絡(luò)中,任意兩個神經(jīng)元都可能有連接,因此輸入信號要在網(wǎng)絡(luò)中往返傳遞,從某一初態(tài)開始,經(jīng)過若干變化,漸漸趨于某一穩(wěn)定狀態(tài)或進入周期震蕩等其它狀態(tài),這方面典型的網(wǎng)絡(luò)有Hopfiled模型等。2、BP神經(jīng)網(wǎng)絡(luò)BP算法是利用輸出層的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計更前一層的誤差。如此下去,就獲得了所有其他各層的誤差估計。這樣就形成了將輸出端表現(xiàn)出的誤差沿著與輸入信號傳送相反的方向逐級向網(wǎng)絡(luò)的輸入端傳遞的過程。因此,人們就又將此算法稱為向后傳播算法,簡稱B

4、P算法。如下圖所示:算法過程為(1)設(shè)置各權(quán)值和閾值的初始值w(i)0,ji0(l)0(l=0,1,.,L)為小隨機數(shù)。j2)輸入訓練樣本I,d),qq對每個樣本進行(3)(5)步。3)計算各個網(wǎng)絡(luò)層的實際輸出x(l)=f(s(l)=f(W(l)x(l-1)+0(l)(4)計算訓練誤差:()=叫-號)f'(sjl),輸出層N1隱含層和輸入層d(/)=/'(s(/)+1d(/+i)w(/+i)jjkj,k=15)修正權(quán)值和閾值W(L+1)k+1=W(L)k+“(L)X(l-1)+H(W(L)k一W(L)k一1)jijijijijio(l+1)k+1=o(l)k+pa(l)+n(0

5、(/)k-o(l)k-1)jjjjj(6)當樣本集中的所有樣本都經(jīng)歷了(3)(5)步后,即完成了一個訓練周期(Epoch),計算性能指標E=送E,其中E=qq2qjqjq=1j=1(7)如果性能指標滿足精度要求,即E<£,那么訓練結(jié)束,否則,轉(zhuǎn)到(2),繼續(xù)下一個訓練周期。£是小的正數(shù),根據(jù)實際情況而定,例如0.013、流程圖根據(jù)BP網(wǎng)絡(luò)的算法,我們可得流程圖如下。第二章BP神經(jīng)網(wǎng)絡(luò)實例分析一、實例要求1、f(x)=cos(x),xG(0,2兀)1取九個點來訓練網(wǎng)絡(luò),然后得出擬合曲線。2、f2(x)=|sin(x)|,xg(0,2兀)取適當數(shù)量訓練點來訓練網(wǎng)絡(luò),然后得

6、出擬合曲線(sinxsiny/1c1小3、f(x,y)=-;x,yg(10,10)3xy取11*11個點來訓練網(wǎng)絡(luò),并用21*21個點測試擬合的曲面二、計算結(jié)果如下1、第一個函數(shù):f(x)二cos(x),xg(0,2兀)10200400600800100012001400訓練次數(shù)-101234567x(2)學習率為0.2,訓練次數(shù)為3300時訓練過程如學習曲線所示,圈圈為學習后產(chǎn)生的,折線為標準函數(shù)點連線。檢驗過程如檢驗5智能控制曲線所示,點序列為擬合曲線上的點,曲線為標準函數(shù)曲線。誤差曲線如右圖所示。(2)學習率為0.01,訓練次數(shù)為3300時的曲線。-110.51234567x1.5012

7、34567x從函數(shù)1可以看出,學習率比較大時,曲線收斂比較快,可以比較快速達到精度要求。但實際上,學習率比較大時(即收斂步長比較大),容易超出收斂邊界,反而收斂導致不穩(wěn)定,甚至發(fā)散。-0.552521值差誤500100015002000250030003500訓練次數(shù)x62、第二個函數(shù):于2(x)=|sin(x),xe(0,2兀)1)學習率為0.2,樣本點數(shù)為10,學習次數(shù)為5000時的曲線如下:學習曲線I智能控制誤差曲線987000值差誤0.40500100015002000250030003500400045005000訓練次數(shù)2)學習率為0.2,樣本點數(shù)為30,學習次數(shù)為5000時的曲線

8、如下:學習曲線I1256734x1.20.8c0.6=0.40.2-0.20123x4567-0'20值差誤從函數(shù)2可以看出,樣本點個數(shù)越多時,曲線精度越高。但學習時間會有所增智能控制3、第三個函數(shù)厶(x,y)=佇-皿;x,ye(10,10)3xy學習率為0.1,動量項學習率為0.05,訓練次數(shù)為5000,訓練樣本數(shù)為11*11圖形如下:0.5-1515學習期望輸出00誤差曲線附:程序源代碼第一個和第二個函數(shù)的程序:%此BP網(wǎng)絡(luò)為兩層隱含層,每個隱含層4個節(jié)點。輸入輸出各一層%輸入層和輸出層均采用恒等函數(shù),隱含層采用S形函數(shù)clearall;closeall;b=0.01;%精度要求a

9、=0.2;c=2;%學習率Num=30;%訓練樣本數(shù)N=3300;%訓練次數(shù)Nj=80;o0=rand(2,1);o1=rand(4,1);o2=rand(4,1);o3=rand(1,1);w1=rand(4,2);w2=rand(4,4);w3=rand(1,4);%檢驗樣本數(shù)%輸入層閾值%第一層隱含層閾值%第二層隱含層閾值%輸出層閾值%輸入信號為兩個%第一層隱含層與第二層隱含層的權(quán)系數(shù)%第二層隱含層與輸出層的權(quán)系數(shù)symsxy;%符號變量,用于兩個輸入值%fcn=cos(x);fcn=abs(sin(x);x0=0:2*pi/(Num-1):2*pi;y0=0:2*pi/(Num-1):

10、2*pi;x=x0;y=y0;X(1,:)=x0;X(2,:)=y0;yf=eval(fcn);x3=zeros(1,Num);time=0;forj=1:1:Nfori=1:1:Num%前向計算:s1=w1*X(:,i)-o1;x1=1./(1+exp(-s1);s2=w2*x1-o2;x2=1./(1+exp(-s2);s3=w3*x2-o3;%x3=1./(1+exp(-s3);x3(i)=s3;%反向計算:%被學習的函數(shù)%輸入的訓練樣本%輸出的訓練樣本%第一層隱含層輸出%第二層隱含層輸出%輸出層輸出%e3=(yf(i)-x3)./(exp(s3)+2+exp(-s3);e3=yf(i)

11、-x3(i);e2=(w3)'*e3)./(exp(s2)+2+exp(-s2);e1=(w2)'*e2)./(exp(s1)+2+exp(-s1);%權(quán)值和閾值修正w3=w3+a*e3*(x2)'%權(quán)值修正w2=w2+a*e2*(x1)'w1=w1+a*e1*(X(:,i)'o3=o3-a*e3;%閾值修正%輸出層誤差%第二層隱含層誤差%第一層隱含層誤差o2=o2-a*e2;o1=o1-a*e1;endE(j)=0.5*(yf-x3)*(yf-x3)');%方差time=time+1;%記錄學習次數(shù)ifE(j)<bbreakendend%

12、檢驗m=0:2*pi/(Nj-1):2*pi;n=0:2*pi/(Nj-1):2*pi;x=m;y=n;ym=eval(fcn);%期望輸出M(1,:)=x;M(2,:)=y;m3=zeros(1,Nj);fori=1:1:NjS1=w1*M(:,i)-o1;m1=1./(1+exp(-S1);%第一層隱含層輸出S2=w2*m1-o2;m2=1./(1+exp(-S2);%第二層隱含層輸出S3=w3*m2-o3;%m3(i)=1./(1+exp(-S3);%輸出層輸出m3(i)=S3;endfigure(1);plot(m,ym,'g-');holdonplot(m,m3,&#

13、39;r.');title('檢驗曲線');xlabel('x');ylabel('y=cos(x)');figure(2);plot(x0,yf,'b-');holdonplot(x0,x3,'ro');title('學習曲線');xlabel('x');ylabel('y=cos(x)');k=1:time;figure(3);plot(k,E);title('誤差曲線');xlabel('訓練次數(shù)');ylabel(

14、9;誤差值');第三個函數(shù)的程序%此BP網(wǎng)絡(luò)為兩層隱含層,每個隱含層10個節(jié)點。輸入輸出各一層%輸入層和輸出層均采用恒等函數(shù),隱含層采用S形函數(shù)clearall;closeall;b=0.05;%精度要求a=0.1;%學習率c=0.05;%動量項學習率Num=11;%訓練樣本數(shù)N=5000;%訓練次數(shù)Nj=21;o0=rand(2,1);o1=rand(10,1);o2=rand(10,1);o3=rand(1,1);w1=rand(10,2);w2=rand(10,10);w3=rand(1,10);o1_before=zeros(4,1);o2_before=zeros(4,1);

15、o3_before=zeros(1,1);w1_before=zeros(4,2);w2_before=zeros(4,4);w3_before=zeros(1,4);o1_next=zeros(4,1);o2_next=zeros(4,1);o3_next=zeros(1,1);w1_next=zeros(4,2);w2_next=zeros(4,4);w3_next=zeros(1,4);%檢驗樣本數(shù)%輸入層閾值%第一層隱含層閾值%第二層隱含層閾值%輸出層閾值%輸入層與第一層隱含層的權(quán)系數(shù)%第一層隱含層與第二層隱含層的權(quán)系數(shù)%第二層隱含層與輸出層的權(quán)系數(shù)%用于存儲前一次的閾值%用于存儲前一

16、次的權(quán)值%用于存儲后一次的閾值%用于存儲后一次的權(quán)值x0,y0=meshgrid(-10:20/(Num-1)-0.001:10);%輸入的訓練樣本yf=(sin(x0).*sin(y0)./(x0.*y0);%被學習的函數(shù)x3=zeros(Num,Num);time=0;E=zeros(1,N);forj=1:1:Nfori=1:1:Numforh=1:1:NumX=zeros(2,1);X(1,:)=x0(i,h);X(2,:)=y0(i,h);%前向計算:s1=w1*X-o1;x1=1./(1+exp(-s1);%第一層隱含層輸出s2=w2*x1-o2;x2=1./(1+exp(-s2)

17、;%第二層隱含層輸出s3=w3*x2-o3;%x3=1./(1+exp(-s3);%輸出層輸出x3(i,h)=s3;%反向計算:%輸出層誤差%第二層隱含層誤差%第一層隱含層誤差%權(quán)值修正%閾值修正%e3=(yf(i)-x3)./(exp(s3)+2+exp(-s3);e3=yf(i)-x3(i);e2=(w3)'*e3)./(exp(s2)+2+exp(-s2);e1=(w2)'*e2)./(exp(s1)+2+exp(-s1);w3_next=w3+a*e3*(x2)'+c*(w3-w3_before);w2_next=w2+a*e2*(x1)'+c*(w2-

18、w2_before);w1_next=w1+a*e1*X'+c*(w1-w1_before);o3_next=o3-a*e3+c*(o3-o3_before);o2_next=o2-a*e2+c*(o2-o2_before);o1_next=o1-a*e1+c*(o1-o1_before);w1_before=w1;w2_before=w2;w3_before=w3;o1_before=o1;o2_before=o2;o3_before=o3;w1=w1_next;w2=w2_next;w3=w3_next;o1=o1_next;o2=o2_next;o3=o3_next;d=yf(i,h);y=x3(i,h);E(j)=E(j)+0.5*(d-y)'

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論