羅朝林,張 波,孟慶魁,陳武奮
(珠江水利委員會珠江水利科學研究院,廣東 廣州 510611)
洪澇災害危脅人民生命財產安全,精準洪水預報作為重要的防洪減災非工程措施可以實現洪水精準化預報,減少人民生命財產損失[1]。目前洪水預報研究主要是對流域建立以物理機制或者物理概念為基礎的傳統水文模型[2-4]。然而水文模型由于本身機理的原因,在僅依賴觀測數據的前提下只能進行流域匯流時間內的預報,想要延長預見期還需要氣象預報數據作為輸入條件,這也會加大預報結果的不確定性。隨著感知設備以及信息技術的高速發展,獲取數據的方式逐漸多樣化,由此也引發了一些研究人員開始采用數據驅動的方式來解決洪水預報問題[5]。從20世紀90年代開始,人工神經網絡(Artificial Neural Net-works,ANN)以及遞歸神經網絡(Recurrent Neural Net-work,RNN)開始應用于洪水預報模擬并迅速發展[6]。Bengio等[7]在研究中發現RNN在計算過程中存在梯度消失與爆炸的問題,導致長時間序列存儲的信息難以被讀取。Hochreiter等[8]針對該問題,通過引入記憶單元的方式改進了RNN神經網絡,形成長短時記憶神經網絡(Long Short-Term Memory,LSTM)。在過去的幾年,LSTM開始水文預報領域展露頭角并且有了眾多的研究應用及突破。Liang等[9]采用LSTM對洞庭湖的水位波動和水庫運行進行了研究,將LSTM與SVM模型進行比較,綜合考察三峽大壩的存在對洞庭湖水位的影響,得出LSTM模型的偏差值遠遠小于SVM模型,在整體水位較高情況下的預測中模型精度更高;Hu等[10]分別構建了LSTM與ANN模型,分析比較兩者在降雨徑流預報上的精度,結果表明LSTM的預報精度高于ANN。殷兆凱等[11]以隱藏層神經元數量為代表,討論LSTM的復雜程度對模型精度的影響。Kratzert等[12]利用大量流量數據集訓練LSTM模型,通過LSTM預測結果與實際流量進行對比,得出LSTM可以用于流域流量預測的結論。Miao等[13]采用由卷積神經網絡和LSTM遞歸模塊組成的深度神經網絡模型,提高了GCM降水預報的分辨率和準確性。楊強[14]利用LSTM模型對瀾滄江烏弄龍水電站進行預見期為1個月徑流預測,結果表明LSTM模型的預測精度高。顧逸[15]將LSTM模型與GRU結合,構建Simple-LSTM模型進行中長期預報,結果優于BP神經網絡和SVR模型。上述研究多將LSTM應用于流域長預見期的徑流預報,且模型中參數對洪水過程模擬效果的影響研究較少。對于LSTM在較短預見期內以及短歷時強降雨下徑流預報方面是否具有同樣的性能和表現是一個值得探討的問題。
本文選取惠東縣白盆珠水庫開展研究,收集白盆珠水庫7個雨量站以及1個水位站的逐時歷史數據建立LSTM神經網絡模型與新安江模型,進行不同預見期下的水位預報,比較2個模型的模型精度,并研究隱藏層神經元個數對模型精度和模型訓練速度的影響。
LSTM具有與其他神經網絡相同的結構,由3個部分組成,分別是輸入層、輸出層以及隱藏層。RNN能夠學習到時間序列數據存儲的內在特征,但隨著訓練次數的增加以及網絡節點數的增多,很可能會發生梯度爆發或者消失,使更早期的長距離數據存儲的信息不能傳輸。LSTM通過引入門控單元統籌并傳遞對當前時刻重要的歷史信息,提升了神經網絡的長時間記憶,并保持了RNN訓練過程中梯度下降的穩定性。LSTM的內部結構見圖1。

