基於神經網絡的函數逼近


I任務要求

1.1求解函數逼近問題

  有21組單輸入矢量和相對應的目標矢量,試設計神經網絡來實現這對數組的函數關系

  P = -1 : 0.1 : 1

  T=[ -0.96  -0.577  -0.0729  0.377  0.641  0.66  0.461  0.1336

    -0.201   -0.434  -0.5   -0.393  -0.1647  0.0988  0.3072

    0.396  0.3449  0.1816  -0.0312  -0.2183  -0.3201]

  測試集

  P2= -1 : 0.025 : 1

II BP神經網絡

2.1 神經網絡

  神經網絡是模擬人腦生物過程的具有人工智能的系統,是由大量非線性處理單元連接而成的網絡,具有高度非線性等特點,可以根據給定的學習樣本,不需要進行任何假設,建立系統的非線性輸入、輸出映射關系。神經網絡具有自學習、容錯能力強、並行計算等許多優點,被廣泛應用於線性系統的建模。

  神經網絡模型可以分為前饋網絡、反饋網絡、自組織網絡和混合神經網絡。其中,前饋網絡的神經元分層排列,有輸入層、隱含層和輸出層,每一層神經元只接受前一層的輸入,並輸出到下一層,網絡中沒有反饋,實現信號從輸入空間到輸出空間的變換,其信息處理能力來源於簡單非線性函數的多次復合。這種結構的網絡通暢比較適合預測、模式識別、非線性函數的逼近等,誤差反向傳播(BP)網絡、線性網絡和徑向基函數(RBF)網絡就屬於此類網絡。[1]

2.2 BP網絡

  前饋網絡中獲得最廣泛應用的是BP網絡,它是一種單向傳播的多層前饋網絡,網絡除輸入、輸出層節點外,還包括一層或多層隱含層節點,每一層節點的輸出只影響下一層節點的輸入。BP網絡主要用於系統辨識、模式識別、圖像處理、函數逼近、優化計算、最優預測和自適應控制等領域。

2.2.1 BP網絡模型

  BP網絡是一種多層前饋神經網絡,包括輸入層,隱層(中間層)和輸出層,其中 隱層可以是一層也可以是多層,一般而言,三層BP神經網絡就可以解決大部分比較簡單的問題。BP網絡前后層之間實現全連接,每層神經元之間無連接。

圖1 BP神經網絡圖

  圖 1所示為一個四層 BP網絡 ,其中隱層(中間層)為兩層,隱層的神經元個數為3個,輸入層、輸出層的神經元個數均為 2個。學習樣本給了BP網絡后,各神經元響應輸入,信號從輸入層,經隱層(中間層),向輸出層傳播,根據減少預期輸出與實際輸出差距這一原則,從輸出層,經過各中間層,最后回到輸入層 , 逐層修正各個連接權值 ,這種算法被稱為 “誤差逆傳播算法”,簡稱BP算法,隨着誤差逆傳播的不斷進行網絡響應輸入的正確率也不斷上升。

2.2.2算法過程

   BP算法的過程大致如下 :

  (1)將各權值、閾值置為小的隨機數;

  (2)從訓練數據中挑選一組數據(),將輸入數據X加到BP神經網絡的輸入層,T為預期輸出數據,上標K為訓練數據號;

  (3)由計算從第一層直至輸出層各節點j的輸出,其中上標m為BP網絡的層標號,F為神經元的激勵函數,為BP網絡m-1層的i節點的輸出,為M-1層的i節點到m層的j節點的連接權值,M=M,M-1,···,1。

 

 

