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