張麗娜,陳會娟,余昭旭
(1.華東理工大學能源化工過程智能制造教育部重點實驗室,上海 200237;2.上海西派埃智能化系統有限公司,上海 200233)
河流為人類提供了賴以生存的水資源,而工業化進程的不斷加快,導致河流水環境受到嚴重破壞[1]。因此,可靠的水質模型對預測河流水質變化趨勢、采取治理措施和建立決策預警機制具有重要意義[2-3]。近年來,國內外很多專家學者已針對水質預測作了大量的研究,并取得了較好的成果。Wang等[4]將長短期記憶(long short-term memory,LSTM)神經網絡用于水質預測,建立了基于LSTM的水質預測模型,解決了傳統神經網絡難以用于時間序列預測的難題,模型效果顯著。單一算法的預測模型通常只包含數據部分信息,而基于混合算法的預測模型能夠更加充分地提取數據中的有效信息,從而提高預測精度[5-6]。周朝勉等[7]提出了基于卷積神經網絡(convolutional neural network,CNN)-LSTM的水質預測模型,以精確預測水質中的溶解氧濃度。與單一的LSTM模型和反向傳播(back propagation,BP)神經網絡模型的比較結果表明,基于CNN-LSTM的水質預測模型取得了更好的預測結果。Yang[8]等提出了基于注意內機制的CNN和LSTM(CNN-LSTM with attention,CLA)的水質預測模型,使用線性插值填充缺失數據,并通過小波技術對數據去噪。試驗結果表明,基于CLA的水質檢測模型可以穩定地預測不同時滯。
本文提出了基于時間序列對抗生成網絡(time-series generative adversarial network,TimeGAN)-CNN-LSTM的河流水質預測模型。相比于現有研究結果,本文模型主要具有以下特點。
①本文模型通過TimeGAN對原有的水質數據進行數據增強,擴充了訓練集,解決了訓練模型時數據不充分的問題。
②本文模型利用CNN-LSTM模型提取水質數據在時間和空間上的特征。
試驗結果表明,本文提出的河流水質預測模型準確率更高,具有良好的應用價值。
TimeGAN由自編碼器和對抗網絡兩部分組成[9]。對抗網絡主要包括序列生成器G和序列判別器D。TimeGAN模型結構如圖1所示。

圖1 TimeGAN模型結構
TimeGAN模型將水質數據集W輸入序列生成器G獲得生成數據,通過序列判別器D區分真實數據和生成數據。

TimeGAN采用聯合訓練方法,依靠3個不同的損失函數對自編碼器和對抗網絡進行訓練,分別為自編碼器損失LR、監督損失LS和非監督損失LU。其中:LR表征自編碼器對輸入數據內在特征的掌握程度;LS反映生成器和判別器的競爭對抗互動;LU反映生成器生成的數據能夠逼近真實數據經過自編碼器編碼后的數據的程度。計算公式如下:
(1)


(2)

(3)
式中:ht、hS分別為當前隨機時態特征和靜態特征;zt為當前隨機時態特征向量。
CNN是一種特殊的人工神經網絡,主要由卷積層和池化層組成[10]。卷積層利用卷積核提取數據特征。池化層壓縮卷積層提取的特征,從而減少運算量。一維CNN將卷積核視為1個窗口。首先,時間序列數據在窗口上進行平移,以提取局部序列段。然后,將局部特征與權重點乘,持續輸出得到序列特征,進行池化下采樣。該方法適用于提取時間序列的相應特征,能夠過濾數據中與預測無關的噪聲信息,優化預測性能。
LSTM是循環神經網絡(recurrent neural network,RNN)的一種。其采用LSTM單元代替RNN中的神經元,解決了RNN存在的梯度消失和梯度爆炸問題[11],適用于時序數據的處理。LSTM由輸入門、遺忘門、輸出門組成。
LSTM各模塊的計算公式見式(4)~式(9)。
it=σ[Wi(ht-1,xt)+bi]
(4)
式中:it為LSTM的輸入門;Wi和bi分別為輸入門的權重和偏置;ht-1為上一時刻的輸出;xt為t時刻的輸入。
ft=σ[Wf(ht-1,xt)+bf]
(5)
式中:ft為LSTM的遺忘門;Wf和bf分別為遺忘門的權重和偏置。
(6)

(7)
式中:ct為單元狀態;ct-1為上一單元的狀態。
ot=σ[Wo(ht-1,it)+bo]
(8)
式中:ot為LSTM的輸出門;Wo和bo分別為輸出門的權重和偏置。
ht=ottanh(ct)
(9)
式中:ht為t時刻的輸出。
LSTM結構如圖2所示。

