顧乾暉,曾 斌,涂振宇
(1.南昌工程學(xué)院 信息工程學(xué)院,江西 南昌 330099;2.江西省防汛信息中心,江西 南昌 330096)
水質(zhì)預(yù)測(cè)工作是根據(jù)采集到的歷史水質(zhì)監(jiān)測(cè)數(shù)據(jù),通過建模等手段來預(yù)測(cè)水質(zhì)的變化趨勢(shì),來達(dá)到掌握水質(zhì)現(xiàn)狀以及發(fā)展趨勢(shì)的目的[1]。水質(zhì)預(yù)測(cè)精度的提高對(duì)于水環(huán)境質(zhì)量的評(píng)價(jià)、水資源管理制度的制定,以及水污染監(jiān)測(cè)與控制系統(tǒng)的規(guī)劃具有重大意義[2]。
目前,水質(zhì)預(yù)測(cè)的方法主要有模糊綜合分析法[3]、支持向量機(jī)法[4]、灰色預(yù)測(cè)法[5]和人工神經(jīng)網(wǎng)絡(luò)法[6]等。模糊綜合評(píng)價(jià)法需要對(duì)各種因子進(jìn)行模糊化加權(quán)賦值處理,計(jì)算精度高但過程復(fù)雜,運(yùn)行時(shí)間長(zhǎng)?;疑A(yù)測(cè)法存在只適合水質(zhì)短期預(yù)測(cè)不適合長(zhǎng)期預(yù)測(cè)的缺點(diǎn)[7],并且灰色預(yù)測(cè)法對(duì)復(fù)雜數(shù)據(jù)的預(yù)測(cè)效果較差[8]。近年來,隨著人工智能的迅速發(fā)展,越來越多的學(xué)者把神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)運(yùn)用到水質(zhì)預(yù)測(cè)和評(píng)價(jià)模型當(dāng)中。劉紅梅[9]等運(yùn)用最小二乘向量回歸模型去預(yù)測(cè)水質(zhì),實(shí)驗(yàn)結(jié)果表明,大大降低了算法的計(jì)算復(fù)雜度并提高了水質(zhì)預(yù)測(cè)的精確度。然而SVM對(duì)參數(shù)選取具有盲目性,有時(shí)候求出的模型并不是最優(yōu)解[10]。張青等[11]建立了BP神經(jīng)網(wǎng)絡(luò)水質(zhì)預(yù)測(cè)模型對(duì)水質(zhì)相關(guān)指標(biāo)進(jìn)行預(yù)測(cè),取得了良好的效果。何鈺[12]等把BP神經(jīng)網(wǎng)絡(luò)應(yīng)用于水質(zhì)評(píng)價(jià)和水質(zhì)預(yù)測(cè)之中,并與其他模型對(duì)比。結(jié)果表明,BP神經(jīng)網(wǎng)絡(luò)能降低計(jì)算復(fù)雜度,結(jié)果更加客觀。BP神經(jīng)網(wǎng)絡(luò)雖然在水質(zhì)預(yù)測(cè)方面取得了一定的成果,但是BP神經(jīng)網(wǎng)絡(luò)存在易陷入局部最優(yōu)和收斂速度慢的問題[13],并且BP神經(jīng)網(wǎng)絡(luò)在時(shí)間序列的數(shù)據(jù)分析上還存在著欠缺[14]。
水質(zhì)數(shù)據(jù)是以多元時(shí)間序列形式存在的數(shù)據(jù)集。在進(jìn)行水質(zhì)預(yù)測(cè)時(shí),應(yīng)該考慮時(shí)間序列問題。在處理時(shí)序問題上,由于LSTM神經(jīng)網(wǎng)絡(luò)獨(dú)特的網(wǎng)絡(luò)結(jié)構(gòu),相對(duì)于其他傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),LSTM神經(jīng)網(wǎng)絡(luò)更易快速收斂,更能得到最優(yōu)模型。2017年,Wang[15]首次將 LSTM 引入水質(zhì)預(yù)測(cè)領(lǐng)域,并證明了其在水質(zhì)預(yù)測(cè)領(lǐng)域的可行性。李彥杰[16]等提出了基于 LSTM 模型的海洋水質(zhì)預(yù)測(cè),通過將SVR和LSTM 兩種算法做了對(duì)比發(fā)現(xiàn)LSTM算法表現(xiàn)出了較好的擬合效果。但是在實(shí)際生產(chǎn)情況下,影響水質(zhì)的因素過多,水質(zhì)數(shù)據(jù)往往會(huì)呈現(xiàn)出不平穩(wěn)、波動(dòng)性強(qiáng)、噪聲大等現(xiàn)象,這使得傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型不能取得理想效果。
變分模態(tài)分解(VMD,Variational Mode Decomposition)模型能將復(fù)雜的、非線性、不平穩(wěn)的序列數(shù)據(jù)分解為多個(gè)相對(duì)平穩(wěn)、頻率逐級(jí)變化的本征模態(tài)函數(shù)(BLIMF,Band-Limited Intrinsic ModeFunctions),適用于處理不平穩(wěn)數(shù)據(jù)[17]。
因此本文提出一種利用VMD分解水質(zhì)數(shù)據(jù)中的高錳酸鹽數(shù)據(jù),并通過粒子群(PSO)優(yōu)化LSTM神經(jīng)網(wǎng)絡(luò)模型的水質(zhì)高錳酸鹽預(yù)測(cè)方法,通過利用多種模型對(duì)河南南陽站點(diǎn)的水質(zhì)數(shù)據(jù)進(jìn)行仿真對(duì)比實(shí)驗(yàn),以驗(yàn)證本文提出的VMD-PSO-LSTM模型的有效性和合理性。
LSTM神經(jīng)網(wǎng)絡(luò)是從RNN神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上改進(jìn)而來。LSTM神經(jīng)網(wǎng)絡(luò)中的門控單元(輸入門、輸出門、遺忘門)使得模型具有較長(zhǎng)時(shí)間的“記憶功能”,因此LSTM神經(jīng)網(wǎng)絡(luò)適用于長(zhǎng)時(shí)間非線性序列預(yù)測(cè)問題,LSTM結(jié)構(gòu)如圖1所示。
圖1 LSTM結(jié)構(gòu)圖
模型的輸入數(shù)據(jù)分別為t時(shí)刻的輸入數(shù)據(jù)xt,t-1時(shí)刻的記憶值ct-1和t-1時(shí)刻的LSTM的輸出值ht-1,輸出數(shù)據(jù)分別為t時(shí)刻的記憶值ct-1和LSTM輸出值ht。
“遺忘門”通過ft保留和丟棄上一時(shí)刻的記憶單元的信息來影響當(dāng)前時(shí)刻的細(xì)胞狀態(tài)。ft如式(1)所示。
ft=σ(wf.[ht-1.xt]+bf),
(1)
式中σ為sigmoid激活函數(shù);bf為偏置頂;wf為權(quán)重矩陣。
“輸入門”通過激活函數(shù)sigmoid將變量控制在[0,1]之間,并輸出it,如式(2)所示:
it=σ(wf.[ht-1.xt]+bf).
(2)
“遺忘門”和“輸入門”的變化決定了細(xì)胞狀態(tài)ct的變化,如式(3)~(4)所示:
gt=tanh(wc.[ht-1.xt]+bc),
(3)
ct=ftct-1+itgt.
(4)
“輸出門”用來控制當(dāng)時(shí)時(shí)刻細(xì)胞狀態(tài)值的輸出,如式(5)~(6)所示
Qt=σ(wQ.[ht-1.xt]+bQ),
(5)
ht=Qt×tanh(ct).
(6)
VMD模型是Dragomiretskiy和Zosso于2014年提出的一種自適應(yīng)、完全非遞歸的模態(tài)變分和信號(hào)處理的方法,它根據(jù)預(yù)設(shè)的模態(tài)數(shù)將信號(hào)分解為具有不同中心頻率的有限帶寬,采用交替方向乘子法,不斷更新各模態(tài)及其中心頻率,逐步將各模態(tài)解調(diào)到相應(yīng)的基頻帶,并將各個(gè)模態(tài)及其相應(yīng)的中心頻率提取出來,最終得到了具有不同中心頻率的各個(gè)分量[18]。
VMD的本質(zhì)是VMD模型的構(gòu)建和求解變分問題,其具體過程如下[19]:
(1)通過希爾伯特變換計(jì)算每個(gè)模態(tài)uk(t)的分析信號(hào)以獲取單邊頻譜;
(2)對(duì)于每個(gè)模態(tài)解析到的分析信號(hào),通過與對(duì)應(yīng)的中心頻率指數(shù)項(xiàng)e-jwkt進(jìn)行混疊,將各模態(tài)的頻譜移位到基帶上;
(3)根據(jù)梯度平方準(zhǔn)則和高斯平滑度計(jì)算分析信號(hào)的梯度平方L2范數(shù),來估計(jì)出每個(gè)模態(tài)的寬帶,其變分約束模型為
(7)
(8)
(4)為將上述約束變分公式變成無約束問題,這里引入二次罰函數(shù)c和Lagrange乘子λ:
(9)
VMD運(yùn)用交替方向乘子法更新各模態(tài)變量uk(t)和對(duì)應(yīng)的中心頻率ωk來求解出式(7)中的最優(yōu)解,其中模態(tài)變量更新方法如式(10)所示:
(10)
中心頻率更新公式如下:
(11)
本文提出的VMD-PSO-LSTM模型流程圖具體如圖2所示:
Step1:缺失值處理。在水質(zhì)監(jiān)測(cè)中,由于設(shè)備失靈或者人為原因會(huì)導(dǎo)致采集數(shù)據(jù)缺失,因此需要提前對(duì)樣本數(shù)據(jù)進(jìn)行預(yù)處理。處理樣本缺失值一般是剔除樣本和填補(bǔ)缺失值,但是在時(shí)序序列樣本中,采用剔除缺失值的方法會(huì)導(dǎo)致時(shí)序中斷,不利于訓(xùn)練和預(yù)測(cè)。所以本文采用一般線性插值法來填充缺失數(shù)據(jù)。
Step2:為了提高模型的收斂速度和計(jì)算精度,需要對(duì)水質(zhì)中高錳酸鹽樣本數(shù)據(jù)進(jìn)行最大最小值歸一化處理。
Step3:將歸一化后的高錳酸鹽數(shù)據(jù)通過VMD進(jìn)行模態(tài)分量分解為k個(gè)分量。
Step4:將每個(gè)高錳酸鹽模態(tài)分量數(shù)據(jù)作為對(duì)應(yīng)的LSTM神經(jīng)網(wǎng)絡(luò)模型的輸入數(shù)據(jù),輸入數(shù)據(jù)表達(dá)式見式(12):
(12)
式中x分別表示高錳酸鹽數(shù)據(jù);i為(1~6);xi表示為第i個(gè)高錳酸鹽模態(tài)分量。
Step5:利用粒子群(PSO)優(yōu)化LSTM模型。選取均方誤差MSE作為評(píng)價(jià)標(biāo)準(zhǔn)和各粒子的適應(yīng)度值,得出各個(gè)分量對(duì)應(yīng)最優(yōu)LSTM模型的神經(jīng)元個(gè)數(shù)m和學(xué)習(xí)率lr。
Step6:將各個(gè)分量最優(yōu)LSTM模型進(jìn)行水質(zhì)中的高錳酸鹽預(yù)測(cè),得出各個(gè)分量對(duì)應(yīng)的高錳酸鉀鹽預(yù)測(cè)值Dn。
Step7:把每個(gè)分量對(duì)應(yīng)的高錳酸鉀鹽預(yù)測(cè)值Dn代入式(13),得到最終高錳酸鉀鹽預(yù)測(cè)值D。
D=D1+D2+…+Dn.
(13)
圖2 模型流程圖
實(shí)驗(yàn)所使用計(jì)算機(jī)配置如下:處理器為(英特爾)Intel(R)Core(TM)i5-8400 CPU @ 2.80GHz,顯卡為 NVIDIA GeForce GTX 1050 Ti,內(nèi)存為16 GB,操作系統(tǒng)為windows10;程序設(shè)計(jì)語言為Python3.7;集成開發(fā)環(huán)境為Anaconda和Visual Code;程序中TensorFlow由2.1.0版本實(shí)現(xiàn),scikit-learn由0.2.0版本實(shí)現(xiàn)。
所用的數(shù)據(jù)是國(guó)家環(huán)境監(jiān)測(cè)總局的河南南陽站2020年5月至2020年10月的水質(zhì)數(shù)據(jù),水質(zhì)數(shù)據(jù)每4 h更新一次,一天共6組數(shù)據(jù)。按照GB3838—2002《地表水環(huán)境質(zhì)量標(biāo)準(zhǔn)》中的水質(zhì)評(píng)價(jià)標(biāo)準(zhǔn),選取前7個(gè)時(shí)間段內(nèi)高錳酸鹽數(shù)據(jù)(1組數(shù)據(jù),每組7個(gè)數(shù)據(jù))作為水質(zhì)預(yù)測(cè)模型的輸入數(shù)據(jù),同時(shí)輸出下個(gè)時(shí)間段的高錳酸鹽數(shù)據(jù),模型輸入輸出示意圖如圖3。同時(shí)將訓(xùn)練集與測(cè)試集分別劃分為90%與10%。
圖3 模型輸入輸出示意圖
本文采用一般線性插值法來填充缺失數(shù)據(jù)。即:
(14)
式中xk和xk+j分別是k和k+j時(shí)刻的數(shù)值,xk+i為k+i時(shí)刻的缺失值的取值。
由于水文數(shù)據(jù)類型不同,為了提高模型的收斂速度和計(jì)算精度,需要對(duì)水質(zhì)樣本數(shù)據(jù)進(jìn)行歸一化處理。本文采用最大值最小值歸一化。即:
(15)
式中ximax表示變量i的最大值;ximin表示變量i的最小值。
為了使LSTM水質(zhì)模型能更好的識(shí)別水質(zhì)中高錳酸鹽的變化規(guī)律,降低預(yù)測(cè)的難度,對(duì)水質(zhì)數(shù)據(jù)中的高錳酸鉀鹽數(shù)據(jù)進(jìn)行VMD分解。VMD算法的參數(shù)包括:模態(tài)數(shù)k、懲罰因子α、保真度系數(shù)τ及收斂停止條件ε,其中模態(tài)數(shù)k對(duì)VMD分解的結(jié)果影響較大,模態(tài)數(shù)k過大會(huì)引起模態(tài)混疊現(xiàn)象,反之模態(tài)數(shù)k過小會(huì)出現(xiàn)模態(tài)分量欠分解[20]。
k值通過中心頻率的方法來確定,當(dāng)不同模態(tài)個(gè)數(shù)k的最后一層IMF分量中心頻率保持相對(duì)穩(wěn)定時(shí),可認(rèn)為此時(shí)k取得最佳值[21]。本文分別設(shè)置模態(tài)數(shù)k=3、4、5、6、7、8得到各個(gè)模態(tài)分量的中心頻率如表1所示。從表1中可以看出,在k>5后各個(gè)模態(tài)分量的最后一層IMF的中心頻率保持穩(wěn)定,因此本文選取模態(tài)數(shù)k=6,通過VMD處理得到的8個(gè)不同頻率的尺度的平穩(wěn)模態(tài)分量如圖4所示。
表1 各個(gè)模態(tài)分量的中心頻率
圖4 VMD處理獲得的模態(tài)分量
將VMD變分分解的5個(gè)高錳酸鹽模態(tài)分量分別作為L(zhǎng)STM模型的輸入,同時(shí)輸出高錳酸鹽數(shù)據(jù)。在傳統(tǒng)LSTM神經(jīng)網(wǎng)絡(luò)中初始參數(shù)設(shè)定需要依靠人為的經(jīng)驗(yàn)來主觀設(shè)定初始參數(shù),而不同的參數(shù)也會(huì)導(dǎo)致模型的訓(xùn)練速度、誤差、擬合效果差異較大。
粒子群優(yōu)化算法(PSO:Particle swarm optimization)是一種群智能優(yōu)化算法,粒子群的優(yōu)化是將種群中的個(gè)體當(dāng)成多維搜索空間的粒子,每個(gè)粒子都有一個(gè)由目標(biāo)函數(shù)決定的適應(yīng)度值,在每一次迭代中,每一個(gè)粒子通過尋找個(gè)體最優(yōu)位置和全局最優(yōu)位置來不斷更新自己的位置和速度,直至到達(dá)尋優(yōu)條件[22]。因此本文通過粒子群優(yōu)化(PSO)算法自動(dòng)迭代尋優(yōu)LSTM模型兩個(gè)重要參數(shù):神經(jīng)元個(gè)數(shù)(m)和學(xué)習(xí)率(lr),并把預(yù)測(cè)結(jié)果的均方誤差(MSE)作為目標(biāo)函數(shù),MSE如式(16)所示:
(16)
式中yt是真實(shí)數(shù)據(jù),pt是預(yù)測(cè)值。
PSO參數(shù)設(shè)置如下:基本PSO中慣性權(quán)重w=0.8,學(xué)習(xí)因子c1=2,c2=2,迭代次數(shù)為100次,種群數(shù)量pop=30,神經(jīng)元個(gè)數(shù)m取值范圍為[1,50],學(xué)習(xí)率lr取值范圍為[0.0001,0.01]。PSO-LSTM中LSTM模型部分由輸入層、單隱藏層和輸出層組成,經(jīng)過PSO對(duì)LSTM模型以均方誤差(MSE)為目標(biāo)函數(shù)進(jìn)行尋優(yōu)。
為了驗(yàn)證本文提出的VMD-PSO-LSTM預(yù)測(cè)模型的有效性,選取LSTM,PSO-SVR,PSO-LSTM,PSO-BP,VMD-PSO-SVR,VMD-PSO-LSTM等預(yù)測(cè)模型進(jìn)行對(duì)比實(shí)驗(yàn)。各個(gè)對(duì)比模型均在相同的實(shí)驗(yàn)平臺(tái)和環(huán)境下進(jìn)行實(shí)驗(yàn),各對(duì)比模型參數(shù)選擇如表2所示,其中LSTM,BP模型參數(shù)選擇依據(jù)經(jīng)驗(yàn)式(17)選擇。
表2 對(duì)比模型參數(shù)設(shè)置
(17)
式中p和q分別是輸出層和輸入層的節(jié)點(diǎn)數(shù),a為[0,10]之中的一個(gè)數(shù)。
為了更加直觀的看出VMD-PSO-LSTM模型在預(yù)測(cè)精度上的提高,分為畫出這幾對(duì)比種模型在測(cè)試集上的預(yù)測(cè)數(shù)值,并且與真實(shí)數(shù)值進(jìn)行對(duì)比,繪出圖5~7。圖5~6中可以看出,LSTM,PSO-LSTM,PSO-SVR,PSO-BP這幾種模型與真實(shí)數(shù)據(jù)擬合度較差、效果不好。圖7中可以看出,VMD-PSO-LSTM模型更能夠擬合真實(shí)數(shù)據(jù),有著很好的效果。
為了更加精確體現(xiàn)4種模型之間的性能對(duì)比,根據(jù)真實(shí)數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)繪制出這幾種模型在的均方誤差(MSE),均方根誤差(RMSE),平均絕對(duì)誤差(MAE)和相關(guān)系數(shù)(R2)性能對(duì)比表,結(jié)果如表3所示??梢詮谋碇锌闯?,在MSE指標(biāo)上VMD-PSO-LSTM的均方誤差最低,比VMD-PSO-BP下降24%左右。在R2指標(biāo)上,VMD-PSO-LSTM的決定系數(shù)最高,比VMD-PSO-BP提高6%。在RMSE指標(biāo)上,VMD-PSO-LSTM的均方根誤差最低,比VMD-PSO-BP降低22%。在MAE指標(biāo)上,VMD-PSO-LSTM的平均絕對(duì)誤差最低,比VMD-PSO-BP降低20%。
圖5 LSTM與PSO-LSTM模型圖 圖6 PSO優(yōu)化各個(gè)模型對(duì)比圖 圖7 VMD各模型預(yù)測(cè)數(shù)據(jù)圖
表3 各模型的預(yù)測(cè)結(jié)果對(duì)比
本文首先將地表水的水質(zhì)數(shù)據(jù)中高錳酸鹽指數(shù)數(shù)據(jù)通過均值平滑法填補(bǔ)缺失值。為減少數(shù)據(jù)的波動(dòng),把填補(bǔ)后的數(shù)據(jù)通過最大最小值歸一化方法進(jìn)行預(yù)處理。然后將水位數(shù)據(jù)通過VMD進(jìn)行模態(tài)分解成6種分模態(tài),將這6種模態(tài)對(duì)應(yīng)的高錳酸鹽數(shù)據(jù)分別為L(zhǎng)STM模型的輸入,經(jīng)過PSO優(yōu)化和訓(xùn)練后得到6種預(yù)測(cè)值。再將這6種預(yù)測(cè)值進(jìn)行相加,得到最終高錳酸鹽預(yù)測(cè)值。實(shí)驗(yàn)結(jié)果表明本文提出的VMD-PSO-LSTM預(yù)測(cè)模型的誤差最小,與真實(shí)數(shù)據(jù)更加吻合,預(yù)測(cè)模型的性能比PSO-LSTM,PSO-SVR,PSO-BP,VMD-PSO-SVR,VMD-PSO-BP等預(yù)測(cè)模型更加準(zhǔn)確、取得更好的預(yù)測(cè)效果,為水環(huán)境的監(jiān)測(cè)和監(jiān)管提供更有力的參考依據(jù)。后續(xù)工作主要是嘗試用多層隱藏層去預(yù)測(cè)。