(遼寧工業(yè)大學(xué) 管理學(xué)院,遼寧 錦州 121001)
遺傳算法和神經(jīng)網(wǎng)絡(luò)是智能算法中兩個重要方法。BP(Back-Propagation algorithm)神經(jīng)網(wǎng)絡(luò)本質(zhì)上是基于梯度下降的一種迭代學(xué)習(xí)算法,其誤差曲面是非常復(fù)雜的多元曲面,存在許多局部極小解,當(dāng)梯度為0 時,BP 算法則無法辨別極小點性質(zhì),使訓(xùn)練難以收斂到指定誤差;若在誤差曲面平坦區(qū),則調(diào)整時間長,影響收斂速度[1]。為了克服這些缺陷,學(xué)者提出了許多改進措施,如附加動量項、自適應(yīng)學(xué)習(xí)率,與現(xiàn)代優(yōu)化方法結(jié)合等。而建立在遺傳學(xué)基礎(chǔ)上的遺傳算法(genetic algorithms,GA)主要特點是對目標(biāo)函數(shù)無限制,廣泛用于人工神經(jīng)網(wǎng)絡(luò)訓(xùn)練與優(yōu)化問題[2-3]。
如何使遺傳算法和BP 算法有機結(jié)合,許多學(xué)者做了大量研究。一般用遺傳算法優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和初始權(quán)值閾值[4-5]。但遺傳算法求解優(yōu)化問題時,只能求得給定區(qū)間內(nèi)的優(yōu)化值[6]。而神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值所在區(qū)間一般無法預(yù)知,故本文采用能夠動態(tài)調(diào)整權(quán)值和閾值所在區(qū)間的自適應(yīng)遺傳算法(IAGA),徹底取代BP 算法反向調(diào)整權(quán)值閾值的過程,達到自適應(yīng)調(diào)整權(quán)值閾值的目的,從而將BP 算法和IAGA 有機結(jié)合起來,充分發(fā)揮各自優(yōu)勢,有效克服BP 算法學(xué)習(xí)過程中易陷入局部極小值、振蕩等缺陷。
三層BP 算法其結(jié)構(gòu)如圖1 所示。
圖1 BP 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
X=[X1,X2,…,Xk,…,XN]為N個訓(xùn)練樣本集,Xk=[Xk1,Xk2,…,XkM]T為任一訓(xùn)練樣本,(k=1,2,…,N),Yk=[yk1,yk2,…,ykP]T實際輸出為,dk=[dk1,dk2,…,dkP]T為期望輸出。神經(jīng)元激勵函數(shù)均使用Sigmoid 函數(shù):
經(jīng)神經(jīng)網(wǎng)絡(luò)正向傳播后工作信號的實際輸出為:
式中:i=1,2,…,I,p=1,2,…,P
設(shè)n為迭代次數(shù),權(quán)值、閾值和網(wǎng)絡(luò)實際輸出是n的函數(shù)。則輸出層第p個神經(jīng)元誤差信號為:
神經(jīng)元p的誤差能量定義為,則輸出層所有神經(jīng)元的誤差能量總和為E(n):
在誤差信號的反向傳播過程中,BP 算法是通過調(diào)整權(quán)空間中的梯度使E(n)值下降的,詳細推導(dǎo)過程見文獻[7]。
為了能更好的說明IAGA 自適應(yīng)移動搜索區(qū)間的過程,以某一權(quán)值在初始區(qū)間[U1,U2]中的調(diào)整過程為例,且U1>U2,U2點的目標(biāo)函數(shù)值優(yōu)于U1點。隨機產(chǎn)生pop個初始種群,設(shè)所有神經(jīng)元的誤差能量總和達到指定較小精度要求時所對應(yīng)的權(quán)值為ω*,且ω*不在[U1,U2]內(nèi),ω*>U2。經(jīng)過幾次選擇、交叉和變異遺傳操作后種群中目標(biāo)函數(shù)值最小的個體逐漸向U1點趨近,這時可取
神經(jīng)網(wǎng)絡(luò)最優(yōu)解所對應(yīng)權(quán)值和閾值的區(qū)間范圍一般很難預(yù)知,而遺傳算法求解優(yōu)化問題時,若最優(yōu)解不在給定的取值范圍內(nèi),只能求得一個指定區(qū)間內(nèi)的較優(yōu)解,有可能求不到真正使誤差能量總和達到指定精度要求的較優(yōu)解,使神經(jīng)網(wǎng)絡(luò)的擬合效果下降,為此本文將區(qū)間自適應(yīng)遺傳算法用于神經(jīng)網(wǎng)絡(luò)權(quán)值閾值的調(diào)整,即用IAGA 的優(yōu)化功能,取代誤差信號反向傳播逐層修改權(quán)值和閾值的過程。IAGA 優(yōu)化BP 算法的數(shù)學(xué)模型為:
步驟1:對訓(xùn)練樣本進行預(yù)處理。
為避免出現(xiàn)奇異樣本數(shù)據(jù)所引起訓(xùn)練時間增加和無法收斂等問題,將訓(xùn)練樣本數(shù)據(jù)進行歸一化處理,使量綱數(shù)據(jù)變?yōu)闊o量綱純量。
步驟2:變量的初始化。
輸入:種群規(guī)模pop,最大迭代次數(shù)T,交叉概率pc,變異概率pm,權(quán)值與閾值的初始區(qū)間。
步驟3:計算碼長,隨機產(chǎn)生初始種群。
步驟4:設(shè)置迭代次數(shù)t=0。
步驟5:形成父代種群。
步驟6:解碼。
步驟7:保留m個適應(yīng)度高精英個體。
步驟8:選擇。
步驟9:交叉。采用單點交叉方式。
步驟10:變異。
步驟11:保留優(yōu)秀個體[8]。
步驟12:判斷是否滿足更新區(qū)間條件,不滿足,則執(zhí)行步驟13,滿足則移動搜索區(qū)間。
步驟13:將交叉產(chǎn)生的個體,按自適應(yīng)變異方式進行變異。
步驟14:精英替代變異后適應(yīng)度值低的個體。
步驟15:形成新一代種群,遺傳進化一代完成,即t=t+1;
步驟16:判斷訓(xùn)練誤差結(jié)束條件,滿足則終止遺傳運算,不滿足要求,則轉(zhuǎn)到步驟5。
步驟17:將計算得到的權(quán)值和閾值代入工作信號正向傳播的輸出公式(4),并計算神經(jīng)網(wǎng)絡(luò)的實際輸出。
步驟18:反歸一化處理。為了與原始數(shù)據(jù)擬合,需將神經(jīng)網(wǎng)絡(luò)的輸出數(shù)據(jù)反歸一化處理。
步驟19:與試驗數(shù)據(jù)擬合。
用曹秀麗等[9]所做的大豆油甲酯合成工藝試驗數(shù)據(jù)為訓(xùn)練樣本,驗證區(qū)間自適應(yīng)遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)權(quán)值閾值,試驗訓(xùn)練數(shù)據(jù)如表1 所示。因Sigmoid 函數(shù)在接近0 或1 時,基本達到飽和狀態(tài),增加變慢,故將試驗數(shù)據(jù)歸一化處理到區(qū)間[0.1,0.8]之間,加快網(wǎng)絡(luò)的收斂速度。
表1 試驗訓(xùn)練樣本
網(wǎng)絡(luò)結(jié)構(gòu)為4-7-1。權(quán)值和閾值初始區(qū)間取值為[-10,10],種群規(guī)模80,編碼精度為1.00e-4。當(dāng)遺傳操作代數(shù)count=1 000 時,進行區(qū)間移動。交叉概率pc=0.95,變異概率pm=0.05,精英個體數(shù)4。用MATLAB R2016b 編程完成上述思想,當(dāng)輸出誤差達到2.58×10-8時,算法結(jié)束,此時得到的權(quán)值閾值結(jié)果為:
將訓(xùn)練好的權(quán)值和閾值代入BP神經(jīng)網(wǎng)絡(luò)工作信號正向傳播過程的計算公式,即式(4),可得網(wǎng)絡(luò)的實際輸出,并實際輸出反歸一化處理后得到如表2所示數(shù)據(jù)。
表2 網(wǎng)絡(luò)輸出值與實驗值擬合精度情況 %
從表2 可知,用IAGA 優(yōu)化方法替代梯度下降法來調(diào)整權(quán)值和閾值,可使BP 神經(jīng)網(wǎng)絡(luò)的輸出數(shù)據(jù)與實驗數(shù)據(jù)完全擬合,說明是一種有效的權(quán)值閾值調(diào)整方法。
用IAGA 徹底取BP 神經(jīng)網(wǎng)絡(luò)反向調(diào)整權(quán)值和閾值的方法,可以兩種智能優(yōu)化方法各自的優(yōu)點有機地結(jié)合起來。IAGA 具有優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)的能力,解決了BP 算法的困境。計算結(jié)果表明,該方法可使訓(xùn)練誤差的目標(biāo)值達到很高的學(xué)習(xí)精度。在大豆油甲酯合成工藝問題中,誤差可以達到2.58×10-8,平均相對誤差為0%,證明了該方法是一種可靠有效的優(yōu)化方法。