王永海,郭 珂*,方 岳,葉玉玲
(1.北京航天長征飛行器研究所,北京 100076;2.中船重工集團第七一○研究所,湖北 宜昌 443003)
模糊神經網絡(FNN)是一種將模糊推理系統和神經網絡有機結合,功能上與模糊推理系統完全等價的自適應網絡,具有強大的學習和推理能力。它已經在非線性系統辨識、控制、故障診斷等領域得到了廣泛應用[1-4]。
王立新[1]將模糊系統作為萬能逼近器,構造了一個前饋三層FNN,用于逼近非線性函數。韓紅桂等人[4]提出了一種基于混合梯度下降算法的模糊神經網絡,應用于非線性系統建模與污水處理過程關鍵水質參數預測時,表現出了較好的收斂速度和泛化能力。Wang[5]提出了一種具有新型模糊隸屬度函數的模糊神經網絡,并在非線性時變系統的辨識[6-7]中取得了較好的結果。葉玉玲[8]基于模糊粗糙隸屬函數,建立了一種五層結構的模糊粗糙神經網絡,并通過一種混合智能優化算法優化了網絡結構和參數,取得了較好的精度和泛化能力。劉俊強[9]對FNN的結構和學習算法進行了深入的研究,給出了四種FNN結構,其中典型的基于零階TS模糊邏輯系統的多輸入單輸出FNN結構分為五層:輸入層、模糊化層、模糊推理層、歸一化層和輸出層。這種FNN具有設計方法簡單,物理意義明確,可逼近任意非線性函數的特點。在其結構設計過程中,輸入層和輸出層根據實際系統確定,只需要給出每個輸入空間劃分的子空間數目,就確定了模糊化層、規則層和歸一化層神經元的個數及連接。FNN的參數設計,即FNN的學習,是一種多變量尋優技術,一般把參數分為前件參數和結論參數,分別學習。先確定前件參數,然后用最小二乘法得到結論參數。前件參數的學習一般采用BP算法[10]、單純形算法、遺傳算法[11]、粒子群優化算法[12-13]等。但是,這樣設計出來的FNN結構一般比較龐大,如果有4個輸入,每個輸入空間被劃分為3個子空間,那么模糊化層有12個神經元,規則層和歸一化層有81個神經元,模糊化層與規則層之間共有324個連接。復雜的FNN結構一方面增加了計算量,另一方面也降低了系統的泛化能力。
智能優化技術如遺傳算法和粒子群算法等在神經網絡結構及參數辨識中得到了廣泛的應用,并取得了很好的結果。Leung[11]和Tsai[14]分別用改進的實數編碼的遺傳算法和HTGA算法,同時對給定隱層節點數的情況下前饋神經網絡的連接權和參數進行進化設計,在保證精度的情況下,有效簡化了神經網絡的結構。文獻[15]用遞階結構的蟻群-粒子群算法來優化FNN網絡參數,從而實現神經網絡的非線性建模與控制。還有采用多種群協同進化來優化RBF網絡結構和參數[16],利用刪除法確定RBF網絡隱層節點數,用細菌群體趨藥性算法來確定參數的方法[17]等。
本文提出了一種混合集群智能優化算法,給出了其對應的實數編碼形式(RIOA)和二進制編碼形式(BIOA)。把FNN的結構用一個布爾變量來表示,然后利用協同進化的思想,分別用BIOA和RIOA對FNN的結構參數和前件參數同時進行優化設計,結論參數采用最小二乘法[18]計算得到。用此方法進行FNN設計,對太陽黑子數目進行建模,實驗驗證了方法的有效性。
在圖1所示的基于零階TS模糊邏輯系統的多輸入單輸出FNN結構設計中,設FNN的輸入為x=(x1,x2,…,xm),其中xi的輸入空間被劃分為ni個子空間,i=1,2,…,m,對應的模糊集合記為Ai={Aij,j=1,2,…,ni}。將模糊量Aij的隸屬函數記為μij(xi)=μAij(xi),則
(1)

圖1 模糊神經網絡結構Fig.1 Structure of fuzzy neural network

(2)
FNN的設計可以表示為:對于訓練樣本Dq={u1q,u2q,…,unq,fq},q=1,2,…,Q,尋找參數集S=S1+S2={ast,bst,L}+{wl},其中,s=1,2,…,N;t=1,2,…,n,使如下參數最小化:
(3)
FNN的輸出是結論參數集的線性函數,因此,在固定前件參數和網絡結構的條件下,采用最小二乘辨識得到的結論參數是最優的。故而在FNN參數辨識中,主要任務即是尋找合適的參數集{ast,bst,L}。
考慮如式(4)所示的全局數值優化問題:
minf(x)=f(x1,x2,…,xn)
(4)

混合集群智能優化算法BIOA和RIOA是一種算法的兩種不同編碼形式:二進制編碼和實數編碼。其基本思想借鑒了遺傳算法的交叉和變異操作、粒子群優化算法的相關操作[19],并對其進行了改進。其基本過程如圖2所示。

