《電子技術(shù)應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 業(yè)界動態(tài) > 基于BP神經(jīng)網(wǎng)絡的函數(shù)逼近方法及其MATLAB實現(xiàn)

基于BP神經(jīng)網(wǎng)絡的函數(shù)逼近方法及其MATLAB實現(xiàn)

2009-08-18
作者:蔣良孝, 李超群

  摘? 要: MATLAB軟件及其BP神經(jīng)網(wǎng)絡工具箱函數(shù)的應用,結(jié)合一個實際的例子詳細闡述了基于BP神經(jīng)網(wǎng)絡的函數(shù)逼近過程及其MATLAB實現(xiàn)方法。

  關(guān)鍵詞: 函數(shù)逼近? BP神經(jīng)網(wǎng)絡? MATLAB軟件

?

  數(shù)值計算方法已經(jīng)在各個學科領(lǐng)域得到了廣泛應用,并且促使新的有效數(shù)值方法不斷出現(xiàn)。計算工具的使用為科學計算帶來了很大的方便,但由于計算機字長的限制,許多復雜的、大規(guī)模的計算問題需簡化,。神經(jīng)網(wǎng)絡是對生物神經(jīng)系統(tǒng)的模擬,其信息處理功能是由網(wǎng)絡單元(神經(jīng)元)的輸入輸出特性(激活特性),、網(wǎng)絡的拓撲結(jié)構(gòu)(神經(jīng)元的連接方式),、連接權(quán)的大小(突觸聯(lián)系強度)和神經(jīng)元的閾值(視作特殊的連接權(quán))所決定的。在神經(jīng)網(wǎng)絡的實際應用中,絕大部分的神經(jīng)網(wǎng)絡模型使用的是BP神經(jīng)網(wǎng)絡或其變化形式,它也是前饋神經(jīng)網(wǎng)絡的核心部分,。BP神經(jīng)網(wǎng)絡的主要特點是非線性映射能力,這種能力使其能夠?qū)θ我?a class="innerlink" href="http://forexkbc.com/tags/非線性函數(shù)" title="非線性函數(shù)" target="_blank">非線性函數(shù)進行很好的逼近,。鑒于函數(shù)逼近及BP神經(jīng)網(wǎng)絡的這些特點,本文提出了基于BP神經(jīng)網(wǎng)絡的函數(shù)逼近方法。此外,本文開創(chuàng)性地遺棄了C,、C++,、VC等傳統(tǒng)的高級編程語言,采用功能強大的MATLAB語言編程,直接調(diào)用MATLAB軟件包中的BP神經(jīng)網(wǎng)絡工具箱函數(shù),使程序簡捷明了,達到了事半功倍的效果。

1? BP神經(jīng)網(wǎng)絡及其函數(shù)逼近能力

  BP神經(jīng)網(wǎng)絡是一種單向傳播的多層前饋網(wǎng)絡,網(wǎng)絡除了有輸入輸出節(jié)點外,還有一層或多層的隱含層節(jié)點,同層節(jié)點中沒有任何連接,層間節(jié)點中實行全連接,。輸入信號從輸入層節(jié)點依次傳過各隱含層節(jié)點,最后傳到輸出層節(jié)點,。每層節(jié)點的輸出只影響下一層節(jié)點的輸出。各層節(jié)點的傳遞函數(shù)通常為雙曲正切S型(sigmoid)函數(shù),但輸出層節(jié)點的傳遞函數(shù)有時為線性函數(shù),。

