劉晶晶,莊 紅,鐵治欣,程曉寧,丁成富
1(浙江理工大學 信息學院,杭州 310018)
2(聚光科技(杭州)股份有限公司,杭州 310052)
地表水是人類用水的重要來源之一,人類每天生活用的自來水就是地表水經過加工后提供的,由于工業廢水排放和人為生活廢水亂排等原因,導致地表水污染嚴重,水體中的氮、磷等元素含量增加,水污染問題已經嚴重破壞了生態環境[1].為了有效的進行地表水水質管理和保護,目前很多專家和學者積極進行水質污染防控的研究,同時也迫切需要對地表水監測因子進行分析預測,以便提供多方面的管理決策.
目前常用水質監測因子的預測方法有人工神經網絡、深度循環神經網絡、灰色預測模型等等,吳旭東、李映曦等[2]人利用基于徑向基的RBF神經網絡算法建立水質評價預測模型,實驗結果預測準確率較高;楊祎玥等[3]人利用深度循環神經網絡的時間序列預測模型結合小波變換方法,采用時間進化反向傳播算法(BPTT),更新網絡權值進行訓練,減少了水文序列預測的滯后;張青、袁宏林等[4,5]人建立BP神經網絡水質預測模型對水質相關指標進行預測,取得了良好的效果;李宣諭等[6]人利用動態灰色可修正模型以一定的權重對不同預測模型的預測值加權進行水質預測,得到了較好的結果;這些算法雖然各有優點,但是在輸入數據的噪音處理以及算法模型對時間序列的數據分析上還有欠缺,LSTM神經網絡具有選擇記憶的特點,任君等[7]人用LSTM做了關于股票指數預測的研究,得到了良好的結果,通過查找相關文獻發現利用LSTM對地表水水質的預測鮮有報道,因此,提出了一種基于KSimilarity降噪的LSTM神經網絡水質多因子預測方法,本算法能夠降低數據噪聲,提高預測準確度.在相同的條件下,利用某站點地表水水質監測數據進行仿真對比實驗,證實了所提出預測模型的優越性.
長短期記憶[8,9](Long Short-Term Memory neural network,LSTM)是一種特殊形式的遞歸神經網絡(Recurrent Neural Networks,RNN),它的選擇性記憶功能和其單元內部的門控(輸入門、輸出門、遺忘門)結構改進了遞歸神經網絡,其基本思想是神經元受控于多個門控,以此來克服神經網絡中的梯度消失,能夠深入挖掘時間序列中的固有規律.LSTM神經網絡的每個細胞有三個門控,輸入門(Input gate)、遺忘門(Forget gate)和輸出門(Output gate),其模塊結構如圖1所示,圓圈表示逐點運算,矩形表示神經網絡層.

圖1 LSTM門控模塊結構圖
設it,ft,ot分別表示在t時刻輸入門的值、遺忘門的值和輸出門的值,則:

其中,xt表示t時刻輸入數據,ht1表示t-1時刻LSTM單元輸出值,Ct1表 示t-1時刻記憶單元值,Ct表示t時刻記憶單元值;W?Δ為權重系數(例如Wxi表示對應輸入數據和輸入門之間的權值);b?為偏置向量(例如bi為 輸入門的偏置向量).σ為sigmoid函數,取值為[0,1],當取0值時表示門控關閉,取1值時表示門控打開,其公式如式(4).
Ct表示當前候選記憶單元值,計算公式如式(5)所示,計算當前時刻記憶單元狀態值Ct的迭代公式如式(6)所示,tanh為雙曲正切激活函數,其計算公式如(7)所示.

其中,Wxc為對應輸入數據和記憶單元之間的權值,Whc為隱藏層和記憶單元之間的權值.
設有n(n>0)維輸入x1,x2,···,xn,m(m>0)維網絡的隱藏層狀態序列h1,h2,···,hm,k(k>0)維輸出序列y1,y2,···,yk,yt是t時刻LSTM單元的輸出,計算公式如式(8)所示.

本文以某站點的地表水水質監測數據為研究對象,由于有多種因子對水質有影響,因此在預測水質中的某一因子時,其他的因子對其含量的變化影響也不容小覷,因此采用LSTM構建水質多因子預測模型.
所謂的多因子預測,是指在同一時刻的水質中含有的多種監測因子的指標數據是受其他因子相互作用和影響的,利用多個因子的相互作用來共同預測下一時刻的某一因子的指標數據.把每個因子的數值當做高維空間對應坐標軸中的坐標,多個因子共同組成高維空間中的向量.
根據地表水環境質量標準以及水質因子相互影響的因素,最終選取水溫(x1)、PH(x2)、氨氮(x3)、總磷(x4)、高錳酸鹽指數(x5)、溶解氧(x6)、總鉛(x7)、電導率(x8)共8個指標作為模型輸入參數,同時,將這8個指標作為輸出參數水溫(y1)、PH(y2)、氨氮(y3)、總磷(y4)、高錳酸鹽指數(y5)、溶解氧(y6)、總鉛(y7)、電導率(y8).從某地表水水質監測站點采集2017年10月12日到2018年3月1日地表水水質監測因子相關數據,采集時間周期為4個小時采樣一次,所選擇數據樣本部分數據如表1所示.

