BP神經(jīng)網(wǎng)絡原理及應用_第1頁
BP神經(jīng)網(wǎng)絡原理及應用_第2頁
BP神經(jīng)網(wǎng)絡原理及應用_第3頁
BP神經(jīng)網(wǎng)絡原理及應用_第4頁
BP神經(jīng)網(wǎng)絡原理及應用_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-作者xxxx-日期xxxxBP神經(jīng)網(wǎng)絡原理及應用【精品文檔】BP神經(jīng)網(wǎng)絡原理及應用1 人工神經(jīng)網(wǎng)絡簡介神經(jīng)系統(tǒng)的基本構造是神經(jīng)元(神經(jīng)細胞),它是處理人體內(nèi)各部分之間相互信息傳遞的基本單元。據(jù)神經(jīng)生物學家研究的結果表明,人的大腦一般有個神經(jīng)元。每個神經(jīng)元都由一個細胞體,一個連接其他神經(jīng)元的軸突和一些向外伸出的其它較短分支樹突組成。軸突的功能是將本神經(jīng)元的輸出信號(興奮)傳遞給別的神經(jīng)元。其末端的許多神經(jīng)末梢使得興奮可以同時送給多個神經(jīng)元。樹突的功能是接受來自其它神經(jīng)元的興奮。神經(jīng)元細胞體將接受到的所有信號進行簡單地處理后由軸突輸出。神經(jīng)元的樹突與另外的神經(jīng)元的神經(jīng)末梢相連的部分稱為突觸。神經(jīng)

2、網(wǎng)絡是由許多相互連接的處理單元組成。這些處理單元通常線性排列成組,稱為層。每一個處理單元有許多輸入量,而對每一個輸入量都相應有一個相關聯(lián)的權重。處理單元將輸入量經(jīng)過加權求和,并通過傳遞函數(shù)的作用得到輸出量,再傳給下一層的神經(jīng)元。目前人們提出的神經(jīng)元模型已有很多,其中提出最早且影響最大的是1943年心理學家McCulloch和數(shù)學家Pitts在分析總結神經(jīng)元基本特性的基礎上首先提出的M-P模型,它是大多數(shù)神經(jīng)網(wǎng)絡模型的基礎。 (1.1)式(1.1)中,qj為神經(jīng)元單元的偏置(閾值),為連接權系數(shù)(對于激發(fā)狀態(tài),取正值,對于抑制狀態(tài),取負值),n為輸入信號數(shù)目,為神經(jīng)元輸出,t為時間,f()為輸出

3、變換函數(shù),有時叫做激發(fā)或激勵函數(shù),往往采用0和1二值函數(shù)或形函數(shù)。人工神經(jīng)網(wǎng)絡由神經(jīng)元模型構成;這種由許多神經(jīng)元組成的信息處理網(wǎng)絡具有并行分布結構。每個神經(jīng)元具有單一輸出,并且能夠與其它神經(jīng)元連接;存在許多(多重)輸出連接方法,每種連接方法對應一個連接權系數(shù)。嚴格地說,人工神經(jīng)網(wǎng)絡是一種具有下列特性的有向圖:()對于每個節(jié)點存在一個狀態(tài)變量xi;()從節(jié)點i至節(jié)點j,存在一個連接權系數(shù)wji;()對于每個節(jié)點,存在一個閾值qj;()對于每個節(jié)點,定義一個變換函數(shù),對于最一般的情況,此函數(shù)取形式。1.4 人工神經(jīng)網(wǎng)絡的主要學習算法神經(jīng)網(wǎng)絡主要通過兩種學習算法進行訓練,即指導式(有師)學習算法和非

4、指導式(無師)學習算法。此外,還存在第三種學習算法,即強化學習算法;可把它看做有師學習的一種特例。()有師學習 有師學習算法能夠根據(jù)期望的和實際的網(wǎng)絡輸出(對應于給定輸入)間的差來調(diào)整神經(jīng)元間連接的強度或權。因此,有師學習需要有個老師或?qū)焷硖峁┢谕蚰繕溯敵鲂盘枴S袔煂W習算法的例子包括d 規(guī)則、廣義d 規(guī)則或反向傳播算法以及LVQ算法等。()無師學習 無師學習算法不需要知道期望輸出。在訓練過程中,只要向神經(jīng)網(wǎng)絡提供輸入模式,神經(jīng)網(wǎng)絡就能夠自動地適應連接權,以便按相似特征把輸入模式分組聚集。無師學習算法的例子包括Kohonen算法和Carpenter-Grossberg自適應共振理論(ART)

