秦 鵬,陳 雨,盧文龍
(1.四川大學 電子信息學院,四川 成都610065;2.成都萬江港利科技股份有限公司,四川 成都610041)
水文預報[1]旨在根據某一區域或某一水文站的歷史水文氣象數據對河流水文情勢進行定性或定量預測,是防洪調度決策、生態環境保護、水資源綜合開發利用等的重要依據。水文預報方法可分為傳統方法和新方法兩大類。傳統的中長期預報方法主要是根據河川徑流的變化具有連續性、周期性、地區性和隨機性等特點來開展研究,主要有成因分析和水文統計方法[2]。ARIMA模型[3]的基本思想是通過差分消除序列中的趨勢項,將非平穩序列轉化為平穩序列,逐漸應用于水文預報[4-5];李亞偉等[6]提出的SVR模型建立在VC維概念和結構風險最小化原理基礎上,根據有限的樣本信息在模型的學習精度和學習能力之間尋求最佳組合,也成功應用于水文預報。近年來,隨著計算機技術的發展和新的數學方法的不斷涌現,針對復雜的水文水資源時間序列問題,具有極強的自適應學習能力和非線性映射能力的深度神經網絡方法應運而生,如人工神經網絡(ANN)、遞歸神經網絡(RNN)、卷積神經網絡(CNN)以及長短時記憶網絡(LSTM)。
水文數據是對大自然發生的水文情況實時、連續、長期觀察記錄的結果,具有序列性、實時性、海量性等特點。數據缺失在水文學研究中是一個常見的問題,其產生的原因多種多樣,包括測量儀器的損壞、環境的干擾以及人工記錄中的誤差等[7]。數據缺失通常會降低水文模型統計分析的準確性[8],甚至會造成對兩個或多個變量之間的時序關系進行有偏的估計[9]。這兩種問題(準確性驟降和估計偏差)都可能導致在分析存在數據缺失的數據集時受到極大的干擾,從而得出不正確的結論[10]。因此,水文數據的質量和完整性對于水文預報模型至關重要。
水文數據是典型的時間序列數據,為了解決時間序列預測模型因數據缺失而導致的精度、性能等問題,有關學者已經提出了多種方法。最早的解決方案是直接省略缺失數據,僅采用觀測到的數據。但是當數據缺失較嚴重時,模型的性能將非常差。張升堂等[11]提出一種線性插值模型,該模型采用缺失數據站點鄰近的3個位置生成一個時空插值平面進行線性插值。謝景新[12]提出由一系列已知觀測點形成一條光滑曲線,通過求解三彎矩陣方程得出曲線函數組繼而對缺失站點進行插值的三次樣條插值法,但是無論是線性插值還是樣條插值都僅僅是對缺失數據的一次平滑和近似擬合,無法挖掘到缺失數據的隱藏信息。王方超等[13]提出了一種調整最大似然法,不引入外部信息,根據數據自身的特性進行插值,是一種數據驅動估算法。此外還有基于回歸的估算、基于主成分分析的數據估算等方法作為改進的插補方法被提出來,這些方法雖然改善了插值精度,提高了統計分析的準確性,但是仍然無法解決估計偏差的問題。水文數據是時間序列數據,其各個特征在時間序列上呈高度相關性,缺失值的估算應考慮水文數據的時間序列性質。
近年來,循環神經網絡(RNN)中的長短時記憶網絡(LSTM)和門控循環單元網絡(GRU)在關于時間序列數據的應用上具有優秀的表現,例如機器翻譯和文本識別。RNN可以通過反饋連接的時間延遲單元捕獲輸入序列的動態時間關系,學習水文系統的順序或時變模式,展示了強大的預測性能。生成對抗網絡(GAN)模型具有學習原始數據分布生成數據的特點,Goodfellow等[14]、王萬良等[15]從理論上證明了當GAN模型達到收斂狀態時,生成數據具有和真實數據相同的分布。筆者在存在缺失的水文數據集中引入GAN模型,把GRU作為生成器,把CNN作為判別器,通過對抗學習,為數據集中的缺失部分填充與真實數據分布一致的生成數據。該生成數據與真實數據分布趨于一致,而且可以表征缺失數據的時序特性,是高質量的填充數據。因此,GAN模型為上述問題提供了更好的解決方案。與此同時,將GAN模型與長短時記憶網絡(LSTM)結合,提出了一種新的耦合模型GAN-LSTM(簡稱為GANL)。該模型由GAN和LSTM兩個子模型耦合組成,首先通過GAN模型對數據缺失部分進行填充,整合出高質量的數據,解決目前水文預報中常見的數據缺失問題;然后通過GAN模型整合出的數據來訓練LSTM模型,進行預測處理。該模型不僅有效改善了缺失數據的問題,而且可以捕獲水文時間序列觀測值的長期相關性,利用缺失信息來改善預測性能,從而有效地實現數據缺失條件下的水文預報。
受博弈論中的二人零和博弈(two-player game)啟發,Goodfellow開創性地提出了GAN模型。在二人零和博弈中,博弈雙方的利益之和為零或一個常數,即一方有所得,另一方必有所失。GAN模型中的博弈雙方分別由生成模型G(generative model)和判別模型D(discriminative model)組成,將隨機變量作為生成模型的輸入,經過其非線性映射,輸出對應的信號作為判別模型的輸入,由判別模型來判斷該信號來自于真實數據的概率。在訓練過程中,生成器努力地欺騙判別器,而判別器努力地學習如何正確區分真假樣本,這樣,兩者就形成了對抗的關系,最終目標就是讓生成器生成足以以假亂真的偽樣本。GAN模型在計算機視覺領域已得到成功運用,如圖像修復、語義分割和視頻預測[16-18]。
GANL模型(如圖1所示)主要完成兩方面的任務:一是學習數據分布、捕獲缺失信息,生成缺失數據以整合出高質量的數據;二是將整合出的數據作為訓練數據,訓練預測模型、進行有效的水文預報。圖1左半部分描述的是GAN模型,由生成器GRU和判別器CNN組成。將觀測數據、缺失標志組成的聯合向量作為生成器的輸入,在經過GRU訓練后形成一種新的特征表示,然后將新特征傳入判別器CNN中,由判別器CNN來鑒別傳過來的新特征分布是否與真實歷史數據的分布趨于一致,如果一致則可以作為最終生成數據對缺失數據進行填充,繼而作為圖1右側預測模型的訓練數據,如果不一致則重新傳回GRU層進行重復對抗訓練。圖1右側描述的是LSTM模型,此部分模型輸入的是由GAN模型傳來的整合填充過的多變量時序數據(流量、降雨量、蒸發量等),輸出是預測值(水位等)。

