歐陽文宇,葉磊,王夢云,孟子文,張弛
(大連理工大學(xué)水利工程學(xué)院,遼寧 大連 116024)
水文預(yù)報(bào)是水文學(xué)者尋求水文現(xiàn)象時(shí)空變化特征及規(guī)律、揭示水文現(xiàn)象形成機(jī)理的重要手段,也是水旱災(zāi)害防御、水資源綜合利用等經(jīng)濟(jì)社會發(fā)展所必需的重要技術(shù)[1]。自20世紀(jì)中葉以來,隨著電子計(jì)算機(jī)的發(fā)明和快速發(fā)展,通過計(jì)算機(jī)模擬水文現(xiàn)象形成和變化的“仿真范式”成為水文領(lǐng)域常用科學(xué)研究范式,人們在流域以及更大尺度上利用水文模型開展水文預(yù)報(bào)成為可能[2-3]。然而,任何水文模型只是流域水文形成機(jī)理的近似,水文過程受氣象、流域下墊面、人類活動(dòng)等多重因素的綜合作用,是最復(fù)雜的自然現(xiàn)象之一,流域水文模型無法完全反映水文過程形成機(jī)理和變化規(guī)律。因此,完全依賴基于現(xiàn)有物理定律和數(shù)學(xué)方程的水文模型,難以準(zhǔn)確認(rèn)識和預(yù)報(bào)復(fù)雜的水文現(xiàn)象[4]。
近數(shù)十年來,隨著衛(wèi)星、航空遙感、雷達(dá)等觀測手段的不斷進(jìn)步,包括水文在內(nèi)的地球系統(tǒng)科學(xué)領(lǐng)域積累了大量數(shù)據(jù)[5]。這些密集觀測數(shù)據(jù)本質(zhì)上是自然現(xiàn)象形成機(jī)理和時(shí)空變化規(guī)律的微分方程在一定初始條件和邊界條件約束下的解[6],其中必然隱藏著自然現(xiàn)象形成機(jī)理和時(shí)空變化規(guī)律。因此,對于復(fù)雜的水文現(xiàn)象,若從觀測數(shù)據(jù)入手,采用逆向思維方式由果及因地分析水文問題,構(gòu)建基于密集觀測數(shù)據(jù)的“數(shù)據(jù)水文學(xué)”研究范式[2],則可望突破目前流域水文模型僅憑少量觀測數(shù)據(jù)和固有模式進(jìn)行預(yù)報(bào)的制約,從而揭示更全面的水文過程形成機(jī)理和時(shí)空變化規(guī)律,成為推動(dòng)水文學(xué)發(fā)展的重要驅(qū)動(dòng)力。
深度學(xué)習(xí)正是這樣一類研究如何從大量數(shù)據(jù)中發(fā)現(xiàn)規(guī)律、提取知識的領(lǐng)域。深度學(xué)習(xí)核心是讓計(jì)算機(jī)自動(dòng)學(xué)習(xí)各類算法,對大量樣本數(shù)據(jù)進(jìn)行分析并尋求規(guī)律,從而對未知數(shù)據(jù)進(jìn)行預(yù)測。這一過程與水文預(yù)報(bào)通過分析歷史水文數(shù)據(jù)獲取規(guī)律,并在其基礎(chǔ)上概化模型預(yù)測水文過程高度一致,因此深度學(xué)習(xí)在水文領(lǐng)域獲得廣泛關(guān)注[7]。本文主標(biāo)題命名為“深度學(xué)習(xí)水文預(yù)報(bào)研究進(jìn)展綜述”,旨在表明深度學(xué)習(xí)與水文預(yù)報(bào)的有機(jī)結(jié)合,而不僅局限于深度學(xué)習(xí)在水文預(yù)報(bào)中的簡單應(yīng)用。本文主要面向水文領(lǐng)域研究人員,系統(tǒng)地介紹深度學(xué)習(xí)水文預(yù)報(bào)中常見深度學(xué)習(xí)模型的原理與結(jié)構(gòu),深度學(xué)習(xí)水文預(yù)報(bào)模型一般構(gòu)建方法以及深度學(xué)習(xí)與水文物理機(jī)制的整合方式。
深度學(xué)習(xí)專指深度神經(jīng)網(wǎng)絡(luò),是一類將簡單的非線性運(yùn)算模塊通過多層次網(wǎng)絡(luò)結(jié)構(gòu)聯(lián)結(jié)以學(xué)習(xí)復(fù)雜關(guān)系的表征學(xué)習(xí)方法,屬于機(jī)器學(xué)習(xí)子領(lǐng)域[8]。其多層次網(wǎng)絡(luò)一般指“深層”網(wǎng)絡(luò)結(jié)構(gòu),但關(guān)于“深層”網(wǎng)絡(luò)并沒有明確的定義,通常是指依賴大量數(shù)據(jù),有多層、多神經(jīng)元的神經(jīng)網(wǎng)絡(luò)?!吧顚印本W(wǎng)絡(luò)各層次模塊能將其輸入轉(zhuǎn)化為更高抽象層次的特征,放大輸入中對輸出變化重要的因素,并抑制不相關(guān)的變化,實(shí)現(xiàn)特征的自動(dòng)提取,而“淺層”網(wǎng)絡(luò)和一般機(jī)器學(xué)習(xí)算法則需要專家經(jīng)驗(yàn)和工程技巧設(shè)計(jì)特征提取器,這也是近年來深度學(xué)習(xí)模型相比于淺層網(wǎng)絡(luò)等算法應(yīng)用更廣泛的原因之一。深度學(xué)習(xí)范式多樣、模型種類眾多,背后涉及的數(shù)學(xué)和計(jì)算理論對水文學(xué)科研究者來說極富挑戰(zhàn)[9],因此,本節(jié)簡要介紹水文預(yù)報(bào)中常用的深度學(xué)習(xí)模型結(jié)構(gòu),為水文研究者了解和掌握適合于水文預(yù)報(bào)的深度學(xué)習(xí)模型提供幫助。
最基礎(chǔ)的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)是深度前饋網(wǎng)絡(luò),即前饋神經(jīng)網(wǎng)絡(luò)或多層感知機(jī)(multilayer perceptron,MLP)[10],它包括輸入層、隱含層和輸出層,每一層神經(jīng)元和其前后層所有神經(jīng)元都有連接(即全連接),通過權(quán)值表達(dá)各神經(jīng)元的連接強(qiáng)度。前饋的含義是指,信號在神經(jīng)網(wǎng)絡(luò)是單向流動(dòng),信號從前一層流向后一層沒有反饋。對每個(gè)非輸入層的神經(jīng)元,計(jì)算其上一層所有神經(jīng)元的帶偏置的線性加權(quán)總和,并通過非線性激活函數(shù)得到激活值,作為該神經(jīng)元輸出。常用激活函數(shù)包括Sigmoid函數(shù)、雙曲正切函數(shù)(tanh)、線性整流函數(shù)(rectified linear unit,ReLU)等。
為完成目標(biāo)變量的預(yù)測任務(wù),需要使用樣本數(shù)據(jù)訓(xùn)練MLP。首先將樣本數(shù)據(jù)輸入MLP完成前饋計(jì)算得到模型輸出,然后通過損失函數(shù)衡量其與目標(biāo)輸出之間的距離,即損失值,再由MLP調(diào)整其網(wǎng)絡(luò)權(quán)值來減小損失值。模型學(xué)習(xí)或者訓(xùn)練就是優(yōu)化權(quán)值使所有樣本總體損失最小。最基礎(chǔ)的模型訓(xùn)練算法是梯度下降法,梯度下降法首先計(jì)算損失值相對于各權(quán)值的梯度,然后從當(dāng)前權(quán)值出發(fā)沿負(fù)梯度方向變化更新權(quán)值。由于權(quán)值的梯度計(jì)算及更新均由輸出層反向逐層傳至輸入層,該算法也稱反向傳播算法。前饋計(jì)算和反向傳播算法是包括MLP在內(nèi)的各類神經(jīng)網(wǎng)絡(luò)的基本運(yùn)算模式。
MLP很早就應(yīng)用于水文領(lǐng)域,在降雨、蒸散發(fā)、水位、徑流等各類水文變量預(yù)測方面都有廣泛應(yīng)用[11-12]。但MLP的輸入是一系列互相之間沒有連接的神經(jīng)元在面臨復(fù)雜高維輸入時(shí)必須將數(shù)據(jù)展開到低維,破壞了高維輸入結(jié)構(gòu)關(guān)系,導(dǎo)致MLP模型難以學(xué)習(xí)復(fù)雜數(shù)據(jù)模式。因此,目前大多數(shù)深度學(xué)習(xí)并不直接使用MLP作為建模工具,而是將其以基礎(chǔ)模塊的形式嵌入到其他深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)中。
卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)是一類使用卷積運(yùn)算代替全連接矩陣乘法的神經(jīng)網(wǎng)絡(luò)[13],是深度學(xué)習(xí)的代表模型之一。CNN由輸入層、卷積層、池化層、全連接層及輸出層構(gòu)成,模型結(jié)構(gòu)見圖1。在卷積層中,輸入數(shù)據(jù)與卷積核執(zhí)行卷積運(yùn)算并通過非線性激活函數(shù)得到輸出特征圖。特征圖的每個(gè)單元都通過卷積核和上一層輸入的局部單元塊建立連接,不同的卷積核生成不同的特征圖。特征圖一般會進(jìn)一步通過稱為池化的降采樣運(yùn)算,以合并卷積層檢測的相似局部特征,降低數(shù)據(jù)量。經(jīng)過若干層的卷積、池化后,將得到的特征圖依次展開連接成向量,輸入全連接網(wǎng)絡(luò),最終構(gòu)成完整卷積網(wǎng)絡(luò)。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 The structure diagram of convolutional neural network
通過這種結(jié)構(gòu)設(shè)計(jì),CNN克服了MLP難以處理高維復(fù)雜時(shí)空模式數(shù)據(jù)的缺點(diǎn)。一方面,CNN待訓(xùn)練參數(shù)是卷積核的各元素值,其數(shù)量通常遠(yuǎn)小于輸入數(shù)據(jù),相比于MLP的全連接矩陣權(quán)值,CNN需訓(xùn)練參數(shù)減少,降低了網(wǎng)絡(luò)模型復(fù)雜度,使得模型更容易訓(xùn)練。另一方面,每個(gè)卷積核單次運(yùn)算針對的是輸入數(shù)據(jù)的局部元素,通過多卷積核的卷積運(yùn)算以及層層抽象,CNN能獲取到一系列輸入數(shù)據(jù)時(shí)空維度局部特征,最后再經(jīng)過全連接層匯總,從而有效地挖掘高維數(shù)據(jù)的時(shí)空模式[14]。
在水文預(yù)報(bào)研究中,CNN常應(yīng)用于涉及圖像等多維數(shù)據(jù)的復(fù)雜建模問題[15-16]。典型地,遙感圖像中水文信息的提取可以使用卷積神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn),比如識別極端氣象模式[17];圖像超分辨率處理則可以用于水文網(wǎng)格數(shù)據(jù)降尺度分析,比如提升降雨數(shù)據(jù)空間分辨率[18];在水文變量預(yù)測中,如果將水文網(wǎng)格數(shù)據(jù)視為圖像,能利用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)預(yù)報(bào)影響要素空間特征的捕捉提?。?9]。CNN還可用于時(shí)間序列建模問題,比如降雨徑流建模中,將時(shí)間作為降雨等輸入數(shù)據(jù)維度之一,可以利用CNN提取時(shí)間序列特征用于構(gòu)建降雨徑流相關(guān)關(guān)系[20]。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)是一類通過隱含層循環(huán)連接實(shí)現(xiàn)網(wǎng)絡(luò)動(dòng)態(tài)記憶能力,從而表達(dá)時(shí)間等序列變化的神經(jīng)網(wǎng)絡(luò)[21],也是深度學(xué)習(xí)的代表模型之一。RNN同樣包含輸入層、隱含層、輸出層。RNN每時(shí)段完成一次前向計(jì)算,其中t時(shí)段隱含層輸出h t不僅取決于t時(shí)段隱含層輸入x t,也和t-1時(shí)段的隱含層輸出ht-1有關(guān)(圖2),而ht-1的計(jì)算又需要ht-2,以此類推,RNN中某一時(shí)段的狀態(tài)對過去的所有狀態(tài)都存在依賴,所以可以將RNN看作所有時(shí)段共享權(quán)值的神經(jīng)網(wǎng)絡(luò)。RNN能夠構(gòu)建序列數(shù)據(jù)之間的映射,但是輸出序列的長度并不要求與輸入序列一致,根據(jù)不同需求,可以有一對多、多對一、多對多等多種對應(yīng)關(guān)系[22]。
RNN能用于建模動(dòng)態(tài)系統(tǒng),但反向傳播計(jì)算中梯度的連乘效應(yīng)會導(dǎo)致梯度消失和爆炸問題,使得其無法處理很長的輸入序列[23],例如當(dāng)激活函數(shù)是Sigmoid函數(shù)時(shí),其導(dǎo)數(shù)小于1,多個(gè)小于1的導(dǎo)數(shù)連乘就會導(dǎo)致梯度消失。為解決這一問題,Hochreiter等[24]引入了長短期記憶(long short-term memory,LSTM)神經(jīng)網(wǎng)絡(luò)模型。LSTM建立了稱為“門”的內(nèi)部處理單元作為記憶模塊來實(shí)現(xiàn)序列信息的有效存儲和更新。每個(gè)門通過單個(gè)Sigmoid激活函數(shù)非線性網(wǎng)絡(luò)層來實(shí)現(xiàn)信息的選擇性通過,門輸出表示信息通過的權(quán)重,其輸出范圍為0到1區(qū)間,其中,0表示遺忘所有信息,1表示記憶所有信息。LSTM有單元狀態(tài)和隱含狀態(tài)兩個(gè)傳輸狀態(tài),單元狀態(tài)隨時(shí)間緩慢改變,而不同時(shí)刻的隱含輸出可能會很不同[25]。如圖2所示,LSTM借助遺忘門f t、輸入門it和輸出門o t實(shí)現(xiàn)對上一時(shí)段單元狀態(tài)c t-1、隱含層輸出ht-1和本時(shí)段輸入x t的記憶和遺忘,其中,f t實(shí)現(xiàn)了對c t-1的控制,it確定了獲取多少來自ht-1和xt的輸入信息,兩者的輸出結(jié)合決定了如何更新單元狀態(tài)得到ct,最后經(jīng)ot得到輸出。
圖2 循環(huán)神經(jīng)網(wǎng)絡(luò)隱含層結(jié)構(gòu)與長短記憶神經(jīng)網(wǎng)絡(luò)循環(huán)單元Fig.2 The illustration of hidden layer in recurrent neural network and the unit of long short-term memory neural network
水文預(yù)報(bào)是典型的時(shí)間序列預(yù)測問題,且一些變量之間存在較長時(shí)期的依賴關(guān)系,比如流域退水過程、積雪對徑流的影響等,而LSTM能處理序列內(nèi)單元之間彼此有復(fù)雜關(guān)聯(lián)的任務(wù),因此在水文領(lǐng)域受到了廣泛關(guān)注[26-27]。常見的應(yīng)用包括降水預(yù)報(bào)、徑流預(yù)報(bào)、洪水預(yù)報(bào)、土壤含水量時(shí)空分布預(yù)測、地下水位及流量模擬、水庫水位出流預(yù)測、水質(zhì)分析預(yù)測等多方面[28]。此外,將多時(shí)刻的水文網(wǎng)格數(shù)據(jù)連接在一起可構(gòu)成視頻信息,結(jié)合CNN和LSTM能構(gòu)建提取復(fù)雜時(shí)空特征的深度神經(jīng)網(wǎng)絡(luò)用于水文預(yù)報(bào)[29]。
通過對大量有標(biāo)簽的樣本進(jìn)行學(xué)習(xí)的方式屬于監(jiān)督學(xué)習(xí)范式,而無資料地區(qū)往往沒有標(biāo)簽數(shù)據(jù),因此在監(jiān)督學(xué)習(xí)范式下難以直接使用上述深度學(xué)習(xí)模型。如何利用少量標(biāo)簽或無標(biāo)簽樣本數(shù)據(jù)建立可靠模型,對目標(biāo)變量進(jìn)行預(yù)測正是遷移學(xué)習(xí)研究關(guān)注的問題。遷移學(xué)習(xí)是運(yùn)用已存有的知識(源領(lǐng)域)對不同但相關(guān)領(lǐng)域(目標(biāo)領(lǐng)域)問題進(jìn)行求解的一種機(jī)器學(xué)習(xí)方式[30],將深度學(xué)習(xí)模型用于遷移學(xué)習(xí)又被稱作深度遷移學(xué)習(xí)。最簡單的深度遷移學(xué)習(xí)方法是深度網(wǎng)絡(luò)的預(yù)訓(xùn)練——微調(diào)[31],即將已訓(xùn)練深度學(xué)習(xí)模型的參數(shù)直接遷移至目標(biāo)領(lǐng)域,再根據(jù)目標(biāo)領(lǐng)域樣本微調(diào)神經(jīng)網(wǎng)絡(luò)參數(shù),從而優(yōu)化模型學(xué)習(xí)效率避免從零學(xué)習(xí)。類似地,在水文預(yù)報(bào)中,區(qū)域化方法也能將有資料流域的水文模型參數(shù)移植至無資料流域[32]。區(qū)域化常見的做法是在有資料流域率定水文模型參數(shù),然后擬合流域?qū)傩耘c水文模型參數(shù)間的關(guān)系從而用于無資料流域[33]。將深度遷移學(xué)習(xí)用于區(qū)域化方法研究,基于大數(shù)據(jù)樣本能構(gòu)建更準(zhǔn)確表達(dá)水文共性特征的源領(lǐng)域模型,再通過微調(diào)等遷移學(xué)習(xí)方式使模型更有效學(xué)習(xí)目標(biāo)領(lǐng)域任務(wù),有望獲得更好的無資料流域預(yù)報(bào)性能[34]。
與監(jiān)督學(xué)習(xí)以及遷移學(xué)習(xí)不同,非監(jiān)督學(xué)習(xí)沒有待預(yù)測的目標(biāo)變量,它通過提取無標(biāo)簽數(shù)據(jù)特征挖掘數(shù)據(jù)背后潛在模式,以尋找可描述數(shù)據(jù)的模型和規(guī)律[10]。盡管不直接針對待預(yù)測目標(biāo)變量建模,但利用非監(jiān)督學(xué)習(xí)進(jìn)行數(shù)據(jù)降維和特征提取能消除變量中的不重要因素,保留其中關(guān)鍵信息,在此基礎(chǔ)上再與監(jiān)督學(xué)習(xí)模型結(jié)合能更有效實(shí)現(xiàn)預(yù)報(bào)目標(biāo)。傳統(tǒng)機(jī)器學(xué)習(xí)算法常與主成分分析結(jié)合用于水文預(yù)報(bào),通過主成分分析進(jìn)行數(shù)據(jù)降維和特征提取從而提高預(yù)報(bào)精度[35]。深度網(wǎng)絡(luò)結(jié)構(gòu)有更強(qiáng)的自學(xué)習(xí)能力,更適合于處理含高維復(fù)雜時(shí)空輸入數(shù)據(jù)的預(yù)報(bào)任務(wù)。堆疊自編碼器(stacked auto-encoder,SAE)是一類常見的非監(jiān)督學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)。SAE基于自編碼器,利用相同神經(jīng)元個(gè)數(shù)的輸入層和輸出層以及更少神經(jīng)元的隱含層的特殊結(jié)構(gòu)來迫使神經(jīng)網(wǎng)絡(luò)在減少特征的前提下在輸出中復(fù)現(xiàn)輸入,從而實(shí)現(xiàn)信息壓縮[36]。比如在洪水淹沒預(yù)測中,編碼提取淹沒圖特征后,再以該特征為輸出,以降雨等驅(qū)動(dòng)因子為輸入,構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)用于預(yù)報(bào)特征,再對特征解碼可得到預(yù)報(bào)淹沒圖[37]。
數(shù)據(jù)驅(qū)動(dòng)模式研究思路下,研究人員首先收集整理數(shù)據(jù),然后建立模型和訓(xùn)練,在此基礎(chǔ)上測試評估模型,并運(yùn)用解釋方法從中提取符合數(shù)據(jù)規(guī)律和易于理解的假說,再基于合理假說進(jìn)一步收集數(shù)據(jù)建立模型評估,重復(fù)此過程直到模型精度達(dá)到預(yù)期[38]。因此,深度學(xué)習(xí)模型構(gòu)建通常包括數(shù)據(jù)收集處理、模型構(gòu)建和訓(xùn)練、模型測試與解釋等環(huán)節(jié)。近些年,水文氣象數(shù)據(jù)監(jiān)測的高速發(fā)展使得降雨徑流建模方面的研究成果比較突出,因此本節(jié)以該問題為例,討論深度學(xué)習(xí)用于水文預(yù)報(bào)的一般建模方法。
模型構(gòu)建的第一步是針對目標(biāo)系統(tǒng)的輸入輸出收集整理數(shù)據(jù)。在降雨徑流預(yù)報(bào)研究中,大樣本水文研究(large-sample hydrology)[39]為深度學(xué)習(xí)奠定了較好的數(shù)據(jù)基礎(chǔ)。大樣本水文研究涉及的流域眾多且包含了廣泛的水文條件,因此能夠提供可靠的結(jié)論避免偶然結(jié)果。大樣本水文數(shù)據(jù)集正在快速發(fā)展,比如美國“大樣本研究的流域?qū)傩院蜌庀髷?shù)據(jù)集(catchment attributes and meteorology for largesample studies,CAMELS)”已經(jīng)成為眾多水文研究的基 礎(chǔ) 數(shù) 據(jù)[7,40],衍 生 的CAMELS-智 利、CAMELS-巴西、CAMELS-英國、CAMELS-澳大利亞等也在擴(kuò)充這一集合[41-44]。這些數(shù)據(jù)集包括降雨、徑流、地表氣溫等重要水文氣象時(shí)間序列,多年平均降雨量、流域土地利用類型及所占面積比例等水文氣候和地理環(huán)境屬性。在降雨徑流建模中,通常以徑流作為模型輸出、其他變量作為模型輸入。
模型訓(xùn)練前通常需要對數(shù)據(jù)進(jìn)行前處理。為了評估模型在現(xiàn)有樣本外數(shù)據(jù)上的預(yù)測性能,即泛化能力,需要將數(shù)據(jù)分為訓(xùn)練集和測試集,依托訓(xùn)練集完成模型訓(xùn)練,并在測試集上測試模型性能作為對模型泛化能力的估計(jì)。模型除了可訓(xùn)練參數(shù)外,通常還具有一系列需要人工設(shè)定的參數(shù),即超參數(shù),比如神經(jīng)網(wǎng)絡(luò)層數(shù)、每層神經(jīng)元個(gè)數(shù)等。因此,還需從訓(xùn)練集中劃分出一部分作為驗(yàn)證集評價(jià)模型訓(xùn)練效果,從而進(jìn)行超參數(shù)比選,防止直接使用測試集選擇超參數(shù)而造成信息泄露,影響對模型泛化能力的估計(jì)。針對輸入輸出數(shù)據(jù),一般還需進(jìn)行歸一化處理使訓(xùn)練過程中梯度下降算法能更好地收斂[10]。
數(shù)據(jù)收集處理后,根據(jù)水文過程記憶性特點(diǎn),可選擇能挖掘序列中數(shù)據(jù)間關(guān)系特點(diǎn)的神經(jīng)網(wǎng)絡(luò)建模,常用的如CNN或LSTM等。水文預(yù)報(bào)對精度和預(yù)見期都有要求,因此通常需要建立多時(shí)段輸出模型以延長預(yù)見期,比如多對多模式的LSTM[45]。當(dāng)輸入輸出變量時(shí)段長度不一致時(shí),比如輸入中含有歷史觀測徑流,輸出目標(biāo)為多時(shí)段未來徑流,還可應(yīng)用編碼解碼結(jié)構(gòu)類的模型[46],將輸入序列編碼到上下文向量后再傳遞給解碼器以轉(zhuǎn)換為時(shí)序輸出以靈活處理不同時(shí)段長度的輸入輸出。
建模后即可開始訓(xùn)練模型,深度學(xué)習(xí)模型訓(xùn)練樣本較多,通常不會直接對所有樣本一次性執(zhí)行梯度下降運(yùn)算,而是將樣本分成一系列小批次(minibatch),并使用隨機(jī)梯度下降算法或進(jìn)一步改進(jìn)的Adam、Adelta等算法[47-48]完成各小批次的梯度下降計(jì)算。一次遍歷所有小批次的訓(xùn)練過程稱為代(epoch),訓(xùn)練通常會執(zhí)行多代。小批次數(shù)和代數(shù)等也是神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的超參數(shù),最簡單的超參數(shù)優(yōu)化方式是網(wǎng)格搜索法,即手動(dòng)設(shè)置多組可行的超參數(shù)組合,并從中選擇驗(yàn)證集損失最小的,其他自動(dòng)優(yōu)化方法包括隨機(jī)搜索、貝葉斯優(yōu)化等[49]。
訓(xùn)練中,通常會使用正則化(regularization)方法防止模型過擬合[50]。模型過擬合是指訓(xùn)練中不區(qū)別對待數(shù)據(jù)中的噪聲和正常數(shù)據(jù),導(dǎo)致模型過度擬合訓(xùn)練集數(shù)據(jù)輸入輸出關(guān)系。此時(shí)雖然模型能在訓(xùn)練數(shù)據(jù)上獲得低偏差性能,但同時(shí)會有高方差缺點(diǎn),即性能不穩(wěn)定、泛化能力弱。常見正則化方法包括范數(shù)正則化、Dropout等。范數(shù)正則化在模型損失函數(shù)中增加包含模型參數(shù)權(quán)值范數(shù)的懲罰項(xiàng),比如L2范數(shù)正則化對應(yīng)權(quán)值平方項(xiàng),梯度下降更新權(quán)值時(shí)會減去帶系數(shù)的權(quán)值項(xiàng),即權(quán)值衰減。Goodfellow等[10]指出經(jīng)過權(quán)值衰減,學(xué)習(xí)算法能收縮增加預(yù)測方差特征的權(quán)重,從而減小模型預(yù)測方差,有效防止過擬合。Dropout會在訓(xùn)練時(shí)直接將部分神經(jīng)元的激活值或者連接權(quán)值設(shè)置為0,神經(jīng)元置0的概率稱為Dropout率。使用Dropout方法時(shí),由于輸入中每項(xiàng)都可能在訓(xùn)練期消失,因此最終輸出不能只依賴一兩個(gè)輸入,而須分散其權(quán)重并關(guān)注所有輸入,從而使神經(jīng)網(wǎng)絡(luò)對輸入變化不過分敏感來獲取更好的泛化能力。除了模型訓(xùn)練過程外,Gal等[51]還指出,在訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)中應(yīng)用Dropout預(yù)測時(shí),可將丟棄不同神經(jīng)元的網(wǎng)絡(luò)視為來自所有可用模型空間的蒙特卡羅樣本,這一過程被稱為蒙特卡羅Dropout,能為水文預(yù)報(bào)中的不確定性量化等研究提供有力工具[52]。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練多采用集成(ensemble)學(xué)習(xí)的方式。神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練后可能陷入局部最優(yōu),所以不同的初始化權(quán)重會得到不同性能模型,如果僅訓(xùn)練一組權(quán)重,預(yù)測時(shí)可能得到不良結(jié)果。集成學(xué)習(xí)能結(jié)合來自多個(gè)神經(jīng)網(wǎng)絡(luò)模型的預(yù)測,以減少預(yù)測方差,提升模型性能[53]。目前最簡單常用的集成訓(xùn)練方式之一是在同一數(shù)據(jù)集上訓(xùn)練具有相同網(wǎng)絡(luò)結(jié)構(gòu)和不同初始隨機(jī)權(quán)重的網(wǎng)絡(luò)集合,然后使用每個(gè)模型進(jìn)行預(yù)測,最后取預(yù)測的平均值作為實(shí)際預(yù)測結(jié)果。
模型訓(xùn)練完畢后就可用于推斷,即在新樣本數(shù)據(jù)輸入條件下進(jìn)行預(yù)測。訓(xùn)練后的模型不再執(zhí)行梯度下降運(yùn)算,因此深度學(xué)習(xí)能很快完成預(yù)測,有極高的預(yù)測效率。衡量模型泛化能力就是評價(jià)模型在測試集上的預(yù)測結(jié)果。通常用擬合度和誤差等統(tǒng)計(jì)指標(biāo)進(jìn)行評價(jià),常用指標(biāo)包括平均絕對誤差、均方根誤差、相對偏差、Nash-Sutcliffe效率系數(shù)、Kling-Gupta效率系數(shù)、峰值徑流相對偏差及低流量相對偏差等[54-55],通常綜合使用它們以判斷模型性能。
除了模型測試外,對于模型內(nèi)部工作機(jī)制的理解也是評價(jià)模型的關(guān)鍵,此過程能幫助進(jìn)一步了解水文規(guī)律,增強(qiáng)模型使用者對于深度神經(jīng)網(wǎng)絡(luò)的信任。深度學(xué)習(xí)模型解釋方法有很多且有不同的分類體系[56],目前在水文預(yù)報(bào)相關(guān)研究中結(jié)果反推類的方法使用較多,比如層次相關(guān)傳播(layer-wise relevance propagation,LRP)、SHapley Additive exPlanation(SHAP)、置換特征重要性(permutation feature importance,PFI)等[57-59];通過構(gòu)建簡潔模型來幫助理解復(fù)雜深度學(xué)習(xí)模型也是一種常見方法,比如local interpretable model-agnostic explanations(LIME)[60]。此外,可視化網(wǎng)絡(luò)神經(jīng)元激活值或聯(lián)結(jié)權(quán)值等也是理解深度學(xué)習(xí)內(nèi)部運(yùn)行規(guī)律的有效手段,比如對CNN卷積核及生成特征圖的可視化分析[61]。
深度學(xué)習(xí)已經(jīng)被廣泛應(yīng)用于各學(xué)科,尤其在水文這類過程仍未被完全理解的領(lǐng)域,它展示了從數(shù)據(jù)挖掘角度認(rèn)識物理過程規(guī)律的潛力,但仍面臨一系列挑戰(zhàn):深度學(xué)習(xí)需要在大量數(shù)據(jù)條件下學(xué)習(xí)訓(xùn)練,在水文領(lǐng)域,大量流域?qū)儆跓o資料或者缺資料地區(qū);隨著氣候變化和人類活動(dòng)等影響,水文規(guī)律非平穩(wěn)性也使得現(xiàn)有數(shù)據(jù)條件下的數(shù)據(jù)驅(qū)動(dòng)模型不能具備良好的外延性,即泛化能力;良好的預(yù)報(bào)不僅包括性能上的優(yōu)越,模型能否符合一般物理規(guī)律,能否具備良好的可解釋性,以及能否有助于科學(xué)知識發(fā)現(xiàn)等都是水文研究者關(guān)心的問題。基于物理機(jī)制的模型通常具有較好的解釋性和物理一致性,對數(shù)據(jù)的依賴程度相對較低,能起到與深度學(xué)習(xí)模型互補(bǔ)的效果,因此,近年來物理機(jī)制與數(shù)據(jù)驅(qū)動(dòng)模型融合的新范式受到了廣泛的重視,并顯示出了推動(dòng)科學(xué)問題研究的潛力[62],在水文預(yù)報(bào)中也有望通過整合現(xiàn)存大量基于物理機(jī)制的水文模型與深度學(xué)習(xí)模型來推動(dòng)相關(guān)研究進(jìn)展。本節(jié)將物理機(jī)制與深度學(xué)習(xí)模型整合的方法分為物理機(jī)制模型中融入深度學(xué)習(xí)和物理機(jī)制指導(dǎo)的深度學(xué)習(xí)兩大類展開介紹。
3.1.1 替代物理機(jī)制模型中間過程
復(fù)雜水文過程的物理機(jī)制建模中,部分子模塊采用基于人為經(jīng)驗(yàn)或簡化的概念性公式,制約了模型精度。因此,可以考慮分解物理過程,針對性能較差的子模塊,構(gòu)建深度學(xué)習(xí)模型并予以替代,作為原模型的一部分,由此來結(jié)合深度學(xué)習(xí)直接從數(shù)據(jù)挖掘變量關(guān)系與物理機(jī)制模型物理一致性強(qiáng)的優(yōu)點(diǎn)。替代的神經(jīng)網(wǎng)絡(luò)模型可在訓(xùn)練后耦合到物理機(jī)制模型中(離線模式),也可先與物理機(jī)制模型耦合再整體訓(xùn)練(在線模式)。離線模式下神經(jīng)網(wǎng)絡(luò)模型已訓(xùn)練后,運(yùn)行時(shí)只需實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的前饋計(jì)算;在線模式下則需在深度學(xué)習(xí)框架下重寫物理機(jī)制模型以實(shí)現(xiàn)自動(dòng)微分,從而順利完成深度神經(jīng)網(wǎng)絡(luò)和物理機(jī)制整合后模型的參數(shù)訓(xùn)練。值得注意的是,自動(dòng)微分是一類用于自動(dòng)計(jì)算函數(shù)導(dǎo)數(shù)的計(jì)算機(jī)程序技術(shù)[63]。在自動(dòng)微分實(shí)現(xiàn)之前,需手動(dòng)推導(dǎo)目標(biāo)函數(shù)對自變量的導(dǎo)數(shù)計(jì)算公式,然后再編程實(shí)現(xiàn),這給復(fù)雜的神經(jīng)網(wǎng)絡(luò)具體實(shí)現(xiàn)帶來了很大困難;而自動(dòng)微分將函數(shù)計(jì)算處理為導(dǎo)數(shù)表達(dá)式已知的基本運(yùn)算組成的運(yùn)算軌跡,然后依據(jù)鏈?zhǔn)椒▌t即可完成梯度計(jì)算。
除了使用神經(jīng)網(wǎng)絡(luò)替代物理過程子模塊外,利用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型參數(shù)也是一種耦合方式,稱為參數(shù)學(xué)習(xí)[64]。在該方式下,首先構(gòu)建神經(jīng)網(wǎng)絡(luò)模型挖掘輸入數(shù)據(jù)和物理機(jī)制模型參數(shù)的關(guān)系,再利用學(xué)習(xí)到的模型參數(shù)進(jìn)行計(jì)算,從而構(gòu)建參數(shù)率定和模型計(jì)算一體的物理機(jī)制模型。參數(shù)學(xué)習(xí)必須以在線模式實(shí)現(xiàn),因此必須在深度學(xué)習(xí)框架下重寫物理機(jī)制模型。相比于傳統(tǒng)的參數(shù)率定方式,借助深度學(xué)習(xí)梯度下降算法的并行實(shí)現(xiàn),參數(shù)學(xué)習(xí)易擴(kuò)展為并行計(jì)算,計(jì)算效率更優(yōu)。另一方面,參數(shù)學(xué)習(xí)合并了輸入與模型參數(shù)間映射關(guān)系構(gòu)建和參數(shù)率定過程,能直接作為一種區(qū)域化方法。相比于傳統(tǒng)參數(shù)區(qū)域化方法,基于大量流域和深度學(xué)習(xí)構(gòu)建的模型參數(shù)空間可能具備更好的普適性,結(jié)合遷移學(xué)習(xí)更有潛力應(yīng)用于無資料流域的水文預(yù)報(bào)。
3.1.2 學(xué)習(xí)物理機(jī)制模型預(yù)報(bào)誤差
使用深度學(xué)習(xí)模型學(xué)習(xí)物理機(jī)制模型預(yù)報(bào)誤差規(guī)律來改善預(yù)報(bào)能力,是物理機(jī)制與深度學(xué)習(xí)整合中較早出現(xiàn)的方式。流域水文模型發(fā)展多年,處于現(xiàn)有理論技術(shù)條件下的相對成熟階段,誤差校正是提高現(xiàn)有水文模型精度的有效方式[65]。目前誤差校正方法大多基于誤差自身統(tǒng)計(jì)規(guī)律進(jìn)行修正,然而由于模型預(yù)報(bào)誤差源自模型輸入、結(jié)構(gòu)、參數(shù)等多方面,規(guī)律十分復(fù)雜,企圖通過誤差數(shù)據(jù)自身分析找到規(guī)律,并進(jìn)行校正的想法難以實(shí)現(xiàn),需要探究誤差產(chǎn)生的背后機(jī)制,通過有效考慮誤差產(chǎn)生因素的時(shí)空動(dòng)態(tài)信息,才能達(dá)到較好的誤差校正效果。深度學(xué)習(xí)能有效考慮各類相關(guān)信息以幫助識別、理解誤差模式及其產(chǎn)生的背后機(jī)制,從而幫助模型校正,并指導(dǎo)模型乃至理論的改進(jìn)[19]。深度學(xué)習(xí)誤差校正通常以物理機(jī)制模型預(yù)報(bào)誤差作為模型訓(xùn)練目標(biāo),以影響誤差的各類時(shí)空動(dòng)態(tài)信息為輸入構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,在學(xué)習(xí)誤差規(guī)律后可在預(yù)測階段用于對預(yù)報(bào)結(jié)果的校正。
3.2.1 指導(dǎo)深度學(xué)習(xí)模型損失函數(shù)設(shè)計(jì)
水文預(yù)報(bào)涉及多維時(shí)空變量及其相互間復(fù)雜關(guān)系,在數(shù)據(jù)受限的情況下直接利用標(biāo)準(zhǔn)深度學(xué)習(xí)模型可能無法找到通用規(guī)律[62]。損失函數(shù)是神經(jīng)網(wǎng)絡(luò)梯度下降算法的優(yōu)化目標(biāo),通過將物理機(jī)制納入損失函數(shù),能夠約束模型得到符合物理規(guī)律的輸出,起到模型正則化作用。這種正則化有效縮小了參數(shù)搜索空間,為少樣本下的深度學(xué)習(xí)提供可能,同時(shí)保障了遵循物理規(guī)律的深度學(xué)習(xí)模型有更好外延性[66]。常見的物理機(jī)制指導(dǎo)的損失函數(shù)構(gòu)建方式包括基于物理方程的等式約束和利用變量單調(diào)性等的不等式約束:等式約束構(gòu)建和損失計(jì)算一致,在違反等式條件時(shí)給予懲罰;不等式約束可以使用Re-LU等函數(shù)轉(zhuǎn)換為具體損失值[67]。
3.2.2 指導(dǎo)深度學(xué)習(xí)模型參數(shù)初始化
深度學(xué)習(xí)模型訓(xùn)練前需要初始化,典型的做法是隨機(jī)生成,但是不良的初始化對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練不利,若加入物理機(jī)制指導(dǎo)模型初始化,能加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練,提高樣本利用效率[62,66]。典型的做法:利用輸入數(shù)據(jù)驅(qū)動(dòng)未率定的物理機(jī)制模型生成一系列樣本,然后預(yù)訓(xùn)練深度學(xué)習(xí)模型,在此基礎(chǔ)上利用真實(shí)輸入輸出數(shù)據(jù)進(jìn)行訓(xùn)練[68];或先利用觀測數(shù)據(jù)率定物理機(jī)制模型,再利用隨機(jī)生成器等生成一系列隨機(jī)數(shù)據(jù)輸入物理機(jī)制模型獲取模擬樣本來預(yù)訓(xùn)練深度學(xué)習(xí)模型[69]。這類通過初始化幫助模型訓(xùn)練的方法和遷移學(xué)習(xí)相似。在遷移學(xué)習(xí)中,用有限訓(xùn)練數(shù)據(jù)進(jìn)行微調(diào)以適應(yīng)目標(biāo)任務(wù)之前,先在一個(gè)擁有大樣本數(shù)據(jù)的相關(guān)任務(wù)上預(yù)訓(xùn)練模型,再將該模型權(quán)值作為已包含相關(guān)信息的初始狀態(tài),從而獲取比隨機(jī)初始化更接近所需任務(wù)的理想?yún)?shù)[70]。因此,使用基于物理機(jī)制的模型模擬數(shù)據(jù)來預(yù)訓(xùn)練深度學(xué)習(xí)模型,能減少數(shù)據(jù)匱乏的影響,起到數(shù)據(jù)增強(qiáng)的效果。
3.2.3 指導(dǎo)深度學(xué)習(xí)模型結(jié)構(gòu)設(shè)計(jì)
根據(jù)物理機(jī)制設(shè)計(jì)深度學(xué)習(xí)模型,將規(guī)則直接編碼入神經(jīng)網(wǎng)絡(luò)是一類更直接的整合方式,能得到更具物理規(guī)則一致性結(jié)果,增強(qiáng)模型可解釋性。構(gòu)建這類新的深度學(xué)習(xí)模型結(jié)構(gòu),需要結(jié)合水文領(lǐng)域?qū)嶋H問題特點(diǎn)[62,66],比如水文模型中物理方程常以時(shí)序形式給出,可以直接根據(jù)模型表達(dá)式寫出神經(jīng)網(wǎng)絡(luò)前向計(jì)算公式并嵌入到循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中作為模型循環(huán)基本單元[71]。因?yàn)闃?biāo)準(zhǔn)深度學(xué)習(xí)模型只能利用高度復(fù)雜的連接結(jié)構(gòu)提取抽象隱含變量,所以其可解釋性有限,而這種在深度學(xué)習(xí)架構(gòu)中添加物理方程,能得到有物理意義的變量,從而使模型具備可解釋性。此外,水文學(xué)中典型的如系統(tǒng)整體質(zhì)量守恒對應(yīng)的水量平衡、能量守恒對應(yīng)的熱平衡等,如果能顯式或隱式地將這些規(guī)律寫入神經(jīng)網(wǎng)絡(luò),那么深度學(xué)習(xí)模型會具有更好的外延性[72]。
近年來深度學(xué)習(xí)開啟了新一輪水文數(shù)據(jù)驅(qū)動(dòng)模型的研究熱潮,本文概念性地介紹了水文預(yù)報(bào)中常用的卷積神經(jīng)網(wǎng)絡(luò)、長短記憶神經(jīng)網(wǎng)絡(luò)等深度學(xué)習(xí)模型,給出了模型相應(yīng)的典型應(yīng)用場景,并討論了深度學(xué)習(xí)用于水文預(yù)報(bào)建模時(shí)的基本構(gòu)建方法。由于水文預(yù)報(bào)研究人員不僅僅從技術(shù)層面關(guān)心模型預(yù)報(bào)性能,還關(guān)注深度學(xué)習(xí)模型結(jié)果的可解釋性、外延性及物理一致性等,因此整合深度學(xué)習(xí)與基于物理機(jī)制模型的研究受到了越來越多的關(guān)注,本文按照物理機(jī)制模型中融入深度學(xué)習(xí)和物理機(jī)制指導(dǎo)的深度學(xué)習(xí)兩種方式討論了其基本方法,并指出了這類方法潛在的優(yōu)點(diǎn)。本文初步歸納總結(jié)基于深度學(xué)習(xí)的水文預(yù)報(bào)涉及的基本概念與方法,可為了解近期深度學(xué)習(xí)水文預(yù)報(bào)研究進(jìn)展提供充分背景知識。