BP神經網絡解析課件_第1頁
BP神經網絡解析課件_第2頁
BP神經網絡解析課件_第3頁
BP神經網絡解析課件_第4頁
BP神經網絡解析課件_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第6章 BP神經網絡編 者 第6章 BP神經網絡編 者 Outline1.BP神經網絡的結構 2.BP網絡的學習算法 3.設計BP網絡的方法 4.BP神經網絡的局限性 5.BP網絡相關函數詳解 6.BP神經網絡應用實例 Outline1.BP神經網絡的結構 1.BP神經網絡的結構 BP神經網絡是包含多個隱含層的網絡,具備處理線性不可分問題的能力。 誤差反向傳播算法(Error Back Propagtion,BP),解決了多層神經網絡的學習問題。 是一種多層前向網絡,又叫多層感知器 。 BP網絡是前向神經網絡的核心部分,也是整個人工神經網絡體系中的精華,廣泛應用于分類識別、逼近、回歸、壓縮等領

2、域。在實際應用中,大約80%的神經網絡模型采取了BP網絡或BP網絡的變化形式。 1.BP神經網絡的結構 BP神經網絡是包含多個隱含層的1.BP神經網絡的結構 網絡由多層構成,層與層之間全連接,同一層之間的神經元無連接 。 包含一個多多個隱層,可以實現復雜的映射關系。1.BP神經網絡的結構 網絡由多層構成,層與層之間全連1.BP神經網絡的結構 BP網絡的傳遞函數必須可微。BP網絡一般使用Sigmoid函數或線性函數作為傳遞函數。 Sigmoid函數是光滑、可微的函數,在分類時它比線性函數更精確,容錯性較好。 將輸入從負無窮到正無窮的范圍映射到01或-11區(qū)間內,具有非線性的放大功能。 Log-S

3、igmoid Tan-Sigmoid1.BP神經網絡的結構 BP網絡的傳遞函數必須可微。B1.BP神經網絡的結構 “誤差反向傳播” :誤差信號反向傳播。修正權值時,網絡根據誤差從后向前逐層進行修正。 “反饋神經網絡” :輸出層的輸出值又連接到輸入神經元作為下一次計算的輸入,如此循環(huán)迭代,直到網絡的輸出值進入穩(wěn)定狀態(tài)為止。在本書后面的章節(jié)中會專門介紹反饋神經網絡,包括Hopfield網絡、Elman網絡等。 BP神經網絡屬于多層前向網絡,工作信號始終正向流動,沒有反饋結構。 BP網絡采用誤差反向傳播算法(Back-Propagation Algorithm)進行學習。在BP網絡中,數據從輸入層經

4、隱含層逐層向后傳播,訓練網絡權值時,則沿著減少誤差的方向,從輸出層經過中間各層逐層向前修正網絡的連接權值。1.BP神經網絡的結構 “誤差反向傳播” :誤差信號2.BP網絡的學習算法 BP學習算法的原理與LMS算法比較類似,屬于最速下降法。 最速下降法 最速下降法可以求某指標(目標函數)的極小值,若將目標函數取為均方誤差,就得到了LMS算法。 對于實值函數 ,如果在某點 處有定義且可微,則函數在該點處沿著梯度相反的方向 下降最快。因此,使用梯度下降法時,應首先計算函數在某點處的梯度,再沿著梯度的反方向以一定的步長調整自變量的值。 當步長足夠小時 反復迭代求得函數最小值2.BP網絡的學習算法 BP

5、學習算法的原理與LMS算2.BP網絡的學習算法最速下降法 實例:求函數的最小值 根據梯度值可以再函數中畫出一系列的等值線或等值面,在等值線或等值面上函數值相等。梯度下降法相當于沿著垂直于等值線方向向最小值所在位置移動。 2.BP網絡的學習算法最速下降法 實例:求函數的最小值 2.BP網絡的學習算法(1)目標函數必須可微 。(2)如果最小值附近比較平坦,算法會在最小值附近停留很久,收斂緩慢。 “之”字形下降(3)對于包含多個極小值的函數,所獲得的結果依賴初始值。算法有可能陷入局部極小值點,而沒有達到全局最小值點。 BP神經網絡來說,由于傳遞函數都是可微的,因此能滿足最速下降法的使用條件。2.BP