圖1 LSTM網絡結構
圖1展示了一個LSTM記憶單元的典型結構。在t時刻,記憶單元的輸入包括前一時刻的隱藏層狀態變量、記憶單元狀態變量和當前時刻的輸入信息;然后模型依次通過遺忘門、輸入門、輸出門和這3個控制機制得到t時刻的隱藏層狀態變量和記憶單元狀態變量;最終會傳入輸出層生成LSTM在t時刻的計算結果,同時與一起傳入后一時刻進行計算。
具體過程如下。在t時刻的計算過程中,首先計算的是遺忘門ft。ft可以決定從之前的狀態中舍棄多少信息。ft的計算公式如下:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
式中Wf——遺忘門的權重向量;bf——遺忘門的偏置向量,在神經網絡訓練中這些矩陣或向量將被優化;σ——Sigmoid激活函數。
下一步,計算輸入門it。it將決定從新獲取的信息中選擇多少用以更新狀態。it的計算公式如下:
it=σ(Wi·[ht-1,xt]+bi)
(2)
式中Wi——輸入門的權重向量;bi——輸入門的偏置向量。

(3)
式中Wc——輸出門的權重向量;bc——輸出門的偏置向量;tanh——雙曲正切激活函數。
接下來,使用上面計算得到的結果來更新神經元狀態,計算公式如下:
(4)
式中 ⊙——向量元素積。
然后,計算輸出門ot。ot可以決定在t時刻有多少信息生成隱藏層狀態變量ht,其計算公式如下:
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=o⊙tanh(ct)
(6)
式中Wo——門控單元的權重向量;bo——門控單元的偏置向量。
最終,ht傳入輸出層,再經過計算后得到LSTM在t時刻的最終輸出yt。
三水源新安江模型是經典的概念性半分布式水文模型,為中國首個自主研發的水文模型,在濕潤和半濕潤地區有較好的應用。新安江模型包含蒸散發、蓄滿產流、水源劃分、匯流計算4個模塊。模型采用三層蒸散發公式計算蒸發量,利用蓄滿產流及蓄水容量曲線計算總徑流量,并根據自由蓄水容量曲線將總凈流量劃分成地面、壤中和地下徑流,其中壤中和地下徑流通過線性水庫計算流入河網,地面徑流直接流入河網,采用滯后演算法計算河網匯流,采用馬斯京根法計算河道匯流。
在訓練LSTM模型之前,需要設置用于控制模型訓練結果的超參數[16],將建立的LSTM初始模型設置為:隱藏層為1層,包含10個神經元,學習率為0.000 1,訓練次數為10次。在LSTM模型中隱藏層的神經元數量對模型精度影響較大。在模型中將隱藏層中的神經元數量分別設置為10、20、40、60、80、100、150、200。在其他參數設置中,學習率設定為0.000 1,最大迭代次數為100,模型優化算法使用自適應矩估計(Adaptive Moment Estimation,ADAM)算法[17]。
由于量綱不統一會導致模型在計算過程中收斂速度變慢,為使LSTM在模擬過程中快速收斂,模型的輸入數據需要進行標準化處理。本研究采用z-score標準化算法來進行模型數據的標準化處理。z-score標準化算法具有簡單、容易實現、不受數據量級影響等優點,其計算原理如下:
(7)

經過z-score標準化處理之后的所有數據的平均值為0,標準差為1。
為了量化模型的水位預報精度,采用2種量化指標,分別為Nash-Sutcliffe效率系數(NSE)和均方根誤差(RMSE)。具體計算公式如下:
(8)
(9)

白盆珠水庫位于惠東縣城東北34 km,東江支流西枝江上游,集雨面積856 km2,最大防洪庫容12.2億m3。白盆珠水庫2001年建立7個自動雨量采集站,分別為白盆珠壩上、禾多布、新塘、馬山、高潭、石澗和寶口,3個水位自動采集站分別位于寶口、白盆珠壩上、白盆珠壩下,各站點位置見圖2。2018年11月建設了公梅和井湖雨量站點及白盆珠蒸發站,由于數據存儲量較小,本研究不予考慮。