BP神經(jīng)網(wǎng)絡可以看作是一個從輸入到輸出的高度非線性映射,即F:Rn→Rm,f(X)=Y,。對于樣本集合:輸入xi(∈Rn)和輸出yi(∈Rm),可認為存在某一映射g使得g(xi)=yi(i=1,2,∧n)成立。現(xiàn)要求出一個映射f,使得在某種意義下(通常是最小二乘意義下),f是g的最佳逼近,。BP神經(jīng)網(wǎng)絡通過對簡單的非線性函數(shù)進行數(shù)次復合,可以近似復雜的函數(shù),。Kolmogorov定理(即映射網(wǎng)絡存在定理)保證任一連續(xù)函數(shù)可由一個三層前向網(wǎng)絡實現(xiàn),但它沒有提供任何構(gòu)造這樣一個網(wǎng)絡的可行方法。通過BP定理可知,只要用一個三層BP神經(jīng)網(wǎng)絡就可在任意希望的精度上實現(xiàn)任意的連續(xù)函數(shù),。但實際上,還要使用更多層的BP神經(jīng)網(wǎng)絡,其原因是用三層BP神經(jīng)網(wǎng)絡來實現(xiàn)往往需要大量的隱含層節(jié)點,而使用更多層的BP神經(jīng)網(wǎng)絡來實現(xiàn)可減少隱含層節(jié)點的數(shù)目,。如何選取隱含層的層數(shù)和節(jié)點數(shù),至今還沒有確切的方法和理論,通常是憑借對學習樣本和測試樣本的誤差交叉評價的試錯法選取。

  BP神經(jīng)網(wǎng)絡的學習過程由正向和反向傳播二部分組成,。在正向傳播過程中,每一層神經(jīng)元的狀態(tài)只影響到下一層神經(jīng)元網(wǎng)格,。如果輸出層不能得到期望輸出,就是實際輸出值和期望輸出值之間存在誤差,從而轉(zhuǎn)入反向傳播過程,將誤差信號沿原來的連接通路返回。通過修改各層神經(jīng)元的權(quán)值,逐次地向輸入層傳播并進行計算,再進行正向傳播,。這二個過程的反復運用,使得誤差信號最小,。實際上,誤差達到人們所希望的要求時,網(wǎng)絡的學習過程就結(jié)束。

2? MATLAB軟件及其BP神經(jīng)網(wǎng)絡工具箱函數(shù)

  為了解決數(shù)值計算與計算機仿真之間的矛盾,美國Math Works公司推出了一套高性能的數(shù)值計算和可視化軟件包MATLAB,。它集數(shù)值計算,、圖形計算、語言設(shè)計,、計算機仿真等于一體,具有極高的編程效率,。更具特色的是MATLAB集中了許多領(lǐng)域?qū)<覍W者的智慧,成功地擴展了30多個專業(yè)領(lǐng)域工具箱,如生物醫(yī)學工程、圖像處理,、模糊控制,、神經(jīng)網(wǎng)絡等。其中,神經(jīng)網(wǎng)絡工具箱是MATLAB環(huán)境下開發(fā)出來的許多工具箱之一,它是以神經(jīng)網(wǎng)絡理論為基礎(chǔ),用MATLAB語言構(gòu)造出典型神經(jīng)網(wǎng)絡的工具函數(shù),。MATLAB中專門編制了大量有關(guān)BP神經(jīng)網(wǎng)絡的工具箱函數(shù),為BP神經(jīng)網(wǎng)絡的應用研究提供了強有力的工具。本文用到的主要工具箱函數(shù)有:(1)神經(jīng)元傳遞函數(shù):purelin()為一線性傳遞函數(shù),利用BP算法訓練的輸出層神經(jīng)元經(jīng)常采用它;tansig()為一雙曲正切S型(sigmoid)傳遞函數(shù),用于將神經(jīng)元上范圍為(-∞,+∞)的輸入值映射到區(qū)間(-1,+1)上,利用BP算法訓練的隱含層神經(jīng)元中經(jīng)常采用它。(2)網(wǎng)絡建立函數(shù):newff()用于建立一個前饋BP神經(jīng)網(wǎng)絡,。(3)網(wǎng)絡訓練函數(shù):train()用于訓練建立的BP神經(jīng)網(wǎng)絡,。(4)網(wǎng)絡仿真函數(shù):sim()用于仿真訓練前后的BP神經(jīng)網(wǎng)絡。

