劉青松,嚴 華,盧文龍
(1.四川大學 電子信息學院,四川 成都 610065; 2.萬江港利科技股份有限公司, 四川 成都 610094)
精準的水位預測對于水資源的合理調度以及流域安全具有重大意義。河流的水位具有隨機性、波動性、季節(jié)性等一系列特點,且影響水位的因素眾多,包括各個支流的流量、流域內降雨量等。多因素作用使得水位規(guī)律難以把握,增加了水位預測的難度。
目前在水位預測方面,學者們的研究方法主要側重于傳統(tǒng)的單變量時間序列處理,即只考慮將水位作為輸入變量。如王淑華[1]提出了一種基于ARIMA模型的水位預測方法,該方法通過對馮家山水庫歷史水位數(shù)據(jù)的處理分析,構建了具有不同參數(shù)的ARIMA模型;通過對不同模型的對比分析,結果顯示ARIMA(1,2,2)模型具有較好的預測精度。王蒙蒙等[2]提出了一種基于支持向量回歸的水位快速預測方法,該方法相對于水動力數(shù)學模型,計算時間大大縮短,在洞庭湖水位的快速預測方面取得了較好的結果。但是以上兩種方法都有一定的局限性。前者往往要求序列為嚴平穩(wěn),而實際的水文序列常常不符合要求;后者的預測精度又很大程度上取決于參數(shù)的選擇,模型不夠健壯。近年來,一種對水文序列要求較低的BP神經(jīng)網(wǎng)絡模型被提出。如李云良等[3]提出了一種基于BP神經(jīng)網(wǎng)絡的水位模型,該模型使用了3層BP神經(jīng)網(wǎng)絡,考慮了鄱陽湖五河流域及長江來水的影響;將其應用于鄱陽湖的水位預測取得了較好的結果??墒巧鲜龇椒ň豢紤]了單一因素的影響,沒有充分考慮到其他影響水位的因素,如流量及降雨等。只有充分考慮這些因素才能更精準地對流域內的水文特征進行建模。
近年來深度學習發(fā)展迅速,原因就在于它強大的捕捉非線性依賴的能力。其中循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)在自然語言處理(Neuro-Linguistic Programming,NLP)上取得了不凡的成果。自然語言本身就是一種特殊的多變量時間序列,因此國外學者也開始將RNN用于多變量時間序列預測當中,如美國南加州大學的Purushotham等[4]提出了一種基于門控循環(huán)單元(Gated Recurrent Unit,GRU)的多變量時間序列模型,該模型對于缺失值及缺失模式不太敏感,將其應用在臨床數(shù)據(jù)集中,取得了較好的預測效果。自回歸模型(Autoregressive Model,AR)可以很好地學習水文序列當中的線性關系。但是由于AR模型不能捕捉到水文序列中復雜的非線性關系,目前還沒有學者使用單獨的AR模型用于水位預測。
本文在傳統(tǒng)的單變量水位預測基礎之上,引入水位、降雨、流量等多變量進行水位預測。受RNN在其他領域的成功應用的啟發(fā),將RNN和傳統(tǒng)的AR模型相結合,用于多變量水位預測,既可以學習水位、降雨、流量相關序列的非線性特征,也可以減輕神經(jīng)網(wǎng)絡對序列線性成分的不敏感性[5]。將該方法應用在清溪河流域的日水位預測中,在預見期為1 d的情況下,取得了較好的預測效果。
為了尋求一種精準的多變量水位預測模型,準確地對各個影響水位的變量進行建模就顯得尤為重要[6]。針對水文序列的長期模式與短期模式、線性模式與非線性模式,基于AR-RNN的多變量水位預測模型整體框架如圖1所示。
圖1 AR-RNN模型整體框架Fig.1 Structure of AR-RNN model
由AR-RNN模型的框架圖可以看出,模型最終的預測結果由兩個單元決定:線性單元和非線性單元。這種復合架構使得模型既能捕捉到水文序列間復雜的非線性依賴,同時也能避免由于引入大量的非線性層造成模型對序列線性成分不敏感的問題[7]。下面就這兩個單元的基本原理做出闡釋。
(1) 非線性單元由循環(huán)神經(jīng)網(wǎng)絡或RNN構成。相對于傳統(tǒng)的神經(jīng)網(wǎng)絡(如BP神經(jīng)網(wǎng)絡),循環(huán)神經(jīng)網(wǎng)絡的輸入節(jié)點之間是有聯(lián)系的,因此能夠很容易地將網(wǎng)絡的輸入由單變量擴展到多變量[8],更充分地利用水文數(shù)據(jù)。同時水文氣象的時間跨度較長,通常以年為周期,傳統(tǒng)的網(wǎng)絡無法在時間跨度如此長的情況下學習水文序列的規(guī)律,只能學習到水文序列的短期模式。而循環(huán)神經(jīng)網(wǎng)絡內部的狀態(tài)傳遞機制可以學習水文序列的長期模式。
循環(huán)神經(jīng)網(wǎng)絡有很多種,本文提出的模型所使用的循環(huán)神經(jīng)網(wǎng)絡是門控循環(huán)單元(GRU),其在時間節(jié)點t的狀態(tài)可由以下公式定義[9]:
zt=σ(Wzxt+Uzht-1)
(1)
rt=σ(Wrxt+Urht-1
(2)
(3)
(4)
式中:zt被稱為更新門;σ代表sigmoid函數(shù);rt被稱為重置門;Wz,Uz均為z的參數(shù)矩陣;Wr,Ur均為r的參數(shù)矩陣;ht為時間節(jié)點t的狀態(tài);xt代表的是時間節(jié)點t的輸入;W和U為各個門神經(jīng)元的參數(shù)。門控機制可以用來控制記憶單元中的信息有多少需要保留,有多少需要丟棄,保留的信息又有多少可以傳遞到下一級的記憶單元。通過這種門控機制,模型不用記憶過去所有的信息,只用記住它認為有用的信息,這一點與人類的學習特征是一致的。同時由于門控機制的存在,有用的信息可以直接傳遞到后續(xù)記憶單元,這緩解了模型訓練過程中的梯度消失與梯度爆炸問題[10]。
(2) 線性單元由自回歸模型AR構成,之所以沒有選擇經(jīng)典的ARIMA模型作為線性單元是因為模型的主體仍然是RNN,AR僅僅用來修正預測結果。循環(huán)神經(jīng)單元的引入使得模型內部含有大量的非線性層,因此模型對水文序列的局部線性特征沒有那么敏感。而通過引入自回歸模型AR就可以很好地捕捉到序列的局部線性特征,增強模型對于序列線性特征的敏感度,進而提高模型在水位峰值處的預測精度[11]。
(5)
模型包含線性單元及非線性單元兩個部分,輸入分別對應于線性單元的輸入及非線性單元的輸入,輸出則來自于二者輸出的疊加。
線性單元的輸入即AR單元的輸入,其作用是修正模型在水位峰值處的預測值,因此輸入就只包含水位信息。AR單元的窗口大小為5,因此線性單元的輸入即為過去5 d的水位,輸出為當前時間點的水位預測值。
非線性單元的輸入即循環(huán)神經(jīng)單元的輸入,循環(huán)神經(jīng)單元接受的是多變量的輸入,同時輸出單變量的預測結果??紤]到本文所研究的實際流域,多變量的輸入分別對應于水位、流量及降雨量,單變量的輸出則為水位的預測值。同時輸入還應該考慮到循環(huán)神經(jīng)單元的步長w及預測間隔Δ[13]。本文數(shù)據(jù)使用清溪河流域的日水位、日流量及日降雨數(shù)據(jù),因此在AR-RNN模型中的大小為10,Δ的大小為1,即用過去10 d的水位、流量和降雨量來預測接下來1 d的水位值。在確定了w和Δ后,非線性單元的輸入輸出如表1所示。
表1 非線性單元數(shù)據(jù)輸入輸出格式Tab.1 Non-linear element data input and output format
AR-RNN模型最終的輸出來自線性單元和非線性單元的輸出和:
(6)
確定了模型的輸入輸出后就可以進行模型的訓練。AR-RNN模型為一個復合模型,可采用PyTorch作為模型框架進行搭建。PyTorch為Facebook人工智能團隊研發(fā)的一款深度學習框架,使用PyTorch可以方便地定義網(wǎng)絡結構,如模型的層、激活函數(shù)及損失函數(shù)等,而作為使用者無需自己設計模型的反向傳播算法,框架可以幫助完成。
模型最終的預測效果是否準確,超參數(shù)的設置占了很大因素。模型的非線性單元為一個單層GRU網(wǎng)絡,隱藏層神經(jīng)元個數(shù)為12,最終通過一個全連接層將各個GRU細胞的輸出合并成一個單獨的輸出。非線性單元的輸出最終與線性單元的輸出相疊加作為最終的輸出結果。模型的優(yōu)化函數(shù)選擇的是tanh,同時為了防止模型過擬合設置dropout率為0.2。為了提高模型的收斂速度,設置了batch size為50,epoch為1 000。每一輪迭代后RNN單元和AR單元的參數(shù)同時完成更新,所有輪迭代完成后所得參數(shù)即為最優(yōu)參數(shù)。
本文所使用的水文資料來自于清溪河流域,清溪河系山溪性河流,發(fā)源于四川省宣漢縣白馬鄉(xiāng)境內。自東北向西南流經(jīng)觀山、清溪鎮(zhèn),在清溪口注入后河,河道長46 km,流域面積297 km2(見圖2)。
圖2 清溪河流域水系Fig.2 Qingxihe Basin
流域設有一個基本水文站,4個有歷史系列資料的雨量站,包括老君站、峰城站、南坪站以及清溪站。水文站位于清溪站點,站內資料包括清溪站點的歷史流量及水位。水文站及雨量站的資料在采樣時間和采樣間隔上都有很大差異,需要篩選出具有相同采樣時間及采樣間隔的數(shù)據(jù)并將其作為模型的輸入,這樣模型才能學習到相應的水文特征。在對水文站及雨量站的資料進行篩選后,選擇時間跨度為2003年1月1日至2005年9月26日的數(shù)據(jù)。其中水位、流量及降雨量的采樣時間均為每日零點零分,采樣間隔均為1 d,共計1 000條數(shù)據(jù)。原始數(shù)據(jù)形式如表2所列。
表2 2003年1月1~4日水文站原始數(shù)據(jù)Tab.1 Hydrological station raw data from January 1 to 4,2003
由于傳感器故障等原因,原始數(shù)據(jù)中有部分數(shù)據(jù)出現(xiàn)了缺失值及異常值,如果將原始數(shù)據(jù)直接輸入到模型中將會影響模型的預測精度??紤]到部分數(shù)據(jù)對整體數(shù)據(jù)影響不大,對這些缺失值及異常值進行了零填充。
填充后的數(shù)據(jù)由于各個變量的單位不同(水位的單位為m,降雨量的單位為mm,流量的單位為m3/s),數(shù)據(jù)的范圍也不同,因此需要將各個變量進行歸一化處理[14]。歸一化后各個變量處于同一個范圍內,這樣有利于模型發(fā)掘各個變量之間的關系,加快模型的收斂速度,縮短模型的訓練周期。數(shù)據(jù)歸一化的公式為
(7)
式中:max為樣本數(shù)據(jù)的最大值;min為樣本數(shù)據(jù)的最小值。歸一化后各個變量的范圍在0~1之間,各個變量的曲線如圖3所示。
圖3 歸一化后各站點水位、流量和降雨曲線Fig.3 Normalized water level ,flow and rainfall curves
可以發(fā)現(xiàn)水位與其他變量的趨勢基本保持一致,呈現(xiàn)出較強的相關性。這也進一步印證了采用多變量來進行水位預測的可行性。
AR-RNN模型的輸入為流域內各站點的降雨量以及水位、流量的歷史信息,模型的輸出為未來的水位預測值,即多變量作為輸入,單變量作為輸出。選用均方根誤差RMSE和絕對平均誤差MAE作為評價指標來評價預測結果[15]。
(8)
(9)
評價一個模型的表現(xiàn),需考慮擬合能力和泛化能力。將清溪河的原始數(shù)據(jù)劃分為訓練集及測試集,分別占全部數(shù)據(jù)集的80%及20%。將AR-RNN模型與單變量模型BP神經(jīng)網(wǎng)絡、SVR模型與ARIMA模型進行對比,各個模型在測試集的表現(xiàn)如表3所示。
表3 AR-RNN模型與其他模型在測試集上的表現(xiàn)Tab.3 Performance of AR-RNN model and other models on the test set %
由表3中各個模型的表現(xiàn)可以得出:AR-RNN模型相對于ARIMA模型、SVR模型和BP神經(jīng)網(wǎng)絡,在測試集上MAE分別提升了36%,61%和59%,RMSE分別提升了43%,65%和54%。各個模型在測試集上的擬合情況如圖4~7所示。
圖4 AR-RNN模型在測試集上的擬合情況Fig.4 Fitting of AR-RNN model on test set
為了進一步說明引入的AR單元對模型預測結果的影響,在RNN網(wǎng)絡結構不變的情況下,去掉AR單元,其在測試集上的表現(xiàn)如圖8所示。
圖8 單獨的RNN模型在測試集上的擬合情況Fig.8 Fitting of individual RNN models on the test set
通過對比可以發(fā)現(xiàn)在序列的整體預測趨勢上二者的表現(xiàn)大致相同,但是AR-RNN模型在水位峰值處的預測要優(yōu)于單獨的RNN模型?;诖?,引入了最大誤差ME(Maximum error)和最大相對誤差MRE(Maximum relative error)作為評價指標[16]:
(10)
(11)
圖5 SVR模型在測試集上的擬合情況Fig.5 Fitting of SVR model on test set
圖6 BP網(wǎng)絡模型在測試集上的擬合情況Fig.6 Fitting of BP network model on test set
圖7 ARIMA模型在測試集上的擬合情況Fig.7 Fitting of ARIMA model on test set
AR-RNN模型和RNN模型在測試集上的表現(xiàn)如表4所示。其中AR-RNN模型相對于單獨的RNN模型,在測試集上MAE提升了10%,RMSE提升了5%,最大誤差及最大相對誤差提升了15%。
表4 AR-RNN模型和單獨的RNN模型在測試集上表現(xiàn)Tab.4 Performance of AR-RNN model and individual RNN model on the test set
本文在傳統(tǒng)的單變量水位預測模型的基礎上,提出了一種基于AR-RNN的多變量水位預測模型。將其應用在清溪河流域的水位預測中,通過對比不同模型的水位預測結果,驗證了AR-RNN模型具有更高的預測精度。
(1) 傳統(tǒng)的單變量預測模型,如BP神經(jīng)網(wǎng)絡、SVR模型與ARIMA模型僅僅考慮了水位的因素,它們只能預測出水位序列的大體趨勢。AR-RNN模型則充分考慮了影響水位的因素,如歷史的水位、流量及降雨量,其在細節(jié)處的預測要優(yōu)于上述的單變量模型,且模型的魯棒性更高。
(2) 相對于單獨的RNN模型,AR-RNN模型對序列的線性特征更加敏感,由于自回歸單元的引入,使得模型在水位峰值處的預測精度要高于單獨的RNN模型。