圖1 GANL模型
GAN模型包含生成模型和判別模型兩個模塊。生成模型接收隨機信號作為輸入,經過某種映射后又將輸出信號作為判別模型的輸入,由判別模型來判斷該信號來自真實數據的概率。因此,兩個模塊的目標是完全相反的,生成模型的目標是最小化對數似然函數,使得輸出信號與真實數據的分布趨于一致,而判別模型的目標則是用最大化對數似然函數判斷輸入信號是否來源于真實數據。利用GAN模型可以學習數據分布生成數據的特點,將觀測數據和缺失標志組成的聯合數據作為生成模型的輸入,經過非線性映射將聯合數據的特征分布傳遞給判別模型,然后由判別模型來判斷生成的特征分布和真實數據的特征分布的異同,反復對抗訓練直到判別器無法判斷兩者的區別,此時判別模型的輸出結果就是要填充的缺失數據。CNN上面的max_pooling層對CNN的輸出特征進行降采樣池化操作,softmax層判斷新特征分布是否與原數據分布一致,fully_connected層對特征空間維度進行轉換以方便后續的預測。
2.1.1 GRU生成模型
用長度為T的D維向量表示一個多元時間序列水文數據,記為X=(x1,x2,…,x T),其中每一個時刻的x都有D個變量表示t時刻變量d的觀測值。引入一個D維的缺失標志向量m t∈{0,1}D來表示t時刻的觀測變量是否缺失。

GRU結構如圖2所示,對于每個時刻的隱藏單元,GRU都有一個復位門r t和更新門z t來控制隱藏特征h t,更新方式如下:

式中:W z,W r,W,U z,Ur,U和bz,b r,b均為可以學習的參數,表示連接各個門的權重;σ()為Sigmoid函數;?為element-wise乘法(矩陣的對位元素依次相乘)。

