段生月,王長坤,張柳艷
(南昌航空大學(xué) 信息工程學(xué)院,南昌 330063)
我國是世界上洪水災(zāi)害頻繁且嚴(yán)重的國家之一,洪水災(zāi)害不僅范圍大、發(fā)生頻繁、突發(fā)性強(qiáng),而且損失大.特別是近年來,受全球氣候變化和人類活動(dòng)影響,極端天氣事件和人為突發(fā)水事件明顯增加.為了防治洪澇災(zāi)害,我國投入了大量的人力、財(cái)力與物力,建設(shè)了一批又批防洪工程,大大加強(qiáng)了我國抗災(zāi)御洪的能力.與此同時(shí),我國還加強(qiáng)了非工程防洪措施.其中,洪水預(yù)報(bào)就是預(yù)防洪水災(zāi)害的重要非工程措施之一,也一直是專家學(xué)者關(guān)心的課題.因此提高洪水預(yù)測的準(zhǔn)確性,減輕洪水帶來的一系列災(zāi)害,對整個(gè)流域的防洪安全有著非常重要的意義.一般來說洪水預(yù)測有3 種不同的方法,經(jīng)驗(yàn)法、統(tǒng)計(jì)法以及模型方法,但水文系統(tǒng)中多變量之間的非線性關(guān)系[1]遠(yuǎn)非傳統(tǒng)方法能解決.隨著科學(xué)技術(shù)的快速發(fā)展,如何把最新的科學(xué)技術(shù)引入到水文預(yù)報(bào)中,提高水文預(yù)報(bào)精度,成為大家的關(guān)注點(diǎn).隨著人工神經(jīng)網(wǎng)絡(luò)[2]等非線性科學(xué)技術(shù)在各個(gè)行業(yè)的廣泛應(yīng)用,為解決上述問題提供了機(jī)遇.
目前國內(nèi)已有很多學(xué)者嘗試將人工神經(jīng)網(wǎng)絡(luò)引入到洪水預(yù)測中.蘭州理工大學(xué)的李曉麗等[3]提出了不確定,確定支持向量機(jī)在洪水預(yù)測模型中的應(yīng)用,該算法利用數(shù)據(jù)間的關(guān)系去掉冗余的信息,簡化算法運(yùn)算,從而提高了洪水預(yù)測的精度;晉中市水文水資源勘測局的梁存峰等[4]提出了基于混沌自適應(yīng)模型在洪水預(yù)測中的研究,該模型亦可在數(shù)據(jù)較少的情況下,取得精度較好的預(yù)測結(jié)果;福建省南平市水利局的金保明[5]在閩江十里庵流量預(yù)測中應(yīng)用BP神經(jīng)網(wǎng)絡(luò),將反向傳播BP神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于洪水預(yù)測,并且預(yù)測精度符合要求;何勇、李妍琰[6]提出改進(jìn)粒子優(yōu)化 BP神經(jīng)網(wǎng)絡(luò)的洪水智能預(yù)測模型研究,以BP神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),提取水位站往年平均徑流量作為洪水屬性,采用POS 算法對BP神經(jīng)網(wǎng)絡(luò)的各個(gè)參數(shù)進(jìn)行優(yōu)化,得出最優(yōu)的BP神經(jīng)網(wǎng)絡(luò)預(yù)測適應(yīng)度值,提高了預(yù)測的效率.以上算法都是比較傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)算法,雖然在一定程度上提高了洪水預(yù)測精確度,但是精度依舊不是特別理想.
本文提出一種基于正則化GRU神經(jīng)網(wǎng)絡(luò)的洪水預(yù)測模型來提高洪水預(yù)報(bào)精度,選用relu 函數(shù)作為整個(gè)神經(jīng)網(wǎng)絡(luò)的輸出層激活函數(shù)[7-9],將彈性網(wǎng)正則化引入到GRU模型中,對網(wǎng)絡(luò)中輸入權(quán)重w實(shí)施正則化處理,以提升GRU模型的泛化性能.并將該模型應(yīng)用于外洲水文站每月平均水位的擬合及預(yù)測,實(shí)驗(yàn)對比表明,彈性網(wǎng)正則化改進(jìn)后模型的擬合效果和預(yù)測效果明顯提高,該方法計(jì)算出的均方根誤差較小,預(yù)測擬合程度較高.
傳統(tǒng)的人工神經(jīng)網(wǎng)絡(luò)又被稱為前饋神經(jīng)網(wǎng)絡(luò)FNN,是一種最簡單的神經(jīng)網(wǎng)絡(luò),包含輸入層、隱藏層這種模型在處理序列數(shù)據(jù)時(shí)只能利用當(dāng)前時(shí)刻的信息,無法利用歷史信息.Elman 在1990年提出了循環(huán)神經(jīng)網(wǎng)(Recurrent Neural Network,RNN),其隱藏層之間的節(jié)點(diǎn)也是有連接的,因此隱藏層的輸入不僅包括當(dāng)前時(shí)刻輸入層的輸入還包括上一時(shí)刻隱藏層的輸出.理論上,RNN 能夠?qū)θ魏伍L度的序列數(shù)據(jù)進(jìn)行處理,但是在實(shí)踐中,當(dāng)相關(guān)信息和當(dāng)前預(yù)測位置之間的間隔不斷增大時(shí),RNN 就會(huì)喪失學(xué)習(xí)遠(yuǎn)距離信息的能力.這是因?yàn)镽NN 通常使用的是BPTT 反向傳播算法對網(wǎng)絡(luò)進(jìn)行優(yōu)化,但是BPTT 無法解決長時(shí)依賴問題,因此該算法會(huì)帶來神經(jīng)網(wǎng)絡(luò)梯度消失問題和梯度爆炸問題.
為了解決RNN網(wǎng)絡(luò)的梯度消失和梯度爆炸問題,研究人員在優(yōu)化學(xué)習(xí)算法和配置網(wǎng)絡(luò)的技巧方面提出了較多的改進(jìn)方法.文獻(xiàn)[10,11]中介紹 Schimidhuber H 于1997年提出了長短期記憶單元(Long Short-Term Memory,LSTM),用于改進(jìn)傳統(tǒng)的RNN模型.LSTM神經(jīng)單元是由一個(gè)或多個(gè)存儲(chǔ)器外加三個(gè)自適應(yīng)乘法門組成.它通過輸入門、輸出門和遺忘門來控制信息的流動(dòng)和傳遞,通過對輸入的信息進(jìn)行剔除或增強(qiáng)到神經(jīng)細(xì)胞單元中實(shí)現(xiàn)對細(xì)胞狀態(tài)的控制,使得LSTM 可以記憶、更新長距離的信息,從而實(shí)現(xiàn)對長距離信息的處理.受LSTM模型門機(jī)制啟發(fā),Stanford在2014年提出了GRU模型,GRU網(wǎng)絡(luò)將LSTM 結(jié)構(gòu)中的輸入門和遺忘門結(jié)合成一個(gè)單獨(dú)的更新門,合并了記憶細(xì)胞和隱含狀態(tài),同時(shí)也做了一些調(diào)整.已有研究結(jié)果表明,GRU模型的性能與LSTM 相當(dāng),但計(jì)算效率更高,參數(shù)更少.整體的GRU神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示.
圖1 GRU神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖[5]
GRU中各個(gè)門的表達(dá)式如下:
GRU 更新門表達(dá)式:
GRU 重置門表達(dá)式:
GRU 輸出部分表達(dá)式:
式(1)中zt表示更新門,Wz是更新門的權(quán)重矩陣,ht-1表示上一個(gè)神經(jīng)元的輸出,xt表示本次神經(jīng)元的輸入,s是sigmoid 函數(shù)用來激活控制門.更新門的作用是幫助模型決定要將多少過去的信息傳送到未來,或者前一時(shí)間步和當(dāng)前時(shí)間步的信息有多少是需要繼續(xù)傳遞的,模型通過復(fù)制過去信息以減少梯度消失的風(fēng)險(xiǎn).式(2)中rt表示重置門,Wr表示重置門的權(quán)重矩陣,從本質(zhì)上說,重置門主要決定有多少過去的信息需要被遺忘.
在深度神經(jīng)網(wǎng)絡(luò)中,隨著層數(shù)以及各層神經(jīng)元個(gè)數(shù)的增加,模型中參數(shù)的個(gè)數(shù)會(huì)以極快的速度增長.當(dāng)網(wǎng)絡(luò)參數(shù)個(gè)數(shù)過多或訓(xùn)練數(shù)據(jù)集很小時(shí),神經(jīng)網(wǎng)絡(luò)模型往往會(huì)出現(xiàn)過擬合問題.所謂過擬合,就是模型在訓(xùn)練數(shù)據(jù)上擬合效果好,但是它在驗(yàn)證集上效果很差,即模型泛化能力差.目前,防止過擬合的一般方法是增大訓(xùn)練數(shù)據(jù)集,但當(dāng)數(shù)據(jù)集有限時(shí),防止過擬合的方法則是在訓(xùn)練數(shù)據(jù)集中加入正則化技術(shù).現(xiàn)在我們主要討論一些旨在改善過擬合的正則化方法.
正則化的方法就是在模型cost函數(shù)中加入某種正則項(xiàng)或幾種正則項(xiàng)的組合,表達(dá)式如下:
式中,l(·,·)為模型中損失函數(shù),用來評價(jià)模型的泛化性能;λρ(w)為正則項(xiàng),λ為正則化可調(diào)參數(shù),用來控制正則項(xiàng)與損失函數(shù)之間的平衡關(guān)系,w為模型中待估參數(shù).在正則項(xiàng)中,ρ(w)具有多種不同的表達(dá)形式,常用的是L1范數(shù)和L2范數(shù).當(dāng)選取不同的范數(shù)罰正則項(xiàng),整個(gè)模型會(huì)有不同的泛化方向.L2正則化會(huì)對待估參數(shù)w進(jìn)行一定程度壓縮使之正態(tài)分布,但并不能將其壓縮為零,因此不能產(chǎn)生稀疏解.而L1正則化將待估參數(shù)w的先驗(yàn)分布約束為拉普拉斯分布,從而使模型具有稀疏性[12],進(jìn)而控制模型的過擬合問題,但是由于參數(shù)值大小和模型復(fù)雜度成正比;若L1范數(shù)較大,最終可能影響模型的預(yù)測性能.為了克服不同范數(shù)正則項(xiàng)的缺點(diǎn),這里引入彈性網(wǎng)正則化,也就是將L1范數(shù)和L2范數(shù)線性組合作為一個(gè)正則項(xiàng).
本文將彈性網(wǎng)引入到GRU模型中,對網(wǎng)絡(luò)中輸入權(quán)重w實(shí)施正則化處理,以提升GRU模型的泛化性能,模型如下:
其中,λ為正則化可調(diào)參數(shù)用于平衡原有損失函數(shù)與正則項(xiàng)之間的關(guān)系.通過式(7)可知,修改正則可調(diào)參數(shù)λ1和λ2可得到不同組合的正則項(xiàng),當(dāng)λ1=0和λ2=0時(shí),為普通的GRU模型;當(dāng)λ1≠0和λ2=0時(shí),為L1正則化網(wǎng)絡(luò);當(dāng)λ1=0和λ2≠0時(shí),為L2正則化網(wǎng)絡(luò);當(dāng)λ1≠0和λ2≠0時(shí),為彈性網(wǎng)正則化網(wǎng)絡(luò).
由于GRU 在訓(xùn)練過程中,容易出現(xiàn)過擬合現(xiàn)象,而正則化方法通過限制網(wǎng)絡(luò)中權(quán)重的大小,可以對一些因子施加懲罰,以夠彌補(bǔ)網(wǎng)絡(luò)本身的不足.所以這里利用正則化方法來優(yōu)化GRU模型,從而實(shí)現(xiàn)對外洲站水位的預(yù)測.GRU 改進(jìn)模型構(gòu)建步驟如下:
步驟1:將時(shí)間序列的水文數(shù)據(jù)進(jìn)行預(yù)處理,采用極差法使數(shù)據(jù)標(biāo)準(zhǔn)化,首先計(jì)算指標(biāo)值的最小值和最大值,然后計(jì)算極差,通過極差法將指標(biāo)值映射到[0-1]之間,公式為:
步驟2:將時(shí)間序列水文數(shù)據(jù)集F0={f1,f2,f2,f3,···,fn},劃分為訓(xùn)練集和測試集,分別表示為Ftr={f1,f2,···,fm}和Fte={fm+1,fm+2,···,fn},滿足約束條件m<n和m,n∈N.設(shè)置分割窗口長度(batch-size)取值為L,分割后的模型輸入為:
其中,1 ≤p≤L;p,L∈N.
隱藏神經(jīng)元的輸出值定義公式為:
X 經(jīng)過隱藏層后的輸出可表示為:
其中,1 ≤p≤L;p,L∈N.
選用均方誤差作為誤差計(jì)算公式,訓(xùn)練中的損失函數(shù)定義公式為:
損失函數(shù)是用來評估神經(jīng)網(wǎng)絡(luò)目標(biāo)輸出和實(shí)際輸出差距的函數(shù),函數(shù)值越小說明實(shí)際輸出與目標(biāo)輸出的差值越小,也就說明權(quán)值越合適.將損失函數(shù)與正則項(xiàng)之和設(shè)置為目標(biāo)函數(shù),給定網(wǎng)絡(luò)初始化的學(xué)習(xí)率以及訓(xùn)練步數(shù),如式(7)再應(yīng)用Adam 優(yōu)化算法實(shí)現(xiàn)目標(biāo)函數(shù)的最小化并不斷更新網(wǎng)絡(luò)權(quán)重,從而得到最終的隱藏層網(wǎng)絡(luò).
步驟3:預(yù)測過程采用迭代的方法.理論輸出P的最后一行數(shù)據(jù):
將Pf輸入隱藏層后,輸出結(jié)果表示為:
則m+1時(shí)刻的預(yù)測值為ym+1,然后將Pf后的數(shù)據(jù)與ym+1合并成新的一行數(shù)據(jù):
將Pf+1輸入隱藏層,則m+2時(shí)刻的預(yù)測值為ym+2,以此類推,得到的預(yù)測序列為:
步驟4:對Y0作z-score反標(biāo)準(zhǔn)化,得到最終的與測試集Fte對應(yīng)的預(yù)測序列為Yte,通過計(jì)算Yte和Fte的偏差定量的給出模型的擬合與預(yù)測精度.
本實(shí)驗(yàn)環(huán)境為:硬件配置CPU i7-7700K,GPU Gtx1060,運(yùn)行內(nèi)16 GB;軟件配置CUDA9.0、cudnn7.1;操作系統(tǒng)Ubuntu16.04;語言python3.6;框架tensorflow.
本實(shí)驗(yàn)的代碼參數(shù)設(shè)置如下:輸入層神經(jīng)元個(gè)數(shù)設(shè)為數(shù)設(shè)為3,輸出層神經(jīng)元個(gè)數(shù)設(shè)為1,其中的隱藏單元的數(shù)量選取為10,每批數(shù)據(jù)量的大小batch_size設(shè)為10,通過調(diào)節(jié)λ值得到三種正則化網(wǎng)絡(luò)模型:L1正則化網(wǎng)絡(luò)、L2正則化網(wǎng)絡(luò)和彈性網(wǎng)正則化網(wǎng)絡(luò).對比每組的RMSE 來確定最佳參數(shù)配置,最終確定三種模型中正則化可調(diào)參數(shù) λ分別為λ1=0.02、λ2=0.004 和λ1=0.0043、λ2=0.38.本文針對江西省贛江外洲水文站1954年到2002年每月平均流量、平均水位、月份數(shù)據(jù)進(jìn)行分析,將次月平均水位作為輸出變量,其他3個(gè)指標(biāo)作為模型的輸入變量[13-16].以1954年到1997年各月平均水位作為訓(xùn)練數(shù)據(jù),對1998年到2002年共60個(gè)月的平均水位數(shù)據(jù)進(jìn)行預(yù)測.
為了驗(yàn)證本文所驗(yàn)證的預(yù)測模型的可行性以及有效性,本文所采用的精度評定標(biāo)準(zhǔn)來自于中華人民共和國水利部《水文情報(bào)預(yù)報(bào)規(guī)范》(SL250-2000)[17],一次預(yù)報(bào)的誤差小于許可誤差時(shí),為合格預(yù)報(bào).合格預(yù)報(bào)次數(shù)與預(yù)報(bào)總次數(shù)的百分比為合格率.本文結(jié)合《水文情報(bào)預(yù)報(bào)規(guī)范》的有關(guān)規(guī)定設(shè)置水位許可誤差為0.2 m.合格率QR的表達(dá)公式如下:
其中,m是預(yù)報(bào)的總次數(shù)、n是合格預(yù)報(bào)(預(yù)報(bào)誤差小于許可誤差)的次數(shù);當(dāng)QR ≥85.0%時(shí),為甲級精度;7 0.0% ≤Q R ≤8 5.0%時(shí),為乙級精度;6 0% ≤Q R≤70.0%時(shí),為丙級精度.
采用均方根誤差RMSE(Root Mean Square Error)來定量的評價(jià)模型的預(yù)測性能,RMSE通過計(jì)算預(yù)測值對觀察值的平均偏差程度來反映模型的預(yù)測性能,值越小預(yù)測效果越好.公式定義如下:
通過對上文中每種模型結(jié)構(gòu)及參數(shù)的確定,共得到四種不同的GRU模型.為了比較這四種網(wǎng)絡(luò)模型預(yù)測性能,將四種模型分別對外洲站水文數(shù)據(jù)做訓(xùn)練及預(yù)測,每組的誤差統(tǒng)計(jì)見表1.
表1 幾種預(yù)測模型RMSE 值和合格率(QR)統(tǒng)計(jì)表
由表1 可以看出3 種正則化GRU模型的RMSE的值均比普通GRU模型的RMSE值小,L2正則化網(wǎng)絡(luò)的RMSE 比L1正則化網(wǎng)絡(luò)稍小一些,彈性網(wǎng)正則化GRU模型的RMSE是實(shí)驗(yàn)中最低的,僅為0.631.三種正則化GRU模型的合格率均比普通GRU模型大,L2正則化網(wǎng)絡(luò)的合格率比L1正則化網(wǎng)絡(luò)的合格率大一些,實(shí)驗(yàn)中彈性網(wǎng)正則化GRU模型的合格率QR 最高為91.644%,相比普通的GRU模型合格率提高了9.3%.以上的驗(yàn)證表明改進(jìn)的GRU神經(jīng)網(wǎng)絡(luò)對水文時(shí)間序列的驗(yàn)證是有效的,彈性網(wǎng)正則化GRU模型預(yù)測結(jié)果更加準(zhǔn)確,誤差更小,所以在洪水預(yù)測預(yù)測方面,彈性網(wǎng)正則化GRU模型預(yù)測值更接近洪水實(shí)測值,是一種有效可靠的預(yù)測方法.
這里選取各自最小RMSE的實(shí)驗(yàn)預(yù)測結(jié)果圖,如圖2-圖5所示.
圖2 GRU模型預(yù)測結(jié)果圖(λ1=0,λ2=0)
圖3 L1正則化網(wǎng)絡(luò)預(yù)測結(jié)果圖(λ1=0.02,λ2=0)
圖4 L2正則化網(wǎng)絡(luò)預(yù)測結(jié)果圖(λ1=0,λ2=0.004)
圖5 彈性網(wǎng)正則化網(wǎng)絡(luò)預(yù)測結(jié)果圖(λ1=0.0043,λ2=0.38)
本文使用正則化GRU模型對水文站往年每月平均水位進(jìn)行預(yù)測,通過比較三種正則化方法對GRU模型的改進(jìn),發(fā)現(xiàn)用彈性網(wǎng)正則方法優(yōu)化GRU模型后合格率提高了9.3%,預(yù)測精度從乙等升到了甲等.由于洪水預(yù)測受到多方因素以及突發(fā)因素的影響,本文所使用的神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)資料有限導(dǎo)致模型預(yù)測精度不是非常高,有待結(jié)合更多相關(guān)影響因子來進(jìn)行研究處理.