圖2 混合集群智能優化算法BIOA和RIOA進化示意圖Fig.2 Evolution figure of hybrid swarm intelligent optimization algorithm BIOA and BIOA
算法可以簡單地描述為:

Step 2:計算各個體的目標函數值,并從小到大排序;令目標函數值最小的個體為a0,對應的目標函數值設為f0。如果滿足結束條件|f0-fmin|≤es或者ns≥Ns,其中,fmin為目標函數全局最小值,則算法結束,返回a0。否則,轉Step 3。
Step 3:對a0進行變異,如果變異后的個體目標函數值減小,則用變異后的個體更新。
Step 4:對目標函數值較大的(round(n·α))個個體進行PSO操作,并計算得到個體的目標函數值,如果有小于f0的個體,則用該個體更新a0。
Step 5:對剩余的個體按交叉概率β進行交叉操作,并計算得到個體的目標函數值,如果有小于f0的個體,則用該個體更新a0。
Step 6:對所有新個體按目標函數值從小到大進行排序,選擇目標函數值較大的(round(n·γ))個個體進入下一代。
Step 7:隨機生成(round(n·(1-γ)))個新的個體,加入到下一代中。計算這些個體的目標函數值,ns=ns+1,轉Step 2。
(5)
其中,rand(1)表示[0,1]之間的隨機數,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)
混合集群智能優化算法BIOA和RIOA綜合了遺傳算法、粒子群優化算法和免疫算法的優點,改進了其算子,不僅大大提高了搜索的速度,同時也保證了種群的多樣性,從而有效避免了早熟和局部收斂。本文所提混合集群智能優化算法為全局搜索算法,由于搜索范圍覆蓋了整個搜索域,因而總是可以找到全局最優解的,從理論上可以證明算法可按期望收斂到全局最優解,且算法是漸近穩定的。歸納起來,有如下特點:
(1)每一種單一的搜索算法,都因其自身固有模式而存在自身缺陷。由遺傳算法、粒子群優化算法和免疫算法結合而成的混合集群智能優化算法BIOA和RIOA,其優化性能通常優于單一的任一種優化方法的優化性能。
(2)根據個體的目標函數值不同,采用不同的操作,大大降低了計算量,提高了搜索的效率。
(3)由于PSO算法可以靈活調節算法全局搜索和局部開發的平衡,這在一定程度上較有效地克服了算法早熟、局部收斂的缺陷,提高整體算法的搜索能力[20]。
(4)采用競爭擇優的交叉算子代替常規的交叉算子,大大提高了搜索的速度,同時,由于搜索范圍覆蓋了整個搜索域,有利于避免局部收斂和保持種群的多樣性。
(5)直接對最優個體進行變異操作,在RIOA中變異的幅度隨進化代數自適應變化,增強了算法的局部搜索能力。
(6)募集新成員操作進一步保證了抗體群的多樣性。
基于BIOA和RIOA的模糊神經網絡設計是在給定ni的情況下,利用BIOA和RIOA協同進化,尋找最優的參數集{ast,bst,L}。協同進化示意圖如圖3所示。

圖3 BIOA和RIOA協同進化示意圖Fig.3 Cooperative optimization figure of BIOA and RIOA
Step 1:隨機生成NB個長度為L的二進制編碼初始種群{a1,a2,…,aNB}和NR個長度為2m的實數編碼種群{b1,b2,…,bNR}。給參數ec(或者Nc)和ξ賦值,nc=1。
Step 2:種群1和種群2的個體進行組合,得到NB·NR個完整的參數集個體{a1b1,…,a1bNR,a2b1,…,a2bNR,…,aNBbNR}。
Step 3:對每個個體aibj(1≤i≤NB,1≤j≤NR),根據最小二乘法計算結論參數和目標函數值。令目標函數值最小的個體為最優個體a0b0。如果結束條件(最優個體對應的目標函數值|f0-fmin|≤ec或者nc≥Nc)滿足,則結束,否則轉到Step 4。
Step 4:用a0與種群2的個體進行組合,得到完整的參數集種群{a0b1,a0b2,…,a0bNR}。保持a0部分不變,利用優化算法RIOA對種群{b1,b2,…,bNR}進行進化,得到最優個體a0b′。


Step 7:nc=nc+1,轉到Step 2。
其中,超級個體的變異操作包括:刪除連接,增加連接(如果{a1,a2,…,aNB}中有為0的項),對參數進行小的隨機擾動,刪除節點。其操作如下:
(1)刪除連接
ifai=1 thenai=1-ai,
i=round(rand(1)·NB)
(2)增加連接
ifai=0 thenai=1-ai,
i=round(rand(1)·NB)
(3)對參數施加小的隨機擾動
bi=bi+(rand(1)-0.5)ξ
(4)刪除節點
aj=0,aj為所有與規則層中第i個神經元連接的連接值,i=round(rand(1)·M)。
ξ根據實際情況取較小的值。
太陽黑子的數目是年份的函數,這個函數是非線性、非穩態、非高斯的,很難對其進行預測。1700年至1980年的太陽黑子數如圖4所示。文獻[11]用改進的遺傳算法進化神經網絡的結構和參數,文獻[14]用混合Taguchi遺傳算法進化神經網絡的結構和參數。和文獻[11]相比,在相同的隱層節點下,文獻[14]的方法不僅提高了精度,而且得到的神經網絡結構也更加簡化。本實驗采用模糊神經網絡來建立太陽黑子數目的模型,用混合集群智能優化算法BIOA和RIOA協同進化來優化FNN的結構和參數。

