蔣 一,張 帆
人工神經(jīng)網(wǎng)絡(luò)是20世紀(jì)80年代以來從仿生學(xué)發(fā)展起來的具有極強(qiáng)非線性映射能力的模型,BP(Back Propagation,簡稱BP)神經(jīng)網(wǎng)絡(luò)作為其中應(yīng)用最為廣泛的網(wǎng)絡(luò)之一,一直以來都是研究的熱點(diǎn)[1].它所采用的基于誤差逆?zhèn)鞑サ膶W(xué)習(xí)算法具有很好的非線性映射能力、泛化能力和容錯能力,但同時也存在著學(xué)習(xí)過程收斂速度慢、誤差和函數(shù)可能存在局部最小值等問題.
遺傳算法(Genetic Algorithm,簡稱GA)也稱進(jìn)化算法,其思想基于達(dá)爾文的進(jìn)化論和遺傳學(xué)說,具有極強(qiáng)的全局搜索能力和較快的收斂速度.將遺傳算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,可以實(shí)現(xiàn)快速全局搜索,同時還能夠解決局部存在最小值問題[2-4].但是,標(biāo)準(zhǔn)遺傳算法采用固定的交叉概率和變異概率,使得系統(tǒng)難以平衡全局搜索和局部搜索之間的矛盾.由此,提出改進(jìn)型衰變參數(shù)遺傳算法的BP 神經(jīng)網(wǎng)絡(luò)模型,建立故障類型和數(shù)據(jù)化故障征兆之間的非線性映射關(guān)系,從而提高系統(tǒng)故障診斷的精度和速度.
標(biāo)準(zhǔn)遺傳算法將待解問題以某種形式編碼,產(chǎn)生相應(yīng)的解集,再根據(jù)適應(yīng)度函數(shù)的指導(dǎo)對編碼串進(jìn)行遺傳操作實(shí)現(xiàn)優(yōu)勝劣汰,然后通過再選擇、交叉、變異產(chǎn)生新的群體,直至出現(xiàn)最優(yōu)解[5].圖1為遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的原理圖.從圖1中可以看出,遺傳算法對神經(jīng)網(wǎng)絡(luò)權(quán)值閾值矩陣的優(yōu)化是通過誤差反饋來實(shí)現(xiàn)的.圖2 為算法具體流程.
圖1 遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)原理圖
圖2 標(biāo)準(zhǔn)遺傳算法流程圖
步驟1:產(chǎn)生初始種群.初始種群可以隨機(jī)產(chǎn)生,若初始種群為n,則n條染色體構(gòu)成初始種群.
步驟2:計(jì)算適應(yīng)度.適應(yīng)度用來評價個體優(yōu)劣,是執(zhí)行遺傳算法的依據(jù).計(jì)算每一個個體的適應(yīng)度值,該值越大表示適應(yīng)度越高,越適應(yīng)生存環(huán)境,個體評價越好,為下一步選擇、交叉和變異操作提供依據(jù).
步驟3:編碼.常見的編碼技術(shù)有計(jì)算機(jī)唯一識別的二進(jìn)制編碼、格雷碼、整數(shù)或字母排列編碼等.本文采用二進(jìn)制編碼,即將權(quán)值和閾值采用相同位數(shù)的二進(jìn)制編碼形式表示,從而組成一條染色體.
步驟4:遺傳操作.在該步驟中又包含選擇、交叉和變異操作.
選擇.從父代種群中選取優(yōu)良個體遺傳(或復(fù)制)到下一代種群,實(shí)現(xiàn)優(yōu)勝劣汰,達(dá)到搜索結(jié)果的最優(yōu)值.
交叉.將兩個互相配對的染色體按照常用的隨機(jī)配對原則相互交換其部分基因,形成兩個新的個體的操作,就被稱為交叉.
變異.將個體編碼中的某些基因采用其他基因替換,是形成新個體的輔助方法.但是新個體變異的效果或好或壞,難以預(yù)料.
步驟5:解碼操作.解碼操作用是產(chǎn)生權(quán)值、閾值矩陣.
用遺傳得到的新個體構(gòu)成新一代群體,返回步驟2,并重復(fù)執(zhí)行步驟2~4,直至達(dá)到預(yù)定的誤差范圍或已定的迭代次數(shù).
在遺傳算法中,交叉是產(chǎn)生新個體的主要手段,變異是產(chǎn)生新個體的方法之一,若交叉、變異概率過低,遺傳算法搜索可能會陷入遲鈍狀態(tài),達(dá)不到全局搜索的要求;若交叉、變異概率過高,遺傳算法將會退化為隨機(jī)搜索.由于標(biāo)準(zhǔn)遺傳算法采用固定的交叉概率和變異概率,因此難以平衡全局搜索和局部搜索之間的矛盾[6-7],因此本文提出了改進(jìn)型衰變參數(shù)遺傳算法.其流程是在標(biāo)準(zhǔn)遺傳算法的基礎(chǔ)上引入衰減因子作用于交叉概率和變異概率,使兩者在迭代的過程中逐漸變小,從而兼顧了全局搜索能力和局部搜索能力,局部流程如圖3所示.
圖3 衰變參數(shù)遺傳算法局部流程圖
衰減因子:
式中,k為0~1之間的常數(shù),k為0時對應(yīng)為標(biāo)準(zhǔn)遺傳算法.g為遺傳代數(shù),gmax為遺傳最大截止代數(shù),隨著迭代次數(shù)的增加,β從1 線性遞減到1-k.
在標(biāo)準(zhǔn)遺傳算法的基礎(chǔ)上,引入衰減因子β,構(gòu)成衰變交叉概率為βρc,衰變變異概率為βρm,ρc、ρm分別為標(biāo)準(zhǔn)遺傳算法中的固定交叉概率和變異概率.隨著迭代次數(shù)的增加,衰減因子β相應(yīng)從1線性遞減到1-k,從而交叉概率和變異概念分別從ρc、ρm遞減到(1-k)ρc和(1-k)ρm.由此,通過調(diào)節(jié)常數(shù)k就可以實(shí)現(xiàn)系統(tǒng)的全局搜索和局部搜索的動態(tài)平衡.
采用文獻(xiàn)[8]中的實(shí)驗(yàn)數(shù)據(jù)來對比驗(yàn)證遺傳算法改進(jìn)前后算法性能的改善.樣本輸入向量包括各缸平均燃燒最大爆發(fā)壓力、排氣總管溫度、掃氣箱溫度、增壓器轉(zhuǎn)速、掃氣箱壓力、掃排氣道壓損系數(shù)、壓氣機(jī)出口溫度,一個負(fù)荷參數(shù),共8個變量作為BP 神經(jīng)網(wǎng)絡(luò)輸入變量.輸出變量由實(shí)驗(yàn)數(shù)據(jù)中發(fā)動機(jī)常見的故障變量構(gòu)成,包括:#1無故障;#2增壓器效率下降;#3冷空氣傳熱惡化;#4透平保護(hù)格柵阻塞;#5透平通流部分阻塞.共5個變量作為BP神經(jīng)網(wǎng)絡(luò)的輸出變量.
遺傳算法需設(shè)置的參數(shù)有:種群規(guī)模、最大遺傳代數(shù)、代溝、交叉概率、變異概率,以及衰減因子[9].由確定的輸入、輸出向量選擇BP 神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)為8-17-5,神經(jīng)網(wǎng)絡(luò)隱含層權(quán)值個數(shù)為156(17×8)個,閾值17(17×1)個,輸出層權(quán)值個數(shù)85(5×17)個,閾值5(5×1)個,用改進(jìn)型衰變參數(shù)遺傳算法對這243個權(quán)值閾值進(jìn)行優(yōu)化,其步驟如下,優(yōu)化流程圖見圖4.
圖4 衰變參數(shù)遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)流程圖
①確定種群規(guī)模.一般來說,選擇較大數(shù)目的種群規(guī)??梢酝瑫r處理更多的個體,容易找到全局最優(yōu)解,但缺點(diǎn)是增加了每次迭代的時間,實(shí)驗(yàn)表明種群規(guī)模的增加將導(dǎo)致計(jì)算量呈指數(shù)增長.但是種群過小時,種群多樣性下降,遺傳算法陷入局部極小值從而導(dǎo)致早熟現(xiàn)象出現(xiàn)的可能性將大大增加.因此,本算法種群規(guī)模設(shè)定為40.
②通過反饋算法計(jì)算誤差E.對權(quán)值、閾值解碼產(chǎn)生權(quán)值、閾值矩陣,并賦給BP 神經(jīng)網(wǎng)絡(luò),計(jì)算目標(biāo)誤差函數(shù)E.
③計(jì)算適應(yīng)度并排序.將目標(biāo)誤差函數(shù)求導(dǎo)數(shù)定義為適應(yīng)度函數(shù),計(jì)算個體適應(yīng)度函數(shù)數(shù)值,并將其排序[10].
④編碼.編碼方式采用10位二進(jìn)制編碼.
⑤遺傳操作.代溝設(shè)定為0.95,則從40 個個體中選取38 個(40×0.95)最優(yōu)個體;交叉概率設(shè)定為0.7,變異概率設(shè)定為0.01,即以0.7β的概率進(jìn)行交叉,以0.01β的概率進(jìn)行變異,其中,衰減因子β中的k取0~1之間的常數(shù).
⑥經(jīng)過多次Matlab 仿真實(shí)驗(yàn)并觀察誤差進(jìn)化曲線,可以發(fā)現(xiàn),當(dāng)?shù)螖?shù)在30~70 之后誤差不再變化,因此遺傳代數(shù)gen取40.如未達(dá)到遺傳代數(shù),則進(jìn)入步驟②,開始下一循環(huán),同時記錄每一代最小誤差.
⑦將最優(yōu)個體解碼,輸出最優(yōu)權(quán)值和閾值.
將最優(yōu)權(quán)值和閾值賦予BP 神經(jīng)網(wǎng)絡(luò),輸入訓(xùn)練樣本和測試樣本,得到相應(yīng)的輸出樣本.
對k分別?。?,1]之間的11 個數(shù)進(jìn)行遺傳操作,得到11組權(quán)值閾值矩陣,用于評價衰減因子的效果,評價結(jié)果如表1所示.
由表1 可以看出,當(dāng)k=0.5 時,誤差最小.因此將表達(dá)式(1)中k取0.5,衰減因子如(2)式:
當(dāng)k=0為標(biāo)準(zhǔn)遺傳算法,k=0.5時為衰變參數(shù)遺傳算法.表2、表3分別是標(biāo)準(zhǔn)遺傳算法和衰變參數(shù)遺傳算法優(yōu)化后的權(quán)值閾值賦予BP神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果.
表1 衰減因子評價結(jié)果
表2 標(biāo)準(zhǔn)遺傳算法輸出結(jié)果
表3 衰變參數(shù)遺傳算法的輸出結(jié)果
由表2 和表3 可以看出,衰變參數(shù)遺傳算法較之標(biāo)準(zhǔn)遺傳算法,其輸出與理論輸出更為相似,訓(xùn)練樣本誤差和測試樣本誤差更小.
誤差訓(xùn)練曲線如圖5、圖6所示.
圖5 標(biāo)準(zhǔn)算法遺傳神經(jīng)網(wǎng)絡(luò)誤差訓(xùn)練曲線
圖6 衰變參數(shù)遺傳神經(jīng)網(wǎng)絡(luò)誤差訓(xùn)練曲線
由圖5 和圖6 對比可以看出,衰變參數(shù)遺傳算法的訓(xùn)練步數(shù)更短,由14 步減少到4 步,因此收斂速度更快.
誤差進(jìn)化曲線如圖7、圖8所示.
圖7 標(biāo)準(zhǔn)算法遺傳神經(jīng)網(wǎng)絡(luò)誤差進(jìn)化曲線
圖8 衰變參數(shù)遺傳神經(jīng)網(wǎng)絡(luò)誤差進(jìn)化曲線
由圖7 和圖8 對比可以看出,衰變參數(shù)遺傳算法在迭代前期具有較強(qiáng)的全局搜索能力,在后期又具有較好的局部搜索能力,較好地平衡了全局搜索和局部搜索之間的矛盾,克服了標(biāo)準(zhǔn)遺傳算法的不足,大大提高了故障診斷的準(zhǔn)確率和魯棒性.
在標(biāo)準(zhǔn)遺傳算法的基礎(chǔ)上,引入衰減因子的概念,提出了改進(jìn)型衰變參數(shù)遺傳算法,用于優(yōu)化BP 神經(jīng)網(wǎng)絡(luò)建立故障診斷模型.對改進(jìn)前后的算法進(jìn)行了仿真驗(yàn)證,結(jié)果表明,改進(jìn)型衰變參數(shù)遺傳神經(jīng)網(wǎng)絡(luò)可以很好地克服標(biāo)準(zhǔn)遺傳算法難以同時兼顧全局搜索能力和局部搜索能力的不足,具有更好的準(zhǔn)確性和魯棒性,完全可以應(yīng)用于系統(tǒng)故障診斷.