余星輝, 孫晨曦
(1.江蘇科技大學 經(jīng)濟管理學院,江蘇 鎮(zhèn)江 212100; 2.華北水利水電大學 數(shù)學與統(tǒng)計學院,河南 鄭州 450046)
團霧是受局部地區(qū)微氣候環(huán)境影響,在大霧中數(shù)十米到上百米的局部范圍內(nèi)出現(xiàn)的更“濃”、能見度更低的霧[1]。低能見度的團霧容易引發(fā)包括車輛追尾等在內(nèi)的交通事故,由于團霧形成突然,傳統(tǒng)的氣象方法難以對其進行監(jiān)測和預報,往往難度較大、成本較高,具有極大的安全隱患[2]。王月琴等[3]提出可以利用BP神經(jīng)網(wǎng)絡(luò)對高速公路團霧進行預測,但在初始權(quán)值設(shè)立和網(wǎng)絡(luò)結(jié)構(gòu)建立時會造成網(wǎng)絡(luò)震蕩,且在計算過程中易陷入局部最優(yōu)解,仍存在不足[1]。針對上述缺點,本文采用遺傳算法對該模型進行優(yōu)化,使用概率化的尋優(yōu)辦法對數(shù)據(jù)進行處理,使其自動地適應與調(diào)整搜索方向,并對多個個體進行同時處理、對多個解進行評估,以降低陷入局部最優(yōu)解的風險[4]。
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò),是一種模擬生物神經(jīng)網(wǎng)絡(luò)的多層前饋網(wǎng)絡(luò),它使用最速下降法,通過信息正向傳播與誤差反向傳播對算法進行連續(xù)訓練。在訓練過程中,模型中的權(quán)值和閾值不斷被自動調(diào)整,網(wǎng)絡(luò)的誤差平方和也隨之不斷減小,直至達到可接受的范圍,得到所期望的映射關(guān)系。神經(jīng)網(wǎng)絡(luò)算法的優(yōu)點在于無需預先對所求的映射關(guān)系進行描述,僅需要提供歷史輸入、輸出數(shù)據(jù)作為訓練樣本。
在BP神經(jīng)網(wǎng)絡(luò)中,輸入信號從各神經(jīng)元的輸入層進入,由隱含層通過激活函數(shù)傳遞到輸出層,完成一次正向的學習過程。當實際輸出與期望輸出之間存在差異時,兩者間的誤差將由輸出層反向傳遞給輸入層,依據(jù)梯度下降法調(diào)整神經(jīng)網(wǎng)絡(luò)各層間的權(quán)值與閾值,完成一次反向的學習過程。在正向?qū)W習與反向?qū)W習交替進行的整個過程中,各神經(jīng)元的權(quán)值和閾值將隨之不斷地進行調(diào)整,直到誤差減小到可以接受的范圍。
設(shè)x1,x2,…,xi為神經(jīng)元1,2,…,i的輸入數(shù)據(jù);q、m分別為隱含層和輸出層的節(jié)點個數(shù);vij為輸入層到隱含層的連接權(quán)重,wki為隱含層到輸出層的連接權(quán)重;θi為隱含層閾值,ak為輸出層閾值,f(·)為神經(jīng)網(wǎng)絡(luò)的激活函數(shù)。則隱含層第i個節(jié)點的輸出為
oi=f(neti),i=1,2,…,q,
(1)
(2)
輸出層第k個節(jié)點的輸出為
yk=f(netk),k=1,2,…,m,
(3)
(4)
輸出誤差通常定義為
(5)
代入隱含層與輸出層數(shù)據(jù)后可以得到系統(tǒng)的總誤差函數(shù)為
(6)
本文所使用的模型為3層BP神經(jīng)網(wǎng)絡(luò)(圖1)。
圖1 3層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.1 Structure diagram of three-layer BP neural network
根據(jù)分析團霧形成的氣象特征,設(shè)計了氣溫、氣壓、相對濕度、風向、風速、雨量6個輸入變量。輸出層輸出變量設(shè)定為1(有霧)與-1(無霧)兩種情況。隱藏層的節(jié)點個數(shù)經(jīng)驗公式
S=a+(m+n)0.5,
(7)
其中S為隱含層的輸入向量維數(shù)即節(jié)點個數(shù),m為輸入向量維數(shù),n為輸出向量維數(shù),a為[1,10]之間任一常數(shù)[5]。經(jīng)多次實驗,本文將隱含層節(jié)點個數(shù)設(shè)置為5,即建立“6-5-1”結(jié)構(gòu)的3層BP神經(jīng)網(wǎng)絡(luò),參數(shù)設(shè)置見表1。
表1 神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置Tab.1 Parameter setting of neural networks
盡管BP神經(jīng)網(wǎng)絡(luò)無需事先對所求的映射關(guān)系進行描述,僅需提供歷史輸入、輸出數(shù)據(jù)作為樣本對其進行訓練便可成功構(gòu)建。但由于初始權(quán)值和網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置的隨機性,神經(jīng)網(wǎng)絡(luò)的構(gòu)建過程存在著極大的不確定性。采用遺傳算法對神經(jīng)網(wǎng)絡(luò)進行優(yōu)化,對得到的數(shù)據(jù)采用概率優(yōu)化方法,使其自動適應調(diào)整搜索方向,可以對多個解進行有效評估。在初始階段需要先將BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值閾值編碼設(shè)置為染色體個體,通過遺傳算法不斷進行選擇、交叉、變異的操作,直至得到最優(yōu)權(quán)值閾值,再代入神經(jīng)網(wǎng)絡(luò)中進行訓練。遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法流程如圖2所示。
圖2 遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法流程圖Fig.2 Flow chart of BP neural network algorithm optimized by genetic algorithm
本文采用實數(shù)編碼方法,在變量的取值范圍內(nèi)隨機生成,用于隨機初始化一個種群;遺傳算法中涉及的各項參數(shù)設(shè)置見表2。
表2 遺傳算法參數(shù)設(shè)置
個體適應度值用于度量編碼個體的好壞。本文將適應度函數(shù)F設(shè)置為模型實際預測輸出與期望輸出之間的誤差絕對值之和,此時適應度值越小,模型輸出的絕對誤差越小,模型運算效果越好,即
(8)
其中k為系數(shù),n為網(wǎng)絡(luò)輸出層的輸出節(jié)點個數(shù),yi為神經(jīng)網(wǎng)絡(luò)第i個神經(jīng)元的期望輸出,oi為第i個神經(jīng)元的模型實際運行輸出[6]。
本文采用輪盤賭的方式進行選擇操作,即基于個體的適應度比例設(shè)置選擇概率,其中每個個體i的選擇概率pi為
fi=k∕Fi,
(9)
(10)
其中Fi為個體i的適應度值,k為系數(shù),N為種群個體總數(shù)。
交叉操作模擬染色體的重組過程,在交叉過程中,染色體個體的選擇和具體交叉位置的選擇均為隨機。本例中染色體個體采用的編碼方式為實數(shù)編碼,采用的交叉操作方法為實數(shù)交叉法[6]。第k個染色體ak和第l個染色體al在第j個基因位所進行的交叉操作為
akj=akj(1-b)+aljb,
(11)
alj=alj(1-b)+akjb,
(12)
其中b為[0,1]間任一隨機數(shù)。
變異操作模擬生物遺傳進化中的基因突變過程,有利于防止算法在運算過程中陷入局部最優(yōu)解[6]。第i個個體在第j個基因的變異操作為
(13)
其中amax、amin分別為基因aij的最大值與最小值,f(g)=r2(1-g∕Gmax)2,r2為系數(shù),g為遺傳算法當前的迭代次數(shù),Gmax為事先設(shè)置好的進化代數(shù),r為[0,1]之間的任一隨機數(shù)[7]。
本文采用滬寧高速公路沿線某氣象監(jiān)測站的13組歷史團霧數(shù)據(jù),取其中10組作為訓練集,用于調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值;取其中3組作為驗證集。對輸入神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)進行歸一化處理,以消除數(shù)據(jù)間度量單位所帶來的影響,加快程序的收斂速度。數(shù)據(jù)歸一化的公式為
(14)
其中x為收集到的原始數(shù)據(jù),xmin為樣本數(shù)據(jù)最小值,xmax為樣本數(shù)據(jù)最大值。
將歸一化處理后的數(shù)據(jù)輸入所建立的遺傳算法優(yōu)化的神經(jīng)網(wǎng)絡(luò)中進行訓練,利用遺傳算法優(yōu)化的過程中得到的適應度曲線如圖3所示,其中顯示的最佳適應度為0.009 4。經(jīng)過計算,得到最大誤差為0.018%,即該模型具有較好的實驗效果。
圖3 遺傳算法尋優(yōu)適應度曲線Fig.3 Genetic algorithm optimization fitness curve
由于影響團霧形成的因素眾多且往往與局部地區(qū)氣候環(huán)境關(guān)系密切,難以對團霧的形成進行及時的預警評估。現(xiàn)有的基于BP神經(jīng)網(wǎng)絡(luò)的團霧預測模型,由于初始權(quán)值和網(wǎng)絡(luò)結(jié)構(gòu)確定過程中的隨機性使得在網(wǎng)絡(luò)建立過程中存在著較大的不確定性,而且在計算過程中易陷入局部解。對此本文使用遺傳算法對神經(jīng)網(wǎng)絡(luò)初始權(quán)值和閾值加以修正,在解決上述問題的同時也加快了算法的收斂速度,建立了基于GA-BP算法的神經(jīng)網(wǎng)絡(luò)團霧預測模型。實驗仿真結(jié)果表明,預測結(jié)果誤差較小,為團霧的實際預測應用提供了新的方法與思路。