劉 威,尹 飛
(1.金陵科技學院 網絡與通信工程學院,江蘇 南京 211169;2.江蘇省連云港市水利局,江蘇 連云港 222006)
水庫通過改變水資源的時空分布來達到興利除害的目的。水庫的一個重要功能是蓄水防洪。在防洪工作中,可以通過對防洪風險的估測來輔助水庫的調度決策。在這些風險估測中,水庫水位是一個最為重要的參數。目前,隨著人工智能、大數據等技術的不斷發(fā)展,對于水庫水位的長期估計,可以采用深度學習的方式進行預測[1-2]。
深度學習中有不同類型的神經網絡,常用的有人工神經網絡(Artificial Neural Networks,ANN)、卷積神經網絡(Convolutional Neural Networks,CNN)和周期神經網絡(Recurrent Neural Networks,RNN)。在深度學習的模型構建過程中,最重要的步驟是特征提取和特征選擇。在特征提取中,一般提取待解決問題的重要特征。在特征選擇中,一般要選擇那些能夠提高機器學習或深度學習模型性能的特征[3-5]。
ANN一般由輸入層、隱藏層和輸出層組成,每一層都包含多個感知器或神經元。ANN也被稱為前饋神經網絡,輸入只在正向處理,可以用來解決表格數據、圖像數據和文本數據等問題,優(yōu)點是能夠學習任何非線性函數。因此,這些網絡通常被稱為通用函數逼近器。ANN的缺點是容易失去空間特征。比如,在使用神經網絡解決圖像分類問題時,首先要將二維圖像轉換為一維向量,然后再對模型進行訓練。這里有2個缺點:隨著圖像大小的增加,可訓練參數的數量急劇增加;影像分類存在延時[6]。
CNN模型被用于不同的應用和領域,在圖像和視頻處理項目中尤其普遍,在處理序貫數據(Sequence Data)方面的表現也令人印象深刻。CNN的組成部分是過濾器,又稱內核[7]。內核用于使用卷積運算從輸入中提取相關特征。優(yōu)點是可以自動學習過濾器,而不必顯式地監(jiān)控它。這些過濾器有助于從輸入數據中提取正確的和相關的特征。
RNN在隱藏狀態(tài)上有一個循環(huán)的連接。這個循環(huán)約束確保在輸入數據中能捕獲到含有順序的信息。RNN特別適合解決以下問題:時間序列數據、文本數據和音頻數據[8]。優(yōu)點是可以利用輸入數據之間的依賴關系(時間、空間上)。但是,RNN存在梯度消失和梯度爆炸問題。
長短期記憶(Long Short Term Memory,LSTM)網絡是一種特殊的RNN[9-11]。本身有“門”(gate)這種設計,所以能夠通過gate的值來決定信息的保留和丟失,這樣就可以讓長期依賴的信息沿著序列一直傳遞下去[12-14]。LSTM模型目前已被廣泛地接受用于時間序列預測。最近,一些關于水位預測的研究使用了具有深度學習的LSTM模型,特別是在河流洪水事件期間。LSTM的內部結構適合于預測時間序列數據,因為它的記憶功能保留了過去的順序模式。因此,本研究也采用LSTM模型來預測水位。該LSTM結構在傳統(tǒng)LSTM隱含層結構的基礎上擴展了多個隱含層[15]。
上述學者提出的數據驅動模型取得了預期效果,特別是基于RNN模型的洪水預測模型得到了很大的改進。但并非所有的輸入數據都與水位預報具有正相關關系,比如,不相關的輸入數據往往會帶來大量噪聲。綜上所述,基于常用數據驅動模型的中型水庫水位預測局限于以下兩部分:① 水庫水量受降雨、水流和上游土壤含水量等因素的影響。然而,一般的數據驅動模型很難保留上述物理量的長期歷史信息,這使得預測難以達到預期的準確性。② 在進一步增加預測時間步長的情況下,數據驅動模型的預測精度易出現劇烈下降。
針對上述常見模型的局限性,提出了一種基于長期歷史物理量和最優(yōu)化預測時間步長的LSTM模型,該模型整合了降雨、水流和土壤含水量等歷史信息,并通過實驗獲取最優(yōu)預測步長。本文實驗結果表明,與多層感知機(Multi-Layer Perceptrons,MLP)模型和CNN模型相比較,本文提出的LSTM模型性能優(yōu)于MLP和CNN模型。在NSE評價指標中,LSTM模型的性能比MLP提升了12.2%,比CNN提升了5.1%。在R2評價指標中,LSTM模型的性能比MLP提升了5.9%,比CNN提升了1.4%。在RMSE評價指標中,LSTM模型的性能比MLP降低了34.7%,比CNN降低了25.8%。
本文的主要創(chuàng)新點如下:① 改進了基于LSTM模型的數據使用方式,建立了歷史水量信息與水位之間的長期依賴關系;② 通過實驗獲得預測步長的最優(yōu)值,確保模型的預測精度不會隨著預測時間步長的增加而急劇下降。結果表明,本文建議的方法在一個真實的洪水事件上具有顯著優(yōu)勢,雨量較小時不會引起預報線的波動,且預測洪峰時偏離較小,不會導致錯過洪水警報。
在當前時刻t,輸入數據包含多個節(jié)點。在前一時刻t-1,輸出數據ht-1也包含多個節(jié)點。節(jié)點大致模擬了大腦中的一個神經元。輸入數據依次經過3個門:遺忘門、輸入門和輸出門。式(1)定義了遺忘門ft的作用,它從記憶單元中移除一些信息:
ft=σ(wf,hht-1+wf,xxt+bf),
(1)
式中,wf,h和wf,x是和ht-1,xt相關的系數;bf為偏置量;σ(·)為S型函數,也稱為S型生長曲線,這里被用作激活函數。輸入門與輸入數據的2類特征源混合。下式表示了2種來源:
it=σ(wi,hht-1+wi,xxt+bi),
(2)
zt=tanh(wz,hht-1+wz,xxt+bz),
(3)
式中,tanh(·)為雙曲正切型的激活函數;wi,h,wi,x,wz,h和wz,x為矩陣形式的加權系數;變量ft,it和zt被組合成:
Ct=ft?Ct-1⊕it?zt,
(4)
式中,?表示矩陣的點積計算;⊕表示矩陣的點和計算。輸出門ot的定義為:
ot=σ(wo,hht-1+wo,xxt+bo),
(5)
式中,wo,h和wo,x是和ht-1,xt相關的系數;bo為偏置量。最后,Ct與ot相乘,并且更新輸出ht:
ht=ot?tanh(Ct)。
(6)
為了判斷預測的準確性,通常使用以下幾類評價指標:Nash-Sutcliffe效率(Nash-Sutcliffe Efficiency,NSE)、Pearson相關系數平方(Squared Pearson Correlation Coefficient,R2)、RMSE和相對均方根誤差(Relative Root Mean Square Errors,rRMSE)、絕對偏差(Bias)和相對偏差(Relative Bias,rBias)以及持續(xù)性指數(Persistency Index,PI)。其中,評價指標NSE定義為:
(7)
Pearson相關系數平方R2的定義為:
(8)
RMSE定義為:
(9)
RMSE的值對特別大的誤差值敏感,因此可以反映模型的預測精度。RMSE的值越大,說明預測值與測量值之間的誤差越大。
rRMSE定義為:
(10)
Bias定義為:
(11)
rBias定義為:
(12)
式中,omax為最大觀測值;omin為最小觀測值。
PI定義為:
(13)
式中,olast表示最后一個觀測值。在以上各項指標中,RMSE和Bias指標雖然都可以用于比較不同模型之間特定時間序列的性能,但是rRMSE和rBias指標用于比較不同時間序列間的模型性能時更有效。PI基本上是將性能與樸素模型進行比較,后者使用預測開始時最后已知的水庫水位。當使用過去的水庫水位作為輸入時,上述數據的選擇對于判斷性能尤其重要。此時,該模型的性能應該優(yōu)于樸素預測(即PI>0)。
沂沭泗水系是淮河流域內一個相對獨立的水系,系沂、沭、泗(運)3條水系的總稱,位于淮河流域東北部,北起沂蒙山,東臨黃海,西至黃河右堤,南以廢黃河與淮河水系為界。全流域介于114°45′E~120°20′E,33°30′N~36°20′N,流域面積7.96萬平方千米,占淮河流域面積的29%。沂沭泗流域多年平均降水為830 mm,最大年為1 098 mm(1964年),最小年為562 mm(1966年)。多年平均年內分配:春季(3—5月)為131 mm,占15.8%;夏季汛期(6—9月)平均為592 mm,占71.3%;秋季(10—12月)平均為77 mm,占9.3%;冬季(次年1—2月)平均為30mm,占3.6%。全流域多年平均徑流深為232 mm,年徑流系數為0.28。年徑流分布與降水分布相似,南大北小,山區(qū)大平原小。泰沂山丘區(qū)年徑流深達348 mm,年徑流系數為0.40;南四湖湖西年徑流深達97.2 mm,年徑流系數為0.14。
石梁河水庫的位置如圖1所示,地理坐標為34°44′33″N~35°49′46″N,118°44′11″E~118°52′31″E。其周圍有蔣莊閘、南閘和北閘3個閘所,該水庫是江蘇省最大的人工水庫,也是“導沭(河)經沙(河)”主要工程之一。
圖1 石梁河水庫及閘所示意Fig.1 Illustration of location of Shiliang River reservior and its three gates
本文獲取了2011—2020年,在石梁河水庫及其周邊所有泵站、閘門的水位傳感器觀測數據。每個泵站收集的數據是泵流量(簡稱“流量”)、降雨量和水位。測量了每個閘門的上游和下游水位,在每個傳感器位置測量水位。這些數據被用來訓練LSTM模型并評估模型預測的誤差。采用K-fold交叉驗證進行驗證比較。K設為10,將觀測數據分為10組。9組對模型進行訓練,1組對模型預測結果進行比較。模型預測組按順序與其他組進行交換。第1步的觀測數據來自實地測量。在第2步的學習過程中,部分觀測數據被用于K-fold交叉驗證。第3步利用剩余觀測數據進行預測。LSTM模型的程序是使用Python(版本3.8.8)和Keras中Python深度學習庫創(chuàng)建的。其中包含了Windows操作系統(tǒng)PC上的tensorflow模塊,PC上的Intel Core i7-4770K CPU為3.50 GHz,GPU為Nvidia GeForce RTX 2070,所有情況下的平均計算時間約為1 h。
在實驗中,利用訓練后的模型,輸入代表水位信息的時間學歷,并運行LSTM模型,可以得到如圖2所示的預測結果。圖2的上半部分,是全部15 000個觀測值的預測情況。可以看出,LSTM預測結果與實際的觀測結果基本吻合,在部分峰值處和谷值處,預測值誤差稍大。但是,由于樣本較多,無法看到某微觀時間段的預測結果。鑒于此,在圖2的下半部分,僅選取了其中500個觀測值和預測值進行繪圖,從中也可以看出,預測值與觀測值的誤差較小,2條曲線基本一致。
(a) 測量值與預測值比較(全部樣本)
另外,為了評價本文模型的性能優(yōu)劣,將LSTM模型的結果與MLP模型、CNN模型的結果進行了對比。性能評價指標選擇了NSE,R2和RMSE三類。具體仿真結果如表1所示。從表1可以看出,在NSE評價指標中,LSTM模型的性能比MLP提升了12.2%,比CNN提升了5.1%。在R2評價指標中,LSTM模型的性能比MLP提升了5.9%,比CNN提升了1.4%。在RMSE評價指標中,LSTM模型的性能比MLP降低了34.7%,比CNN降低了25.8%。
表1 MLP,CNN,LSTM三種模型預測結果比較
LSTM模型性能較好的主要原因是:與MLP和CNN模型相比較,LSTM模型的預測值不存在明顯較小的波峰或波谷。該結果表明,LSTM的記憶遺忘能力有助于模型對非線性和時間序列數據的預測,對水庫水位的預測有較好的效果。但是,LSTM在主峰值預測方面仍然有誤差,大多數主要峰值預測超過實際值約10%。若想解決這類問題,需要調整訓練過程,或者采用更大規(guī)模、更準確的可用數據庫。
基于降雨量、流域水量、土壤水含量和中小河流洪水事件,提出了一種基于LSTM模型的水庫水位預測方法。該模型能夠學習空間(降水中心)和時間(短時間和長時間)的依賴關系,并且利用了最優(yōu)步長來提高預測精度。本文采用NSE、R2和RMSE作為模型的性能評價標準,對LSTM模型進行評價。主要結論如下:首先,本文建議的LSTM模型性能明顯優(yōu)于MLP模型和CNN模型;其次,建議的LSTM模型比MLP模型和CNN模型更穩(wěn)定;最后,通過歷史上的實際洪水事件測試,LSTM模型的洪水預報結果更加精確,說明了該模型對洪水過程中的關鍵節(jié)點具備預報能力。
本文建議的模型主要應用于中小流域,在未來的工作中,將重點從以下3個方面進行算法改進和進一步研究:① 在大規(guī)模流域中應用該模型;② 對流域中的多個水庫水位同時預測;③ 建立更多類型的時空相關性,對水庫水位進行預測。