5、等。()強化學習 如前所述,強化學習是有師學習的特例。它不需要老師給出目標輸出。強化學習算法采用一個“評論員”來評價與給定輸入相對應的神。2 BP神經(jīng)網(wǎng)絡原理2.1 基本BP算法公式推導基本BP算法包括兩個方面:信號的前向傳播和誤差的反向傳播。即計算實際輸出時按從輸入到輸出的方向進行,而權值和閾值的修正從輸出到輸入的方向進行。輸出變量輸入變量輸入層隱含層輸出層圖2-1 BP網(wǎng)絡結構Fig.2-1 Structure of BP network圖中:表示輸入層第個節(jié)點的輸入,j=1,M;表示隱含層第i個節(jié)點到輸入層第j個節(jié)點之間的權值;表示隱含層第i個節(jié)點的閾值;表示隱含層的激勵函數(shù);表示輸出層

6、第個節(jié)點到隱含層第i個節(jié)點之間的權值,i=1,q;表示輸出層第k個節(jié)點的閾值,k=1,L;表示輸出層的激勵函數(shù);表示輸出層第個節(jié)點的輸出。(1)信號的前向傳播過程隱含層第i個節(jié)點的輸入neti: (3-1)隱含層第i個節(jié)點的輸出yi: (3-2)輸出層第k個節(jié)點的輸入netk: (3-3)輸出層第k個節(jié)點的輸出ok: (3-4)(2)誤差的反向傳播過程誤差的反向傳播,即首先由輸出層開始逐層計算各層神經(jīng)元的輸出誤差,然后根據(jù)誤差梯度下降法來調(diào)節(jié)各層的權值和閾值,使修改后的網(wǎng)絡的最終輸出能接近期望值。 對于每一個樣本p的二次型誤差準則函數(shù)為Ep: (3-5)系統(tǒng)對P個訓練樣本的總誤差準則函數(shù)為:

7、(3-6)根據(jù)誤差梯度下降法依次修正輸出層權值的修正量wki,輸出層閾值的修正量ak,隱含層權值的修正量wij,隱含層閾值的修正量。; (3-7)輸出層權值調(diào)整公式: (3-8)輸出層閾值調(diào)整公式: (3-9)隱含層權值調(diào)整公式: (3-10)隱含層閾值調(diào)整公式: (3-11)又因為: (3-12), (3-13) (3-14) (3-15) (3-16)所以最后得到以下公式: (3-17) (3-18) (3-19) (3-20)結 束參數(shù)初始化:最大訓練次數(shù),學習精度,隱節(jié)點數(shù),初始權值、閾值,初始學習速率等批量輸入學習樣本并且對輸入和輸出量進行歸一化處理計算各層的輸入和輸出值計算輸出層誤

8、差E(q)E(q)修正權值和閾值YesNYes開 始圖2-2 BP算法程序流程圖Fig.2-2 The flowchart of the BP algorithm program2.2 基本BP算法的缺陷BP算法因其簡單、易行、計算量小、并行性強等優(yōu)點,目前是神經(jīng)網(wǎng)絡訓練采用最多也是最成熟的訓練算法之一。其算法的實質(zhì)是求解誤差函數(shù)的最小值問題,由于它采用非線性規(guī)劃中的最速下降方法,按誤差函數(shù)的負梯度方向修改權值,因而通常存在以下問題:(1) 學習效率低,收斂速度慢(2) 易陷入局部極小狀態(tài)2.3 BP算法的改進.1附加動量法附加動量法使網(wǎng)絡在修正其權值時,不僅考慮誤差在梯度上的作用,而且考慮在

9、誤差曲面上變化趨勢的影響。在沒有附加動量的作用下,網(wǎng)絡可能陷入淺的局部極小值,利用附加動量的作用有可能滑過這些極小值。該方法是在反向傳播法的基礎上在每一個權值(或閾值)的變化上加上一項正比于前次權值(或閾值)變化量的值,并根據(jù)反向傳播法來產(chǎn)生新的權值(或閾值)變化。帶有附加動量因子的權值和閾值調(diào)節(jié)公式為:其中k為訓練次數(shù),mc為動量因子,一般取左右。附加動量法的實質(zhì)是將最后一次權值(或閾值)變化的影響,通過一個動量因子來傳遞。當動量因子取值為零時,權值(或閾值)的變化僅是根據(jù)梯度下降法產(chǎn)生;當動量因子取值為1時,新的權值(或閾值)變化則是設置為最后一次權值(或閾值)的變化,而依梯度法產(chǎn)生的變化