3? 基于BP神經(jīng)網(wǎng)絡的函數(shù)逼近過程及其MATLAB實現(xiàn)

  下面將結(jié)合一個實例詳細闡述基于BP神經(jīng)網(wǎng)絡的函數(shù)逼近過程及其MATLAB實現(xiàn)方法,。設(shè)要逼近的非線性函數(shù)為:,。

  (1)網(wǎng)絡建立:使用“net=newff(minmax(x),[20,1],{′tansig′′purelin′});”語句建立一個前饋BP神經(jīng)網(wǎng)絡。該BP神經(jīng)網(wǎng)絡只含一個隱含層,且神經(jīng)元的個數(shù)為20,。隱含層和輸出層神經(jīng)元的傳遞函數(shù)分別為tansig和purelin,。其他參數(shù)默認。

  (2)網(wǎng)絡訓練:使用“net=train(net,x,y);”語句訓練建立好的BP神經(jīng)網(wǎng)絡,。當然在網(wǎng)絡訓練之前必須設(shè)置好訓練參數(shù),。如設(shè)定訓練時間為50個單位時間,訓練目標的誤差小于0.01,用“net.trainParam.epochs=50;net.trainParam.goal=0.01;”語句實現(xiàn)。其他參數(shù)默認,。

  (3)網(wǎng)絡仿真:使用“y1=sim(net,x);y2=sim(net,x);”語句仿真訓練前后的BP神經(jīng)網(wǎng)絡,。

  程序1是該例程的源代碼。由程序可知,采用功能強大的MATLAB語言編程,可直接調(diào)用MATLAB軟件包中的BP神經(jīng)網(wǎng)絡工具箱函數(shù),。圖1為原函數(shù)與網(wǎng)絡訓練前后的仿真結(jié)果比較圖,。由圖1可知,用工具箱函數(shù)newff建立網(wǎng)絡時,對權(quán)值和閾值的初始化是隨機的,所以未訓練網(wǎng)絡的仿真輸出效果很差,并且每次運行的結(jié)果也不相同。訓練網(wǎng)絡的仿真輸出曲線和原始曲線非常接近,這說明訓練后的網(wǎng)絡對非線性函數(shù)的逼近效果很好,。網(wǎng)絡訓練過程中誤差隨訓練時間的變化迅速減少,在經(jīng)過5個單位時間以后,網(wǎng)絡的誤差就達到了逼近要求(圖略),。

?

  程序1:MATLAB程序源代碼

  

  

4? 結(jié)? 論

  BP神經(jīng)網(wǎng)絡最強大的應用之一就是函數(shù)逼近,即從訓練樣本出發(fā),對未知函數(shù)進行非線性逼近。而網(wǎng)絡的拓撲結(jié)構(gòu)直接影響網(wǎng)絡對函數(shù)的逼近能力和效果,。因此,在實際應用中,應根據(jù)具體問題,選擇一個合適的網(wǎng)絡結(jié)構(gòu),。應用BP神經(jīng)網(wǎng)絡進行函數(shù)逼近,不僅在純數(shù)學和應用數(shù)學領(lǐng)域有意義,而且在工程和物理學領(lǐng)域也非常有用。這種逼近方式已被廣泛地應用于系統(tǒng)辨識與建模,、信號處理及模式識別等多個方面,。

?

參考文獻

1? 飛思科技產(chǎn)品研發(fā)中心編著.MATLAB6.5輔助神經(jīng)網(wǎng)絡分析與設(shè)計.北京:電子工業(yè)出版社,2003

2? 廖寧放.BP神經(jīng)網(wǎng)絡用于函數(shù)逼近的最佳隱層結(jié)構(gòu).北京理工大學學報,1998;(8)

3? 王美玲.一種用于非線性函數(shù)逼近的小波神經(jīng)網(wǎng)絡算法仿真.北京理工大學學報,2002;(6)

4? 王強.利用人工神經(jīng)網(wǎng)絡實現(xiàn)函數(shù)逼近.計算機仿真,2002;(9)

5? 劉延年.多層前向BP網(wǎng)絡函數(shù)逼近能力的研究.南京航空航天大學學報,1994;(1)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]