王志勃,姜仲秋,張天舒
(江蘇電子信息職業學院,江蘇淮安 223001)
白馬湖[1]是江蘇省十大湖泊之一,是國家南水北調東線上游重要的過境湖泊,也是淮安市中心城區第二飲用水源地,近年來隨著城市污染程度加劇,白馬湖的水質污染問題愈發嚴重。而更快更精準地進行水質預測,是管理水資源和預防水污染的基礎,早期的研究者們使用一些統計學的方法來進行水質預測,例如,馬景等人[2]使用馬爾科夫模型改進的GM(1,1)模型對南四湖水質進行預測,改進后的結果比原來的方法精度提高。李娜等人[3]使用灰色系統模型結合新陳代謝原理預測水質的情況。這些方法都依賴數據的平穩性,而實際的水質都是非線性的,因此這些方法普遍預測精度不高。之后的很多研究者使用機器學習的方法來進行水質預測,LI等人[4]評估和比較多元線性回歸(MLR)、反向傳播神經網絡(BPNN)和支持向量機(SVM)在基于多個水質參數的DO濃度預測中的性能,并用粒子群優化算法(PSO)優化的模型來進行校準和測試,結果表明PSO-BPNN和PSO-SVM比線性回歸方法具有更好的預測性能。劉潔等人[5]建立了一個遺傳神經網絡的水質預測模型,完成了對河水水質的實時預測。機器學習的方法雖然在一定程度上提高了水質預測的精度,但是傳統的機器學習需要人工設計專門的特征,而影響水質預測的特征相對復雜多樣,這導致機器學習的方法難以進一步提高精度。近年來深度學習逐漸流行,在各種預測任務中取得了良好的效果,在深度學習中,長短時記憶神經網絡(LSTM)[6]常用來處理時間序列的問題,但由于影響水質預測的特征相對復雜多樣,這導致單一的LSTM的模型難以取得良好的效果,而卷積神經網絡(CNN)可以自動地提取數據的特征,無需人工進行干預。因此本文結合CNN與LSTM各自的優點,先使用CNN來自動地提取水質的復雜特征,把CNN提取的特征變成特征向量輸入到LSTM網絡中進一步進行數據長短時特征提取,進而進行水質的預測,最后把本文的方法在白馬湖水質數據上進行預測,結果表明本文的方法比其他預測方法擁有更好的效果。
卷積神經網絡是深度學習中的最有效的模型之一,卷積神經網絡的卷積層具有局部連接,權值共享等優點,池化層可以在保留圖像特征的同時防止過擬合。研究者們受到卷積神經網絡在二維圖像的識別和檢測任務中優異的表現的啟發,他們嘗試把卷積神經網絡用在時間序列的數據特征提取當中,并取得了同樣優異的效果。研究者使用一維的卷積神經網絡的卷積核作為窗口,利用滑動窗口算法在時間序列數據上就行特征提取,與二維圖像操作相似,時間序列數據與卷積神經網絡同樣是采用卷積的計算方法。從卷積層得到的特征進入池化層,進一步過濾數據中對預測沒有用的噪聲信息以此優化最終的效果。
長短時記憶神經網絡(LSTM)是循環神經網絡(RNN)的一種變體,它可以解決傳統的循環神經網絡中存在的一些問題例如,梯度爆炸或梯度消失。LSTM與傳統的RNN不同,LSTM的優點是可以根據上下文信息改變自循環網絡的權重。系統中增加了三個選通單元結構,即外部輸入門單元、遺忘門單元和輸出門單元。LSTM網絡的相關公式如下所示。

