張甲甲,萬定生
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇南京 211100)
對流域徑流變化趨勢的模擬和預(yù)測是水文領(lǐng)域的一個(gè)重要研究課題[1]。隨著近年來深度學(xué)習(xí)的發(fā)展,基于數(shù)據(jù)驅(qū)動的水文預(yù)測方法得以長足發(fā)展。然而這種模型大多用于大流域,很少用于小流域[2-3]。與大江大河相比,中小河流具有分布廣、降水及下墊面空間異致性強(qiáng)、產(chǎn)匯流時(shí)間短、突發(fā)性強(qiáng)等特點(diǎn)[4-6]。如何利用智能算法提高中小河流水文預(yù)報(bào)的準(zhǔn)確率,是一個(gè)重要的研究方向。
與支持向量機(jī)SVM[7],BP神經(jīng)網(wǎng)絡(luò)[8],極限學(xué)習(xí)機(jī)ELM[9]等模型相比,帶有記憶功能的LSTM既可對連續(xù)的徑流數(shù)據(jù)進(jìn)行處理,又能考慮到長時(shí)間徑流序列的季節(jié)性和周期性,因此能更合理處理序列信息,實(shí)現(xiàn)序列預(yù)測。不過與其它神經(jīng)網(wǎng)絡(luò)類似,LSTM模型參數(shù)難以確定,往往靠人為經(jīng)驗(yàn)來選擇。為了更好地確立LSTM的模型參數(shù),提高流量的預(yù)測精度,本文提出一種混合遺傳算法(SP_GA),用其優(yōu)化LSTM后建立SP_GA-LSTM模型應(yīng)用于漳州龍山站的時(shí)徑流預(yù)報(bào)中。模型的輸入數(shù)據(jù)考慮了流域內(nèi)流量和降雨帶來的影響,并通過實(shí)驗(yàn)分析以驗(yàn)證所提模型的有效性。
長短時(shí)記憶單元(LSTM)屬于遞歸神經(jīng)網(wǎng)絡(luò)(RNN)的一種,它具備 RNN 的遞歸屬性,同時(shí)其具有的獨(dú)特記憶和遺忘模式,可以解決遞歸神經(jīng)網(wǎng)絡(luò)(RNN)中的梯度爆炸和梯度消失問題[10]。LSTM由于可以完美地模擬多個(gè)輸入變量的問題,十分適用于時(shí)間序列預(yù)測。LSTM基本單元結(jié)構(gòu)如圖1。
圖1 LSTM單元結(jié)構(gòu)
在LSTM神經(jīng)網(wǎng)絡(luò)中,歷史信息通過遺忘門ft、輸入門it、輸出門ot的控制進(jìn)行更新。遺忘門ft依據(jù)上一階段的輸入,來決定Ct-1里的丟棄。輸入xt經(jīng)過輸入門it來篩選候選信息,再與遺忘門ft共同決定Ct里的更新。輸出門ot與更新后的Ct經(jīng)過tanh函數(shù)運(yùn)算后輸出。其基本過程按照式(1)-式(6)計(jì)算。
ft=σ(Wf·[ht-1,xt]+bf)
(1)
it=σ(Wi·[ht-1,xt]+bi)
(2)
(3)
(4)
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=ot*tanh(Ct)
(6)
其中:xt和ht分別表示輸入向量和輸出向量,Ct-1和Ct分別表示上一時(shí)刻與當(dāng)前時(shí)刻單元狀態(tài),Wf、Wi、WC、Wo是權(quán)重矩陣,bf、bi、bC、bo是對應(yīng)權(quán)重的偏置。
2.2.1 數(shù)據(jù)選擇及處理
本文選取龍山流域作為研究對象,龍山流域位于福建省漳州市,是典型中小流域。上游設(shè)有4個(gè)雨量站提供降雨信息,分別是月明、和溪、后眷、龍山。龍山水文站位于龍山流域的匯流出口處。龍山站及其周邊地理位置如圖2。
圖2 龍山站及其周邊地理位置示意圖
本文選取2010年1月到2014年7月的龍山站小時(shí)流量數(shù)據(jù)和龍山流域內(nèi)4個(gè)雨量站的時(shí)雨量數(shù)據(jù)共39998條數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù)。取前28000條數(shù)據(jù)作為訓(xùn)練樣本數(shù)據(jù),后11998條作為測試樣本數(shù)據(jù)。
對于采用智能化預(yù)報(bào)方法對流量進(jìn)行回歸預(yù)測時(shí),預(yù)報(bào)因子的選擇尤為重要。運(yùn)用相關(guān)系數(shù)分析法后,確定將前5小時(shí)的龍山水文站前期的流量值以及龍山流域內(nèi)雨量站前期降雨量值選作預(yù)報(bào)因子,選擇預(yù)見期為3h,即將前5小時(shí)的流量和雨量組成輸入來預(yù)測未來3小時(shí)的流量。
Yt+3=f(Yt,Xt-5,Xt-4,Xt-3,Xt-2,Xt-1)
(7)
其中,Xt表示t時(shí)刻的龍山站雨量值、月明站雨量值、和溪站雨量值、后眷站雨量值、龍站雨量值山組成的向量,Yt表示t時(shí)刻的龍山站流量值。
數(shù)據(jù)規(guī)范化就是把數(shù)據(jù)根據(jù)比例投射至某一區(qū)間內(nèi),以縮短數(shù)據(jù)在訓(xùn)練過程中的收斂時(shí)間。本文采用Max-Min歸一化,使經(jīng)過歸一化后的數(shù)據(jù)位于0~1之間。Max-Min歸一化公式如下
(8)
2.2.2 模型評價(jià)指標(biāo)
本文采用均方根誤差、確定性系數(shù)和納什系數(shù)對預(yù)測結(jié)果進(jìn)行評價(jià)。
均方根誤差反映了預(yù)測值與真實(shí)值之間的偏差程度,值越小越優(yōu),其計(jì)算公式為:
(9)
確定性系數(shù)反應(yīng)了模型預(yù)報(bào)過程與實(shí)測過程之間的吻合程度,其取值范圍為[0,1],其結(jié)果越接近1,準(zhǔn)確率越高,計(jì)算公式為:
(10)
2.2.3 單預(yù)測模型建模
為了測試 LSTM 單模型的流量預(yù)測性能,選取不同基礎(chǔ)模型進(jìn)行比較。分別選用 BP、SVM 和 LSTM 單預(yù)測模型進(jìn)行預(yù)測。并對2013年7月13日3時(shí)到2013年7月15日4時(shí)和2013年9月22日17時(shí)到2013年9月24日16時(shí)的預(yù)測結(jié)果進(jìn)行對比分析。
相關(guān)參數(shù)設(shè)置為:BP與LSTM的結(jié)構(gòu)設(shè)置為25-50-1,學(xué)習(xí)率為0.001,訓(xùn)練次數(shù)為100;SVM選擇徑向基(RBF)核函數(shù),懲罰因子C=100,核函數(shù)參數(shù)σ=5。預(yù)測結(jié)果如圖3,預(yù)測誤差見表1。
表1 各模型預(yù)測誤差
從圖3和表1可以看出,SVM的預(yù)測誤差在三者中最大,預(yù)測曲線具有明顯波動,且峰值預(yù)測效果最差;BP的預(yù)測精度較SVM有所提高,預(yù)測曲線與真實(shí)值貼合程度也更好;LSTM的均方根誤差和確定性系數(shù)為7.95和0.909,在三個(gè)模型中最優(yōu),并且整體預(yù)測曲線和峰值預(yù)測最貼合真實(shí)值,說明LSTM模型更具優(yōu)勢
LSTM模型的非線性建模性能與3個(gè)主要參數(shù)密切相關(guān):隱含層節(jié)點(diǎn)數(shù)hidden_size、學(xué)習(xí)率lr、訓(xùn)練次數(shù)epoch。本文將通過混合遺傳算法來確定這三個(gè)參數(shù)。
3.1.1 遺傳算法
遺傳算法(GA)是由美國Michigan大學(xué)的Holland J教授于1975年首先提出,它是一種借鑒生物界自然選擇機(jī)制的隨機(jī)化搜索算法[11]。遺傳算法的基本思想是基于達(dá)爾文進(jìn)化論和孟德爾的遺傳變異理論。其主要步驟包括編碼、種群初始化、選擇、交叉、變異等操作。通過這些步驟使得種群內(nèi)個(gè)體適應(yīng)度越來越高,最終收斂到一群最適應(yīng)環(huán)境的個(gè)體,從而求得問題的最優(yōu)解。
3.1.2 混合遺傳算法
作為一種典型的群體智能算法,遺傳算法在搜索全局最優(yōu)解方面具有獨(dú)特的效率,但在局部搜索能力方面明顯不足。通過在遺傳算法過程中融合其它優(yōu)化方法(爬山法、粒子群算法、蟻群算法、模擬退火算法等),從而構(gòu)成混合遺傳算法是提高遺傳算法運(yùn)行效率和求解質(zhì)量的一個(gè)有效手段。
本文提出的SP_GA算法將PSO公式引入作為變異算子,讓種群內(nèi)個(gè)體可以根據(jù)自身迄今最優(yōu)解和種群內(nèi)最優(yōu)解以及個(gè)體進(jìn)化的速度來確定變異的方向和幅度,使變異操作具有方向指導(dǎo)作用,不再是簡單的隨機(jī)變異[12]。
(11)
那么引入的粒子群算法的粒子更新公式為
(12)
模擬退火算法(SA)是一種迭代更新可行解時(shí),以一定的概率來接受一個(gè)比當(dāng)前解要差的解,從而有效避免陷于局部極小并最終趨于全局最優(yōu)的優(yōu)化算法[13-14]。模擬退火算法包含Metropolis算法和退火過程兩個(gè)部分。算法步驟如下:
1)參數(shù)初始化:包括初始解S,初始溫度T,迭代次數(shù)L,計(jì)數(shù)器M;
2)計(jì)算增量ΔT=E(n+1)-E(n),E(n)為評價(jià)函數(shù),其中n+1為新解;
3)ΔT判斷:以概率P接收n+1為當(dāng)前解,其中
4)若連續(xù)M個(gè)新解都沒被接受,那么輸出當(dāng)前解作為最優(yōu)解。否則進(jìn)行降溫操作,降溫公式為:Tw=γTw-1。
5)重復(fù)上述過程,完成所有個(gè)體的抽樣。
SP_GA算法在種群進(jìn)化過程中引入模擬退火算法,算法內(nèi)加入SA判斷函數(shù)
fave-fmin (13) 基于SP_GA-LSTM的神經(jīng)網(wǎng)絡(luò)水文預(yù)測模型建立步驟如下: 1)選擇水文時(shí)間序列樣本數(shù)據(jù),劃分整理數(shù)據(jù)后,歸一化數(shù)據(jù);對隱含層節(jié)點(diǎn)數(shù)hidden_size、學(xué)習(xí)率lr和訓(xùn)練次數(shù)epoch進(jìn)行二進(jìn)制編碼處理;適應(yīng)度函數(shù)采用式(10)確定性系數(shù)r2; 2)對種群個(gè)數(shù)、最大迭代次數(shù)Tmax、c1、c2、模擬退火初始溫度T進(jìn)行初始化; 3)判斷是否滿足終止條件,若達(dá)到最大迭代次數(shù)Tmax則終止迭代并用該最優(yōu)解進(jìn)行SP_GA-LSTM神經(jīng)網(wǎng)絡(luò)的流量預(yù)測模型的建立,否則進(jìn)入4); 4)對個(gè)體進(jìn)行解碼,把解碼參數(shù)代入訓(xùn)練與測試樣本,計(jì)算得到每個(gè)個(gè)體的適應(yīng)度值; 5)更新種群最優(yōu)個(gè)體和歷史最優(yōu)個(gè)體。分別用一個(gè)變量把每個(gè)個(gè)體的當(dāng)前解碼后的值保留下來,把每一代的最優(yōu)解也用單獨(dú)的變量保留下來。從第二代迭代開始,如果產(chǎn)生的新個(gè)體的適應(yīng)度值比前一次保留的個(gè)體的適應(yīng)度值大,則把新個(gè)體存儲在變量中并替換前一代的個(gè)體,否則不替換。同樣地,如果這一代的歷史最優(yōu)個(gè)體適應(yīng)度值比前一代的大,則更新每一代的最優(yōu)解,否則不更新; 采用9種已知辣度的辣椒紅果果實(shí),建立應(yīng)用電子鼻評價(jià)加工型辣椒果實(shí)辣度的方法,所用辣椒果實(shí)取自山東省青島農(nóng)業(yè)大學(xué)辣椒栽培基地(見表1);應(yīng)用所建立的辣度評價(jià)方法分別檢測11種辣椒紅果及辣椒綠果,檢測的11個(gè)辣椒加工基地的原料見表2。將試驗(yàn)材料于常溫、避光保存,待測定。 6)用賭輪盤算法進(jìn)行選擇,即按照適應(yīng)度值對應(yīng)的選擇概率進(jìn)行隨機(jī)選取,直到選出滿足設(shè)定數(shù)量的個(gè)體數(shù); 7)種群交叉;然后用式(11)、(12)進(jìn)行變異。在變異之前要先解碼,在變異完成之后再重新編碼; 8)判斷是否滿足式(13),如果滿足,則說明種群進(jìn)化到了后期趨于同一,進(jìn)行模擬退火操作,否則直接轉(zhuǎn)3)。 根據(jù)上述步驟,SP_GA-LSTM神經(jīng)網(wǎng)絡(luò) 的水文預(yù)測模型建立算法如下: 輸入:種群個(gè)數(shù)n,交叉概率cp,解的維度dim,pso學(xué)習(xí)因子c1,c2,初始溫度T,最大迭代次數(shù)iter_time,樣本集合S。 輸出:預(yù)測結(jié)果集合fore。 1)初始化種群chrosXi(i=1,2,…,n) 2)for i in range(iter_time): 3)種群解碼values 4)for j in range(0,len(values)): 5) fore=LSTM(values[j],S) 6) 計(jì)算適應(yīng)度fitness[i]=r2_score(S,fore) 7)更新種群最優(yōu)個(gè)體pbest=values[np.less(pbest,fitness)] 8)更新種群歷史最優(yōu)個(gè)體gbest=values[np.argmax(fitness)] 9)種群復(fù)制cocs=copy(chros,values) 10)種群交叉crcs=cross(cp,cocs) 11)種群變異ms=psomut(crcs,pbest,gbest,c1,c2)3.2 基于SP_GA-LSTM的流量預(yù)測模型