6、網絡的學習算法(1)目標函數必須可微 。2.BP網絡的學習算法最速下降BP法 隱含層傳遞函數為Sigmoid函數,輸出層傳遞函數為線性函數 1.工作信號正向傳播 2.誤差信號反向傳播 權值調整量=學習率 * 局部梯度 * 上一層輸出信號2.BP網絡的學習算法最速下降BP法 隱含層傳遞函數為Sig2.BP網絡的學習算法 當輸出層傳遞函數為線性函數時,輸出層與隱含層之間權值調整的規(guī)則類似于線性神經網絡的權值調整規(guī)則。 BP網絡的復雜之處在于,隱含層與隱含層之間、隱含層與輸入層之間調整權值時,局部梯度的計算需要用到上一步計算的結果。前一層的局部梯度是后一層局部梯度的加權和。 因此,BP網絡學習權值時

7、只能從后向前依次計算。 串行方式 。在線方式,網絡每獲得一個新樣本,就計算一次誤差并更新權值,直到樣本輸入完畢。 隨機輸入樣本,不容易陷入局部最優(yōu)陷阱。 批量方式 :離線方式。網絡獲得所有的訓練樣本,計算所有樣本均方誤差的和作為總誤差 。 容易并行化,速度快。2.BP網絡的學習算法 當輸出層傳遞函數為線性函數2.BP網絡的學習算法 動量BP法 在標準BP算法的權值更新階段引入動量因子 ,使權值修正值具有一定慣性:本次權值的更新方向和幅度不但與本次計算所得的梯度有關,還與上一次更新的方向和幅度有關(1)如果前后兩次計算所得的梯度方向相同,得到的權值較大,可以加速收斂過程 。(2)如果前后兩次計算

8、所得梯度方向相反,則說明兩個位置之間可能存在一個極小值,可以得到一個較小的步長,更容易找到最小值點,而不會陷入來回振蕩 2.BP網絡的學習算法 動量BP法 在標準B2.BP網絡的學習算法 學習率可變的BP算法: 當誤差以減小的方式趨于目標時,說明修正方向是正確的,可以增加學習率; 當誤差增加超過一定范圍時,說明前一步修正進行地不正確,應減小步長,并撤銷前一步修正過程。 擬牛頓法 。牛頓法具有收斂快的優(yōu)點,但需要計算誤差性能函數的二階導數,計算較為復雜。擬牛頓法只需要知道目標函數的梯度,通過測量梯度的變化進行迭代,收斂速度大大優(yōu)于最速下降法。擬牛頓法有DFP方法、BFGS方法、SR1方法和Bro

9、yden族方法。 2.BP網絡的學習算法 學習率可變的BP算法: 3.設計BP網絡的方法1.網絡層數。對于大部分應用場合,單個隱含層即可滿足需要 2.輸入層節(jié)點數。輸入層節(jié)點數取決于輸入向量的維數。如果輸入的是的圖像,則輸入向量應為圖像中所有的像素形成的4096維向量。 如果待解決的問題是二元函數擬合,則輸入向量應為二維向量。3.隱含層節(jié)點數 。較多的隱含層節(jié)點數可以帶來更好的性能,但可能導致訓練時間過長 。經驗公式:BP網絡的設計主要包括網絡層數、輸入層節(jié)點數、隱含層節(jié)點數、輸出層節(jié)點數及傳輸函數、訓練方法、訓練參數的設置等幾個方面。 樣本數輸入層結點數3.設計BP網絡的方法1.網絡層數。對

10、于大部分應用場合,單個3.設計BP網絡的方法 輸出層神經元的個數同樣需要根據從實際問題中得到的抽象模型來確定。在模式分類問題中,如果共有n種類別,則輸出可以采用n個神經元 。也可以將節(jié)點個數設計為 個, 表示最小的不小于 的整數。由于輸出共有4種情況,因此采用二維輸出即可覆蓋整個輸出空間,00、01、10和11分別表示一種類別。 輸出層神經元個數 傳遞函數的選擇 一般隱含層使用Sigmoid函數,而輸出層使用線性函數。如果輸出層也采用Sigmoid函數,輸出值將會被限制在 01或-11之間。3.設計BP網絡的方法 輸出層神經元的個數同樣需要3.設計BP網絡的方法訓練方法的選擇 使用LM算法收斂

