李建磊,付世豪,宋金繁
(華北水利水電大學,鄭州 450046)
降水量預測是對未來某地區(qū)降水做出科學的判斷或預見,根據(jù)當?shù)氐淖匀粴夂?如氣溫、氣壓、濕度等,應用科學方法,對降水的可能性或降水量做出客觀描述,是令管理部門提前做出決策、編制計劃及進行有效處理的重要依據(jù)。
近些年,神經(jīng)網(wǎng)絡預測方法備受關注。反向傳播(Back Propagation,BP)神經(jīng)網(wǎng)絡算法具有任意復雜的模式分類能力和卓越的多維函數(shù)映射能力。BP算法的實質(zhì)是采用梯度下降法來計算網(wǎng)絡誤差函數(shù)的最小值。但若目標函數(shù)很復雜,則會出現(xiàn)鋸齒形現(xiàn)象,導致BP算法收斂速度慢。BP算法是一種局部搜索最優(yōu)解的優(yōu)化方法,有可能會使算法陷入局部最優(yōu)解,也會發(fā)生過擬合現(xiàn)象,即預測能力達到一定程度再進行訓練,隨著訓練能力的提高,預測能力反而下降。遺傳算法(Genetic Algorithm,GA)是一種進化算法,具有良好的容錯性和一定程度的自適應自組織能力,使用概率機制進行迭代,具有一定的隨機性,還擁有良好的學習識別功能等,所以遺傳算法作為一種具有高度并行、隨機、自適應的搜索算法,是一種全局搜索最優(yōu)解的方法,可擴展性強,易與BP算法結合,故使用遺傳算法優(yōu)化的BP算法可解決學習速度慢、易陷入局部最優(yōu)等問題。
BP神經(jīng)網(wǎng)絡有兩個步驟,即信號的正向傳播和誤差的反向傳播,并在誤差反向傳播過程中不斷優(yōu)化權值于閾值,得到最優(yōu)參數(shù),保存網(wǎng)絡。BP算法的實質(zhì)是采用梯度下降法沿著誤差函數(shù)的負梯度方向修改權值和閾值,從而獲得最合適的結果[1]。以下是建立BP網(wǎng)絡模型的步驟:
1)設置模型輸入輸出樣本、創(chuàng)建網(wǎng)絡。
3)輸入訓練樣本與預測樣本,對數(shù)據(jù)進行預處理。輸入樣本:X=(x1,x2,…,xn)T,期望輸出:d=(d1,d2,…,dn)T。對數(shù)據(jù)使用MATLAB自帶的mapminmax函數(shù)進行歸一化處理。Mapminmax的數(shù)學公式:
(1)
其中,xmin、xmax分別為映射前的矩陣每一行的最小值和最大值;ymin、ymax分別為映射到的新矩陣每一行的最小值和最大值。
6)計算網(wǎng)絡誤差。當網(wǎng)絡誤差達到預設值或?qū)W習次數(shù)大于設定的最大次數(shù),則結束訓練;否則,選取下一個訓練樣本和對應的期望輸出,返回到3),進入下一輪學習。
7)網(wǎng)絡訓練結束后,對預測樣本進行預測并輸出預測值。
遺傳算法的作用是優(yōu)化BP神經(jīng)網(wǎng)絡的初始權值與閾值,是一個不斷修正閾值與權值的過程,經(jīng)過訓練,可使誤差越來越小[2-4]。訓練后,再對網(wǎng)絡進行測試。以下是基于遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡預測模型實現(xiàn):
1)輸入神經(jīng)網(wǎng)絡初始樣本數(shù)據(jù)并對其進行預處理。
2)種群初始化。
編碼。對每個個體使用實數(shù)編碼,將其編碼為一個實數(shù)串,由輸入層與隱含層連接權值、隱含層閾值、隱含層與輸出層連接權值、輸出層閾值4個部分構成遺傳算法的染色體,每個染色體長度為:
S=m×h+h+n×h+n
(2)
其中,m、h及n分別為輸入層節(jié)點數(shù)、隱藏層節(jié)點數(shù)及輸出層節(jié)點數(shù)。
種群規(guī)模。種群規(guī)模若是過大,會造成資源浪費且難以收斂;種群規(guī)模若是過小,遺傳算子會產(chǎn)生隨機誤差,即模式采樣誤差,會妨礙小群體中有效模式的傳播,從而造成收斂于局部極小點。一般情況下,種群規(guī)模通常取20~200。
進化代數(shù)。進化代數(shù)不宜過大,過大會增加時間消耗,通常選取100~1 000。
3)將BP神經(jīng)網(wǎng)絡訓練得到的誤差作為適應度值,即評價函數(shù)確定為期望值與預測值的絕對誤差函數(shù)。
(3)
其中,k是系數(shù),d、o分別為期望輸出與預測輸出。
4)確定遺傳算法的選擇操作、交叉操作、變異操作方法的選取。評價函數(shù)、選擇操作、交叉操作及變異操作方法的選取分別為絕對誤差函數(shù)、輪盤賭法、實數(shù)交叉及隨機變異。
設定交叉概率與變異概率。
交叉概率。交叉概率過大,隨機性增加,會造成最優(yōu)個體的丟失,還會導致不必要的時間浪費;交叉概率過小,不能有效更新種群,還會阻礙算法搜索。一般選為0.2~1.0。
變異概率。變異概率越大,變異操作被執(zhí)行的次數(shù)越多。較好的變異概率產(chǎn)生的新生代摒棄父代的不良基因,能完整保存信息。若變異概率過大,則可能造成種群已有的優(yōu)良模式被破壞;若變異概率過小,又會使種群的進化速度降低。通常取值為0.001~0.1。
遺傳算法參數(shù)設定:種群規(guī)模為20~200,進化代數(shù)為100~1 000,交叉概率為0.2~1.0,變異概率為0.01~0.1。
5) 對進化的數(shù)據(jù)(適應度)進行檢驗。如果達到預期目標則停止進化,如果未達到目標值且進化沒有結束,則重新計算種群的適應度,從中選出最優(yōu)個體。
6) 將遺傳算法得到的最優(yōu)權值與閾值賦予BP神經(jīng)網(wǎng)絡,再進行訓練學習,達到要求后輸出預測值[5-8]。GA-BP神經(jīng)網(wǎng)絡流程如圖1所示。
圖1 GA-BP預測模型流程圖Fig.1 Flow chart of GA-BP prediction model
實驗數(shù)據(jù)來源于河南安陽、南陽、商丘、信陽1953年8月—2013年12月的月降水量數(shù)據(jù)。根據(jù)風速、氣壓、氣溫、氣壓、濕度等因素進行降水量預測。用于訓練的樣本是1953—2013年的降水量數(shù)據(jù),共有725組數(shù)據(jù),選取1953年8月—2010年12月的數(shù)據(jù)作為訓練樣本,2011年1月—2013年12月的數(shù)據(jù)為預測樣本,應用BP神經(jīng)網(wǎng)絡和基于遺傳算法優(yōu)化的BP神經(jīng)網(wǎng)絡兩種算法對36個月的降雨量進行預測。
為了使遺傳算法達到最好的效果,進行實驗尋求遺傳算法最佳的參數(shù)設置。BP神經(jīng)網(wǎng)絡的設置為模型參數(shù)保持不變,以3個定量、1個變量的定量分析法進行實驗。因為遺傳算法本身具有一定的隨機性,所以并不能準確地說哪個參數(shù)一定是最好的,只能找出一個大概的范圍,具體應用時可稍作調(diào)整。迭代次數(shù)選取50次進行預測實驗,實驗結果見表1。
表1 各最佳種群規(guī)模實驗結果Tab.1 Experimental results of optimal population size
從結果來看,種群規(guī)模為50時,模型精度與擬合程度最高,雖然比種群規(guī)模為20、100時的最小MSE要高出0.001 2左右,但是相關系數(shù)比種群規(guī)模為20、100時的相關系數(shù)要高且平均絕對誤差要小。種群規(guī)模為100時,運行時間比種群規(guī)模為50時的運行時間要多出30 s左右。綜合來看,種群規(guī)模數(shù)選為50即可。
確定種群規(guī)模數(shù)后,需進一步確定交叉概率,實驗結果見表2。
表2 各交叉概率實驗結果Tab.2 Experimental results of cross probability
算法的運行時間并沒有相差太多,觀察它們的相關系數(shù)發(fā)現(xiàn),交叉概率在0.6~0.9的數(shù)據(jù)擬合度都到達了0.96左右,運行時間最高相差了11 s,但交叉概率為0.9時,最小MSE和平均絕對誤差MAE較低,以此推測交叉概率選在0.9附近即可。
為了確定變異概率,選取變異概率為0.001、0.005、0.01、0.05、0.1進行實驗,實驗結果見表3。
表3 各變異概率實驗結果Tab.3 Experimental results of mutation probability
從表3可以看出,變異概率為0.005與0.1時,相關系數(shù)僅差0.003 28,說明擬合能力很接近,不過雖然變異概率為0.1時的運行時間相比于變異概率為0.005時的運行時間少了9 s,但最小MSE與平均絕對誤差MAE都是變異概率為0.05時的更小,故而變異概率取0.005左右即可。
由表4可知,迭代次數(shù)為100時,相關系數(shù)最大、最小MSE與平均絕對誤差MAE最小。迭代次數(shù)為200時,雖然比迭代次數(shù)為100時的各項指標差一點,但是運行時間卻長很多。故而迭代次數(shù)選取100次即可。
表4 各迭代次數(shù)實驗結果Tab.4 Experimental results of each iteration
為了比較未優(yōu)化的BP神經(jīng)網(wǎng)絡預測模型與遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡預測模型在精度與擬合程度方面的差距,做出兩種模型對河南安陽、南陽、商丘、信陽4個站點采用BP神經(jīng)網(wǎng)絡預測模型與GA-BP神經(jīng)網(wǎng)絡預測模型進行降水量預測的預測結果與誤差對比圖,如圖2所示。
圖2 GA-BP與BP預測模型對比Fig.2 Comparison of GA-BP and BP prediction models
可以看出,經(jīng)過遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡的預測值要更加靠近真實值,說明GA-BP神經(jīng)網(wǎng)絡預測模型確實比未優(yōu)化的BP神經(jīng)網(wǎng)絡預測模型精度更高。從誤差對比圖中可以看出,GA-BP神經(jīng)網(wǎng)絡模型與未優(yōu)化的BP神經(jīng)網(wǎng)絡模型相比,誤差更小一些,不過也有個別月份預測的降水量誤差值甚至比未優(yōu)化的神經(jīng)網(wǎng)絡模型還要大,所以需要進一步分析,給出各地區(qū)使用兩種預測模型進行預測后的平均絕對誤差MAE、最小MSE、均方根誤差RMSE及相關系數(shù)R,如表5所示。
表5 GA-BP與BP預測模型誤差Tab.5 Error of GA-BP and BP prediction model
根據(jù)表5可以看出,安陽、南陽、商丘、信陽等地應用遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡模型預測的降水量平均絕對誤差MAE要比BP神經(jīng)網(wǎng)絡模型平均小了38.435 6,均方根誤差RMSE平均小了54.397,相關系數(shù)平均提升了0.193 6。南陽市GA-BP模型預測的降水量最小MSE比BP模型的最小MSE小了0.001 778,這幾乎是BP模型的一半,而商丘市兩個模型的最小MSE相差了0.005 523 3,也就是說BP模型的最小MSE是GA-BP模型最小MSE的4.68倍,且商丘市GA-BP模型預測的降水量MAE、RMSE分別比BP模型小了61.531 9、112.808 3,幾乎小了一半。由此得出,GA-BP神經(jīng)網(wǎng)絡模型相對于BP神經(jīng)網(wǎng)絡模型,精度確實提高了不少。
將遺傳算法算法與BP算法有機融合, 大大提高了模型預測精度,不過某些月份降水量預測誤差值卻比未優(yōu)化的BP預測模型誤差更大,說明遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡從全局來看確實比BP神經(jīng)網(wǎng)絡預測模型精度高,但是從局部來看,遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡還不是很理想[9-10]。