表1 部分樣本數據信息表
由于監測站點采集的數據因子指標范圍較大,數據參差不齊,并且數據樣本由八個不同指標組成,這些指標具有不同的量綱和量級.為了保證時間序列數據趨于穩定以及模型的高效性,首先對數據進行歸一化處理,將其轉換到[0,1]之間.本文采用最大值最小值歸一化方法進行處理,公式如式(9):

公式中xmax和xmin為同一水質監測因子的樣本數據的最大值和最小值,xt為原始樣本數據,x0t為歸一化后的數值.
K-Similarity降噪法是本文提出的一種應用于高維空間向量簇中判別噪聲的方法,它是通過將N個數據對象劃分為K個類簇,K的意義類似于K-Means算法[10,11]中的聚類數目;在每個類簇中將向量余弦相似度[12,13](即Similarity)作為噪聲判別指標去除噪聲.若輸入類簇數目為K、數據對象為N則具體流程如下:
(1)將樣本中數據劃分為K個類簇,計算每個類簇的質心[14](即重心向量,是衡量向量簇中的向量偏離度或相似度的重要指標)作為類簇中心.
(2)對每個類簇,計算類簇內各向量到其質心的余弦相似度.
(3)根據向量余弦相似度的大小來判別噪聲.
通過參考相關文獻資料[15,16]發現,近似簡諧波變化規律的數據在降噪過程中能更容易的將偏差過大的向量分辨出來,本文所選用的地表水水質監測數據也呈現出隨著時間有近似周期變化的規律.因此利用本文提出的K-Similarity降噪法對LSTM預測模型的輸入數據進行降噪.
設LSTM中N個樣本數據按照時間t1,t2,···,tn排列,并且根據batch_size(即批量大小)劃分成數據段進行輸入,每個數據段中的數據是由time_step(即窗口大小)決定的.規定K-Similarity降噪法的每個類簇的輸入數量設為程序中LSTM的訓練集初始化參數time_step的值,即每個向量簇的大小是time_step.也即是t1,t2,···,ttime_step對應的數據為第一個類簇,t2,t3,···,ttime_step+1對應的數據為第二個類簇,tntime_step+1,tntime_step+2,···,tn對應的數據為最后一個類簇,依照上述方法將全部樣本數據劃分為多個類簇.因此,類簇數目即K值為(N-time_step+1).
為了使降噪更加高效穩定,首先將輸入向量進行單元化(將原有的高維空間向量長度歸一),然后再計算向量簇的質心,計算公式如式(10)和式(11),為空間向量,是向量簇的質心,是向量簇中的向量,n是向量簇中向量的數量.

數據中的噪聲向量往往與相鄰或者相近的數據呈現較大差異,在高維空間中主要體現在噪聲向量與重心向量之間的夾角差距遠遠大于其他多數非噪聲向量與重心向量之間的夾角的差距.若兩個向量的交角越小,余弦值就越大,兩個向量也就越相似.余弦相似度計算公式如式(12),其中和是n維空間的兩個向量,θ是這兩個向量的夾角.
利用K-Similarity法降噪的具體步驟如下:
(1)確定類簇數目K,計算類簇質心作為類簇中心.
(2)對于每個向量簇,按照1)-3)進行計算.
1)根據公式(12)計算簇內各對象到其質心的余弦相似度(即降噪有效性指標).
2)按照余弦相似度升序排序,計算最小值j和次小值k的相對誤差r=jjkj/jjj.
3)人工設定一個閾值λ,如果r不大于λ,則不做改變;如果r大于λ ,則將原向量定義為噪聲,若被判定是噪聲,那么將噪聲向量在時間序列中的相鄰兩向量(即數組中噪聲向量的前后相鄰向量)的平均向量作為噪聲的替代向量,計算公式如式(13).

(3)當所有數據類簇完成降噪即去除每個類簇中最大的噪聲向量時結束.
K-Similarity降噪的LSTM水質多因子預測模型主要可分為三步:
(1)數據采集預處理部分,首先對大量數據樣本進行整合處理,將無用數據和缺失數據刪除,按照時間先后進行排列作為實驗的有效數據進行分析.
(2)K-Similarity降噪部分,見上一節.
(3)LSTM算法部分,通過降噪后的訓練數據進行模型訓練,選擇Adam算法[17]進行優化,設置學習率來更新權重減少損失,最后使用測試集數據進行驗證.模型流程圖如圖2所示.
本文選取均方誤差MSE(Mean Squared Error)來評價預測性能,均方誤差是指參數估計與參數真值之差平方的期望值,計算公式如(14)所示,yt是真實數據值,pt是預測值.


