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