于家斌,尚方方,王小藝,許繼平,王 立,張慧妍,鄭 蕾
(1.北京工商大學 計算機與信息工程學院,北京 100048; 2.北京師范大學 水科學研究院,北京 100875)(*通信作者電子郵箱wangxy@btbu.edu.cn)
隨著我國社會經(jīng)濟迅速發(fā)展,河流湖泊污染問題日益加劇,由于水體富營養(yǎng)化而造成的藻類水華災害成為水環(huán)境污染的突出問題[1]。研究藻類水華預測方法,提前對水華爆發(fā)的可能性進行預測,有助于減少水華帶來的生態(tài)危害和健康風險。
目前藻類水華預測方法主要分為兩大類。第一類是以生態(tài)動力學為理論基礎,通過研究藻類水華的形成機理,對水華的生態(tài)變化進行模擬及預測??追毕璧萚2]認為藍藻水華的爆發(fā)是一個逐漸形成的過程,提出了藍藻水華成因的四階段理論假設,即休眠、復蘇、生物量增加和上浮聚集四個階段,每個階段中藻類的生理特性及主導環(huán)境影響因子有所不同。王長友等[3]根據(jù)藍藻水華形成的“四階段理論”搭建三維水動力模型與水生生態(tài)動力學模型相結合的耦合模型,對藍藻水華進行短期預測;但是由于水體是一個開放性的復雜系統(tǒng),藻類水華出現(xiàn)的誘導因素很多,具有突發(fā)性、復雜性和時變性等特點[4-5]。以上方法通常結構復雜,涉及的參數(shù)眾多,應用非常困難。第二類方法是利用數(shù)據(jù)挖掘技術分析藻類水華指標與環(huán)境因子的關系,建立水華預測模型,如聚類模型、回歸模型和神經(jīng)網(wǎng)絡模型等。常淳等[6]基于逐步聚類分析法建立了葉綠素a含量的聚類分析模型,并對其進行預測分析;但這種方法適用于小樣本數(shù)據(jù),而且容易陷入局部最優(yōu),模型易受異常數(shù)據(jù)的干擾。王小藝等[7]提出一種基于模糊Petri網(wǎng)的復雜網(wǎng)絡動態(tài)模型,采用粒子群算法優(yōu)化網(wǎng)絡權重,最終實現(xiàn)對藍藻水華預測。鄭劍鋒等[5]建立了基于數(shù)學統(tǒng)計分析的徑向基函數(shù)(Radial Basis Function, RBF)神經(jīng)網(wǎng)絡,實現(xiàn)對水華發(fā)生的概率計算及預警等級劃分。這類智能建模方法所需模型參數(shù)少,計算過程快速簡便,成為解決現(xiàn)實復雜系統(tǒng)問題的主要方法,但是沒有充分考慮數(shù)據(jù)隨時間變化的特點。
基于前期研究可知,藍藻水華這一動態(tài)過程前期的時間序列狀態(tài)對其演化具有重要影響。循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network, RNN)作為深度學習方法的一種,擅長處理連續(xù)的時間序列數(shù)據(jù),RNN的改進結構長短期記憶(Long Short-Term Memory,LSTM)循環(huán)神經(jīng)網(wǎng)絡改善了RNN梯度消失、梯度爆炸等問題,在不同時間序列研究領域已經(jīng)取得了不少成功應用的經(jīng)驗。語音識別及機器翻譯方面的嘗試成功,表明LSTM在此領域的實用化效果。文獻[8]基于LSTM循環(huán)神經(jīng)網(wǎng)絡對交通流速預測的研究取得滿意效果。目前國內將LSTM循環(huán)神經(jīng)網(wǎng)絡用于藍藻水華預測研究還未發(fā)現(xiàn)公開的報道。本文嘗試使用LSTM循環(huán)神經(jīng)網(wǎng)絡,從實測的時間序列數(shù)據(jù)出發(fā),用以建立藍藻水華的時間演化模型,預期探索其不同運行階段的演化特征。
由于藍藻水華爆發(fā)是由漸變到突變的狀態(tài)階躍過程,具有非連續(xù)、階躍式的特征,本文以葉綠素a濃度值為藍藻水華爆發(fā)程度表征指標,通過遺傳算法改進的動態(tài)一階滯后濾波(Genetic algorithm-First order lag filter, GF)優(yōu)化算法改善了葉綠素a濃度數(shù)據(jù)的平滑濾波處理效果,解決了非連續(xù)、階躍式數(shù)據(jù)的預測問題,提高了模型預測精度,并通過LSTM循環(huán)神經(jīng)網(wǎng)絡構建基于GF-LSTM網(wǎng)絡的藍藻水華預測模型,更為準確地預測藍藻水華的發(fā)生,并以太湖的水質監(jiān)測為樣本驗證模型的有效性。
在數(shù)據(jù)預處理階段對一階滯后濾波(First Order Lag Filter, FOLF)算法進行改進,由遺傳算法(Genetic Algorithm, GA)優(yōu)化FOLF參數(shù),提出動態(tài)一階滯后濾波優(yōu)化算法——GA-FOLF(GF)對數(shù)據(jù)進行平滑濾波處理,并結合LSTM循環(huán)神經(jīng)網(wǎng)絡構建GF-LSTM網(wǎng)絡模型,對藍藻水華的發(fā)生進行預測。
在數(shù)據(jù)預處理階段,由于采集到的時間序列數(shù)據(jù)經(jīng)常受到各種因素的干擾而呈現(xiàn)一定的波動性,并且容易產(chǎn)生噪點。如以表征藍藻水華發(fā)生的葉綠素a濃度數(shù)據(jù),因為采集時間間隔長短,以及水體中營養(yǎng)鹽濃度變化、降雨等多種因素的影響而復雜多變,使得模型在模擬時易造成系統(tǒng)誤差,影響模型預測的精確度;因此通過數(shù)據(jù)平滑濾波處理,改善時間序列的光滑度,保證模型輸入數(shù)據(jù)的有效性,能夠極大提高系統(tǒng)的精度,在此采用FOLF算法對數(shù)據(jù)進行平滑濾波處理。
1.1.1 FOLF算法改進
FOLF是一種動態(tài)數(shù)字濾波算法,可以通過改變?yōu)V波系數(shù)得到不同的濾波屬性[9]。該算法原始公式如下:
st=αxt+(1-α)st-1
(1)
其中:st為本次濾波結果;xt為本次采樣值;st-1為上次濾波結果;α為濾波系數(shù),一般取值為0<α<1。
考慮FOLF算法具有相位滯后、靈敏度低的缺點,對數(shù)據(jù)進行濾波處理時,滯后現(xiàn)象比較明顯,故對該算法進行改進,添加誤差修正項,改進后的濾波公式為:
(2)
(3)
其中:β為誤差修正系數(shù),滿足0<β<1。添加修正項后,每批取N個采樣數(shù)據(jù),根據(jù)每個數(shù)據(jù)的誤差進行數(shù)據(jù)修正,經(jīng)過改進后的FOLF處理的數(shù)據(jù),平滑度更好,也有效地減輕了因數(shù)據(jù)濾波造成的滯后性。
1.1.2 參數(shù)優(yōu)化
由于藍藻水華變化過程具有突發(fā)性和復雜性,因此選擇固定的濾波系數(shù)并不能很好地對葉綠素a濃度值進行平滑處理。故對FOLF算法進一步優(yōu)化,對每隔N個采樣數(shù)據(jù),采用GA優(yōu)化方法對系數(shù)α和β進行動態(tài)參數(shù)選定,在數(shù)據(jù)預處理階段提出一種GA-FOLF(GF)算法。GF算法對葉綠素a濃度值的平滑濾波處理過程如圖1所示,將取出的數(shù)據(jù),經(jīng)過GA優(yōu)化的FOLF算法作濾波處理,再更新樣本數(shù)據(jù)。
1.2.1 循環(huán)神經(jīng)網(wǎng)絡
深度學習作為深層次的神經(jīng)網(wǎng)絡,是機器學習中的一個新的研究領域[10]。RNN是一種前饋神經(jīng)網(wǎng)絡,擅長處理可變長度的時間序列的數(shù)據(jù)輸入,其最大特點是網(wǎng)絡具有自連接的隱層,即當前時刻隱層的狀態(tài)依靠前一時刻隱層的狀態(tài)進行更新,能夠有效地解決長期依賴問題[11-12]。
圖2為循環(huán)神經(jīng)網(wǎng)絡的結構,包含輸入層x、隱藏層h和輸出層o,每層有若干個神經(jīng)元,依賴信息通過隱藏層傳遞。其中,圖2(a)是RNN的基本結構,一條單向的信息流由輸入層到隱藏層,再由隱藏層到輸出層,構成基本的神經(jīng)網(wǎng)絡結構,另一條信息流由隱藏層到隱藏層構成閉環(huán),形成自連接的隱層。為了更加清楚地說明RNN的結構,將圖2(a)中RNN的基本結構展開,如圖2(b)所示,當前t時刻的隱藏層ht的輸入除了包含輸入層信息xt以外,還包含上一時刻t-1時的信息ht-1,而ht也會對下一時刻t+1時的隱藏層產(chǎn)生影響。RNN隱藏層的結構特點使得循環(huán)神經(jīng)網(wǎng)絡能夠對前面的信息進行“記憶”并作用于此刻的輸出,因此能夠有效地解決長期依賴問題。
1.2.2 GF-LSTM網(wǎng)絡原理
由于RNN在實際訓練過程中,常常發(fā)生“梯度消失”或“梯度爆炸”問題[13]。為解決這個問題,很多研究學者對RNN網(wǎng)絡結構進行了改進,其中效果較好的改進模型是LSTM網(wǎng)絡模型[14]。在此結合LSTM網(wǎng)絡模型,采用改進的GF算法對數(shù)據(jù)進行平滑濾波處理,構成GF-LSTM網(wǎng)絡模型預測藍藻水華的形成過程。
圖2 循環(huán)神經(jīng)網(wǎng)絡的結構
LSTM與RNN的原理在本質上是相似的,只是對RNN的結構進行了優(yōu)化[15]。其不同之處是LSTM網(wǎng)絡模型在隱藏層中引入被稱為“記憶細胞”的結構,使用不同的函數(shù)去計算隱藏層的狀態(tài)。在“記憶細胞”中,使用三個門限層控制可以通過門的信息量,對具有長期序列依賴問題的數(shù)據(jù)非常有效。圖3為典型的LSTM中“記憶細胞”的結構。
圖3 LSTM記憶細胞的結構
圖3中:it為輸入門限層(input gate);ft為遺忘門限層(forget gate);ot為輸出門限層(output gate);ct為記憶細胞在t時刻的狀態(tài);xt為輸入層的輸入向量;ht為隱藏層的輸出向量[16]。
it=σ(Wxixt+Whiht-1+bi)
(4)
ft=σ(Wxfxt+Whfht-1+bf)
(5)
ot=σ(Wxoxt+Whoht-1+bo)
(6)
ct=ft⊙ct-1+it⊙ tanh (Wxcxt+Whcht-1+bc)
(7)
ht=ot⊙ tanh (ct)
(8)
其中:⊙是指矩陣逐元素點乘;bγ是各層輸出的偏差向量,例如bi是輸入門限層的偏差向量,bf是遺忘門限層的偏差向量;σ(x)是sigmoid函數(shù);Wαβ是對應層的權重矩陣,例如Wxf是輸入層到遺忘門限層的權重矩陣,Whi是隱藏層到輸入門限層的權重矩陣,Who是隱藏層到輸出門限層的權重矩陣;ct用來更新細胞狀態(tài)。由式(7)可知,遺忘門ft控制有多少上一時刻的記憶細胞中的信息ct-1可以傳輸?shù)疆斍皶r刻的記憶細胞中;輸入門it控制有多少信息可以流入記憶細胞ct中;而輸出門ot控制有多少當前時刻的記憶細胞ct中的信息可以流入當前隱藏層ht中[17]。
基于GF-LSTM網(wǎng)絡的藍藻水華預測模型流程如圖4所示,主要包含數(shù)據(jù)預處理和GF-LSTM模型建立兩部分。圖4中:RMSE(Root Mean Square Error)為均方根誤差,MRE(Mean Relative Error)為平均相對誤差。
步驟1 GF平滑濾波。以葉綠素a濃度采樣數(shù)據(jù)為樣本,對樣本數(shù)據(jù)按照圖1流程,每隔N=30個數(shù)據(jù),進行平滑濾波處理。
步驟2 極差標準化處理。對平滑濾波處理后的葉綠素a濃度按照式(9)進行極差標準化處理,使樣本數(shù)據(jù)處于[0,1]區(qū)間:
Xnor=(X-Xmin)/(Xmax-Xmin)
(9)
X=Xnor(Xmax-Xmin)+Xmin
(10)
其中:Xnor和X分別為樣本處理前、后的數(shù)據(jù);Xmax與Xmin表示樣本中數(shù)據(jù)的最大值和最小值。
步驟3 樣本劃分。用以上方法處理之后的數(shù)據(jù)按照簡單交叉驗證法劃分為訓練集與測試集,前85%組數(shù)據(jù)作為訓練集,余下的15%組數(shù)據(jù)作為測試集,輸入到網(wǎng)絡模型中進行訓練。
圖4 基于GF-LSTM的藍藻水華預測模型流程
本文實驗硬件設施為Windows 7操作系統(tǒng),8 GB內存,基于Python3.5編程,使用Keras深度學習框架,搭建LSTM循環(huán)神經(jīng)網(wǎng)絡模型。在網(wǎng)絡結構設計中,通過多次實驗調試,最終確定LSTM網(wǎng)絡結構由1層輸入層、2層隱藏層和1層輸出層組成。根據(jù)GF平滑濾波處理后的葉綠素a濃度樣本數(shù)據(jù),預測模型框架如圖5所示。
圖5 基于LSTM的預測模型框架
結合圖4可知,其運行步驟如下:
步驟1 確定輸入層、輸出層。設置網(wǎng)絡為每批m個變量作為輸入X={xi|i=1,2,…,m},n個變量作為輸出O={oi|i=1,2,…,n},網(wǎng)絡經(jīng)過訓練會輸出接下來連續(xù)的n個小時的葉綠素a濃度預測值。本實驗中設定m=20,n=3,每批20個數(shù)據(jù)預測未來3 h的葉綠素a濃度值。
步驟2 設置隱藏層參數(shù)。本實驗中設定隱藏層數(shù)為2層,每層320個神經(jīng)元。根據(jù)圖3中LSTM隱藏層記憶細胞結構,確定激活函數(shù)為sigmoid函數(shù)和tanh函數(shù),由隱藏層到輸出層的激活函數(shù)選擇Linear線性函數(shù)。
步驟3 設置預測模型訓練過程參數(shù)。構建GF-LSTM網(wǎng)絡預測模型之后,對數(shù)據(jù)進行訓練過程中,由loss損失函數(shù)獲得網(wǎng)絡模型的輸出誤差,并由梯度下降法尋找最小值,更新權重,最終使模型收斂。
1)確定loss損失函數(shù)。loss損失函數(shù)選擇均方誤差(Mean Square Error, MSE),用來衡量網(wǎng)絡每一步訓練后預測值與真實值的偏差,在運行過程中l(wèi)oss損失函數(shù)輸出值越來越小,最終趨近于0。MSE公式如下:
(11)
其中:x為序列樣本的期望值;x*為預測值;N為樣本總數(shù)。
2)優(yōu)化器選擇隨機梯度下降法(Stochastic Gradient Descent, SGD)或RMSProp法分別進行訓練,測試中發(fā)現(xiàn)RMSprop法訓練的誤差更小。RMSprop法是對梯度下降法的改進,能夠自動調節(jié)學習速率,很好地解決了深度學習中學習率急劇下降和過早結束的問題,適合處理非平穩(wěn)目標。
步驟4 判定預測模型誤差。對GF-LSTM網(wǎng)絡模型預測結果,采用兩種誤差分析方法驗證其預測精度,即均方根誤差(RMSE)和平均相對誤差(MRE)[18]。
(12)
(13)
其中:x為序列樣本的期望值,x*為預測值,N為樣本總數(shù)。
對太湖地區(qū)藍藻水華演化狀況進行建模仿真,在太湖藍藻水華爆發(fā)頻率高的梅梁湖區(qū)域設置采樣點,進行遙感監(jiān)測和站點檢測。梅梁湖景區(qū)由梅梁湖和沿湖山巒組成,該景區(qū)水域面積158.9 km2,是太湖著名的旅游景點之一。由于該區(qū)域水位較低、上游水質惡化、水體自凈能力低等原因,梅梁湖水域常年爆發(fā)嚴重的藍藻水華災害,對當?shù)丨h(huán)境、水中生物以及人們的身體健康產(chǎn)生重大影響。太湖藍藻水華中含有豐富的葉綠素,通常用葉綠素a濃度表征浮游植物的生物量[19]。
對該區(qū)域2015年6月至9月水質信息進行采樣分析,每日采集24組數(shù)據(jù),作為預測藍藻水華發(fā)生趨勢的建模數(shù)據(jù)。
表1給出部分實驗數(shù)據(jù),以及LSTM、GF-LSTM網(wǎng)絡模型的預測結果和誤差,表中GF-LSTM網(wǎng)絡預測結果更接近葉綠素a濃度真實數(shù)據(jù),且誤差比較小。圖6是分別采用常規(guī)LSTM網(wǎng)絡模型(未進行數(shù)據(jù)平滑濾波處理)和提出的GF-LSTM網(wǎng)絡模型對太湖藍藻水華發(fā)生過程中葉綠素a濃度值的預測結果曲線圖。由圖6可以看出,常規(guī)的LSTM模型預測曲線與真實值曲線擬合得不太理想,而GF-LSTM網(wǎng)絡模型能夠較好地跟蹤葉綠素a濃度變化趨勢,并響應葉綠素a濃度的波動變化,實現(xiàn)了更為精確的預測。為了更好地比較網(wǎng)絡模型對藍藻水華爆發(fā)過程預測的準確性和有效性,對兩種模型的預測曲線與真實數(shù)據(jù)曲線作相關性分析。其中,LSTM預測曲線與真實曲線的相關系數(shù)為0.783,GF-LSTM預測曲線與真實曲線的相關系數(shù)為0.807,GF-LSTM網(wǎng)絡模型的相關系數(shù)大于LSTM網(wǎng)絡模型。由此可知,提出的GF-LSTM網(wǎng)絡模型對葉綠素a濃度的預測更為準確。
表1 不同模型預測結果及誤差比較
圖6 LSTM和GF-LSTM對葉綠素a濃度預測曲線
為了進一步比較LSTM與GF-LSTM兩種網(wǎng)絡模型的效果,給出預測結果與真實數(shù)據(jù)的誤差箱線如圖7所示。箱線圖中離散的圓點表示異常值,上下邊緣代表該階段誤差的最大值與最小值范圍,矩形盒的上下兩邊分別代表誤差的75%和25%分位數(shù),矩形中間的線代表了數(shù)據(jù)的中位線。對每40個誤差數(shù)據(jù)進行統(tǒng)計分析,并用箱線圖呈現(xiàn)每個階段誤差的變化范圍。
圖7 LSTM和GF-LSTM誤差箱線圖
由圖7可以看出,在數(shù)據(jù)編號0~150,圖7(a)中LSTM與圖7(b)中GF-LSTM網(wǎng)絡的誤差變化都偏大,但是最終都趨于0。GF-LSTM的整體誤差較小,范圍在-20~20 μg/L,大部分誤差在0值附近小范圍波動。與LSTM相比,GF-LSTM預測結果的誤差小,波動范圍小,驗證了GF-LSTM網(wǎng)絡模型對葉綠素a濃度值預測精度更高、效果更好。
建立傳統(tǒng)RNN網(wǎng)絡、LSTM網(wǎng)絡、GF-LSTM網(wǎng)絡模型,設定網(wǎng)絡模型參數(shù)并各自訓練100次,記錄程序運行結束后損失函數(shù)值和總的運行時間,對不同模型預測精度比較結果如表2所示。由表2可以看到:相比RNN、LSTM網(wǎng)絡,提出的GF-LSTM網(wǎng)絡模型對葉綠素a預測的均方根誤差(RMSE)、平均相對誤差(MRE)和Loss最??;RNN程序運行時間比較短,而LSTM與GF-LSTM耗時相當,由于其隱藏層結構更為復雜,運行時間長一些,但是在合理的范圍內,GF-LSTM網(wǎng)絡有效地提高了預測精度。
表2 不同模型預測精度比較
針對數(shù)據(jù)采集過程中因受各種干擾呈現(xiàn)一定波動性并產(chǎn)生噪點而造成系統(tǒng)誤差,影響模型精度等問題,本文首先對一階滯后濾波算法進行改進并優(yōu)化,改善了其相位滯后、靈敏度低的缺點。其次,結合擅長處理復雜突變的時序數(shù)據(jù)的LSTM循環(huán)神經(jīng)網(wǎng)絡,提出了GF-LSTM網(wǎng)絡的藍藻水華預測模型,提高了模型對藍藻水華的預測精度;但是訓練過程的耗時也更多。最后,以太湖梅梁湖水域為例對該方法進行應用與驗證,實驗結果表明GF-LSTM網(wǎng)絡模型顯著地提高了藍藻水華預測精度。
藍藻水華發(fā)生有多種影響因素,僅根據(jù)葉綠素a濃度指標分析建模具有一定的局限性。結合藍藻水華發(fā)生的多種因素指標,分析其相關性,進一步提高模型對復雜輸入的處理效率和預測精度,并將模型改進以適用于其他復雜領域,將是下一步研究的重點。