圖2 模型流程圖
實驗平臺和環境: 實驗所使用計算機配置如下: 處理器為2.3 GHz Intel Core i5,內存為8 GB,操作系統為macOS High Sierra 10.13.2;程序設計語言為Python2.7.10;集成開發環境為Pycharm Professional 2016.2.3;程序中TensorFlow由1.6.0版本實現、scikit-learn由0.19.1版本實現.實驗相關參與設置:LSTM時間步長time_step為20,隱層單元數為10,批量大小batch_size為60,學習率為0.001.針對獲取的783個數據樣本,將前743個作為模型訓練數據,后40個作為模型驗證數據,進行預測.
為了驗證本文提出的預測模型的有效性,選取BP神經網絡、RNN、傳統的LSTM神經網絡等預測模型進行對比實驗.四個預測模型均在相同的實驗平臺和環境下進行實驗,對于BP神經網絡采用三層神經網絡,11個隱層單元,學習率為0.001;對于RNN采用10個隱層單元,學習率為0.001,時間周期為20,激活函數采用relu函數;對于本文K-Similarity降噪的LSTM和傳統的LSTM均采用Adam隨機梯度下降算法進行優化,損失函數使用均方誤差MSE進行評價.為了消除一次實驗結果的偶然性,對每種算法模型進行50次實驗,計算出相應的誤差.實驗對每個模型均進行了100次迭代,并且在每次迭代完成后計算其均方誤差,并繪制出誤差對比結果圖,如圖3所示.從圖3中可以看出,四種模型隨迭代次數均方誤差的變化情況,本文通過K-Similarity降噪的LSTM神經網絡模型與BP神經網絡、RNN和傳統的LSTM神經網絡模型相比誤差明顯降低.

圖3 誤差對比結果圖
為了更加直觀的看出K-Similarity降噪后的算法在預測效率上的提高,以及模型對于每個因子的預測效果,分別選取測試集的12個數據,繪制八個因子的實際數據與預測數據對比圖,如圖4至圖11.從圖中可以看出,降噪后的算法模型的預測結果曲線和實際數值更加吻合,與實際情況更加符合,預測結果更加準確.

圖4 水溫(x1)預測結果圖

圖5 PH(x2)預測結果圖

圖6 氨氮(x3)預測結果圖

圖7 總磷(x4)預測結果圖
根據測試集數據計算每個因子的平均相對誤差E,計算公式如式(15)所示.

每個因子的平均相對誤差計算結果如表2所示,從表中可知,本文提出的算法預測模型平均相對誤差相比于傳統的LSTM模型大大降低.水溫平均相對誤差比之前降低了51.4%,PH平均相對誤差比之前降低了64.1%,氨氮平均相對誤差比之前降低了65.3%,總磷平均相對誤差比之前降低了55.9%,高錳酸鹽指數平均相對誤差比之前降低了79.4%,溶解氧平均相對誤差比之前降低了44.9%,總鉛平均相對誤差比之前降低了84.5%,電導率平均相對誤差比之前降低了84.2%.

圖8 高錳酸鹽指數(x5)預測結果圖

圖9 溶解氧(x6)預測結果圖

圖10 總鉛(x7)預測結果圖

圖11 電導率(x8)預測結果圖
從以上實驗結果可知,本文提出的預測模型均方誤差最小,并且每個預測因子的平均相對誤差均明顯降低,預測結果更加準確.因此本文提出的模型可以應用到地表水水質因子預測中,為地表水水質預測提供參考.

表2 預測因子平均相對誤差表(%)
本文首先針對地表水水質預測的多因子影響因素建立高維空間坐標體系,利用最大值最小值歸一化方法對監測站點水質因子數據進行數據預處理,簡化了數據的波動和復雜性,然后將K-Similarity降噪法與LSTM算法結合,通過計算高維空間中向量的余弦相似度來去除噪聲,最后進行訓練和預測.實驗結果表明:本文提出的預測模型的均方誤差最小,預測結果曲線與實際數據更加吻合,平均相對誤差明顯降低,預測結果比BP神經網絡、RNN和傳統的LSTM神經網絡模型更優,模型預測更加準確.在地表水水質多因子預測方面能夠取得較好的效果,對于水質預測具有重要的實踐意義.基于目前的研究,后續的主要研究工作是尋求更有效的參數優化方法.