蔣 璐,張軒雄
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
20世紀(jì)80年代,作為一種模仿腦神經(jīng)功能建立的信息處理系統(tǒng),人工神經(jīng)網(wǎng)絡(luò)迅速發(fā)展起來,其反映了生物神經(jīng)系統(tǒng)處理外界事物的基本過程,因此被廣泛應(yīng)用于各個領(lǐng)域。其中使用最廣泛的是基于誤差反向傳播算法的多層前向BP神經(jīng)網(wǎng)絡(luò)[1],而它在具有高度自學(xué)習(xí)和泛化能力等優(yōu)點的同時,也存在不可避免的缺陷:無法同時滿足精度和訓(xùn)練時間要求,易陷于局部最優(yōu)解等。
遺傳算法作為一種全局搜索最優(yōu)解的算法,常用于優(yōu)化BP神經(jīng)網(wǎng)絡(luò),但其常表現(xiàn)出收斂慢等缺陷。自Srinivas等[2]提出一種自適應(yīng)遺傳算法以來,近幾年研究人員提出將改進(jìn)的遺傳算法與蟻群算法或粒子群優(yōu)化等智能算法相結(jié)合,對神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化[3-4],但優(yōu)化算法參數(shù)過多,而不同的參數(shù)設(shè)置對最終結(jié)果影響較大,增加了方案的不確定性。文獻(xiàn)[5]提出一種基于向量元啟發(fā)式的差分優(yōu)化算法(Differential Evolution,DE),通過模擬生物群體內(nèi)個體間的合作與競爭以產(chǎn)生啟發(fā)式群體智能指導(dǎo)搜索,相比遺傳算法,其向量化突變方式被看作是一種有更高效率的方法。
本文在遺傳算法和DE算法利用后代適應(yīng)度值更新群體等作用的基礎(chǔ)上[6],提出結(jié)合差分進(jìn)化與遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),利用遺傳算法基于混沌序列的交叉算子與差分進(jìn)化的自適應(yīng)變異等操作,以充分體現(xiàn)DE-GA算法的全局搜索能力和 BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)逼近、局部搜索能力[7-8]。實驗表明方案收斂速度快、魯棒性強、運行結(jié)果可靠,優(yōu)化后的BP網(wǎng)絡(luò)預(yù)測準(zhǔn)確率保持在97%以上,可廣泛應(yīng)用于實踐生活中。
BP神經(jīng)網(wǎng)絡(luò)采用誤差函數(shù)梯度下降法進(jìn)行學(xué)習(xí),體現(xiàn)在多層網(wǎng)絡(luò)中兩種信號的傳播:正向輸入信號和反向誤差信號。其中輸出值與期望值的差值反向逐層傳遞,促使網(wǎng)絡(luò)不斷修正權(quán)值以達(dá)到精度要求。當(dāng)隱含層選擇合適的神經(jīng)元數(shù)時,單隱層的3層BP神經(jīng)網(wǎng)絡(luò)可以任意精度逼近非線性函數(shù)[9-10],故本文選用3層BP神經(jīng)網(wǎng)絡(luò)。
實際應(yīng)用中,BP神經(jīng)網(wǎng)絡(luò)不同權(quán)值和閾值極大地影響到網(wǎng)絡(luò)訓(xùn)練,導(dǎo)致易陷于局部極值,所涉及神經(jīng)網(wǎng)絡(luò)的泛化能力不能保證。故本文在傳統(tǒng)遺傳算法基礎(chǔ)上引入差分思想,通過調(diào)整種群規(guī)模、交叉算子、差分變異算子以優(yōu)化網(wǎng)絡(luò)權(quán)閾值[11-12]。
采用二進(jìn)制編碼,BP神經(jīng)網(wǎng)絡(luò)個體的維數(shù)將急劇增加,計算量也隨之增加[13]。故將BP神經(jīng)網(wǎng)絡(luò)的權(quán)、閾值按照以下順序級聯(lián)編碼為實數(shù)串:輸入層與隱含層間的連接權(quán)值、隱含層與輸出層間的連接權(quán)值、隱含層閾值、輸出層閾值。
為方便計算,BP網(wǎng)絡(luò)選擇誤差絕對值計算染色體的適應(yīng)度值,如式(1)所示。
(1)
其中,Yi為BP神經(jīng)網(wǎng)絡(luò)第i個節(jié)點的期望輸出,yi為實際輸出。
在差分進(jìn)化初始階段,種群需要較強的多樣性對解空間廣泛探索,而后期需要對最好的個體改善。因此,需根據(jù)適應(yīng)度值的在線改善情況,融合壽命機(jī)制和插入新個體的精英策略,動態(tài)調(diào)整種群規(guī)模。
GAVAPS[14]中提出個體的年齡和壽命概念。每進(jìn)化一代,年齡增加一歲。當(dāng)種群個體年齡大于壽命時,將其從種群中刪除。壽命值根據(jù)每個個體特性,采用雙線性分配策略計算,如式(2)、式(3)所示。
(2)
(3)
其中,avgfit、minfit和maxfit分別為當(dāng)前種群適應(yīng)度值的平均值、最小值和最大值;LFmax、LFmin分別為壽命可達(dá)到的最大值和最小值。
為了彌補種群多樣性減弱問題,在種群中復(fù)制適應(yīng)度值高的部分作為新個體補充。被復(fù)制個體的數(shù)目num和此時種群規(guī)模的大小變化如式(4)、式(5)所示。
num=ξ·(NPmax-NPg)
(4)
NPg+1=NPg-NPdead+num
(5)
其中,ξ為復(fù)制率;NPmax為種群最大規(guī)模;NPg、NPg+1和NPdead分別為當(dāng)前種群、下一代種群的規(guī)模和執(zhí)行壽命機(jī)制時淘汰的個體數(shù)目。
針對傳統(tǒng)遺傳算法易陷入局部極值的缺點,提出一種基于Logistic混沌序列[15]的交叉算子,利用其良好的遍歷性和隨機(jī)性確定交叉位置,如式(6)所示:
(6)
式(6)中,λk為混沌變量λ迭代k次的結(jié)果;μ為狀態(tài)控制參數(shù);當(dāng)μ=4、λ?{0.25,0.5,0.75} 時,Logistic映射工作處于混沌狀態(tài)[16],初始序列值呈現(xiàn)偽隨機(jī)分布,在此狀態(tài)下結(jié)合種群規(guī)模以確定實際交叉位置。
根據(jù)實數(shù)編碼原則,交叉算子采用模擬二進(jìn)制交叉法(SBX),染色體Xi和染色體Xj在選定位置上的交叉操作如式(7)。
(7)
其中r為交叉系數(shù)。
作為一種基于群體差異的啟發(fā)式隨機(jī)搜索算法,差分進(jìn)化利用種群中個體間的差分向量對個體進(jìn)行擾動,以實現(xiàn)個體變異[17-18]。本文隨機(jī)選取不同個體,將其向量差縮放后與待變異個體進(jìn)行向量合成新個體。改進(jìn)的適應(yīng)性調(diào)節(jié)DE/rand/1變異策略如式(8)所示。
νi(g+1)=xr1(g)+F·(xr2(g)-xr3(g))
(8)
其中,F(xiàn)為縮放因子;低適應(yīng)度值需采用較高的F值以增加尋求到最優(yōu)解的概率,反之則需要較小的F值。因此本文借鑒文獻(xiàn)[19]中調(diào)節(jié)遺傳算法變異率的思想,根據(jù)進(jìn)化過程中個體適應(yīng)度值的變化情況調(diào)節(jié)參數(shù)F。自適應(yīng)調(diào)節(jié)策略如式(9)所示。
(9)
其中,xbest、xworst分別為當(dāng)前種群內(nèi)具有最優(yōu)、最差適應(yīng)度值的向量;λ=10-13;當(dāng)|f(xi)-f(xbest)|→0時,F(xiàn)i→Fmin;當(dāng)|f(xi)-f(xbest)|→∞時,F(xiàn)i→Fmax,F(xiàn)max和Fmin分別為F值的上、下限。
差分—遺傳算法優(yōu)化BP網(wǎng)絡(luò)的主要內(nèi)容分為兩部分:其一,決定網(wǎng)絡(luò)參數(shù)及編碼初始化;其二,用DE-GA算法完成優(yōu)化。如圖1所示,本文采用DE-GA算法的種群適應(yīng)性調(diào)整、種群個體之間交叉、差分變異等過程代替 BP神經(jīng)網(wǎng)絡(luò)的誤差梯度下降方法。經(jīng)過優(yōu)化后的網(wǎng)絡(luò)可以進(jìn)行仿真預(yù)測等工作。
圖1 DE-GA優(yōu)化BP網(wǎng)絡(luò)算法流程
具體實現(xiàn)步驟如下:
(1)編碼及初始化。采用實數(shù)編碼,并對初始種群規(guī)模NPinital、最大迭代次數(shù)G、差分縮放因子F、交叉概率Pc等參數(shù)進(jìn)行初始化。
(2)設(shè)計BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),包括隱含層節(jié)點數(shù)、神經(jīng)網(wǎng)絡(luò)層數(shù)等。
(3)對種群個體執(zhí)行基于Logistic的交叉操作以及差分變異操作,計算個體的適應(yīng)度值,選擇當(dāng)前群體中的最佳個體作為最優(yōu)解。
(4)當(dāng)不滿足迭代結(jié)束條件時,使用壽命機(jī)制以及精英復(fù)制策略對種群規(guī)模進(jìn)行適應(yīng)性調(diào)整,返回步驟(3);若滿足算法停止條件,則算法結(jié)束。
為了對差分遺傳算法的性能進(jìn)行定性評價,本文選用典型的Rastrigr和Sphere函數(shù),對差分遺傳算法和傳統(tǒng)遺傳算法的適應(yīng)度函數(shù)值收斂性進(jìn)行對比[20]。圖2和圖3分別為DE-GA算法與遺傳算法在Rastrigr和Sphere函數(shù)下的適應(yīng)度值及種群的迭代進(jìn)化曲線。設(shè)定種群初始規(guī)模NPinital=100,個體編碼維數(shù)為10,最大迭代初始值G分別為7 000和500,交叉概率Pc=0.7。由圖2和圖3可見,在迭代初期,兩種方法下的適應(yīng)度值變化幅度大、收斂快;隨后浮動幅度逐漸減緩,直至收斂到穩(wěn)定狀態(tài)。
圖2 Rastrigr函數(shù)進(jìn)化曲線
圖3 Sphere函數(shù)進(jìn)化曲線
函數(shù)名函數(shù)表達(dá)式Rastrigr函數(shù)f(x)=∑100i(x2i-10cos(2πxi)+10) |xi|≤5.12Sphere函數(shù)f(x)=∑100i=1x2i |xi|≤5.12Rastrigin函數(shù)f(x)=20+x21+x22-10(cos2πx1+cos2πx2)
由圖2和圖3可以看出,在同樣的環(huán)境條件下,DE-GA算法在適應(yīng)度值收斂于0時,迭代速度明顯快于傳統(tǒng)遺傳算法。對擁有多個局部極值點的Rastrigr函數(shù)進(jìn)行測試時,圖3中遺傳算法在迭代中期處于幾乎不收斂進(jìn)化的狀態(tài),收斂速度緩慢,而同時間的DE-GA算法已收斂至穩(wěn)定狀態(tài)。從程序運行速度來看,DE-GA算法與傳統(tǒng)遺傳算法運行時間分別為20.904ms和65.146ms。而較簡單的Sphere函數(shù)經(jīng)過50代左右差分遺傳迭代就可得到較好的優(yōu)化結(jié)果。由此可知,使用差分進(jìn)化遺傳算法時,程序運行速度明顯快于遺傳算法,降低了時間復(fù)雜度,性能更優(yōu)。
本文選用Rastrigin函數(shù)作為測試函數(shù)驗證差分遺傳算法優(yōu)化BP網(wǎng)絡(luò)的性能,自變量和對應(yīng)的函數(shù)值隨機(jī)選取2 000組作為樣本點,其中1 900個用于訓(xùn)練,100個樣本點作為測試數(shù)據(jù)。按照步驟建立差分遺傳算法基本結(jié)構(gòu)和參數(shù),設(shè)置最大迭代次數(shù)為200,算法誤差閾值為1e-6。DE-GA算法的參數(shù)具體設(shè)置為:初始種群規(guī)模NPinital=100,最大迭代次數(shù)為50,交叉概率Pc=0.7,學(xué)習(xí)因子為0.1,初始差分縮放因子F=0.5,BP網(wǎng)絡(luò)均采用2-20-1的結(jié)構(gòu)。圖4和圖5分別為原BP網(wǎng)絡(luò)與經(jīng)過差分遺傳算法優(yōu)化后網(wǎng)絡(luò)100個樣本的誤差。
圖4 BP神經(jīng)網(wǎng)絡(luò)樣本誤差
圖5 DE-GA優(yōu)化的BP網(wǎng)絡(luò)樣本誤差
由圖4、圖5可見,100個樣本點的誤差分布較均勻,但同時部分點誤差較其它樣本點偏大,證明其存在一定的不穩(wěn)定性。本文以所有測試樣本的平均誤差評估此次訓(xùn)練水平,其中經(jīng)過BP網(wǎng)絡(luò)和基于DE-GA算法優(yōu)化網(wǎng)絡(luò)訓(xùn)練的平均誤差分別為17.42%、1.78%,由此可見,經(jīng)過差分遺傳算法優(yōu)化后的預(yù)測精度得到了大幅提高。
在本文給出的算法中,初始染色體的選擇等流程中都具有一定隨機(jī)性,因此評估算法的可靠性尤為重要。本文進(jìn)行了一系列仿真測試算法穩(wěn)定性,對基于DE-GA算法的BP網(wǎng)絡(luò)仿真50次,其誤差如圖6所示。
圖6 算法穩(wěn)定性測試平均誤差
由圖6可以看出,50次仿真中最大訓(xùn)練誤差為2.5%,最小誤差為0.2%,誤差均勻分布在1.5%左右,沒有出現(xiàn)誤差極大的情況,可見該算法具有良好的可靠性,對于迭代具有很強的魯棒性。
本文提出一種改進(jìn)的差分遺傳算法BP神經(jīng)網(wǎng)絡(luò)模型,將遺傳算法中的交叉操作、差分變異算子等結(jié)合起來,用于BP神經(jīng)網(wǎng)絡(luò)的權(quán)閾值優(yōu)化。通過一系列仿真,證明DE-GA算法收斂速度快,具有很好的穩(wěn)定性,且優(yōu)化后的 BP網(wǎng)絡(luò)取得了不錯的預(yù)測效果。下一步研究工作將考慮在樣本數(shù)量少、樣本分布不均勻而造成神經(jīng)網(wǎng)絡(luò)預(yù)測誤差大的場景下進(jìn)行,以期得出更為實用的方法。