王永海,郭 珂*,方 岳,葉玉玲
(1.北京航天長征飛行器研究所,北京 100076;2.中船重工集團第七一○研究所,湖北 宜昌 443003)
模糊神經(jīng)網(wǎng)絡(FNN)是一種將模糊推理系統(tǒng)和神經(jīng)網(wǎng)絡有機結(jié)合,功能上與模糊推理系統(tǒng)完全等價的自適應網(wǎng)絡,具有強大的學習和推理能力。它已經(jīng)在非線性系統(tǒng)辨識、控制、故障診斷等領域得到了廣泛應用[1-4]。
王立新[1]將模糊系統(tǒng)作為萬能逼近器,構(gòu)造了一個前饋三層FNN,用于逼近非線性函數(shù)。韓紅桂等人[4]提出了一種基于混合梯度下降算法的模糊神經(jīng)網(wǎng)絡,應用于非線性系統(tǒng)建模與污水處理過程關鍵水質(zhì)參數(shù)預測時,表現(xiàn)出了較好的收斂速度和泛化能力。Wang[5]提出了一種具有新型模糊隸屬度函數(shù)的模糊神經(jīng)網(wǎng)絡,并在非線性時變系統(tǒng)的辨識[6-7]中取得了較好的結(jié)果。葉玉玲[8]基于模糊粗糙隸屬函數(shù),建立了一種五層結(jié)構(gòu)的模糊粗糙神經(jīng)網(wǎng)絡,并通過一種混合智能優(yōu)化算法優(yōu)化了網(wǎng)絡結(jié)構(gòu)和參數(shù),取得了較好的精度和泛化能力。劉俊強[9]對FNN的結(jié)構(gòu)和學習算法進行了深入的研究,給出了四種FNN結(jié)構(gòu),其中典型的基于零階TS模糊邏輯系統(tǒng)的多輸入單輸出FNN結(jié)構(gòu)分為五層:輸入層、模糊化層、模糊推理層、歸一化層和輸出層。這種FNN具有設計方法簡單,物理意義明確,可逼近任意非線性函數(shù)的特點。在其結(jié)構(gòu)設計過程中,輸入層和輸出層根據(jù)實際系統(tǒng)確定,只需要給出每個輸入空間劃分的子空間數(shù)目,就確定了模糊化層、規(guī)則層和歸一化層神經(jīng)元的個數(shù)及連接。FNN的參數(shù)設計,即FNN的學習,是一種多變量尋優(yōu)技術(shù),一般把參數(shù)分為前件參數(shù)和結(jié)論參數(shù),分別學習。先確定前件參數(shù),然后用最小二乘法得到結(jié)論參數(shù)。前件參數(shù)的學習一般采用BP算法[10]、單純形算法、遺傳算法[11]、粒子群優(yōu)化算法[12-13]等。但是,這樣設計出來的FNN結(jié)構(gòu)一般比較龐大,如果有4個輸入,每個輸入空間被劃分為3個子空間,那么模糊化層有12個神經(jīng)元,規(guī)則層和歸一化層有81個神經(jīng)元,模糊化層與規(guī)則層之間共有324個連接。復雜的FNN結(jié)構(gòu)一方面增加了計算量,另一方面也降低了系統(tǒng)的泛化能力。
智能優(yōu)化技術(shù)如遺傳算法和粒子群算法等在神經(jīng)網(wǎng)絡結(jié)構(gòu)及參數(shù)辨識中得到了廣泛的應用,并取得了很好的結(jié)果。Leung[11]和Tsai[14]分別用改進的實數(shù)編碼的遺傳算法和HTGA算法,同時對給定隱層節(jié)點數(shù)的情況下前饋神經(jīng)網(wǎng)絡的連接權(quán)和參數(shù)進行進化設計,在保證精度的情況下,有效簡化了神經(jīng)網(wǎng)絡的結(jié)構(gòu)。文獻[15]用遞階結(jié)構(gòu)的蟻群-粒子群算法來優(yōu)化FNN網(wǎng)絡參數(shù),從而實現(xiàn)神經(jīng)網(wǎng)絡的非線性建模與控制。還有采用多種群協(xié)同進化來優(yōu)化RBF網(wǎng)絡結(jié)構(gòu)和參數(shù)[16],利用刪除法確定RBF網(wǎng)絡隱層節(jié)點數(shù),用細菌群體趨藥性算法來確定參數(shù)的方法[17]等。
本文提出了一種混合集群智能優(yōu)化算法,給出了其對應的實數(shù)編碼形式(RIOA)和二進制編碼形式(BIOA)。把FNN的結(jié)構(gòu)用一個布爾變量來表示,然后利用協(xié)同進化的思想,分別用BIOA和RIOA對FNN的結(jié)構(gòu)參數(shù)和前件參數(shù)同時進行優(yōu)化設計,結(jié)論參數(shù)采用最小二乘法[18]計算得到。用此方法進行FNN設計,對太陽黑子數(shù)目進行建模,實驗驗證了方法的有效性。
在圖1所示的基于零階TS模糊邏輯系統(tǒng)的多輸入單輸出FNN結(jié)構(gòu)設計中,設FNN的輸入為x=(x1,x2,…,xm),其中xi的輸入空間被劃分為ni個子空間,i=1,2,…,m,對應的模糊集合記為Ai={Aij,j=1,2,…,ni}。將模糊量Aij的隸屬函數(shù)記為μij(xi)=μAij(xi),則
(1)
圖1 模糊神經(jīng)網(wǎng)絡結(jié)構(gòu)Fig.1 Structure of fuzzy neural network
(2)
FNN的設計可以表示為:對于訓練樣本Dq={u1q,u2q,…,unq,fq},q=1,2,…,Q,尋找參數(shù)集S=S1+S2={ast,bst,L}+{wl},其中,s=1,2,…,N;t=1,2,…,n,使如下參數(shù)最小化:
(3)
FNN的輸出是結(jié)論參數(shù)集的線性函數(shù),因此,在固定前件參數(shù)和網(wǎng)絡結(jié)構(gòu)的條件下,采用最小二乘辨識得到的結(jié)論參數(shù)是最優(yōu)的。故而在FNN參數(shù)辨識中,主要任務即是尋找合適的參數(shù)集{ast,bst,L}。
考慮如式(4)所示的全局數(shù)值優(yōu)化問題:
minf(x)=f(x1,x2,…,xn)
(4)
混合集群智能優(yōu)化算法BIOA和RIOA是一種算法的兩種不同編碼形式:二進制編碼和實數(shù)編碼。其基本思想借鑒了遺傳算法的交叉和變異操作、粒子群優(yōu)化算法的相關操作[19],并對其進行了改進。其基本過程如圖2所示。
圖2 混合集群智能優(yōu)化算法BIOA和RIOA進化示意圖Fig.2 Evolution figure of hybrid swarm intelligent optimization algorithm BIOA and BIOA
算法可以簡單地描述為:
Step 2:計算各個體的目標函數(shù)值,并從小到大排序;令目標函數(shù)值最小的個體為a0,對應的目標函數(shù)值設為f0。如果滿足結(jié)束條件|f0-fmin|≤es或者ns≥Ns,其中,fmin為目標函數(shù)全局最小值,則算法結(jié)束,返回a0。否則,轉(zhuǎn)Step 3。
Step 3:對a0進行變異,如果變異后的個體目標函數(shù)值減小,則用變異后的個體更新。
Step 4:對目標函數(shù)值較大的(round(n·α))個個體進行PSO操作,并計算得到個體的目標函數(shù)值,如果有小于f0的個體,則用該個體更新a0。
Step 5:對剩余的個體按交叉概率β進行交叉操作,并計算得到個體的目標函數(shù)值,如果有小于f0的個體,則用該個體更新a0。
Step 6:對所有新個體按目標函數(shù)值從小到大進行排序,選擇目標函數(shù)值較大的(round(n·γ))個個體進入下一代。
Step 7:隨機生成(round(n·(1-γ)))個新的個體,加入到下一代中。計算這些個體的目標函數(shù)值,ns=ns+1,轉(zhuǎn)Step 2。
(5)
其中,rand(1)表示[0,1]之間的隨機數(shù),round(·)為取整操作。
第4步的PSO操作為
其中,δ為閾值,0<δ<0.5。
j=round(rand(1)·m)
(6)
其中,λ∈[-0.5 0.5],j=round(rand(1)·m)。
PSO操作為
(7)
(8)
(9)
(10)
(11)
混合集群智能優(yōu)化算法BIOA和RIOA綜合了遺傳算法、粒子群優(yōu)化算法和免疫算法的優(yōu)點,改進了其算子,不僅大大提高了搜索的速度,同時也保證了種群的多樣性,從而有效避免了早熟和局部收斂。本文所提混合集群智能優(yōu)化算法為全局搜索算法,由于搜索范圍覆蓋了整個搜索域,因而總是可以找到全局最優(yōu)解的,從理論上可以證明算法可按期望收斂到全局最優(yōu)解,且算法是漸近穩(wěn)定的。歸納起來,有如下特點:
(1)每一種單一的搜索算法,都因其自身固有模式而存在自身缺陷。由遺傳算法、粒子群優(yōu)化算法和免疫算法結(jié)合而成的混合集群智能優(yōu)化算法BIOA和RIOA,其優(yōu)化性能通常優(yōu)于單一的任一種優(yōu)化方法的優(yōu)化性能。
(2)根據(jù)個體的目標函數(shù)值不同,采用不同的操作,大大降低了計算量,提高了搜索的效率。
(3)由于PSO算法可以靈活調(diào)節(jié)算法全局搜索和局部開發(fā)的平衡,這在一定程度上較有效地克服了算法早熟、局部收斂的缺陷,提高整體算法的搜索能力[20]。
(4)采用競爭擇優(yōu)的交叉算子代替常規(guī)的交叉算子,大大提高了搜索的速度,同時,由于搜索范圍覆蓋了整個搜索域,有利于避免局部收斂和保持種群的多樣性。
(5)直接對最優(yōu)個體進行變異操作,在RIOA中變異的幅度隨進化代數(shù)自適應變化,增強了算法的局部搜索能力。
(6)募集新成員操作進一步保證了抗體群的多樣性。
基于BIOA和RIOA的模糊神經(jīng)網(wǎng)絡設計是在給定ni的情況下,利用BIOA和RIOA協(xié)同進化,尋找最優(yōu)的參數(shù)集{ast,bst,L}。協(xié)同進化示意圖如圖3所示。
圖3 BIOA和RIOA協(xié)同進化示意圖Fig.3 Cooperative optimization figure of BIOA and RIOA
Step 1:隨機生成NB個長度為L的二進制編碼初始種群{a1,a2,…,aNB}和NR個長度為2m的實數(shù)編碼種群{b1,b2,…,bNR}。給參數(shù)ec(或者Nc)和ξ賦值,nc=1。
Step 2:種群1和種群2的個體進行組合,得到NB·NR個完整的參數(shù)集個體{a1b1,…,a1bNR,a2b1,…,a2bNR,…,aNBbNR}。
Step 3:對每個個體aibj(1≤i≤NB,1≤j≤NR),根據(jù)最小二乘法計算結(jié)論參數(shù)和目標函數(shù)值。令目標函數(shù)值最小的個體為最優(yōu)個體a0b0。如果結(jié)束條件(最優(yōu)個體對應的目標函數(shù)值|f0-fmin|≤ec或者nc≥Nc)滿足,則結(jié)束,否則轉(zhuǎn)到Step 4。
Step 4:用a0與種群2的個體進行組合,得到完整的參數(shù)集種群{a0b1,a0b2,…,a0bNR}。保持a0部分不變,利用優(yōu)化算法RIOA對種群{b1,b2,…,bNR}進行進化,得到最優(yōu)個體a0b′。
Step 7:nc=nc+1,轉(zhuǎn)到Step 2。
其中,超級個體的變異操作包括:刪除連接,增加連接(如果{a1,a2,…,aNB}中有為0的項),對參數(shù)進行小的隨機擾動,刪除節(jié)點。其操作如下:
(1)刪除連接
ifai=1 thenai=1-ai,
i=round(rand(1)·NB)
(2)增加連接
ifai=0 thenai=1-ai,
i=round(rand(1)·NB)
(3)對參數(shù)施加小的隨機擾動
bi=bi+(rand(1)-0.5)ξ
(4)刪除節(jié)點
aj=0,aj為所有與規(guī)則層中第i個神經(jīng)元連接的連接值,i=round(rand(1)·M)。
ξ根據(jù)實際情況取較小的值。
太陽黑子的數(shù)目是年份的函數(shù),這個函數(shù)是非線性、非穩(wěn)態(tài)、非高斯的,很難對其進行預測。1700年至1980年的太陽黑子數(shù)如圖4所示。文獻[11]用改進的遺傳算法進化神經(jīng)網(wǎng)絡的結(jié)構(gòu)和參數(shù),文獻[14]用混合Taguchi遺傳算法進化神經(jīng)網(wǎng)絡的結(jié)構(gòu)和參數(shù)。和文獻[11]相比,在相同的隱層節(jié)點下,文獻[14]的方法不僅提高了精度,而且得到的神經(jīng)網(wǎng)絡結(jié)構(gòu)也更加簡化。本實驗采用模糊神經(jīng)網(wǎng)絡來建立太陽黑子數(shù)目的模型,用混合集群智能優(yōu)化算法BIOA和RIOA協(xié)同進化來優(yōu)化FNN的結(jié)構(gòu)和參數(shù)。
圖4 1700年至1980年的太陽黑子數(shù)目Fig.4 Sunspot cycles from 1700 to 1980
作為比較,引入了用BP算法訓練前件參數(shù)和最小二乘法得到結(jié)論參數(shù)的FNN設計方法(FNN-BP)。
(2)把數(shù)據(jù)集分為訓練集和測試集,前180年(1705≤t≤1884)的數(shù)據(jù)作為訓練集,被用來訓練模糊神經(jīng)網(wǎng)絡,剩余數(shù)據(jù)作為測試集,用于測試訓練好的神經(jīng)網(wǎng)絡。
(3)訓練誤差定義為
(12)
其中,y1(t)表示t年FNN輸出的太陽黑子數(shù)目。
測試誤差定義為
(13)
適應值定義為
(14)
(4) BIOA和RIOA中的參數(shù)取值為:種群規(guī)模NB=Ng=20,α=0.5,β=0.5,γ=0.8,停止條件為ns=1,nc=10。
20次實驗所得訓練集上適應值結(jié)果如表1所示。
其網(wǎng)絡類型中,F(xiàn)NN-BIOA/RIOA表示由BIOA和RIOA協(xié)同優(yōu)化結(jié)構(gòu)和參數(shù)得到的FNN;FNN-BP表示僅由BP算法和最小二乘法訓練得到的FNN;NN-HTGA表示用HTGA優(yōu)化結(jié)構(gòu)和參數(shù)得到的三層前饋神經(jīng)網(wǎng)絡,其數(shù)據(jù)來源于文獻[14]。由表1所列出的結(jié)果可以看出:(1)FNN-BIOA/RIOA得到的適應值(最優(yōu)值和平均值)總是大于相同網(wǎng)絡結(jié)構(gòu)的FNN-BP,而且兩者的適應值都隨著網(wǎng)絡規(guī)模的增大而增加。這也證明了網(wǎng)絡結(jié)構(gòu)越復雜,越能以更高的精度逼近非線性函數(shù)。(2) FNN-BIOA/RIOA得到的適應值平均值幾乎都大于NN-HTGA,F(xiàn)NN-BP在網(wǎng)絡結(jié)構(gòu)大于[3 2 2]時也都優(yōu)于NN-HTGA的最優(yōu)值。隨著隱層節(jié)點數(shù)的增加,NN-HTGA的適應值先增加后降低,當隱層節(jié)點數(shù)為6時,結(jié)構(gòu)最優(yōu)。這說明在對非線性系統(tǒng)進行建模時,F(xiàn)NN更容易得到更高的精度。(3) FNN-BIOA/RIOA和NN-HTGA得到的適應值的標準差幾乎都在10-4這一數(shù)量級。對于平均值而言,標準差很小。由于FNN-BP的參數(shù)初值每次實驗都相同,算法也相同,所以適應值標準差為0。這說明三種方法建立的網(wǎng)絡模型精度都比較穩(wěn)定。
表1 訓練集上適應值結(jié)果比較Table 1 Comparison of fitness values on train set
20次實驗得到的適應值、訓練集上的訓練誤差、預測集上的預測誤差和連接數(shù)平均值如表2所示。圖5給出了FNN-BIOA /RIOA方法的平均訓練誤差。
圖5 FNN-BIOA /RIOA平均訓練誤差Fig.5 Average training error of FNN-BIOA /RIOA
表2 網(wǎng)絡性能和結(jié)構(gòu)比較Table 2 Comparison of network performance and structure
其中,NN-IGA表示用IGA優(yōu)化結(jié)構(gòu)和參數(shù)得到的三層前饋神經(jīng)網(wǎng)絡,其數(shù)據(jù)來源于文獻[11]。從表2的結(jié)果可以看出:(1)就訓練誤差而言,在相同的網(wǎng)絡結(jié)構(gòu)時,F(xiàn)NN-BIOA/RIOA比FNN-BP小,兩者都低于NN-IGA的最優(yōu)值。FNN-BIOA/RIOA在網(wǎng)絡規(guī)模大于[2 2 2]時,F(xiàn)NN-BP在網(wǎng)絡規(guī)模大于[3 2 2]時,兩者的訓練誤差均低于NN-HTGA的最優(yōu)值。(2)就預測誤差而言,F(xiàn)NN-BIOA/RIOA得到的FNN預測誤差最小,F(xiàn)NN-BP和NN-HTGA的預測誤差大致相等,均低于NN-IGA。(3)就網(wǎng)絡的復雜程度而言,F(xiàn)NN- BIOA/RIOA的連接數(shù)明顯比FNN-BP少,這說明FNN-BP的結(jié)構(gòu)中確實含有許多冗余的連接,而BIOA/RIOA可以有效地降低其冗余。
將典型的基于零階TS模糊邏輯系統(tǒng)的模糊神經(jīng)網(wǎng)絡模糊化層和規(guī)則層之間的連接用一個布爾變量表示后,模糊神經(jīng)網(wǎng)絡的輸入輸出表達式中就包含了一個反映FNN結(jié)構(gòu)的參數(shù)。把這個結(jié)構(gòu)參數(shù)和模糊神經(jīng)網(wǎng)絡的前件參數(shù)分別放在兩個種群中,用本文提出的混合集群智能優(yōu)化算法BIOA和RIOA進行協(xié)同進化,得到最優(yōu)的前件參數(shù)后用最小二乘法計算得到優(yōu)化的結(jié)論參數(shù)。對太陽黑子數(shù)目的建模實驗表明,本方法能得到比普通用BP算法和最小二乘算法得到的模糊神經(jīng)網(wǎng)絡和用三層前饋神經(jīng)網(wǎng)絡更高的精度和泛化能力,同時也能有效地簡化模糊神經(jīng)網(wǎng)絡的結(jié)構(gòu)。