圖4 1700年至1980年的太陽黑子數目Fig.4 Sunspot cycles from 1700 to 1980
作為比較,引入了用BP算法訓練前件參數和最小二乘法得到結論參數的FNN設計方法(FNN-BP)。
(2)把數據集分為訓練集和測試集,前180年(1705≤t≤1884)的數據作為訓練集,被用來訓練模糊神經網絡,剩余數據作為測試集,用于測試訓練好的神經網絡。
(3)訓練誤差定義為
(12)
其中,y1(t)表示t年FNN輸出的太陽黑子數目。
測試誤差定義為
(13)
適應值定義為
(14)
(4) BIOA和RIOA中的參數取值為:種群規模NB=Ng=20,α=0.5,β=0.5,γ=0.8,停止條件為ns=1,nc=10。


20次實驗所得訓練集上適應值結果如表1所示。
其網絡類型中,FNN-BIOA/RIOA表示由BIOA和RIOA協同優化結構和參數得到的FNN;FNN-BP表示僅由BP算法和最小二乘法訓練得到的FNN;NN-HTGA表示用HTGA優化結構和參數得到的三層前饋神經網絡,其數據來源于文獻[14]。由表1所列出的結果可以看出:(1)FNN-BIOA/RIOA得到的適應值(最優值和平均值)總是大于相同網絡結構的FNN-BP,而且兩者的適應值都隨著網絡規模的增大而增加。這也證明了網絡結構越復雜,越能以更高的精度逼近非線性函數。(2) FNN-BIOA/RIOA得到的適應值平均值幾乎都大于NN-HTGA,FNN-BP在網絡結構大于[3 2 2]時也都優于NN-HTGA的最優值。隨著隱層節點數的增加,NN-HTGA的適應值先增加后降低,當隱層節點數為6時,結構最優。這說明在對非線性系統進行建模時,FNN更容易得到更高的精度。(3) FNN-BIOA/RIOA和NN-HTGA得到的適應值的標準差幾乎都在10-4這一數量級。對于平均值而言,標準差很小。由于FNN-BP的參數初值每次實驗都相同,算法也相同,所以適應值標準差為0。這說明三種方法建立的網絡模型精度都比較穩定。

表1 訓練集上適應值結果比較Table 1 Comparison of fitness values on train set
20次實驗得到的適應值、訓練集上的訓練誤差、預測集上的預測誤差和連接數平均值如表2所示。圖5給出了FNN-BIOA /RIOA方法的平均訓練誤差。

圖5 FNN-BIOA /RIOA平均訓練誤差Fig.5 Average training error of FNN-BIOA /RIOA

表2 網絡性能和結構比較Table 2 Comparison of network performance and structure
其中,NN-IGA表示用IGA優化結構和參數得到的三層前饋神經網絡,其數據來源于文獻[11]。從表2的結果可以看出:(1)就訓練誤差而言,在相同的網絡結構時,FNN-BIOA/RIOA比FNN-BP小,兩者都低于NN-IGA的最優值。FNN-BIOA/RIOA在網絡規模大于[2 2 2]時,FNN-BP在網絡規模大于[3 2 2]時,兩者的訓練誤差均低于NN-HTGA的最優值。(2)就預測誤差而言,FNN-BIOA/RIOA得到的FNN預測誤差最小,FNN-BP和NN-HTGA的預測誤差大致相等,均低于NN-IGA。(3)就網絡的復雜程度而言,FNN- BIOA/RIOA的連接數明顯比FNN-BP少,這說明FNN-BP的結構中確實含有許多冗余的連接,而BIOA/RIOA可以有效地降低其冗余。
將典型的基于零階TS模糊邏輯系統的模糊神經網絡模糊化層和規則層之間的連接用一個布爾變量表示后,模糊神經網絡的輸入輸出表達式中就包含了一個反映FNN結構的參數。把這個結構參數和模糊神經網絡的前件參數分別放在兩個種群中,用本文提出的混合集群智能優化算法BIOA和RIOA進行協同進化,得到最優的前件參數后用最小二乘法計算得到優化的結論參數。對太陽黑子數目的建模實驗表明,本方法能得到比普通用BP算法和最小二乘算法得到的模糊神經網絡和用三層前饋神經網絡更高的精度和泛化能力,同時也能有效地簡化模糊神經網絡的結構。