其中it,ft和ot分別代表輸入門單元,遺忘門單元和輸出門單元Wih,Wfh,Woh,Wgh代表模型的權重,bi,bf,bo和bg代表偏置。
卷積神經網絡(CNN)和LSTM網絡雖然各自都能都單獨地完成水質的預測任務,但由于CNN對時間順序的特征并不敏感,這就導致最終的檢測結果并不理想,而LSTM網絡雖然對時間序列敏感,但若只是單獨地使用LSTM網絡進行水質預測會引入較多不相干的特征,還可能受到時間序列數據中較大或較小值的影響,同樣會影響最終的預測結果。因此,本文使用CNN與LSTM網絡相融合的一個結構(CNN-LSTM),先利用CNN強大的特征提取能力來提取湖水水質的特征,再把特征輸入到LTSM當中進一步整合預測最后的結果。
本文構建的CNN-LSTM網絡結構如圖1所示,首先輸入白馬湖水質數據,然后先通過一個卷積層自動提取水質時間特征序列,該特征的表達能力遠遠大于原始的數據。之后把卷積層提取的特征送入最大池化層,最大池化層在減少參數量的同時保證了特征的不變性,最大池化層出來的特征就是CNN最終處理完成的特征,之后把特征作為輸入,送入一個LSTM網絡進行進一步的時許特征提取,最后通過一個Dense層做最后的預測。

圖1 CNN-LSTM的網絡結構圖
表一為CNN-LSTM對應的參數設置,本文的卷積層使用了一個3×1的卷積核,其神經元個數為128。最大池化層使用了一個2×1的池化核。LSTM使用的是64的神經元。Dense使用了1個神經元。

表1 CNN-LSTM參數
本研究主要白馬湖所提供的湖水數據自動監測周報作為數據源,對此數據的處理過程如下。
1)篩選目標數據。從白馬湖的湖水自動檢測站得到4種水質數據,其中包括水體pH值、氨氮濃度、高錳酸鹽指數、溶解氧(DO),而研究者們發現水質中溶解氧含量是判斷水質優劣程度的最重要的依據,因此本文使用白馬湖水質數據中的溶解氧作為模型訓練和最終預測的結果,根據溶解氧預測結果來判斷水質的具體情況。
2)數據分割。把樣本數據按照7∶1∶2分解成訓練集、測試集和驗證集,70%的數據用來CNN-LSTM的模型訓練,10%的數據用在訓練過程的驗證階段,20%的數據用來做最后模型的驗證。
本文所有實驗均使用均方根誤差(RMSE)和決定系數(R2)來驗證各種模型的預測結果,具體如下。
RMSE計算公式如下。

其中mN指的是數據的數量,Yi指的是預測值的結果,Xi指的是實際的結果,RMSE越小,預測精度越高。
決定系數(R2)為回歸平方和總偏差平方和的比率公式如下。

其中Yi指的是預測值的結果,Xi指的是實際的測試結果,Zi指的是實際結果的平均值,R2越接近1,預測精度越高。
3.3.1 實驗參數
本文采用pytorch深度學習框架實現相關的實驗,在訓練模型時使用Adam優化器和0.001的學習率學習150個epoch之后得到了最后的模型。
3.3.2 對比實驗
為了驗證本文提出方法的有效性,我們對本文提出的方法與LSTM和CNN進行了驗證集的實驗對比,其結果如表2所示。由表2可以看到CNN-LSTM的RMSE達到了0.41,比LSTM下降了4%,比CNN下降了6%。CNN-LSTM的R2比CNN和LSTM提高了1%,因此本文提出的方法總體性能高于單獨使用LSTM或者CNN,這是由于本文提出的方法先使用CNN可以自動提取復雜的溶解氧特征信息,之后傳入LSTM進一步分析得到結果,這樣融合各個網絡優勢的方法可以進一步提高預測的精度。綜上所示,本文提出的CNN-LSTM模型可以較為準確地預測出未來一段時間內的水質數值,可以為治理白馬湖水質提供幫助。

表2 三種模型性能對比
精準的湖水水質預測結果對于預防和管理白馬湖水質問題非常重要。本文通過對白馬湖水質數據進行分析之后得到水質溶解氧數據作為輸入數據,先對它們進行歸一化處理,然后構建一個融合CNN和LSTM相融合的CNN-LSTM模型對水質數據進行預測。首先在其訓練集上進行訓練從而得訓練好的模型,然后使用訓練好的模型對驗證集的數據進行預測結果的驗證,最終的結果比單獨使用CNN或LSTM網絡更加有效。