圖2 GRU結構
2.1.2 CNN判別模型
將卷積神經網絡CNN作為判別模型,將GRU的輸出結果h t轉化為新的特征表示

式中:h t為GRU提取的特征為判別模型CNN生成的特征;Wc為CNN的模型參數。
接下來采用池化層提取重要特征,然后將提取出的特征輸入到softmax層,根據映射的概率值來判斷是否和原始數據分布一致。如果一致則可以作為整合數據通過全連接層輸入到圖1右邊的預測模型中。
2.1.3 GAN模型目標函數
GAN模型的學習過程是生成模型和判別模型反復對抗訓練的過程,兩個模型的目標截然相反,本質上一個是最小化、另一個是最大化問題,這個最小最大優化目標表示如下:

式中:D表示判別器;G表示生成器;D(x)為判別器的輸出;G(z)為生成器的輸出;Pdata為輸入數據的分布;Pz為生成數據的分布;V為Pdata和Pz兩個分布的jensen-shannon差異。
實際訓練中,GAN模型收斂的過程是非常緩慢的。在GAN模型訓練過程中,默認判別模型的判別能力比生成模型的數據生成能力強,這樣判別模型才能指導生成模型朝好的方向學習,因此通常的做法是先更新判別模型的參數多次,再更新生成模型的參數一次。本文借鑒文獻[19]的做法,分別為判別模型和生成模型設置不同的學習率,以加快判別模型的收斂速度。
水文數據是典型的時間序列數據,數據間有較強的關聯性。LSTM是一種循環神經網絡,通過內部特有的門控狀態來記憶長遠的歷史數據并且捕捉隨時間變化的特征信息,因此選擇LSTM作為預測模型,接收GAN模型整合出的數據進行預測,其計算過程為

式中:h t為隱藏傳遞狀態;z為當前輸入和上一個傳遞狀態h t-1的向量乘積;z f,z i,z o為內部的門控信號;ct為當前時間步的內部細胞狀態;y t為當前時間步的輸出;W為連接各個門的權重。
設計對比試驗,以研究不同模型在數據缺失條件下的預測性能。以清溪水文站的實測水文數據集為例,展示了模型的性能,并與目前幾種經典的水文預報方法進行比較。
采用清溪河清溪水文站從2003年1月1日到2005年9月26日共計1 000 d的觀測數據作為試驗數據。由于設備損毀、人為失誤等因素造成了部分數據缺失,因此1 000 d里實際觀測記錄數據的只有882 d,缺失了118 d的數據。
水文站的監測信息紛繁眾多,包括水位、流量、流速、含沙量、降雨量、蒸發量、流向、水質等。眾多相關性不強的外部特征會影響模型收斂速度,為了解決預測模型收斂速度慢的問題,用極端梯度提升法[20]提取最為重要的3個特征并將其作為輸入指標。也就是說,每一刻的輸入數據由3個變量(流量、降雨量、蒸發量)組成,然后定義水位為預測輸出值。
試驗中的實測數據集缺失部分主要是輸入變量,但難免有輸入數據和輸出數據均缺失的情況發生。本文所提出的模型是一個插補和預測相結合的耦合模型,其中GAN模型屬于插補模型,填充的是輸入數據如降雨量、蒸發量、流量。對于輸入數據和輸出數據同時缺失的情況,仍然利用GAN模型填充輸入數據并在相應的輸出數據處做一個標記位,最后利用K近鄰算法對標記位上的數據進行填充,最大限度地降低這種極端惡劣的數據缺失情況對預測模型的影響。由于本實例應用中數據量相對較少且時間序列預測法適宜于短期預測,因此將對比試驗設置成預見期為3 d的短期水文預報。短期水文預報中水文數據的時序性和完整性非常重要,所以各種情況下的缺失數據都應填充后作為模型的訓練要素輸入模型。
對比試驗中采用K近鄰算法作為填充數據的基準方法,即把缺失數據鄰近點的加權平均值作為估算的填充數據。同時在采用K近鄰算法填充數據后的預測模型中使用水文預報中經典的SVR模型和ARIMA模型的組合模型作為GANL模型的試驗對比模型,試驗環境和參數設置如下。
SVR模型中的內核函數用于更改輸入空間的維數,從而產生更為可靠的回歸,對模型預測性能的改善起著至關重要的作用。核函數有多種,如線性、多項式、徑向基函數、多層感知等,本文選用徑向基核函數RBF。同時選用兩步網格搜索方法對SVR參數進行了優化,與傳統方法(例如反復試驗)相比,可以更有效、更系統地校準參數。本文所采用的SVR模型是利用Chang和Lin開發的LIBSVM工具箱建立的。
為了使ARIMA模型適用于水文時間序列數據并進行有效預測,采用模型識別、參數估計和診斷檢查3個步驟來建立最優模型。在識別階段,將經驗自相關模式與理論模式進行匹配,使用自相關函數(ACF)和部分自相關函數(PACF)來確定最佳擬合模型參數(p,d,q),其中:p表示模型中滯后觀測值的數量,d表示原始觀測值相差的次數,q表示移動平均窗口的大小。通過觀察序列的自相關函數和偏相關函數圖,初步確定模型參數:p=0~5,d=0~2,q=0~2。一旦確定了暫定模型,就可以直接估算模型參數,使誤差最小化。參數估計可以使用非線性優化程序來完成。模型構建的最后一步是對模型進行適當的診斷檢查。如果模型不夠好,則應確定一個新的暫定模型,然后再次進行參數估計和模型驗證。通過多輪對比試驗,本文選擇了參數為(5,1,0)的ARIMA模型。
由于填充數據的質量高低不能直觀展示,因此各模型性能均通過整合后數據的最終預測結果表現來體現。為了從多角度衡量模型的預測效果,本文采用平均絕對誤差(MAE)、平均絕對百分比誤差(MAPE)、均方根誤差(RMSE)作為預測準確性的度量指標,公式如下:

