劉 艷,張 婷,康愛卿,李建柱,雷曉輝
(1.天津大學水利工程仿真與安全國家重點實驗室,天津 300072;2.中國水利水電科學研究院流域水循環(huán)模擬與調控國家重點實驗室,北京 100038)
水位預測對水資源的合理開發(fā)、利用及優(yōu)化配置具有重要意義。由于河流水位受多方面因素的影響,變化頻繁,因此短期的精細化預測相對中長期的趨勢預測更有實際價值。目前,水位預測的研究方法可以歸納為兩類,即過程驅動模型和數據驅動模型。過程驅動模型通過有物理依據及經驗性的公式,描述水流運動與影響因素的關系,由于影響水位的因素較多,考慮降雨、地形、水工建筑物等的物理模型會十分復雜,模型精度很難達到水位控制要求[1]。數據驅動模型通過挖掘輸入與輸出數據之間的相關信息進行預測,而不研究物理過程。常用的模型包括以數理統(tǒng)計為基礎的時間序列分析,以及以人工神經網絡(artificial neural network,ANN)、支持向量機(support vector machine,SVM)為代表的機器學習。已有的研究采用一種或集合多種數據驅動方法建立水位預測模型,并使用遺傳算法等優(yōu)化方法獲得最優(yōu)參數[2-5]。數據驅動模型在水位預測方面取得了豐碩的成果,但仍存在很大的改進空間,如傳統(tǒng)SVM模型只能單步輸出,以及淺層神經網絡不足以充分挖掘數據的所有特征等。
近年來,人工智能和大數據驅動技術給水文研究帶來了新的研究思路和技術方法,以深度學習為代表的新一代人工神經網絡已經在水文領域進行探索性應用[6]。深度學習是一種特殊的機器學習方法,從簡單的線性網絡發(fā)展到經典的生成式對抗網絡(generative adversarial networks,GAN),經歷了深度信念網絡(deep belief network,DBN)、稀疏編碼(sparse coding)、卷積神經網絡(convolutional neural network,CNN)、結構遞歸神經網絡(recursive neural network,RNN)的快速迭代[7]。長短期記憶網絡(long short-term memory,LSTM)是RNN的改進版,通過引入記憶門控單元緩解梯度消失,是進行時間序列數據仿真模擬及預測的首選。在水位預測方面,LSTM模型受到越來越多的關注,相關研究成果已表明LSTM模型預測精度較高,預測效果優(yōu)于SVM、RNN等模型[8-14]。然而,現有的大部分研究是預測未來某個時間的水位,而不是水位序列。有少數研究對多步水位進行預測,但沒有考慮數據輸出的先后順序。
序列到序列(sequence-to-sequence,Seq2Seq)模型是一種由序列生成序列,且序列長度互不影響的模型,被廣泛應用于機器翻譯、行為預測等任務中[15-17]。水位序列與語言上下文以及其他時間序列具有相似的特征,但Seq2Seq模型在水位預測方面的研究甚少。因此,本文提出了一種基于Seq2Seq模型的短期多步水位預測模型,以克服上述數據驅動模型存在的不足。以流溪河的水位數據為例,對所提模型進行驗證,并與LSTM和ANN模型進行比較,分析評價預測精度和計算效率。
流溪河位于廣東省廣州市北部,地理位置介于113°10′12″E~114°2′00″E,23°12′30″N~23°57′36″N之間。流溪河是廣州市轄區(qū)內唯一的一條全流域河流,也是集雨面積最大的河流[18]。河流全長約為171 km,流域面積約為2 300 km2。該流域處于亞熱帶季風氣候區(qū),氣候溫濕,雨量豐沛。年平均降雨量為1 800 mm,年徑流量約為28.4億m3。84%的降雨集中在汛期(4—9月),有較強的季節(jié)性。
流溪河梯級閘壩工程開發(fā)力度較大,從上至下共有11座攔河閘壩,依次為良口壩、青年壩、勝利壩、衛(wèi)東壩、人工湖壩、水廠壩、街口壩、大坳壩、牛心嶺壩、李溪壩和人和壩[19]。流溪河是廣州市最早的供水水源地,目前仍然是重要的工農業(yè)和生活用水水源地,廣州市30%的自來水來自流溪河,被譽為廣州的“母親河”。攔河閘壩的修筑對于廣州市水資源開發(fā)利用發(fā)揮著重要作用。本文選取良口壩、大坳壩和李溪壩為研究對象,如圖1所示。
圖1 流溪河及攔河壩位置示意圖
本文采用的數據長度為2014年10月至2020年5月,監(jiān)測頻率為1h,其中,2014年10月至2018年2月為訓練期,2018年3月至2020年5月為驗證期。
數據質量是影響數據驅動模型效果的關鍵因素。在建模之前要對原始數據進行預處理,包括數據整理和數據變換。針對水位數據,數據整理主要是噪聲數據識別和空缺值填充。噪聲數據是指在測量和收集數據時由機器采集或者人為造成的誤差。噪聲數據遠遠超過或不及其他數據,明顯偏離一般水平,一般將其剔除然后按照空缺值的方法填充??杖敝凳侵篙^少且不連續(xù)的數據缺失,一般采用平均值、眾數等進行填充??紤]到研究對象水位時間間隔較短,對于空缺值采用線性插值的方式處理。數據變換是對數據進行規(guī)范化,本文采用標準化算法對模型輸入數據進行處理[20],處理后的序列均值為0,標準差為1。計算公式為
(1)
本文利用歷史水位作為輸入,預測未來一定時間內的連續(xù)水位,因此選用處理時間序列的神經網絡。LSTM是RNN的一種特殊類型,可以從隱藏的長期依賴信息中學習[21]。LSTM通過引入門控單元統(tǒng)籌并傳遞對當前時刻重要的歷史信息,提升了循環(huán)神經網絡的長時間記憶,并保持了訓練過程中梯度下降的穩(wěn)定性。但LSTM的每一個輸入都對應一個輸出,因此只能處理輸入輸出序列時序一致的數據。
Seq2Seq模型最初是因機器翻譯而誕生,隨后被廣泛用于處理輸出序列長度與輸入序列長度無關的相關任務。Seq2Seq模型由編碼器和解碼器組成,編碼器和解碼器本質上是循環(huán)神經網絡。編碼器將可變長度序列數據編碼為一個固定長度的中間向量,解碼器將固定長度的中間向量進行解碼作為預測輸出,實現了任意長度的輸入序列可以映射到任意長度的輸出序列的目的。
在實際應用中,編碼器和解碼器有多種選擇,本文選用兩個LSTM模塊組成Seq2Seq模型對水位進行預測。當輸入歷史時間序列的長度為n,預測輸出時間序列的長度為m時,構造的輸入向量X及輸出向量Y如下:
X=(X1,X2,X3,…,XN)
(2)
Y=(Y1,Y2,Y3,…,YN)
(3)
Xi=(x1+m(i-1),x2+m(i-1),x3+m(i-1),…,xn+m(i-1))
(4)
Yi=(xn+1+m(i-1),xn+2+m(i-1),xn+3+m(i-1),…,xn+mi)
(5)
式中:N為樣本總數;Xi、Yi分別為第i個樣本的輸入和輸出(i=1,2,…,N)。此種輸入輸出向量構造方法可同時得到一個預測長度的各步長預測結果,避免了使用前一步預測結果作為真實值輸入所造成的誤差累積。
將樣本(X1,Y1)代入Seq2Seq模型中,其中X1=(x1,x2,…,xn)表示輸入的歷史水位,Y1=(y1,y2,…,ym)表示輸出的預測水位。編碼器由單層LSTM單元組成,將輸入序列按照時間順序分步讀入,每一時刻的隱藏層狀態(tài)ht都由當前時刻的輸入數據xt與上一時刻的隱藏層狀態(tài)ht-1和細胞狀態(tài)ct-1共同決定,即
ht=f(xt,ht-1,ct-1)
(6)
式中:ht、ht-1分別為t時刻、t-1時刻編碼層的LSTM神經元隱藏層狀態(tài);xt為t時刻的輸入;ct-1為t-1時刻編碼層的LSTM神經元細胞狀態(tài)。
LSTM單元內部由輸入門、遺忘門和輸出門組成。首先,遺忘門決定舍棄多少細胞狀態(tài)ct-1;接下來,輸入門決定保留多少當前外部信息(即輸入xt),并生成候選細胞狀態(tài)ct;然后,根據遺忘門和輸入門的結果更新細胞狀態(tài)ct;最后,輸出門決定輸出細胞狀態(tài)ct的哪些狀態(tài)特征,并生成隱藏層狀態(tài)ht。當t=1時,h0和c0對應編碼層起始狀態(tài)隱藏層的輸出,采用0進行初始化。上述過程對應公式如下:
ft=σ(Wf(ht-1,xt)+bf)
(7)
it=σ(Wi(ht-1,xt)+bi)
(8)
(9)
(10)
ot=σ(Wo(ht-1,xt)+bo)
(11)
ot=ottanhct
(12)
(13)
(14)
式中yt為t時刻的輸出。經過分步解碼,形成最終的輸出序列。
對良口壩、大坳壩和李溪壩的逐小時水位進行連續(xù)6 h、12 h和24 h的預測,即模型輸出長度m分別是6 h、12 h、24 h。深度學習模型參數有兩類:一類是可訓練參數,通過訓練集自動率定,主要是研究方法中提到的權重和偏置;另一類是超參數,根據訓練過程中評價指標的結果進行經驗調參。Seq2Seq模型的計算步驟及參數設置如下:
步驟1對數據進行預處理。
步驟2設置模型預測目標及輸入數據。模型預測長度m分別為6 h、12 h、24 h,模型輸入長度n分別設為72 h、168 h、168 h。
步驟3建立編碼層與解碼層的網絡結構。編碼層和解碼層均為單層LSTM,編碼層隱藏層單元數量分別為32、128、128,解碼層隱藏層單元數量分別為8、64、64。
步驟4利用訓練集的樣本訓練模型。訓練過程以均方誤差為損失函數,使用ADAM優(yōu)化模型參數,學習率為0.001。由于數據集較大,將批量尺寸參數batch-size設置為256,最大訓練次數設為200。
步驟5對模型輸出進行反歸一化處理,得到水位預測結果。
步驟6結果分析。
本文采用納什效率系數(NSE)、均方根誤差(RMSE)和平均絕對誤差(MAE)定量評價模型的預測性能,NSE的變化范圍從-∞到1,越接近1,擬合越完美,模型可信度越高。同時采用RMSE和MAE衡量模擬值和實測值之間的偏差,變化范圍從0到+∞,越接近0,模型整體模擬效果越好。當MAE相等時,RMSE越大,數據離散度越高。
選擇NSE、RMSE和MAE對Seq2Seq模型在良口壩、大坳壩和李溪壩的短期水位預測結果進行評價,結果見表1。由表1可知:在所有預測時間,MAE均小于0.1 m;NSE均大于0.7,最大值為0.98;RMSE最大值為0.17 m;Seq2Seq模型取得了較好的預測效果。對比同一站點不同預測長度的評價指標結果可以發(fā)現,當預測長度為6 h時,NSE均大于0.9,模型的預測效果最佳。隨著預測長度的增加,RMSE和MAE不斷增大,而NSE不斷減小。以良口壩為例,預測長度從6 h增加到24 h時,測試集的NSE降低了0.08,RMSE和MAE分別增加了0.06 m、0.02 m。
表1 各站點預測結果對比
圖2給出了3種不同預測長度下各站點測試集的預測與實測水位對比,從中可以看出,Seq2Seq模型能夠較好地反映壩上水位隨時間的波動趨勢。各個站點連續(xù)6 h的預測水位與實測水位最接近,連續(xù)24 h的預測水位不能很好地再現實測水位漲落過程。Seq2Seq模型對于高水位或低水位(極值)的預測效果相對較差。為了定量分析預測誤差大小,計算良口壩水位小于64 m,大坳壩水位大于24 m以及李溪壩水位小于10 m范圍內水位預測的最大誤差、最小誤差和MAE,結果如表2所示。由表2可知,總體上MAE隨預測長度的增大而增大。與表1相比,極值預測的MAE遠高于全過程的MAE,說明模型整體預測性能較好,但對極值的預測略有不足。這主要是由于影響水位的因素較多,比如閘壩調度、灌溉取水等,只考慮歷史水位數據不能很好地呈現水位突變的趨勢。
圖2 基于Seq2Seq的水位預測對比
表2 各站點極值的預測誤差對比
此外,對于測試集,在預測長度分別為6 h、12 h、24 h的情況下,大坳壩的NSE比良口壩的NSE依次小0、0.07和0.07,李溪壩的NSE比良口壩的NSE依次小0.01、0.08和0.12。結合NSE和水位過程對比可以看出,良口壩的水位預測效果最好,大坳壩次之,李溪壩較差。這是由于從河流上游至下游,隨著預測站點到河源的距離增大,影響水位的因素增加;同時,當預測長度增大時,上下游站點之間差異有增大的趨勢。
為了便于模型之間的比較,除Seq2Seq模型外,本文還構建了LSTM模型和ANN模型。ANN模型采用的是最基本的3層結構,即輸入層、隱藏層、輸出層,又稱為全連接神經網絡(full connected neural networks, FCNN)[22]。LSTM模型和ANN模型隱藏層的神經元數量與Seq2Seq模型的編碼層神經元數量一致,其他參數也與Seq2Seq模型相同?;跍y試集,對比分析Seq2Seq、LSTM和ANN模型的預測結果。
圖3~5為3種模型在不同預測長度下的評價指標。從圖3~5可以看出,ANN模型的NSE均小于0.9,最小值為0.67,RMSE和MAE的最大值分別超過了0.20 m和0.10 m。LSTM和Seq2Seq模型的NSE最小值分別為0.70和0.73,MAE最大值分別為0.09 m和0.08 m,可見這兩個深度學習模型各項指標均優(yōu)于簡單神經網絡模型。當預測長度為6 h時,Seq2Seq和LSTM模型的各項指標基本相等;當預測長度為12 h時,在良口壩的水位預測中,Seq2Seq模型相對LSTM模型來說,NSE提高了大約0.05,RMSE和MAE分別降低了大約0.03 m和0.01 m,其他站點的各項指標值較為接近;當預測長度為24 h時,Seq2Seq模型在3個站點的各項指標結果均有不同程度的改進。
圖3 不同模型預測結果的NSE對比
圖4 不同模型預測結果的RMSE對比
圖5 不同模型預測結果的MAE對比
LSTM模型和ANN模型預測結果同Seq2Seq模型一樣,都表現出隨著預測長度的增加,預測性能逐漸下降的特性。對于評價指標值的變化幅度,當預測長度增加到12 h時,Seq2Seq模型預測結果最小,LSTM模型預測結果和ANN模型接近;當預測長度增加到24 h時,ANN模型預測結果最大,Seq2Seq模型在大坳壩和李溪壩預測結果最小,而LSTM模型在良口壩預測結果最小。此外,LSTM和ANN模型受站點位置的影響規(guī)律與Seq2Seq模型一致,即中上游站點的預測效果優(yōu)于下游站點,且下游站點與中上游站點之間的評價指標值差距隨著預測長度的增大而增大。
由于ANN模型的預測效果較差,僅對Seq2Seq與LSTM模型的計算效率進行比較。以良口壩為例,在相同環(huán)境下兩模型完成一次計算的時間如表3所示。由表3可以看出,預測長度為12 h的計算時間大于預測長度為24 h的計算時間,表明神經元數量相同時,樣本數越多運行時間越長;預測長度為6 h的計算時間小于預測長度為12 h的計算時間,表明樣本數雖多,但神經元數量減少,模型運行時間依然較短。由以上分析可知,樣本數和神經元數量都影響計算效率,且神經元數量的影響較大。對比同一預測長度下兩模型的計算時間可以發(fā)現LSTM模型計算時間更短。圖6給出了不同預測長度下兩模型的訓練過程。由圖6可知,Seq2Seq模型的RMSE均小于LSTM。當預測長度為6 h和12 h時,LSTM先收斂;當預測長度為24 h時,Seq2Seq模型的收斂速度較快。大坳壩和李溪壩計算效率的對比結果與良口壩相似。以上對預測精度和計算效率的對比表明,在實際應用中,需根據對精度和效率的要求選擇合適的預測模型。
表3 不同模型的計算時間對比
圖6 不同模型的訓練過程對比
a.基于Seq2Seq模型建立了未來6 h、12 h和24 h的逐小時水位預測模型,使輸入與輸出的長度設置不受限制,模型訓練過程平穩(wěn),預測效果較好。
b.當預測長度為6 h、12 h和24 h時,Seq2Seq模型的MAE均小于0.1 m,NSE均大于0.7,表明該模型具有較高的預測精度。同時表現出預測長度越小,評價指標越優(yōu)的趨勢;相同預測長度下,上游水位比中下游水位的預測效果更好。
c.本文測試集ANN模型、LSTM模型和Seq2Seq模型的NSE最小值分別為0.67、0.70和0.73,MAE最大值分別為0.12 m、0.09 m和0.08 m,可見Seq2Seq模型整體效果優(yōu)于LSTM模型和ANN模型。LSTM模型的計算時間較Seq2Seq模型短,但當預測長度為24 h時,Seq2Seq模型收斂速度更快。