圖2 LSTM結構
本文使用的數據集有144組數據,訓練樣本數量較少。當訓練樣本數量比較少時,模型容易陷入對小樣本的過擬合問題。因此,本文提出了一種基于TimeGAN-CNN-LSTM的河流水質預測模型。在模型訓練過程中:使用TimeGAN對河流水質歷史數據進行數據增強;采用CNN對輸入的水質數據進行特征提取;利用2層LSTM對河流水質進行預測。
TimeGAN-CNN-LSTM模型訓練過程具體步驟如下。
①將數據集劃分為訓練集、驗證集與測試集。
②使用TimeGAN生成合成時間序列數據。將數據輸入TimeGAN模型中,輸出創建自編碼器和對抗網絡,根據式(1)~式(3)所定義的3個損失函數LR、LS和LU評估輸出的結果。
③對合成時間序列數據進行歸一化,并將該數據作為模型的輸入數據,使其介于[0,1]之間。歸一化公式為:
(10)
式中:X為原始數據;Xnorm為歸一化處理后數據;Xmax為原始數據中最大值;Xmin為原始數據中最小值。
④訓練CNN-LSTM模型,采用CNN對輸入數據進行特征提取,將數據特征輸入到2層LSTM中,實現對河流水質的預測。在CNN中,卷積層的神經元數量設置為64,卷積核的尺寸為1×1,個數為4,使用ReLU激活函數使網絡訓練更快。另外,設置兩層LSTM的神經元個數分別為64和32。
⑤模型搭建完成后,為了防止數據過擬合以及訓練時間較長,選擇Adam優化算法訓練模型。
⑥將步驟①中的測試集數據輸入模型中,并對模型輸出結果進行反歸一化,得到河流水質預測值。
TimeGAN-CNN-LSTM模型訓練過程如圖3所示。

圖3 TimeGAN-CNN-LSTM模型訓練過程

為了更好地評估模型的預測效果,本文分別采用平均絕對誤差(mean absolute error,MAE)、均方根誤差(root mean square error,RMSE)和擬合優度(R-square,R2)對預測結果進行評定。
MAE表示模型的精確度。MAE的值越小,模型的精確度越好。RMSE表示模型的穩定性。RMSE的值越低,模型越穩定。決定系數R2表示模型的好壞。一般來說,R2的值越大,模型的擬合效果越好。
MAE、RMSE、R2的計算過程見式(11)~式(13)。
(11)

(12)
(13)

本次試驗基于Windows10操作系統,使用Python語言編碼,版本為python3.8.8,編程工具使用Jupyter Notebook。其中:TimeGAN使用ydata_synthetic包實現;CNN-LSTM模型使用keras包實現;LSTM模型使用TensorFlow框架實現。
不同模型的損失曲線對比如圖4所示。

圖4 不同模型的損失曲線對比
在訓練模型之前,數據經過選擇分為訓練集、驗證集和測試集,將前100組數據劃分為訓練集、中間22組數據劃分為驗證集、后22組數據劃分為測試集。其次,為了更加充分地挖掘數據之間的特征,使用TimeGAN方法對100組訓練集數據進行擴充,同時設置時間序列長度為12,生成200組合成時間序列數據,驗證集與測試集保持不變。然后,采用合成后的200組時間序列數據建立TimeGAN-CNN-LSTM模型。該模型迭代次數為3 000次,以MSE為預測損失函數。為了驗證該模型的有效性,將其與CNN-LSTM模型、LSTM模型進行對比。其中:CNN-LSTM模型中CNN層、LSTM層神經元數量為64;LSTM模型的隱藏層神經元個數為32。隨著迭代次數的增加,TimeGAN-CNN-LSTM模型的訓練損失曲線的收斂速度最快且更接近于0。該結果表明,通過分別與CNN-LSTM、LSTM模型進行比較,TimeGAN-CNN-LSTM模型具有更低的均方誤差,其預測結果更為準確。
為了進一步驗證TimeGAN-CNN-LSTM模型對水質預測的優越性,可對比TimeGAN-CNN-LSTM與CNN-LSTM、LSTM模型。使用訓練集和驗證集來確定模型,將測試集輸入到模型中得到預測值,并使用MAE、RMSE、R2統計指標對模型進行評估和比較。不同模型的預測性能對比結果如表1所示。

表1 不同模型的預測性能對比結果


圖5 驗證集在不同模型下的預測結果
測試集在不同模型下的預測結果如圖6所示。

圖6 測試集在不同模型下的預測結果
由圖5、圖6可知,與CNN-LSTM、LSTM模型相比,本文采用基于TimeGAN-CNN-LSTM方法的水質預測模型結果更接近目標值,說明該模型具有更好的泛化性能。
