黃海東 李瓊梅
(1、北部灣大學(xué) 建筑工程學(xué)院,廣西 欽州 535011 2、北部灣大學(xué) 陶瓷與設(shè)計(jì)學(xué)院,廣西 欽州 535011)
短期用水量預(yù)測(cè)是供水管網(wǎng)優(yōu)化調(diào)度和分區(qū)計(jì)量管理的決策依據(jù)[1],因此對(duì)于供水企業(yè)而言具有重要的現(xiàn)實(shí)意義。目前的短期用水量預(yù)測(cè)方法大致可以分為兩大類:傳統(tǒng)的方法和基于機(jī)器學(xué)習(xí)的方法。前者的優(yōu)點(diǎn)是結(jié)構(gòu)相對(duì)簡(jiǎn)單,無須太多的計(jì)算量。但此類方法使用條件較為苛刻,且由于用水量數(shù)據(jù)的隨機(jī)因素較多,非線性特征比較明顯,因此傳統(tǒng)的方法也存在預(yù)測(cè)精度低、適應(yīng)性差的問題?;跈C(jī)器學(xué)習(xí)的方法則通過分析歷史數(shù)據(jù)之間的變化規(guī)律,建立歷史數(shù)據(jù)之間的內(nèi)在聯(lián)系,進(jìn)而提高預(yù)測(cè)的精度和穩(wěn)定性。目前在用水量預(yù)測(cè)中,比較常見的基于機(jī)器學(xué)習(xí)的方法有人工神經(jīng)網(wǎng)絡(luò)[2]、支持向量機(jī)(Support vector machine,SVM)[3]等。
深度學(xué)習(xí)是目前機(jī)器學(xué)習(xí)中的一個(gè)研究熱點(diǎn),已在多個(gè)領(lǐng)域得到廣泛的應(yīng)用[4-6]。本文嘗試將深度學(xué)習(xí)引入用水量預(yù)測(cè),通過構(gòu)建基于堆棧稀疏自編碼器(Stacked sparse auto-encoder,SSAE)的深度神經(jīng)網(wǎng)絡(luò)(Deep neural network,DNN)預(yù)測(cè)供水管網(wǎng)的短期用水量,并和SVM、不含SSAE 的DNN 進(jìn)行比較,以驗(yàn)證所提方法的有效性。
自編碼器本質(zhì)上是一種神經(jīng)網(wǎng)絡(luò),具有很好的能力以無監(jiān)督學(xué)習(xí)的方式提取數(shù)據(jù)的特征表示[7]。標(biāo)準(zhǔn)的自編碼器基本結(jié)構(gòu)類似于一個(gè)三層神經(jīng)網(wǎng)絡(luò),包括輸入層、隱含層和輸出層三個(gè)組成部分,如圖1 所示。
圖1 標(biāo)準(zhǔn)自編碼器的基本結(jié)構(gòu)
從圖1 可以看出,輸入層和輸出層的節(jié)點(diǎn)數(shù)相同。此外,可以很容易發(fā)現(xiàn)自編碼器的目標(biāo)是在輸出層重建一個(gè)輸入的近似值。為了實(shí)現(xiàn)這一點(diǎn),自編碼器需要經(jīng)過兩個(gè)階段:編碼和解碼。編碼階段在編碼器中執(zhí)行,在這一階段中輸入向量X 通過給定的傳遞函數(shù)轉(zhuǎn)換為中間向量h。解碼階段在解碼器中進(jìn)行,在這一階段中h 被重構(gòu)為輸出向量Y。編碼和解碼過程可以分別用式(1)和式(2)進(jìn)行描述[8]。
其中,W1為編碼器的權(quán)值矩陣,W2為解碼器的權(quán)值矩陣;b1是編碼器的偏置矢量,b2是解碼器的偏置矢量;f1和f2分別表示編碼器和解碼器的傳遞函數(shù)。
與多層感知器一樣,自編碼器也是通過反向傳播的方式訓(xùn)練網(wǎng)絡(luò)。如果重構(gòu)誤差足夠小,可以認(rèn)為訓(xùn)練樣本數(shù)據(jù)中的大部分信息得到了保留。但是,如果輸出只是輸入的簡(jiǎn)單復(fù)制,那么就沒有實(shí)際意義。因此,為了學(xué)習(xí)有意義的特征,通常需要在傳統(tǒng)的自編碼器中引入稀疏約束用于控制隱含層中“活躍”神經(jīng)元的數(shù)量。引入稀疏約束的自編碼器即為稀疏自編碼器(Sparse auto-encoder,SAE)。
SSAE 可以由一組的SAE 逐層疊加而成。實(shí)際上,SSAE 可以認(rèn)為是去除解碼器的多層SAE。由n 個(gè)組成的SSAE 結(jié)構(gòu)示意圖如圖2 所示。
圖2 SSAE 結(jié)構(gòu)示意圖
在SSAE 中,隱含層只能提供輸出,即對(duì)輸入的重構(gòu),因此沒有預(yù)測(cè)功能。要實(shí)現(xiàn)用水量預(yù)測(cè),需要將SSAE 與人工神經(jīng)網(wǎng)絡(luò)、SVM等預(yù)測(cè)器結(jié)合起來。因此,基于SSAE 的短期用水量模型由兩個(gè)模塊組成:SSAE 模塊和預(yù)測(cè)器。鑒于BPNN在用水量預(yù)測(cè)中得到廣泛的應(yīng)用[9-11],因此本文采用多隱含層BPNN 構(gòu)成的DNN 作為預(yù)測(cè)器。該模型的實(shí)施過程包括兩個(gè)階段:無監(jiān)督預(yù)訓(xùn)練和有監(jiān)督微調(diào)。因此從某種意義上說,該模型是一種半監(jiān)督的機(jī)器學(xué)習(xí)方法?;赟SAE 的短期用水量預(yù)測(cè)模型用于預(yù)測(cè)的具體步驟如下:
(1)無監(jiān)督預(yù)訓(xùn)練。這個(gè)階段的主要目的是為DNN 模型提供初始參數(shù)(即權(quán)值矩陣和偏置向量)。通過訓(xùn)練SSAE 可以得到優(yōu)化后的初始參數(shù)。需要注意的是,為了完成預(yù)訓(xùn)練,需要提供足夠的無標(biāo)簽的訓(xùn)練樣本。
(2)有監(jiān)督微調(diào)。當(dāng)完成無監(jiān)督的預(yù)訓(xùn)練后,將SSAE 中各隱含層的優(yōu)化參數(shù)作為初始參數(shù)傳遞給DNN中對(duì)應(yīng)的隱含層。例如,SSAE 中第k 個(gè)隱含層的參數(shù)只能作為DNN 中第k 個(gè)隱含層的初始參數(shù)。為了成功傳遞參數(shù),它們之間對(duì)應(yīng)隱含層的神經(jīng)元數(shù)量必須相同。參數(shù)成功傳遞后,利用大量有標(biāo)簽的訓(xùn)練樣本,以傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)方式訓(xùn)練DNN,對(duì)參數(shù)進(jìn)行微調(diào),直到滿足終止條件。最后,經(jīng)過充分訓(xùn)練的DNN 可用于用水量預(yù)測(cè)。圖3 為基于SSAE 的短期用水量預(yù)測(cè)模型的具體流程。
圖3 基于SSAE 的短期用水量預(yù)測(cè)模型的具體流程
預(yù)測(cè)評(píng)估指標(biāo)有很多,本文主要選取平均絕對(duì)誤差百分比(Mean Absolute Percentage Error,MAPE)和均方根誤差(Root Mean Square Error,RMSE)用于評(píng)估預(yù)測(cè)方法的性能。MAPE 和RMSE 可分別用于評(píng)估方法的預(yù)測(cè)精度和穩(wěn)定性。MAPE 和RMSE 的計(jì)算表達(dá)式如下:
本文所使用的數(shù)據(jù)來自某市一個(gè)實(shí)際供水管網(wǎng)系統(tǒng)。數(shù)據(jù)采集時(shí)間為2018 年7 月2 日至2018 年9 月30 日,采樣間隔為1 小時(shí)。數(shù)據(jù)集中總共包含2184 個(gè)觀測(cè)值。在數(shù)據(jù)采集期間中,未發(fā)生強(qiáng)臺(tái)風(fēng)、特大突發(fā)事件、大型運(yùn)動(dòng)會(huì)等對(duì)用水量影響較大的異常事件。為了驗(yàn)證方法的有效性,本文采用最后一周(即2018 年9 月24 日至2018 年9 月30 日)的時(shí)用水量數(shù)據(jù)進(jìn)行測(cè)試。
為了將所提方法應(yīng)用于短期用水量預(yù)測(cè),需要預(yù)先確定DNN 和SSAE 模型的結(jié)構(gòu),包括模型的隱含層數(shù)、輸入節(jié)點(diǎn)和隱含層節(jié)點(diǎn)數(shù),以及DNN 模型的輸出層節(jié)點(diǎn)數(shù)。SSAE 的主要目標(biāo)是通過相應(yīng)的權(quán)重和偏差來初始化DNN 的權(quán)重和偏差。這兩個(gè)模型的隱含層數(shù)、輸入層節(jié)點(diǎn)數(shù)和隱含層節(jié)點(diǎn)數(shù)必須是相同的。
因此,在獲得DNN 的上述參數(shù)的同時(shí),也可以確定SSAE 的相應(yīng)參數(shù)。
理論上,DNN 包含的隱含層越多,其特征學(xué)習(xí)能力就越強(qiáng)。但是,過多的隱含層會(huì)大大增加網(wǎng)絡(luò)的運(yùn)行時(shí)間,從而降低預(yù)測(cè)的實(shí)時(shí)性。因此,在本文中DNN 框架包含兩個(gè)隱含層。至于隱含層節(jié)點(diǎn)的數(shù)量,目前還沒有統(tǒng)一的標(biāo)準(zhǔn)來確定。然而,這些參數(shù)可以通過網(wǎng)格搜索算法進(jìn)行優(yōu)化。網(wǎng)格搜索算法是一種廣泛使用的搜索最優(yōu)參數(shù)的方法[12]。本文采用網(wǎng)格搜索算法獲得最優(yōu)參數(shù)(即輸入層節(jié)點(diǎn)和隱含層節(jié)點(diǎn)的數(shù)量)的具體步驟如下:
(1)指定一組參數(shù)的候選值;
(2)然后,使用這些參數(shù)的每個(gè)組合運(yùn)行DNN 10次;
(3)根據(jù)平均MAPE 的最小值來確定最優(yōu)參數(shù)。
表1 列出了DNN 和SSAE 模型的主要結(jié)構(gòu)參數(shù)。
表1 所提方法的結(jié)構(gòu)參數(shù)選取結(jié)果
為了更全面地評(píng)價(jià)方法的有效性,本文還將所提方法與SVM和不含SSAE 的DNN 模型進(jìn)行了比較。不含SSAE 的DNN 模型參數(shù)與所提方法的DNN 模塊相同。SVM同樣可以采用網(wǎng)格搜索算法獲得最優(yōu)參數(shù)。SVM的參數(shù)設(shè)置如表2 所示。
表2 SVM 參數(shù)設(shè)置
本文中三種預(yù)測(cè)方法的程序運(yùn)行均在Matlab R2018b 環(huán)境中進(jìn)行。SVM所用的工具箱是中國臺(tái)灣大學(xué)林志仁教授開發(fā)的LIBSVM工具箱。該工具箱不僅為Windows 系統(tǒng)提供編譯的可執(zhí)行文件,而且提供有助于在其他操作系統(tǒng)上改進(jìn)、修改和應(yīng)用的源代碼。
本質(zhì)上,DNN 可以看作一個(gè)黑盒子,每次運(yùn)行的預(yù)測(cè)結(jié)果可能不同。因此,比較DNN 單次運(yùn)行的結(jié)果是沒有意義的。為了更合理地評(píng)估這些方法的性能,用于比較的方法都運(yùn)行10 次。表3 和表4 總結(jié)了三種預(yù)測(cè)方法的預(yù)測(cè)結(jié)果。
表3 所提方法與不含SSAE 的DNN 模型的預(yù)測(cè)性能比較
表4 所提方法與SVM 模型的預(yù)測(cè)性能比較
從表3 中可以看出,不含SSAE 的DNN 的MAPE 均值為3.89%,而所提方法的MAPE 均值為3.47%,有10.8%的提高。此外,與不含SSAE 的DNN 相比,所提方法的最大MAPE 和最小MAPE 值均較低,分別降低了20.16%和13.38%。在RMSE 這一指標(biāo)上,所提方法也取得了令人滿意的結(jié)果。與不含SSAE 的DNN 相比,所提方法的RMSE 均值從2790.42m3/h 下降到2548.40m3/h,下降了8.78%。雖然提升沒有MAPE 那么明顯,但可以得出這樣的結(jié)論,即所提方法的預(yù)測(cè)結(jié)果更穩(wěn)定。
上述觀察結(jié)果表明,包含SSAE 的DNN 方法可以獲得精度更高且穩(wěn)定性更好的預(yù)測(cè)結(jié)果。這主要是因?yàn)镾SAE 具有強(qiáng)大的特征學(xué)習(xí)能力,可以為DNN 初始參數(shù)提供優(yōu)化。
表4 顯示,與SVM 模型相比,所提方法的平均MAPE 和平均RMSE 均有顯著改善,分別顯著下降32.09%和30.86%。另外,在最大MAPE 和最小MAPE 這兩個(gè)不同的指標(biāo)上,所提方法也得到了不同程度的性能提升。因此,不難得出,所提方法在預(yù)測(cè)精度和穩(wěn)定性方面均優(yōu)于SVM模型。
為了進(jìn)一步說明,圖4 給出了不同預(yù)測(cè)方法對(duì)其中一天的用水量的預(yù)測(cè)結(jié)果。
圖4 24 小時(shí)的預(yù)測(cè)結(jié)果
從圖4 中可以看出,所提方法的預(yù)測(cè)曲線似乎更接近于觀測(cè)值曲線。更重要的是,所提方法的預(yù)測(cè)曲線除了第一個(gè)預(yù)測(cè)值外,其他點(diǎn)上的預(yù)測(cè)結(jié)果并沒有明顯的偏差。與之相反,另外兩種方法得到的曲線與實(shí)際曲線擬合效果欠佳,均存在有較大的偏差,尤其是SVM模型的曲線有幾個(gè)較明顯的波動(dòng)。圖4 的觀測(cè)結(jié)果進(jìn)一步證明了所提方法具有更好的預(yù)測(cè)性能。
本文提出了一種基于SSAE 的DNN 短期需水量預(yù)測(cè)方法。該方法由SSAE 模塊和DNN 模塊組成。在該方法中,SSAE 模塊以無監(jiān)督學(xué)習(xí)的方式進(jìn)行特征提取,而DNN 模塊用于預(yù)測(cè)需水量。為了評(píng)估所提方法的潛力,利用實(shí)際供水系統(tǒng)的7 天的時(shí)用水量數(shù)據(jù)進(jìn)行測(cè)試。另外,還將所提方法與SVM模型和不含SSAE 的DNN 模型進(jìn)行比較,驗(yàn)證其有效性。結(jié)果表明,該方法在預(yù)測(cè)精度和穩(wěn)定性方面均優(yōu)于其他兩種方法,有潛力成為短期需水量預(yù)測(cè)的有力工具。