,
(化工部長沙設(shè)計研究院 沈陽分院,遼寧 沈陽 110026)
BP網(wǎng)絡(luò)是目前最為普遍使用的一種神經(jīng)網(wǎng)絡(luò),它是一種采用誤差反向傳播算法進(jìn)行有監(jiān)督訓(xùn)練的多層神經(jīng)元網(wǎng)絡(luò)[1]。
BP網(wǎng)絡(luò)可以通過學(xué)習(xí)、訓(xùn)練、對非線性系統(tǒng)進(jìn)行很好的辨識,廣泛應(yīng)用于函數(shù)逼近、故障診斷,分類等領(lǐng)域。
通過對非線性對象的仿真研究,證明BP網(wǎng)絡(luò)具有較全面的系統(tǒng)辨識能力。雖然計算時間長,易陷入局部極小值一直是它不易克服的缺點。但只要選取合適的BP網(wǎng)絡(luò)結(jié)構(gòu)、訓(xùn)練BP算法,并選取辨識網(wǎng)絡(luò)輸入、輸出、隱層節(jié)點的個數(shù),BP網(wǎng)絡(luò)還是具有相當(dāng)高的精度,對非線性系統(tǒng)辨識也是一種切實可行的方法[2]。
BP網(wǎng)絡(luò)主要包含輸出輸入層和隱層,建立BP網(wǎng)絡(luò)首先要選擇好網(wǎng)絡(luò)的層數(shù)和每層的節(jié)點數(shù)。輸入輸出層的節(jié)點數(shù)是根據(jù)要分析的變量數(shù)而定,當(dāng)要分析非線性模擬信號量時,一般采用按時序采樣的方式選取數(shù)點作為輸入層節(jié)點數(shù)。輸出層節(jié)點數(shù)要根據(jù)實際需要考慮輸出數(shù)據(jù)的類型和數(shù)據(jù)大小來決定。
網(wǎng)絡(luò)的層數(shù)一般時預(yù)先設(shè)定的,確定網(wǎng)絡(luò)層數(shù)就是確定有幾個隱層,理論上,一個隱層在不限制隱層節(jié)點數(shù)的情況下,網(wǎng)絡(luò)可以實現(xiàn)任何在閉區(qū)間內(nèi)的一個連續(xù)函數(shù)的映射。
隱層節(jié)點數(shù)的選擇較為復(fù)雜,沒有固定解析式來解決。要結(jié)合輸入輸出節(jié)點數(shù)以及設(shè)計者的經(jīng)驗,多次嘗試來確定。可以遵循的原則是,當(dāng)隱節(jié)點過多,學(xué)習(xí)時間過長,當(dāng)隱節(jié)點過少,學(xué)習(xí)能力差。以下三公式可以參考。
(1)
(2)
m為輸出神經(jīng)元數(shù),n為輸入單元數(shù),a為[1,10]之間的常數(shù)。
(3)
n為輸入單元數(shù)。
以三層神經(jīng)網(wǎng)絡(luò)為例,具體步驟如下:
(2)初始化權(quán)系數(shù)為小的隨機(jī)數(shù)。
(4)根據(jù)梯度法,將誤差E反向傳播,修改權(quán)值及閾值。
對輸出層權(quán)系數(shù):
對隱層權(quán)系數(shù):
(5)所有Q對訓(xùn)練樣本作用一次后,判斷總誤差 是否小于EMAX,小于退出程序。大于或等于則檢查訓(xùn)練次數(shù)是否到達(dá)最大訓(xùn)練次數(shù),是則退出程序,否則返回步驟2。定義:
(Eq為Q對樣本的誤差)樣本的獲得:選擇輸入信號p(k),p(k)可以是階躍、斜坡、正弦波或偽隨機(jī)信號,加到系統(tǒng)上。采集實際系統(tǒng)輸出t(k)。借助Matlab的SIMULINK實現(xiàn)。這樣可以得到Q對樣本值,以用于BP算法的系統(tǒng)辨識。
為了加快訓(xùn)練速度,避免陷入局部極小值,加強魯棒性,避免過擬合和,采取改進(jìn)BP算法,改進(jìn)BP算法應(yīng)從加快收斂和減少震蕩兩方面來考慮。加快收斂的主要方法就是優(yōu)化學(xué)習(xí)速率的選取。學(xué)習(xí)速率決定每一次循環(huán)訓(xùn)練中所產(chǎn)生的權(quán)值變化量,大的學(xué)習(xí)速率可能導(dǎo)致的不穩(wěn)定,可能出現(xiàn)振蕩,但小的學(xué)習(xí)速率導(dǎo)致較長時間,可能收斂很慢。一般情況下傾向于選取較小的學(xué)習(xí)速率以保證系統(tǒng)的穩(wěn)定性。學(xué)習(xí)速率的選取范圍在0.01~0.8之間。對于一個特定的問題,要選擇適當(dāng)?shù)膶W(xué)習(xí)速率并不是一件容易的事情,為了減少尋找學(xué)習(xí)速率的訓(xùn)練次數(shù)以及訓(xùn)練時間,比較合適的方法是采用變化的自適應(yīng)調(diào)整學(xué)習(xí)速率。自適應(yīng)調(diào)整學(xué)習(xí)速率法的好處是除可以加快收斂以外還可以在一定程度上克服算法陷于局部極小點的問題[4]。
采用一個三層BP網(wǎng)絡(luò),其中各層神經(jīng)元個數(shù)為:輸入層有兩個,隱層有三個,輸出有一個。訓(xùn)練目標(biāo)是0.0001。隱含層采用tansig函數(shù),輸出層采用purelin函數(shù),訓(xùn)練函數(shù)為traingd。
圖1 訓(xùn)練誤差曲線(訓(xùn)練函數(shù)為traingd)
圖2 網(wǎng)絡(luò)的輸出(訓(xùn)練函數(shù)為traingd)
由上圖可知,當(dāng)隱層節(jié)點數(shù)為3時,網(wǎng)絡(luò)誤差目標(biāo)沒有被滿足,而且通過觀察網(wǎng)絡(luò)的輸出曲線,如圖2所示,網(wǎng)絡(luò)的實際輸出與期望輸出存在很大誤差。當(dāng)隱層節(jié)點數(shù)為10時,網(wǎng)絡(luò)目標(biāo)雖然被滿足,但是網(wǎng)絡(luò)的實際輸出與期望輸出較隱層節(jié)點數(shù)為5時誤差大。
若將訓(xùn)練函數(shù)改為trainlm,隱層節(jié)點數(shù)為5時,其它條件不變。
圖3 訓(xùn)練誤差曲線(訓(xùn)練函數(shù)為trainlm)
圖4 網(wǎng)絡(luò)的輸出(訓(xùn)練函數(shù)為trainlm)
由上圖可以分析出,采用隱層為5,訓(xùn)練函數(shù)為trainlm時收斂速度較快,其輸出誤差也比較小,誤差曲線滿足要求,
通過MATLAB仿真實驗可以看出,應(yīng)用BP神經(jīng)網(wǎng)絡(luò)方法進(jìn)行系統(tǒng)辨識是切實可行的。由仿真結(jié)果表明,用BP網(wǎng)絡(luò)辨識非線性系統(tǒng),只要算法選擇恰當(dāng),層節(jié)點數(shù)選擇合理,辨識具有相當(dāng)高的精度。
非線性系統(tǒng)辨識和BP神經(jīng)網(wǎng)絡(luò)的特點出發(fā),討論了利用BP網(wǎng)絡(luò)進(jìn)行非線性動態(tài)系統(tǒng)辨識。仿真實例說明,BP神經(jīng)網(wǎng)絡(luò)能對函數(shù)進(jìn)行很好的系統(tǒng)辨識。應(yīng)對不同的實際情況,應(yīng)選擇適當(dāng)?shù)碾[層節(jié)點數(shù)量、合適的網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練函數(shù),BP網(wǎng)絡(luò)算法對非線性系統(tǒng)可以進(jìn)行辨識。