11、速度最快,均方誤差也較小。 LM算法對于模式識別相關問題的處理能力較弱,且需要較大的存儲空間 模式識別問題,使用RPROP算法能收到較好的效果 SCG算法對于模式識別和函數逼近問題都有較好的性能表現。初始權值的確定 通常將初始權值定義為較小的非零隨機值,經驗值為 :權值輸入端連接的神經元個數 3.設計BP網絡的方法訓練方法的選擇 使用LM算法收斂速度最3.設計BP網絡的方法 確定以上參數后,將訓練數據進行歸一化處理,并輸入網絡中進行學習,若網絡成功收斂,即可得到所需的神經網絡。 3.設計BP網絡的方法 確定以上參數后,將訓練數據進4.BP神經網絡的局限性BP網絡具有實現任何復雜非線性映射的能力

12、,特別適合求解內部機制復雜的問題 ,但BP網絡也具有一些難以克服的局限性 (1)需要的參數較多,且參數的選擇沒有有效的方法。隱含層結點個數。(2)容易陷入局部最優(yōu)。 (3)樣本依賴性。如果樣本集合代表性差、矛盾樣本多、存在冗余樣本,網絡就很難達到預期的性能 (4)初始權重敏感性。訓練的第一步是給定一個較小的隨機初始權重,由于權重是隨機給定的,BP網絡往往具有不可重現性。 4.BP神經網絡的局限性BP網絡具有實現任何復雜非線性映射的5.BP網絡相關函數詳解函數名稱功能logsigLog-Sigmoid函數tansigTan-Sigmoid函數newff創(chuàng)建一個BP網絡feedforwardnet

13、創(chuàng)建一個BP網絡(推薦使用)newcf創(chuàng)建級聯的前向神經網絡cascadeforwardnet創(chuàng)建級聯的前向神經網絡(推薦使用)newfftd創(chuàng)建前饋輸入延遲的BP網絡5.BP網絡相關函數詳解函數名稱功能logsigLog-Si5.BP網絡相關函數詳解 logsigLog-Sigmoid傳輸函數 Log-Sigmoid函數的特點是 范圍的數據被映射到區(qū)間 可以使用下面的代碼將神經網絡節(jié)點的傳輸函數定義為Log-Sigmoid函數:net.layersi.transferFcn=logsig;5.BP網絡相關函數詳解 logsigLog-Si5.BP網絡相關函數詳解 tansigTan-Sigm

14、oid傳輸函數tansig 是雙曲正切Sigmoid函數,調用形式與logsig函數相同。取值范圍: x=-4:.1:4; y=tansig(x);% Tag-Sigmoid函數 plot(x,y,-r) title(Tan-sig 函數) xlabel(x) ylabel(y) grid on5.BP網絡相關函數詳解 tansigTan-Sigmo5.BP網絡相關函數詳解 dlogsig/dtansigSigmoid函數的導數 x=-4:.1:4; y=logsig(x);% logsig函數 dy=dlogsig(x,y); % logsig函數的導數 subplot(211) plot(

15、x,y); title(logsig) subplot(212); plot(x,dy); title(dlogsig)5.BP網絡相關函數詳解 dlogsig/dtansig5.BP網絡相關函數詳解newff創(chuàng)建一個BP網絡:新版語法net=newff(P,T,S) P:R*Q1矩陣,表示創(chuàng)建的神經網絡中,輸入層有R個神經元。每行對應一個神經元輸入數據的典型值,實際應用中常取其最大最小值。T:SN*Q2矩陣,表示創(chuàng)建的網絡有SN個輸出層節(jié)點,每行是輸出值的典型值 S:標量或向量,用于指定隱含層神經元個數,若隱含層多于一層,則寫成行向量的形式。舊版語法格式net=newff(P,N,TF,BT

16、F) :P表示輸入向量的典型值,N為各層神經元的個數,TF為表示傳輸函數的細胞數組,BTF為訓練函數 5.BP網絡相關函數詳解newff創(chuàng)建一個BP網絡:5.BP網絡相關函數詳解 舊版newff默認訓練函數為traingdx(學習率自適應并附加動量因子的最速下降法),新版默認訓練函數為trainlm。新版速度更快,但更占用內存 新版newff將輸入的60%用于訓練,20%用于檢驗,20%用于驗證,采用了提前終止的策略,防止過擬合的情況發(fā)生。對于同一個問題,往往會出現新版最終訓練誤差大于舊版newff的情況。 用newff逼近二次函數,新版的函數誤差比舊版函數大 example6_3.m5.BP