10、部分則被忽略掉了。以此方式,當增加了動量項后,促使權值的調(diào)節(jié)向著誤差曲面底部的平均方向變化,當網(wǎng)絡權值進入誤差曲面底部的平坦區(qū)時, di將變得很小,于是,從而防止了的出現(xiàn),有助于使網(wǎng)絡從誤差曲面的局部極小值中跳出。根據(jù)附加動量法的設計原則,當修正的權值在誤差中導致太大的增長結果時,新的權值應被取消而不被采用,并使動量作用停止下來,以使網(wǎng)絡不進入較大誤差曲面;當新的誤差變化率對其舊值超過一個事先設定的最大誤差變化率時,也得取消所計算的權值變化。其最大誤差變化率可以是任何大于或等于1的值。典型的取值取。所以,在進行附加動量法的訓練程序設計時,必須加進條件判斷以正確使用其權值修正公式。訓練程序設計中

11、采用動量法的判斷條件為: , E(k)為第k步誤差平方和。.2自適應學習速率對于一個特定的問題,要選擇適當?shù)膶W習速率不是一件容易的事情。通常是憑經(jīng)驗或?qū)嶒灚@取,但即使這樣,對訓練開始初期功效較好的學習速率,不見得對后來的訓練合適。為了解決這個問題,人們自然想到在訓練過程中,自動調(diào)節(jié)學習速率。通常調(diào)節(jié)學習速率的準則是:檢查權值是否真正降低了誤差函數(shù),如果確實如此,則說明所選學習速率小了,可以適當增加一個量;若不是這樣,而產(chǎn)生了過調(diào),那幺就應該減少學習速率的值。下式給出了一個自適應學習速率的調(diào)整公式: , E(k)為第k步誤差平方和。初始學習速率h(0)的選取范圍可以有很大的隨意性。當采用前述的動

12、量法時,BP算法可以找到全局最優(yōu)解,而當采用自適應學習速率時,BP算法可以縮短訓練時間, 采用這兩種方法也可以用來訓練神經(jīng)網(wǎng)絡,該方法稱為動量-自適應學習速率調(diào)整算法。2.4 網(wǎng)絡的設計.1網(wǎng)絡的層數(shù)理論上已證明:具有偏差和至少一個S型隱含層加上一個線性輸出層的網(wǎng)絡,能夠逼近任何有理數(shù)。增加層數(shù)可以更進一步的降低誤差,提高精度,但同時也使網(wǎng)絡復雜化,從而增加了網(wǎng)絡權值的訓練時間。而誤差精度的提高實際上也可以通過增加神經(jīng)元數(shù)目來獲得,其訓練效果也比增加層數(shù)更容易觀察和調(diào)整。所以一般情況下,應優(yōu)先考慮增加隱含層中的神經(jīng)元數(shù)。.2隱含層的神經(jīng)元數(shù)網(wǎng)絡訓練精度的提高,可以通過采用一個隱含層,而增加神經(jīng)

13、元數(shù)了的方法來獲得。這在結構實現(xiàn)上,要比增加隱含層數(shù)要簡單得多。那么究竟選取多少隱含層節(jié)點才合適?這在理論上并沒有一個明確的規(guī)定。在具體設計時,比較實際的做法是通過對不同神經(jīng)元數(shù)進行訓練對比,然后適當?shù)丶由弦稽c余量。.3初始權值的選取由于系統(tǒng)是非線性的,初始值對于學習是否達到局部最小、是否能夠收斂及訓練時間的長短關系很大。如果初始值太大,使得加權后的輸入和n落在了S型激活函數(shù)的飽和區(qū),從而導致其導數(shù)f(n)非常小,而在計算權值修正公式中,因為,當f(n)時,則有。這使得,從而使得調(diào)節(jié)過程幾乎停頓下來。所以一般總是希望經(jīng)過初始加權后的每個神經(jīng)元的輸出值都接近于零,這樣可以保證每個神經(jīng)元的權值都能

14、夠在它們的S型激活函數(shù)變化最大之處進行調(diào)節(jié)。所以,一般取初始權值在(-1,1)之間的隨機數(shù)。.4學習速率學習速率決定每一次循環(huán)訓練中所產(chǎn)生的權值變化量。大的學習速率可能導致系統(tǒng)的不穩(wěn)定;但小的學習速率導致較長的訓練時間,可能收斂很慢,不過能保證網(wǎng)絡的誤差值不跳出誤差表面的低谷而最終趨于最小誤差值。所以在一般情況下,傾向于選取較小的學習速率以保證系統(tǒng)的穩(wěn)定性。學習速率的選取范圍在之間。3 BP神經(jīng)網(wǎng)絡的應用現(xiàn)給出一藥品商店一年當中12個月的藥品銷售量(單位:箱)如下:2056 2395 2600 2298 1634 1600 1873 1487 1900 1500 2046 1556訓練一個BP

