神經(jīng)網(wǎng)絡基于BP網(wǎng)絡的多層感知器實驗報告[蒼松教學]_第1頁
神經(jīng)網(wǎng)絡基于BP網(wǎng)絡的多層感知器實驗報告[蒼松教學]_第2頁
神經(jīng)網(wǎng)絡基于BP網(wǎng)絡的多層感知器實驗報告[蒼松教學]_第3頁
免費預覽已結束,剩余15頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、神經(jīng)網(wǎng)絡及應用實驗報告實驗二、基于BP網(wǎng)絡的多層感知器一:實驗目的:1. 理解多層感知器的工作原理2. 通過調節(jié)算法參數(shù)了解參數(shù)的變化對于感知器訓練的影響3. 了解多層感知器局限性二:實驗原理:BP的基本思想:信號的正向傳播 誤差的反向傳播 信號的正向傳播:輸入樣本從輸入層傳入,經(jīng)各隱層逐層處理后,傳向輸出層。 誤差的反向傳播:將輸入誤差以某種形式通過隱層向輸入層逐層反傳,并將誤差分攤給各層的所有單元,從而獲得各層單元的誤差信號來作為修正各單元權值的依據(jù)。1. 基本BP算法的多層感知器模型:2.BP學習算法的推導:當網(wǎng)絡輸出與期望輸出不等時,存在輸出誤差E將上面的誤差定義式展開至隱層,有進一步