17、網絡相關函數詳解 舊版newff默認訓練函數為tr5.BP網絡相關函數詳解feedforwardnet創(chuàng)建一個BP網絡 feedforwardnet是新版神經網絡工具箱中替代newff的函數 feedforwardnet(hiddenSizes,trainFcn) hiddenSizes為隱含層的神經元節(jié)點個數,如果有多個隱含層,則hiddenSizes是一個行向量,缺省值為10。trainFcn為訓練函數,缺省值為trainlm。 x,t = simplefit_dataset;% MATLAB自帶數據,x、t均為1*94向量net = feedforwardnet; view(net) n

18、et = train(net,x,t); view(net) y = net(x); perf = perform(net,y,t) 5.BP網絡相關函數詳解feedforwardnet創(chuàng)建5.BP網絡相關函數詳解5.BP網絡相關函數詳解newcf級聯的前向神經網絡 在新版中使用cascadeforwardnet函數代替 5.BP網絡相關函數詳解net = newcf(P,T,S1 S2.S(N-1)P:R*Q1矩陣,每行對應一個神經元輸入數據的典型值。 T:SN*Q2矩陣,表示創(chuàng)建的網絡有SN個輸出層節(jié)點,每行是輸出值的典型值。Si:表示隱含層神經元個數,若隱含層多于一層,則寫成行向量的形式

19、。 與newff比較類似 newcf級聯的前向神經網絡 5.BP網絡相關函數詳解n5.BP網絡相關函數詳解 用newff和newcf對一段數據進行擬合,數據輸入為向量輸出為 ,是一段折線。新版替代函數:cascadeforwardnet f2=cascadeforwardnet(3,5); view(f2) 5.BP網絡相關函數詳解 用newff和newcf對 rng(2) P = 0 1 2 3 4 5 6 7 8 9 10;% 網絡輸入 T = 0 1 2 3 4 3 2 1 2 3 4;% 期望輸出 ff=newff(P,T,20); % 建立一個BP網絡,包含一個20個節(jié)點的隱含層 f

20、f.trainParam.epochs = 50; ff = train(ff,P,T);% 訓練 Y1 = sim(ff,P);% 仿真 cf=newcf(P,T,20);% 用newcf建立前向網絡 cf.trainParam.epochs = 50; cf = train(cf,P,T);% 訓練 Y2 = sim(cf,P);% 仿真 plot(P,T,o-);% 繪圖 hold on; plot(P,Y1,m-); plot(P,Y2,*-k); title(newff & newcf) legend(原始數據,newff結果,newcf結果,0) rng(2)6.BP神經網絡應用實

21、例(1)基于BP網絡的性別識別 .以班級中男生女生的身高、體重為輸入,經過一定數量的樣本訓練后,可以較好地識別出新樣本的性別。男生172人,女生88人 .部分數據: 學號性別身高體重學號性別身高體重111女163.452.4121男174.280.9112女163.448122男170.383.1113男170.269123女166.558114男16259.9124女165.747.5115女170.555.5125女158.247.8116女173.855.1126男182.793.9117女168.468.3127男178.681.7118男186.868128女159.249.2119

22、男181.177.8129女163.153120男175.757.8130女16553.36.BP神經網絡應用實例(1)基于BP網絡的性別識別 .以班6.BP神經網絡應用實例 思路:隨機抽出部分學生的身高和體重作為訓練樣本(男女生都有),然后訓練一個BP神經網絡,最后將剩下的樣本輸入網絡進行測試,檢驗BP網絡的分類性能。 6.BP神經網絡應用實例 思路:隨機抽出部分學生的6.BP神經網絡應用實例1.讀入使用MATLAB的內建函數xlsread來讀取XLS表格。 function data,label=getdata(xlsfile),label=xlsread(xlsfile,1,B2:B26

23、1);height,=xlsread(xlsfile,C2:C261);weight,=xlsread(xlsfile,D2:D261);data=height,weight;l=zeros(size(label);for i=1:length(l) if labeli= 男 l(i)=1; endendlabel=l; xlsfile=student.xls; data,label=getdata(student.xls);6.BP神經網絡應用實例1.讀入function data6.BP神經網絡應用實例(2)劃分訓練數據與測試數據。 function traind,trainl,testd

24、,testl=divide(data,label)rng(0)% 男女各取30個進行訓練TRAIN_NUM_M=30;TRAIN_NUM_F=30;% 男女分開m_data=data(label=1,:);f_data=data(label=0,:);NUM_M=length(m_data); % 男生的個數% 男r=randperm(NUM_M);traind(1:TRAIN_NUM_M,:)=m_data(r(1:TRAIN_NUM_M),:);testd(1:NUM_M-TRAIN_NUM_M,:)= m_data(r(TRAIN_NUM_M+1:NUM_M),:);NUM_F=leng

25、th(f_data); % 女生的個數% 女r=randperm(NUM_F);traind(TRAIN_NUM_M+1:TRAIN_NUM_M+TRAIN_NUM_F,:)=f_data(r(1:TRAIN_NUM_F),:);testd(NUM_M-TRAIN_NUM_M+1:NUM_M-TRAIN_NUM_M+NUM_F-TRAIN_NUM_F,:)=f_data(r(TRAIN_NUM_F+1:NUM_F),:);% 賦值trainl=zeros(1,TRAIN_NUM_M+TRAIN_NUM_F);trainl(1:TRAIN_NUM_M)=1;testl=zeros(1,NUM_M

26、+NUM_F-TRAIN_NUM_M-TRAIN_NUM_F);testl(1:NUM_M-TRAIN_NUM_M)=1;6.BP神經網絡應用實例(2)劃分訓練數據與測試數據。 fu6.BP神經網絡應用實例(3)初始化BP網絡,采用包含一個隱含層的神經網絡,訓練方法采用包含動量的最速下降法,批量方式進行訓練。 traind,trainl,testd,testl=divide(data,label); whos net.nIn=2; net.nHidden = 3; % 3個隱含層節(jié)點 net.nOut = 1; % 一個輸出層節(jié)點 w = 2*(rand(net.nHidden,net.nIn

27、)-1/2); % nHidden * 3 一行代表一個隱含層節(jié)點 b = 2*(rand(net.nHidden,1)-1/2); net.w1 = w,b; W = 2*(rand(net.nOut,net.nHidden)-1/2); B = 2*(rand(net.nOut,1)-1/2); net.w2 = W,B;為加快訓練速度,隱含層神經元個數暫定為3。6.BP神經網絡應用實例(3)初始化BP網絡,采用包含一個隱6.BP神經網絡應用實例(4)輸入樣本,計算誤差。 mm=mean(traind); % 均值平移for i=1:2 traind_s(:,i)=traind(:,i)-

28、mm(i); end% 方差標準化ml(1) = std(traind_s(:,1);ml(2) = std(traind_s(:,2);for i=1:2 traind_s(:,i)=traind_s(:,i)/ml(i); end計算誤差: nTrainNum = 60; % 60個訓練樣本 SampInEx = traind_s;ones(1,nTrainNum); expectedOut=trainl; hid_input = net.w1 * SampInEx; % 隱含層的輸入 hid_out = logsig(hid_input); % 隱含層的輸出 ou_input1 = hid_out;ones(1,nTrainNum); % 輸出層的輸入 ou_input2 = net.w2 * ou_input1; out_out = logsig(ou_input2); % 輸出層的輸出 err = expectedOut - out_out; % 誤差 sse = sums

溫馨提示

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

評論

0/150

提交評論