,
(化工部長沙設計研究院 沈陽分院,遼寧 沈陽 110026)
BP網(wǎng)絡是目前最為普遍使用的一種神經(jīng)網(wǎng)絡,它是一種采用誤差反向傳播算法進行有監(jiān)督訓練的多層神經(jīng)元網(wǎng)絡[1]。
BP網(wǎng)絡可以通過學習、訓練、對非線性系統(tǒng)進行很好的辨識,廣泛應用于函數(shù)逼近、故障診斷,分類等領域。
通過對非線性對象的仿真研究,證明BP網(wǎng)絡具有較全面的系統(tǒng)辨識能力。雖然計算時間長,易陷入局部極小值一直是它不易克服的缺點。但只要選取合適的BP網(wǎng)絡結(jié)構(gòu)、訓練BP算法,并選取辨識網(wǎng)絡輸入、輸出、隱層節(jié)點的個數(shù),BP網(wǎng)絡還是具有相當高的精度,對非線性系統(tǒng)辨識也是一種切實可行的方法[2]。
BP網(wǎng)絡主要包含輸出輸入層和隱層,建立BP網(wǎng)絡首先要選擇好網(wǎng)絡的層數(shù)和每層的節(jié)點數(shù)。輸入輸出層的節(jié)點數(shù)是根據(jù)要分析的變量數(shù)而定,當要分析非線性模擬信號量時,一般采用按時序采樣的方式選取數(shù)點作為輸入層節(jié)點數(shù)。輸出層節(jié)點數(shù)要根據(jù)實際需要考慮輸出數(shù)據(jù)的類型和數(shù)據(jù)大小來決定。
網(wǎng)絡的層數(shù)一般時預先設定的,確定網(wǎng)絡層數(shù)就是確定有幾個隱層,理論上,一個隱層在不限制隱層節(jié)點數(shù)的情況下,網(wǎng)絡可以實現(xiàn)任何在閉區(qū)間內(nèi)的一個連續(xù)函數(shù)的映射。
隱層節(jié)點數(shù)的選擇較為復雜,沒有固定解析式來解決。要結(jié)合輸入輸出節(jié)點數(shù)以及設計者的經(jīng)驗,多次嘗試來確定。可以遵循的原則是,當隱節(jié)點過多,學習時間過長,當隱節(jié)點過少,學習能力差。以下三公式可以參考。

(1)

(2)
m為輸出神經(jīng)元數(shù),n為輸入單元數(shù),a為[1,10]之間的常數(shù)。

(3)
n為輸入單元數(shù)。
以三層神經(jīng)網(wǎng)絡為例,具體步驟如下:
(2)初始化權(quán)系數(shù)為小的隨機數(shù)。
(4)根據(jù)梯度法,將誤差E反向傳播,修改權(quán)值及閾值。
對輸出層權(quán)系數(shù):

對隱層權(quán)系數(shù):

(5)所有Q對訓練樣本作用一次后,判斷總誤差 是否小于EMAX,小于退出程序。大于或等于則檢查訓練次數(shù)是否到達最大訓練次數(shù),是則退出程序,否則返回步驟2。定義:

(Eq為Q對樣本的誤差)樣本的獲得:選擇輸入信號p(k),p(k)可以是階躍、斜坡、正弦波或偽隨機信號,加到系統(tǒng)上。采集實際系統(tǒng)輸出t(k)。借助Matlab的SIMULINK實現(xiàn)。這樣可以得到Q對樣本值,以用于BP算法的系統(tǒng)辨識。
為了加快訓練速度,避免陷入局部極小值,加強魯棒性,避免過擬合和,采取改進BP算法,改進BP算法應從加快收斂和減少震蕩兩方面來考慮。加快收斂的主要方法就是優(yōu)化學習速率的選取。學習速率決定每一次循環(huán)訓練中所產(chǎn)生的權(quán)值變化量,大的學習速率可能導致的不穩(wěn)定,可能出現(xiàn)振蕩,但小的學習速率導致較長時間,可能收斂很慢。一般情況下傾向于選取較小的學習速率以保證系統(tǒng)的穩(wěn)定性。學習速率的選取范圍在0.01~0.8之間。對于一個特定的問題,要選擇適當?shù)膶W習速率并不是一件容易的事情,為了減少尋找學習速率的訓練次數(shù)以及訓練時間,比較合適的方法是采用變化的自適應調(diào)整學習速率。自適應調(diào)整學習速率法的好處是除可以加快收斂以外還可以在一定程度上克服算法陷于局部極小點的問題[4]。
采用一個三層BP網(wǎng)絡,其中各層神經(jīng)元個數(shù)為:輸入層有兩個,隱層有三個,輸出有一個。訓練目標是0.0001。隱含層采用tansig函數(shù),輸出層采用purelin函數(shù),訓練函數(shù)為traingd。

圖1 訓練誤差曲線(訓練函數(shù)為traingd)

圖2 網(wǎng)絡的輸出(訓練函數(shù)為traingd)
由上圖可知,當隱層節(jié)點數(shù)為3時,網(wǎng)絡誤差目標沒有被滿足,而且通過觀察網(wǎng)絡的輸出曲線,如圖2所示,網(wǎng)絡的實際輸出與期望輸出存在很大誤差。當隱層節(jié)點數(shù)為10時,網(wǎng)絡目標雖然被滿足,但是網(wǎng)絡的實際輸出與期望輸出較隱層節(jié)點數(shù)為5時誤差大。
若將訓練函數(shù)改為trainlm,隱層節(jié)點數(shù)為5時,其它條件不變。

圖3 訓練誤差曲線(訓練函數(shù)為trainlm)

圖4 網(wǎng)絡的輸出(訓練函數(shù)為trainlm)
由上圖可以分析出,采用隱層為5,訓練函數(shù)為trainlm時收斂速度較快,其輸出誤差也比較小,誤差曲線滿足要求,
通過MATLAB仿真實驗可以看出,應用BP神經(jīng)網(wǎng)絡方法進行系統(tǒng)辨識是切實可行的。由仿真結(jié)果表明,用BP網(wǎng)絡辨識非線性系統(tǒng),只要算法選擇恰當,層節(jié)點數(shù)選擇合理,辨識具有相當高的精度。
非線性系統(tǒng)辨識和BP神經(jīng)網(wǎng)絡的特點出發(fā),討論了利用BP網(wǎng)絡進行非線性動態(tài)系統(tǒng)辨識。仿真實例說明,BP神經(jīng)網(wǎng)絡能對函數(shù)進行很好的系統(tǒng)辨識。應對不同的實際情況,應選擇適當?shù)碾[層節(jié)點數(shù)量、合適的網(wǎng)絡結(jié)構(gòu)和訓練函數(shù),BP網(wǎng)絡算法對非線性系統(tǒng)可以進行辨識。