2、展開至輸入層,有調整權值的原則是使誤差不斷地減小,因此應使權值的調整量與誤差的梯度下降成正比,即(0,1)表示比例系數(shù),在訓練中反應學習速率 BP算法屬于學習規(guī)則類,這類算法被稱為誤差的梯度下降(Gradient Descent)算法。 1. 用Matlab編程,實現(xiàn)解決該問題的單樣本訓練BP網(wǎng)絡,設置一個停止迭代的誤差Emin和最大迭代次數(shù)。在調試過程中,通過不斷調整隱層節(jié)點數(shù),學習率,找到收斂速度快且誤差小的一組參數(shù)。產(chǎn)生均勻分布在區(qū)間-4,4的測試樣本,輸入建立的模型得到輸出,與Hermit多項式的期望輸出進行比較計算總誤差(運行5次,取平均值),并記錄下每次迭代結束時的迭代次數(shù)。(要求

3、誤差計算使用RME,Emin 設置為0.1) 程序如下:function dyb %單樣本程序 clc; close all; clear; x0=1:101;-4:0.08:4;%樣本101個 x0(1,:)=-1; x=x0; yuzhi=0.1;%閾值 j=input(請輸入隱層節(jié)點數(shù) j = );%隱層節(jié)點數(shù) n=input(請輸入學習效率 n = );%學習效率 w=rand(1,j); w=yuzhi,w; %輸出層閾值 v=rand(2,j); v(1,:)=yuzhi;%隱層閾值 err=zeros(1,101); wucha=0; zhaosheng=0.01*randn(1

4、,101);%噪聲 erro=; ERRO=;%誤差,為畫收斂曲線準備 Emin=0.1; d=zeros(1,101); for m=1:101 d(m)=hermit(x(m,2);%期望 end; o=zeros(1,101); netj=zeros(1,j); net=zeros(1,j); p=1; q=1; azc=0; acs=0; for z=1:5 while q30000 Erme=0; for p=1:101 y=zeros(1,j); for i=1:j netj(1,i)=x(p,:)*v(:,i); y(1,i)=1/(1+exp(-netj(1,i); end;

5、y=-1 y; o(p)=w*y+zhaosheng(p);%噪聲 wucha = d(p)-o(p); err(1,p)=1/2*wucha2; erro=erro,wucha; for m=1:j+1 w(1,m)=w(1,m)+n*wucha*y(1,m); end; for m=1:j v(:,m)=v(:,m)+n*wucha*w(1,m)*y(1,m)*(1-y(1,m)*x(p,:); end q=q+1; end; for t=1:101; Erme=Erme+err(1,t); end; err=zeros(1,101); Erme=sqrt(Erme/101); ERRO=

6、ERRO,Erme; if ErmeEmin break; end; end; azc=azc+Erme; acs=acs+q; end disp(最終誤差:); pinjunwucha=1/5*azc figure(1); plot(x(:,2),d,-r); hold on; plot(x(:,2),o,-b); disp(次數(shù):); pjcx=1/5*acs figure(2); plot(ERRO); figure(3); plot(x(:,2),d,-rp);endfunction F = hermit(x)%hermit子函數(shù) F = 1.1*(1-x+2*x2)*exp(-x2/

7、2);end運行結果如下:表格1. 單樣本BP算法平均最小誤差學習率結點數(shù)0.050.070.10.120.150.1880.09650.08590.019530.09450.08740.0925100.09680.09440.09830.09200.08210.0982120.08860.08560.08850.09460.08340.0928150.09150.09270.08780.09240.07380.08442. 實現(xiàn)解決該問題的批處理訓練BP網(wǎng)絡,調整參數(shù)如上。產(chǎn)生均勻分布在區(qū)間-4,4的測試樣本,輸入建立的模型得到輸出,與Hermit多項式的期望輸出進行比較計算總誤差(運行5次

8、,取平均值),并記錄下每次迭代結束時的迭代次數(shù)。程序如下:function pcl %批處理 close all; clc; x=-4:0.08:4;%樣本101個 j=input(請輸入隱層節(jié)點數(shù) j = );%隱層節(jié)點數(shù) n=input(請輸入學習效率 n = );%學習效率 a=0.1;%動量系數(shù) w=rand(1,j); v=rand(1,j); err=zeros(1,101); wucha=0; zhaosheng=0.01*randn(1,101);%噪聲 erro=; ERRO=;%誤差,為畫收斂曲線準備 Emin=0.1; d=zeros(1,101); for m=1:10

9、1 d(1,m)=hermit(x(m);%期望 end; o=zeros(1,101); netj=zeros(1,j); net=zeros(1,j); y=zeros(1,j); p=1; q=1; azc=0; acs=0; for z=1:5 while q30000 Erro=0; Erme=0; for p=1:101 for i=1:j netj(1,i)=v(1,i)*x(1,p); y(1,i)=1/(1+exp(-netj(1,i); end; o(1,p)=w*y+zhaosheng(p);%噪聲 wucha=d(1,p)-o(1,p);%誤差 err(1,p)=1/2

10、*wucha2; erro=erro,wucha; q=q+1; end; for t=1:101; Erro=Erro+erro(t); Erme=Erme+err(1,t); end; erro=; for m=1:j; w(1,m)=w(1,m)+n*Erro*y(1,m); v(1,m)=v(1,m)+n*Erro*w(1,m)*y(1,m)*(1-y(1,m)*x(1,p); end; Erme=sqrt(Erme/101); ERRO=ERRO,Erme; if ErmeEmin break; end; end; azc=azc+Erme; acs=acs+q; end disp(

11、平均誤差:); pjwc=1/5*azc figure(1); plot(x,d,-r); hold on; plot(x,o,-b); disp(平均次數(shù):); pjcs=1/5*acs figure(2); plot(ERRO); figure(3); plot(x,d);endfunction F = hermit(x) %hermit子函數(shù) F = 1.1*(1-x+2*x2)*exp(-x2/2);end運行結果如下:表格2. 批處理BP算法平均最小誤差學習率結點數(shù)0.050.070.10.120.150.1750.09660.09730.09740.09860.09930.0913

12、80.09720.09330.09130.09760.09220.0915100.09450.09570.09370.09480.09570.0817120.09250.92250.09110.09520.09370.09153. 對批處理訓練BP算法增加動量項調整參數(shù)如上,記錄結果,并與沒有帶動量項的批處理訓練BP算法的結果相比較程序如下:function jdlx %加動量項 close all; clc; x=-4:0.08:4;%樣本101個 j=input(請輸入隱層節(jié)點數(shù) j = );%隱層節(jié)點數(shù) n=input(請輸入學習效率 n = );%學習效率 a=0.1;%動量系數(shù) w=

13、rand(1,j); v=rand(1,j); err=zeros(1,101); wucha=0; zhaosheng=0.01*randn(1,101);%噪聲 erro=; ERRO=;%誤差,為畫收斂曲線準備 Emin=0.1; d=zeros(1,101); for m=1:101 d(1,m)=hermit(x(m);%期望 end; o=zeros(1,101); netj=zeros(1,j); net=zeros(1,j); y=zeros(1,j); p=1; q=1; azc=0; acs=0; for z=1:5 while q30000 Erro=0; Erme=0;

14、 for p=1:101 for i=1:j netj(1,i)=v(1,i)*x(1,p); y(1,i)=1/(1+exp(-netj(1,i); end; o(1,p)=w*y+zhaosheng(p);%噪聲 wucha=d(1,p)-o(1,p);%誤差 err(1,p)=1/2*wucha2; erro=erro,wucha; q=q+1; end; for t=1:101; Erro=Erro+erro(t); Erme=Erme+err(1,t); end; erro=; for m=1:j; if m=1 w(1,m)=w(1,m)+n*Erro*y(1,m); else w

15、(1,m)=w(1,m)+n*Erro*y(1,m)+a*w(1,m-1); end v(1,m)=v(1,m)+n*Erro*w(1,m)*y(1,m)*(1-y(1,m)*x(1,p); end; Erme=sqrt(Erme/101); ERRO=ERRO,Erme; if ErmeEmin break; end; end; azc=azc+Erme; acs=acs+q; end disp(平均誤差:); pjwc=1/5*azc figure(1); plot(x,d,-r); hold on; plot(x,o,-b); disp(平均次數(shù):); pjcs=1/5*acs figu

16、re(2); plot(ERRO); figure(3); plot(x,d);endfunction F = hermit(x) %hermit子函數(shù) F = 1.1*(1-x+2*x2)*exp(-x2/2);end運行結果如下:4. 對批處理BP算法改變參數(shù):學習率、迭代次數(shù)、隱層節(jié)點數(shù),觀察算法的收斂發(fā)散,以及測試誤差的變化(對每個參數(shù)取幾個不同參數(shù),分別運行5次,結果取平均值)。表格3. 加入動量項的批處理BP算法平均最小誤差學習率結點數(shù)0.050.070.10.120.150.1750.09350.09480.09910.09120.09840.098780.09810.09670

17、.09620.09890.09410.092100.08930.09820.09200.08940.09250.0984120.08590.08960.08780.09570.08250.0946經(jīng)網(wǎng)絡結構圖七:實驗結果分析:1、單樣本訓練:每輸入一個樣本,都要回傳誤差并調整權值,會導致收斂速度過慢,2、批處理(Batch)訓練:根據(jù)總誤差計算各層的誤差信號并調整權值,權值的校正值是在整個訓練集提交訓練后才決定的。3、加動量項的批處理運算:通過引入以前運算的經(jīng)驗,從而使學習過程振蕩減小,改善收斂性。八:附加函數(shù):(斜黑體部分替換為pcl、dlpcl分別進行批處理BP網(wǎng)絡計算、顯示圖形和增加動量

18、項的批處理BP網(wǎng)絡計算、顯示圖形)計算函數(shù):function cs,wc=jsdyb(lr,q)Emin=0.1;s1=0;s2=0;for k=1:5 x1,x2=dyb(lr,Emin,q); s1=s1+x1; s2=s2+x2;endcs=s1/5;wc=s2/5;function A=zjsdyb(lr)q=4,5,7,8,10;format short gA=;for zk=1:5cs,wc=jsdyb(lr,q(zk);B=cs,wc;A=A;B;end圖形顯示函數(shù):function txdyb(lr,q)%計算測試輸出;Emin=0.1;b=1;epoch,s,Wki,Wij,Wb,Ez=dyb(lr,Emin,q)x=linspace(-4,4,100);%給定輸入:y=1.1.*(1-x+2.*x.2).*exp(-x.2/2)+0.1*rand(1,100);for i=1:100NETi=x(i).*Wij+b*Wb;NETk=0;for t=1:qoi(t)=1/(1+exp(-NETi(t);NETk=NETk+Wki(t)*oi(t);end ok(i)=NETk; end%顯示圖形;figureplot(x,ok,r)hold ony=1.1.*(1-x+2.*x.2).*exp(-x.2/2)+0.1

溫馨提示

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

評論

0/150

提交評論