圖2 站點分布
本研究采用了白盆珠水庫7個雨量站的逐小時降水資料,壩上水位站逐小時水位資料以及庫容資料。歷史數據從2012年1月1日至2018年1月1日,共計6年。選取前5年即2012—2017年為模型訓練期,后1年即2018年為模型驗證期。
流域上的降雨經過產匯流過程流經出口斷面,考慮影響出口斷面流量過程的因素為上游降雨,為研究不同預見期下 LSTM 對洪水過程的模擬效果,將模型輸入確定為t時刻7個雨量站觀測降雨數據和白盆珠壩上水位站實測水位以及白盆珠庫容數據,共計9項數據組成一組模型輸入,輸入數據長度為6。模型輸出為不同預見期下白盆珠壩上水位站水位。另外,如果LSTM的模型輸出為負值,則會被調整為0。
為了評估LSTM模型在白盆珠流域的水位預報效果,將其與新安江模型進行對比。表1展示了預見期為1~6天時,LSTM和新安江模型的水位預報效果。
由表1、圖3可知:①LSTM水位預報效果較好,在所有預見期下,NSE均大于0.9。且在相同的預見期下,LSTM模型的預報精度均優于新安江模型。這得益于LSTM模型對非線性關系的強大擬合能力。②在預見期為1 h情況下,預報效果最好。隨著預見期的增長,預報精度隨之下降。在預見期為6 h且隱藏層神經元數量為10時預報精度達到最低,NSE降到0.909 5。預見期較短時,預見期內的水位受預報發起時刻之前的降雨等氣象因素影響更大。隨著流域匯流過程的完成,預見期較長時,水位受到預報發起時刻之前的降雨等氣候因素的影響較小。因此預見期越長,預報結果與模型輸入之間的邏輯關系越弱,則預報精度會隨之下降。③同一預見期情況下,隱藏層神經元個數增加,水位預報效果更好。但神經元數量在達到一定值時,預報精度上升效果不顯著。隱藏層神經元個數可以提高LSTM模型的預報能力。

表1 模型預報結果

圖3 白盆珠壩上水位變化曲線
為了深入研究LSTM模型在短歷時強降雨期間的預報效果,記錄1~6 h預見期下2013年8月15日至8月20日模型預測水位與實測水位的變化情況,結果見圖4。從圖中可以看出,在預見期為1~2 h時LSTM模型可以較好地反映短歷時強降雨期間的洪水過程,但預見期大于3 h時誤差已經較為明顯,不能較好地預報洪水過程。在預見期為3 h時,模型預報結果已出現峰值延后的情況,且隨著預見期增加,峰值延后時間增加。分析其原因在于所需預見期的增長,訓練輸入與輸出的時間間隔增大,導致數據的關聯性下降,此時LSTM難以學習到時間序列數據特征和數據間的關系。

圖4 不同預見期LSTM模型預測白盆珠壩上水位變化曲線
在LSTM迭代計算過程中,記錄其每次迭代計算的損失率,當預見期為1 h、隱藏層神經元數量為10、訓練次數為100時,其結果見圖5。從圖中可以看出,訓練次數增加時,損失率首先迅速減小,之后逐漸趨于穩定。此現象同時存在于其他預見期情況下。

圖5 損失率變化曲線
將損失率趨于穩定時的最小迭代次數記錄為穩定時迭代次數。分別統計預見期為2、4、6 h的單次迭代所需計算時間以及損失率變化穩定時迭代次數,結果見表2。

表2 LSTM模型進化迭代速度
從表中可以看出,在相同預見期下,隨著神經元數量的增加,LSTM模型單次計算時間增加,損失率變化穩定時迭代次數逐漸減少,但迭代穩定時間上升,模型收斂速度減慢。這種結果可以用不同復雜程度神經網絡擬合能力的不同來解釋。神經元數量越多,神經網絡越復雜,擬合能力越強,因此進化到能夠擬合復雜降雨徑流關系的狀態所需要的次數就越少。
在相同隱藏層神經元數量下,隨著預見期的增加,LSTM模型單次迭代時間減少,迭代穩定時迭代次數增加。由于模型輸入數據長度較小,隨著預見期的增加,模型計算過程中數據分組減少,導致單次迭代時間減少。隨著預見期的增加,模型預測所需參數增加,所以迭代穩定次數增加。
通過建立白盆珠水庫LSTM神經網絡模型及新安江模型,分析2個模型在不同預見期的逐小時水位預報精度及參數設置對模型精度的影響,得到以下結論:①LSTM在各個預見期下預報精度均大于0.9,在預見期為1 h時LSTM模型預報精度最高,達到0.991,模型整體預報精度較高;②在預見期為1~2 h時LSTM模型可以較好地反映短歷時強降雨期間的洪水過程,在預見期為3 h時,模型預報結果已出現峰值延后的情況,且隨著預見期增加,峰值延后時間增加;③隨著神經元數量的增加,LSTM模型單次計算時間增加,損失率變化穩定時迭代次數逐漸減少,但迭代穩定時間整體呈上升趨勢,模型收斂速度減慢。上述結果顯示,基于長短時記憶神經網絡模型預報精度整體都可以滿足預報需求,對短期洪水預報具有指導意義。