式中:Yi為實測值為預測值。
為了驗證本文所提出的模型在缺失數據條件下的預測性能,分別與采用了K近鄰算法填充數據后的SVR模型和ARIMA模型進行了預見期為3 d的水文預報對比試驗。試驗將填充整合后前800 d數據作為訓練集,后200 d數據作為測試集,結果如圖3所示。

圖3 填充數據后各模型預測結果比較
與此同時,設置完全相同的試驗環境和參數直接對原始實測數據在各模型下進行水文預報對比試驗,結果如圖4所示。

圖4 實測數據下各模型預測結果比較
對比圖3、圖4發現,填充后的數據擬合結果顯著優于有缺失的實測數據擬合結果。
圖3 中各個模型預測值在訓練集和測試集中的平均絕對誤差(MAE)、平均絕對百分比誤差(MAPE)和均方根誤差(RMSE)分別見表1和表2。

表1 訓練集模型性能對比

表2 測試集模型性能對比
從表1、表2可以直觀地看出,本文所提出的模型在缺失數據條件下的預測性能強于另外兩個模型。圖3展示了各個模型的預測結果和實測值的擬合情況,其中SVR模型的預測效果最糟糕,這是因為SVR模型在數據缺失條件下的魯棒性很差,無法挖掘缺失數據的隱藏信息甚至可能在填充數據后引入了缺失值和預測值間本來不存在的關系,導致模型性能急劇下降;ARIMA模型預測擬合結果整體較好,魯棒性強于SVR模型,但是仔細觀察可以發現模型在部分峰值處預測效果較差,這是因為ARIMA模型對缺失數據采用K近鄰算法進行填充,是一種簡單的線性平滑處理,如果碰到本身就是峰值數據且出現缺失這種情況的話,就無法有效利用鄰近數據挖掘缺失信息,存在估計偏差的問題,預測性能就會受到影響;GANL模型的預測結果最好,這是因為它可以在對抗中學習數據分布并生成高質量的填充數據,不再受到數據缺失的限制,最大限度減弱填充數據時多變量間估計偏差的影響。
通過生成對抗網絡在存在缺失的數據集上挖掘數據缺失信息、填充高質量的數據,可以緩解當前水文預報中常見的數據缺失問題。將插補模型GAN和預測模型LSTM進行深度結合,提出的GANL模型,能夠在數據缺失條件下實現可靠有效的預測。以清溪河清溪水文站的實測水文數據為例,對GANL模型進行了試驗評估,結果表明,在數據缺失條件下其性能顯著優于其他模型。