2.2.3 基於BP神經網絡的函數逼近

  (1)隱層神經元數目的選擇需要經驗和多次試驗來確定,隱層神經元的數目與問題的復雜程度、輸入輸出神經元的數目都有關系,隱層神經元太多會導致網絡結構復雜,學習時間長等問題。

  (2)傳遞函數的選擇十分重要,BP神經網絡的傳遞函數是處處可微的,常用的傳遞函數有Sigmoid型的對數函數、正切函數和線性函數。

  (3)訓練函數對BP網絡的性能也有影響,可分為普通訓練函數和快速訓練函數。普通訓練函數主要有兩種,一種是批梯度下降訓練函數(traind),另一種是動量批梯度下降訓練函數(traingdm)。前者是根據批梯度下降算法,沿網絡性能參數的負梯度方向去調節BP神經網絡的權值和閾值,后者是引入一個動量項,每次BP網絡權值和閾值改變量中加入前一次的改變量。快速訓練函數分自適應修改學習率算法、彈回的BP算法、共軛梯度算法等。

III 函數逼近MATLAB實現

3.1 運行程序

  當輸入為P = -1 : 0.1 : 1時,MATLAB代碼[3]為:

  通過改變n的值、更換傳遞函數和訓練函數等可以得到不同的擬合效果。

3.2 運行結果

  最佳運行選擇函數:隱層傳遞函數為tansig,輸出層傳遞函數為tansig,訓練函數為trainglm,隱層神經元數目為1~16時,最佳擬合效果如下:

圖2 神經網絡函數逼近擬合曲線

3.3 結果分析

3.3.1 隱層神經元數目分析

  當采用同樣的傳遞函數和訓練函數時,隱層神經元數目不同導致結果不同,

圖3 n=4時神經網絡運行狀態及結果

圖4 n=9時神經網絡運行狀態及結果

圖5  n=16時神經網絡運行狀態及結果

  可見,當N=8/9是最合適的,網絡結構相對簡單,收斂速度也快,擬合效果較佳。

3.3.2 訓練函數分析

圖6 訓練函數為trainrp 擬合結果

圖7 訓練函數為traincgp 擬合結果

圖8 訓練函數為traingdx 擬合結果

  可見,traingd、traingdm是較差的訓練函數,收斂時間長;而訓練函數trainrp/traincgp等性能一般,trainlm是較佳的訓練函數,訓練時間短,擬合效果佳。

3.4 函數關系式

  MATLAB代碼輸入

  得結果為:simy =

2/(exp(2534319068038565/(562949953421312*(exp((3631672591091961*x)

/140737488355328+6863392162896721/281474976710656)+1)) + 5718237858863659/(18014398509481984*(exp((7444114435060467*x)/281474976710656-2920590510334957/281474976710656)+1)) -4407302316599713/(2251799813685248*(exp(-(3121532728107483*x)/140737488355328 - 4422873762208683/281474976710656) +1))  +

6681843142583089/(18014398509481984*(exp(1623302466041475/70368744177664-(7266061041617473*x)/281474976710656)+1)) - 1132865518096015/(562949953421312*(exp(2512097340583147/1125899906842624-(1559249268373737*x)/140737488355328)+1)) + 6045060497805921/(4503599627370496*(exp(5296108181129999/562949953421312-(1862916351889959*x)/140737488355328)+1)) - 4804294000663935/(4503599627370496*(exp((847671511961421*x)/35184372088832+3450827515650845/562949953421312)+1)) + 6639507791072923/(9007199254740992*(exp(- (7400247294894263*x)/281474976710656 - 3347678857733481/1125899906842624) +1))   +

5470015743536569/(4503599627370496*(exp(- (1964472234771961*x)/70368744177664 - 3192411785409777/281474976710656) + 1)) + 18338633840740381/18014398509481984) + 1) - 1

參考文獻

  [1] 郝麗娜.計算機仿真技術及CAD.[M].北京.高等教育出版社.2014

  [2] 孫帆,施學勤.基於MATLAB的BP神經網絡設計[J].計算機與數字工程,2007,35(8)

  [3]鄭阿奇,曹戈.MATLAB實用教程[M].北京:電子工業出版社,2004,1-3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM