羅朝林,張 波,孟慶魁,陳武奮
(珠江水利委員會珠江水利科學(xué)研究院,廣東 廣州 510611)
洪澇災(zāi)害危脅人民生命財產(chǎn)安全,精準(zhǔn)洪水預(yù)報作為重要的防洪減災(zāi)非工程措施可以實現(xiàn)洪水精準(zhǔn)化預(yù)報,減少人民生命財產(chǎn)損失[1]。目前洪水預(yù)報研究主要是對流域建立以物理機制或者物理概念為基礎(chǔ)的傳統(tǒng)水文模型[2-4]。然而水文模型由于本身機理的原因,在僅依賴觀測數(shù)據(jù)的前提下只能進行流域匯流時間內(nèi)的預(yù)報,想要延長預(yù)見期還需要氣象預(yù)報數(shù)據(jù)作為輸入條件,這也會加大預(yù)報結(jié)果的不確定性。隨著感知設(shè)備以及信息技術(shù)的高速發(fā)展,獲取數(shù)據(jù)的方式逐漸多樣化,由此也引發(fā)了一些研究人員開始采用數(shù)據(jù)驅(qū)動的方式來解決洪水預(yù)報問題[5]。從20世紀(jì)90年代開始,人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Net-works,ANN)以及遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Net-work,RNN)開始應(yīng)用于洪水預(yù)報模擬并迅速發(fā)展[6]。Bengio等[7]在研究中發(fā)現(xiàn)RNN在計算過程中存在梯度消失與爆炸的問題,導(dǎo)致長時間序列存儲的信息難以被讀取。Hochreiter等[8]針對該問題,通過引入記憶單元的方式改進了RNN神經(jīng)網(wǎng)絡(luò),形成長短時記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)。在過去的幾年,LSTM開始水文預(yù)報領(lǐng)域展露頭角并且有了眾多的研究應(yīng)用及突破。Liang等[9]采用LSTM對洞庭湖的水位波動和水庫運行進行了研究,將LSTM與SVM模型進行比較,綜合考察三峽大壩的存在對洞庭湖水位的影響,得出LSTM模型的偏差值遠遠小于SVM模型,在整體水位較高情況下的預(yù)測中模型精度更高;Hu等[10]分別構(gòu)建了LSTM與ANN模型,分析比較兩者在降雨徑流預(yù)報上的精度,結(jié)果表明LSTM的預(yù)報精度高于ANN。殷兆凱等[11]以隱藏層神經(jīng)元數(shù)量為代表,討論LSTM的復(fù)雜程度對模型精度的影響。Kratzert等[12]利用大量流量數(shù)據(jù)集訓(xùn)練LSTM模型,通過LSTM預(yù)測結(jié)果與實際流量進行對比,得出LSTM可以用于流域流量預(yù)測的結(jié)論。Miao等[13]采用由卷積神經(jīng)網(wǎng)絡(luò)和LSTM遞歸模塊組成的深度神經(jīng)網(wǎng)絡(luò)模型,提高了GCM降水預(yù)報的分辨率和準(zhǔn)確性。楊強[14]利用LSTM模型對瀾滄江烏弄龍水電站進行預(yù)見期為1個月徑流預(yù)測,結(jié)果表明LSTM模型的預(yù)測精度高。顧逸[15]將LSTM模型與GRU結(jié)合,構(gòu)建Simple-LSTM模型進行中長期預(yù)報,結(jié)果優(yōu)于BP神經(jīng)網(wǎng)絡(luò)和SVR模型。上述研究多將LSTM應(yīng)用于流域長預(yù)見期的徑流預(yù)報,且模型中參數(shù)對洪水過程模擬效果的影響研究較少。對于LSTM在較短預(yù)見期內(nèi)以及短歷時強降雨下徑流預(yù)報方面是否具有同樣的性能和表現(xiàn)是一個值得探討的問題。
本文選取惠東縣白盆珠水庫開展研究,收集白盆珠水庫7個雨量站以及1個水位站的逐時歷史數(shù)據(jù)建立LSTM神經(jīng)網(wǎng)絡(luò)模型與新安江模型,進行不同預(yù)見期下的水位預(yù)報,比較2個模型的模型精度,并研究隱藏層神經(jīng)元個數(shù)對模型精度和模型訓(xùn)練速度的影響。
LSTM具有與其他神經(jīng)網(wǎng)絡(luò)相同的結(jié)構(gòu),由3個部分組成,分別是輸入層、輸出層以及隱藏層。RNN能夠?qū)W習(xí)到時間序列數(shù)據(jù)存儲的內(nèi)在特征,但隨著訓(xùn)練次數(shù)的增加以及網(wǎng)絡(luò)節(jié)點數(shù)的增多,很可能會發(fā)生梯度爆發(fā)或者消失,使更早期的長距離數(shù)據(jù)存儲的信息不能傳輸。LSTM通過引入門控單元統(tǒng)籌并傳遞對當(dāng)前時刻重要的歷史信息,提升了神經(jīng)網(wǎng)絡(luò)的長時間記憶,并保持了RNN訓(xùn)練過程中梯度下降的穩(wěn)定性。LSTM的內(nèi)部結(jié)構(gòu)見圖1。
圖1 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
圖1展示了一個LSTM記憶單元的典型結(jié)構(gòu)。在t時刻,記憶單元的輸入包括前一時刻的隱藏層狀態(tài)變量、記憶單元狀態(tài)變量和當(dāng)前時刻的輸入信息;然后模型依次通過遺忘門、輸入門、輸出門和這3個控制機制得到t時刻的隱藏層狀態(tài)變量和記憶單元狀態(tài)變量;最終會傳入輸出層生成LSTM在t時刻的計算結(jié)果,同時與一起傳入后一時刻進行計算。
具體過程如下。在t時刻的計算過程中,首先計算的是遺忘門ft。ft可以決定從之前的狀態(tài)中舍棄多少信息。ft的計算公式如下:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
式中Wf——遺忘門的權(quán)重向量;bf——遺忘門的偏置向量,在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中這些矩陣或向量將被優(yōu)化;σ——Sigmoid激活函數(shù)。
下一步,計算輸入門it。it將決定從新獲取的信息中選擇多少用以更新狀態(tài)。it的計算公式如下:
it=σ(Wi·[ht-1,xt]+bi)
(2)
式中Wi——輸入門的權(quán)重向量;bi——輸入門的偏置向量。
(3)
式中Wc——輸出門的權(quán)重向量;bc——輸出門的偏置向量;tanh——雙曲正切激活函數(shù)。
接下來,使用上面計算得到的結(jié)果來更新神經(jīng)元狀態(tài),計算公式如下:
(4)
式中 ⊙——向量元素積。
然后,計算輸出門ot。ot可以決定在t時刻有多少信息生成隱藏層狀態(tài)變量ht,其計算公式如下:
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=o⊙tanh(ct)
(6)
式中Wo——門控單元的權(quán)重向量;bo——門控單元的偏置向量。
最終,ht傳入輸出層,再經(jīng)過計算后得到LSTM在t時刻的最終輸出yt。
三水源新安江模型是經(jīng)典的概念性半分布式水文模型,為中國首個自主研發(fā)的水文模型,在濕潤和半濕潤地區(qū)有較好的應(yīng)用。新安江模型包含蒸散發(fā)、蓄滿產(chǎn)流、水源劃分、匯流計算4個模塊。模型采用三層蒸散發(fā)公式計算蒸發(fā)量,利用蓄滿產(chǎn)流及蓄水容量曲線計算總徑流量,并根據(jù)自由蓄水容量曲線將總凈流量劃分成地面、壤中和地下徑流,其中壤中和地下徑流通過線性水庫計算流入河網(wǎng),地面徑流直接流入河網(wǎng),采用滯后演算法計算河網(wǎng)匯流,采用馬斯京根法計算河道匯流。
在訓(xùn)練LSTM模型之前,需要設(shè)置用于控制模型訓(xùn)練結(jié)果的超參數(shù)[16],將建立的LSTM初始模型設(shè)置為:隱藏層為1層,包含10個神經(jīng)元,學(xué)習(xí)率為0.000 1,訓(xùn)練次數(shù)為10次。在LSTM模型中隱藏層的神經(jīng)元數(shù)量對模型精度影響較大。在模型中將隱藏層中的神經(jīng)元數(shù)量分別設(shè)置為10、20、40、60、80、100、150、200。在其他參數(shù)設(shè)置中,學(xué)習(xí)率設(shè)定為0.000 1,最大迭代次數(shù)為100,模型優(yōu)化算法使用自適應(yīng)矩估計(Adaptive Moment Estimation,ADAM)算法[17]。
由于量綱不統(tǒng)一會導(dǎo)致模型在計算過程中收斂速度變慢,為使LSTM在模擬過程中快速收斂,模型的輸入數(shù)據(jù)需要進行標(biāo)準(zhǔn)化處理。本研究采用z-score標(biāo)準(zhǔn)化算法來進行模型數(shù)據(jù)的標(biāo)準(zhǔn)化處理。z-score標(biāo)準(zhǔn)化算法具有簡單、容易實現(xiàn)、不受數(shù)據(jù)量級影響等優(yōu)點,其計算原理如下:
(7)
經(jīng)過z-score標(biāo)準(zhǔn)化處理之后的所有數(shù)據(jù)的平均值為0,標(biāo)準(zhǔn)差為1。
為了量化模型的水位預(yù)報精度,采用2種量化指標(biāo),分別為Nash-Sutcliffe效率系數(shù)(NSE)和均方根誤差(RMSE)。具體計算公式如下:
(8)
(9)
白盆珠水庫位于惠東縣城東北34 km,東江支流西枝江上游,集雨面積856 km2,最大防洪庫容12.2億m3。白盆珠水庫2001年建立7個自動雨量采集站,分別為白盆珠壩上、禾多布、新塘、馬山、高潭、石澗和寶口,3個水位自動采集站分別位于寶口、白盆珠壩上、白盆珠壩下,各站點位置見圖2。2018年11月建設(shè)了公梅和井湖雨量站點及白盆珠蒸發(fā)站,由于數(shù)據(jù)存儲量較小,本研究不予考慮。
圖2 站點分布
本研究采用了白盆珠水庫7個雨量站的逐小時降水資料,壩上水位站逐小時水位資料以及庫容資料。歷史數(shù)據(jù)從2012年1月1日至2018年1月1日,共計6年。選取前5年即2012—2017年為模型訓(xùn)練期,后1年即2018年為模型驗證期。
流域上的降雨經(jīng)過產(chǎn)匯流過程流經(jīng)出口斷面,考慮影響出口斷面流量過程的因素為上游降雨,為研究不同預(yù)見期下 LSTM 對洪水過程的模擬效果,將模型輸入確定為t時刻7個雨量站觀測降雨數(shù)據(jù)和白盆珠壩上水位站實測水位以及白盆珠庫容數(shù)據(jù),共計9項數(shù)據(jù)組成一組模型輸入,輸入數(shù)據(jù)長度為6。模型輸出為不同預(yù)見期下白盆珠壩上水位站水位。另外,如果LSTM的模型輸出為負值,則會被調(diào)整為0。
為了評估LSTM模型在白盆珠流域的水位預(yù)報效果,將其與新安江模型進行對比。表1展示了預(yù)見期為1~6天時,LSTM和新安江模型的水位預(yù)報效果。
由表1、圖3可知:①LSTM水位預(yù)報效果較好,在所有預(yù)見期下,NSE均大于0.9。且在相同的預(yù)見期下,LSTM模型的預(yù)報精度均優(yōu)于新安江模型。這得益于LSTM模型對非線性關(guān)系的強大擬合能力。②在預(yù)見期為1 h情況下,預(yù)報效果最好。隨著預(yù)見期的增長,預(yù)報精度隨之下降。在預(yù)見期為6 h且隱藏層神經(jīng)元數(shù)量為10時預(yù)報精度達到最低,NSE降到0.909 5。預(yù)見期較短時,預(yù)見期內(nèi)的水位受預(yù)報發(fā)起時刻之前的降雨等氣象因素影響更大。隨著流域匯流過程的完成,預(yù)見期較長時,水位受到預(yù)報發(fā)起時刻之前的降雨等氣候因素的影響較小。因此預(yù)見期越長,預(yù)報結(jié)果與模型輸入之間的邏輯關(guān)系越弱,則預(yù)報精度會隨之下降。③同一預(yù)見期情況下,隱藏層神經(jīng)元個數(shù)增加,水位預(yù)報效果更好。但神經(jīng)元數(shù)量在達到一定值時,預(yù)報精度上升效果不顯著。隱藏層神經(jīng)元個數(shù)可以提高LSTM模型的預(yù)報能力。
表1 模型預(yù)報結(jié)果
圖3 白盆珠壩上水位變化曲線
為了深入研究LSTM模型在短歷時強降雨期間的預(yù)報效果,記錄1~6 h預(yù)見期下2013年8月15日至8月20日模型預(yù)測水位與實測水位的變化情況,結(jié)果見圖4。從圖中可以看出,在預(yù)見期為1~2 h時LSTM模型可以較好地反映短歷時強降雨期間的洪水過程,但預(yù)見期大于3 h時誤差已經(jīng)較為明顯,不能較好地預(yù)報洪水過程。在預(yù)見期為3 h時,模型預(yù)報結(jié)果已出現(xiàn)峰值延后的情況,且隨著預(yù)見期增加,峰值延后時間增加。分析其原因在于所需預(yù)見期的增長,訓(xùn)練輸入與輸出的時間間隔增大,導(dǎo)致數(shù)據(jù)的關(guān)聯(lián)性下降,此時LSTM難以學(xué)習(xí)到時間序列數(shù)據(jù)特征和數(shù)據(jù)間的關(guān)系。
圖4 不同預(yù)見期LSTM模型預(yù)測白盆珠壩上水位變化曲線
在LSTM迭代計算過程中,記錄其每次迭代計算的損失率,當(dāng)預(yù)見期為1 h、隱藏層神經(jīng)元數(shù)量為10、訓(xùn)練次數(shù)為100時,其結(jié)果見圖5。從圖中可以看出,訓(xùn)練次數(shù)增加時,損失率首先迅速減小,之后逐漸趨于穩(wěn)定。此現(xiàn)象同時存在于其他預(yù)見期情況下。
圖5 損失率變化曲線
將損失率趨于穩(wěn)定時的最小迭代次數(shù)記錄為穩(wěn)定時迭代次數(shù)。分別統(tǒng)計預(yù)見期為2、4、6 h的單次迭代所需計算時間以及損失率變化穩(wěn)定時迭代次數(shù),結(jié)果見表2。
表2 LSTM模型進化迭代速度
從表中可以看出,在相同預(yù)見期下,隨著神經(jīng)元數(shù)量的增加,LSTM模型單次計算時間增加,損失率變化穩(wěn)定時迭代次數(shù)逐漸減少,但迭代穩(wěn)定時間上升,模型收斂速度減慢。這種結(jié)果可以用不同復(fù)雜程度神經(jīng)網(wǎng)絡(luò)擬合能力的不同來解釋。神經(jīng)元數(shù)量越多,神經(jīng)網(wǎng)絡(luò)越復(fù)雜,擬合能力越強,因此進化到能夠擬合復(fù)雜降雨徑流關(guān)系的狀態(tài)所需要的次數(shù)就越少。
在相同隱藏層神經(jīng)元數(shù)量下,隨著預(yù)見期的增加,LSTM模型單次迭代時間減少,迭代穩(wěn)定時迭代次數(shù)增加。由于模型輸入數(shù)據(jù)長度較小,隨著預(yù)見期的增加,模型計算過程中數(shù)據(jù)分組減少,導(dǎo)致單次迭代時間減少。隨著預(yù)見期的增加,模型預(yù)測所需參數(shù)增加,所以迭代穩(wěn)定次數(shù)增加。
通過建立白盆珠水庫LSTM神經(jīng)網(wǎng)絡(luò)模型及新安江模型,分析2個模型在不同預(yù)見期的逐小時水位預(yù)報精度及參數(shù)設(shè)置對模型精度的影響,得到以下結(jié)論:①LSTM在各個預(yù)見期下預(yù)報精度均大于0.9,在預(yù)見期為1 h時LSTM模型預(yù)報精度最高,達到0.991,模型整體預(yù)報精度較高;②在預(yù)見期為1~2 h時LSTM模型可以較好地反映短歷時強降雨期間的洪水過程,在預(yù)見期為3 h時,模型預(yù)報結(jié)果已出現(xiàn)峰值延后的情況,且隨著預(yù)見期增加,峰值延后時間增加;③隨著神經(jīng)元數(shù)量的增加,LSTM模型單次計算時間增加,損失率變化穩(wěn)定時迭代次數(shù)逐漸減少,但迭代穩(wěn)定時間整體呈上升趨勢,模型收斂速度減慢。上述結(jié)果顯示,基于長短時記憶神經(jīng)網(wǎng)絡(luò)模型預(yù)報精度整體都可以滿足預(yù)報需求,對短期洪水預(yù)報具有指導(dǎo)意義。