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