15、網(wǎng)絡,用當前的所有數(shù)據(jù)預測下一個月的藥品銷售量。有兩種方法實現(xiàn),一種是編寫matlab程序,一種是使用nntool工具箱。3.1 matlab程序?qū)崿F(xiàn)我們用前三個月的銷售量預測下一個月的銷售量,也就是用1-3月的銷售量預測第4個月的銷售量,用2-4個月的銷售量預測第5個月的銷售量,如此循環(huán)下去,直到用9-11月預測12月份的銷售量。這樣訓練BP神經(jīng)網(wǎng)絡后,就可以用10-12月的數(shù)據(jù)預測來年一月的銷售量。實現(xiàn)程序如下:p=2056 2395 2600; 2395 2600 2298; 2600 2298 1634; 2298 1634 1600; 1634 1600 1873; 1600 187

16、3 1478; 1873 1478 1900; 1478 1900 1500; 1900 1500 2046;t=2298 1634 1600 1873 1487 1900 1500 2046 1556;pmax=max(p);pmax1=max(pmax);pmin=min(p);pmin1=min(pmin);for i=1:9 %歸一化處理 p1(i,:)=(p(i,:)-pmin1)/(pmax1-pmin1);endt1=(t-pmin1)/(pmax1-pmin1);t1=t1;net=newff(0 1;0 1;0 1,7 1,tansig,logsig,traingd); fo

17、r i=1:9net.trainParam.epochs=15000;net.trainParam.goal=0.01;LP.lr=0.1;net=train(net,p1(i,:),t1(i);endy=sim(net,1500 2046 1556);y1=y*(pmax1-pmin1)+pmin1;如果神經(jīng)網(wǎng)絡的訓練函數(shù)使用trainlm,則仿真步驟會很少,但需要較大的系統(tǒng)內(nèi)存。經(jīng)預測,來年一月的銷售量(y1)為1.4848e+003箱(每次運行后的結果可能不同)。3.2 nntool神經(jīng)網(wǎng)絡工具箱的使用1)在matlab(7.4)命令窗口鍵入nntool命令打開神經(jīng)網(wǎng)絡工具箱。如圖:2)

18、點擊Import按鈕兩次,分別把輸入向量和目標輸出加入到對應的窗口(Inputs和Targets)中,有兩種可供選擇的加入對象(點擊Import后可以看見),一種是把當前工作區(qū)中的某個矩陣加入,另一種是通過.mat文件讀入。3)點擊New Network按鈕,填入各參數(shù):(以最常用的帶一個隱層的3層神經(jīng)網(wǎng)絡為例說明,下面沒有列出的參數(shù)表示使用默認值就可以了,例如Network Type為默認的BP神經(jīng)網(wǎng)絡);i)Input Range這個通過點擊Get From Input下拉框選擇你加入的輸入向量便可自動完成,當然也可以自己手動添加。 ii) Training Function最好使用TRA

19、INSCG,即共軛梯度法,其好處是當訓練不收斂時,它會自動停止訓練,而且耗時較其他算法(TRAINLM,TRAINGD)少,也就是收斂很快(如果收斂的話),而且Train Parameters輸入不多,也不用太多的技巧調(diào)整,一般指定迭代次數(shù)、結果顯示頻率和目標誤差就可以了(詳見下文)。 iii) Layer 1 Number of Neurons隱層的神經(jīng)元個數(shù),這是需要經(jīng)驗慢慢嘗試并調(diào)整的,大致上由輸入向量的維數(shù)、樣本的數(shù)量和輸出層(Layer2)的神經(jīng)元個數(shù)決定。一般來說,神經(jīng)元越多,輸出的數(shù)值與目標值越接近,但所花費的訓練時間也越長,反之,神經(jīng)元越少,輸出值與目標值相差越大,但訓練時間會

20、相應地減少,這是由于神經(jīng)元越多其算法越復雜造成的,所以需要自己慢慢嘗試,找到一個合適的中間點。比如輸入是3行5000列的0-9的隨機整數(shù)矩陣,在一開始選擇1000個神經(jīng)元,雖然精度比較高,但是花費的訓練時間較長,而且這樣神經(jīng)網(wǎng)絡的結構與算法都非常復雜,不容易在實際應用中實現(xiàn),嘗試改為100個,再調(diào)整為50個,如果發(fā)現(xiàn)在50個以下時精度較差,則可最后定為50個神經(jīng)元,等等。 iv)Layer 1 Transfer Function一般用TANSIG(當然也可以LOGSIG),即表示隱層輸出是-1,1之間的實數(shù),與LOGSIG相比范圍更大。 v) Layer 2 Number of Neurons輸出層的神經(jīng)元個數(shù),需要與輸出的矩陣行數(shù)對應,比如設置為3,等等。vi) Layer

溫馨提示

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

評論

0/150

提交評論