徐先峰,王世鑫,龔 美,曹仰昱
(長(zhǎng)安大學(xué)電子與控制工程學(xué)院,陜西 西安 710064)
隨著電力系統(tǒng)的建立和發(fā)展,電能已經(jīng)成為人類不可或缺的能源形式,負(fù)荷預(yù)測(cè)作為電力系統(tǒng)調(diào)度中的關(guān)鍵一環(huán),是電網(wǎng)用電、規(guī)劃等管理部門的重要工作[1-2]。其中短期負(fù)荷預(yù)測(cè)可作為水電調(diào)度、發(fā)電機(jī)組控制、電廠、協(xié)調(diào)控制等電力計(jì)劃調(diào)度的重要理論依據(jù)。負(fù)荷預(yù)測(cè)精度越高,越能保證電力企業(yè)正確地對(duì)供電項(xiàng)目進(jìn)行實(shí)時(shí)、及時(shí)的供電調(diào)度。短期電力負(fù)荷預(yù)測(cè)的模型主要分為兩類,經(jīng)典統(tǒng)計(jì)模型[3]和數(shù)據(jù)驅(qū)動(dòng)模型[4]。經(jīng)典的統(tǒng)計(jì)模型由簡(jiǎn)單的回歸函數(shù)構(gòu)建,主要包括自回歸移動(dòng)平均(ARMA)、廣義自回歸條件異方差(GARCH)等。除此之外,由積分函數(shù)改進(jìn)的自回歸積滑動(dòng)平均(ARIMA)[5]、自回歸條件異方差(GARCH)[6]以及基于核方法的分位數(shù)回歸[7-8]都用于電力負(fù)荷的預(yù)測(cè)。與經(jīng)典統(tǒng)計(jì)模型相比,由人工智能算法建立的數(shù)據(jù)驅(qū)動(dòng)模型更適合研究非線性關(guān)系。這些算法大大提高了電力負(fù)荷預(yù)測(cè)的準(zhǔn)確性。例如,將雙向長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(Bi-LSTM)[9]用于負(fù)荷預(yù)測(cè)時(shí),可同時(shí)掌握歷史和未來的時(shí)間序列的負(fù)荷信息,能更精確的刻畫負(fù)荷預(yù)測(cè)曲線;序列到序列(Seq2seq)[10]網(wǎng)絡(luò)結(jié)構(gòu)的編碼端能夠接收長(zhǎng)度變化的數(shù)據(jù)信息,使模型在接收數(shù)據(jù)信息時(shí)愈加靈活,進(jìn)行負(fù)荷預(yù)測(cè)時(shí)精度更高。
綜合上述優(yōu)點(diǎn),本文提出了一種基于多層Bi-LSTM的Seq2seq深度學(xué)習(xí)模型短期用電負(fù)荷預(yù)測(cè)算法,該算法結(jié)合了Bi-LSTM和Seq2seq的優(yōu)點(diǎn):對(duì)輸入數(shù)據(jù)進(jìn)行編碼時(shí),可在網(wǎng)絡(luò)末端輸出編碼后的最終狀態(tài),其中Seq2seq的編碼端由多層Bi-LSTM組成;解碼時(shí)可將編碼端的最終狀態(tài)作為解碼端初始輸入狀態(tài),其中Seq2seq解碼端為單層LSTM,同時(shí)將上一解碼端的輸出值作為下一解碼端的輸入值。基于實(shí)測(cè)數(shù)據(jù)的仿真結(jié)果表明,與深度信念網(wǎng)絡(luò)(DBN)、長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)以及門控遞歸單元(GRU)短期用電負(fù)荷預(yù)測(cè)模型相比,由雙向長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)構(gòu)成的序列到序列模型(BL-Seq2seq)可以更好提升短期負(fù)荷預(yù)測(cè)精度。
基于多層Bi-LSTM的Seq2seq網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1。
圖1 多層Bi-LSTM的Seq2seq網(wǎng)絡(luò)模型圖
根據(jù)圖1可知,編碼端由多層Bi-LSTM組成,可使輸入數(shù)據(jù)進(jìn)行編碼,使模型在接受輸入數(shù)據(jù)時(shí)更加靈活;BL-Seq2seq模型的解碼端由單層LSTM組成,目的是將編碼端的最終狀態(tài)作為初始輸入狀態(tài),同時(shí)每一步的輸出值作為下一步的輸入值,使模型具有較強(qiáng)的魯棒性;最后在輸出端選用線性整流函數(shù)(ReLU)函數(shù),可減少梯度消失和梯度爆炸現(xiàn)象的發(fā)生。本文接下來將重點(diǎn)分析BL-Sq2seq模型。
編碼端和解碼端結(jié)構(gòu)由Cho等人在2014年提出名為Seq2seq的輸入與輸出不定長(zhǎng)序列[11]。編碼過程是將輸入序列壓縮成指定長(zhǎng)度的特征向量通過編碼器進(jìn)行輸入,并將特征向量作為序列的語義。本文所提出的BL-Seq2seq算法選用Bi-LSTM作為編碼端。
Bi-LSTM是將一個(gè)前向的LSTM和一個(gè)后向的LSTM疊加在一起后連接到同一個(gè)輸出層,可分別處理同一序列的兩個(gè)方向[12]。利用Bi-LSTM作為短期用電負(fù)荷預(yù)測(cè)模型的編碼端能夠使輸入的歷史數(shù)據(jù)同時(shí)在一個(gè)正向的LSTM和一個(gè)反向的LSTM中進(jìn)行,增加了LSTM模型對(duì)未來序列的學(xué)習(xí)能力,克服了LSTM只能處理歷史信息的缺點(diǎn),確保模型能夠獲得完整時(shí)間序列前后文信息。Bi-LSTM結(jié)構(gòu)如圖2。
圖2 Bi-LSTM結(jié)構(gòu)圖
編碼使用如下方法
ht=f(xt,ht-1);c=?({h1,…h(huán)r})
(1)
式中:ht前時(shí)刻隱藏層狀態(tài),ht-1一時(shí)刻隱藏層狀態(tài),f活函數(shù),xt前時(shí)刻輸入,c為特征向量。編碼過程如圖3。
圖3 編碼過程圖
BL-Seq2seq算法的解碼端將接收端最后狀態(tài)定義為初始狀態(tài),并將解碼后的輸出值作為下一步的輸入值。解碼端由單層LSTM構(gòu)成。
LSTM(Long Short Term Mermory Network)是由循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)改進(jìn)而成,改進(jìn)后的LSTM解決了RNN模型無法應(yīng)用于長(zhǎng)序列的缺點(diǎn),避免了梯度消失問題的發(fā)生,LSTM在RNN的基礎(chǔ)上給神經(jīng)元增加了三個(gè)門,分別是遺忘門、輸入門和輸出門[13]。結(jié)構(gòu)如圖4。
圖4 LSTM模型結(jié)構(gòu)圖
每個(gè)LSTM單元包含一個(gè)在時(shí)間t內(nèi)的存儲(chǔ)單元,該存儲(chǔ)單元通過輸入門、遺忘門和輸出門對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和修改。同時(shí)LSTM在每個(gè)時(shí)間步長(zhǎng)內(nèi)通過四個(gè)端子(即三個(gè)門和輸入端)接收兩個(gè)外部源(當(dāng)前輸入和同一層中所有LSTM單元的先前隱藏狀態(tài))的輸入。
LSTM的更新可以使用如下方法[14]
it=σ(WxiXt+Whiht-1+WciCt-1+bi)
(2)
式中,Wxi、Whi和Wci分別為輸入門當(dāng)前輸入、同一隱藏層輸入和存儲(chǔ)單元權(quán)重矩陣,bi為入門偏置。
ft=σ(wxfXt+Whfht-1+WcfCt-1+bf)
(3)
式中:Wxf、Whf和Wcf分別為遺忘門當(dāng)前輸入、同一隱藏層輸入和存儲(chǔ)單元權(quán)重矩陣,bf為遺忘門偏置。
ct=ftct-1+ittanh(WxcXt+Whcht-1+bc)
(4)
式中:Wxc、Whc為儲(chǔ)單元當(dāng)前輸入、同一隱藏層輸入權(quán)重矩陣,bc儲(chǔ)單元偏置。
Ot=σ(WxoXt+Whoht-1+WcoCt+bo)
(5)
式中:Wxo、Who和Wco分別為輸出門當(dāng)前輸入、同一隱藏層輸入和存儲(chǔ)單元權(quán)重矩陣,bo為輸出門偏置。
ht=ottanh(ct)
(6)
解碼過程如圖5。
然而由于指定長(zhǎng)度的特征向量C對(duì)信息的數(shù)量有限制要求,當(dāng)源序列長(zhǎng)度增加時(shí)會(huì)導(dǎo)致Seq2seq模型的性能降低。為了解決此問題,本文選用Bahdanau等人提出的關(guān)注機(jī)制[15]。在關(guān)注機(jī)制中,解碼器可以嘗試在編碼器序列里尋找重要信息所處位置,并利用該信息同之前解碼的數(shù)據(jù)來預(yù)測(cè)該序列中的下一個(gè)標(biāo)記,過程如圖6。
根據(jù)文獻(xiàn)[16]可知,ReLU函數(shù)具有如下特點(diǎn):
1)可有效解決梯度飽和問題;
2)使模型具有更好的魯棒性;
3)能夠訓(xùn)練多層深度神經(jīng)網(wǎng)絡(luò)。
為了避免模型產(chǎn)生梯度消失和梯度爆炸現(xiàn)象,本文在模型的輸出層選用ReLU函數(shù),ReLU函數(shù)表達(dá)式使用如下方法
f(x)=max(0,x)
(7)
本實(shí)驗(yàn)基于美國(guó)洛杉磯的歷史用電負(fù)荷實(shí)測(cè)數(shù)據(jù),利用深度學(xué)習(xí)算法對(duì)未來負(fù)荷進(jìn)行預(yù)測(cè)。負(fù)荷數(shù)據(jù)為每1小時(shí)采樣一次,即一天24個(gè)數(shù)據(jù)采樣點(diǎn)[17]。輸入的數(shù)據(jù)因素包括日期和用電負(fù)荷量,采樣數(shù)據(jù)長(zhǎng)度為自2016年1月1日0:00至2016年12月31日23:00,共8784個(gè)數(shù)據(jù)采樣點(diǎn),并將最后5天,共計(jì)120個(gè)數(shù)據(jù)取出作為測(cè)試集,其余8664個(gè)數(shù)據(jù)作為訓(xùn)練集[18]。本次實(shí)驗(yàn)在Keras2.2.4,python3.6環(huán)境下運(yùn)行。
由于通信故障或數(shù)據(jù)缺失等因素會(huì)導(dǎo)致用電負(fù)荷實(shí)測(cè)數(shù)據(jù)異常,進(jìn)而影響預(yù)測(cè)精度。因此本文采用均值補(bǔ)缺失值的方法,來修正不良數(shù)據(jù),補(bǔ)足缺失數(shù)據(jù)。
將數(shù)據(jù)修正后,采用min-max標(biāo)準(zhǔn)化方法將原始用電負(fù)荷實(shí)測(cè)數(shù)據(jù)進(jìn)行線性變化,使數(shù)據(jù)范圍在[0,1]之間以保證數(shù)據(jù)的有效性,消除數(shù)據(jù)間量綱差異,提升負(fù)荷預(yù)測(cè)精度,具體使用如下方法
(8)
式中,x表示還未被處理的輸入值,y表示歸一化后的輸入值,max是輸入數(shù)據(jù)的最大值,min是輸入數(shù)據(jù)的最小值。
為了評(píng)估算法的性能,本實(shí)驗(yàn)選取了三個(gè)性能評(píng)價(jià)指標(biāo),分別是平均絕對(duì)百分比誤差(MAPE)、標(biāo)準(zhǔn)均方根誤差(NRMSE)和平均絕對(duì)誤差(MAE)[19]。各評(píng)價(jià)指標(biāo)表達(dá)式使用如下方法
(9)
式中:y~為負(fù)荷預(yù)測(cè)值,y為實(shí)測(cè)負(fù)荷值,N為測(cè)試數(shù)據(jù)集大小。
(10)
(11)
對(duì)于BL-Seq2seq負(fù)荷預(yù)測(cè)模型來說,準(zhǔn)確設(shè)置隱藏層層數(shù)和每個(gè)隱藏層單元數(shù)可提升預(yù)測(cè)精度,減少運(yùn)算耗時(shí),因此本文重點(diǎn)分析這兩個(gè)參數(shù)。
為了確定BL-Seq2seq最佳網(wǎng)絡(luò)結(jié)構(gòu)模型,本文選用枚舉法逐層對(duì)隱藏單元數(shù)進(jìn)行選取,首先確定第1層隱藏層單元數(shù)的最優(yōu)值并保持不變;然后增加1層隱藏層,確定2層隱藏單元數(shù)的最優(yōu)值并保持不變;依次類推,直到預(yù)測(cè)精度不再提升為止。不同網(wǎng)絡(luò)結(jié)構(gòu)下BL-Seq2seq網(wǎng)絡(luò)結(jié)構(gòu)的預(yù)測(cè)性能見表1。
表1 BL-Seq2seq模型編碼端不同結(jié)構(gòu)時(shí)預(yù)測(cè)性能
在確定編碼端每層隱藏單元數(shù)時(shí),分別設(shè)置為20、40、60、80四個(gè)級(jí)別。隱藏層的層數(shù)依次設(shè)置為1,2,3層,選用MAPE作為性能評(píng)價(jià)指標(biāo),由表1可知,當(dāng)?shù)?層隱藏單元設(shè)置為40個(gè)時(shí),MAPE取得最小值為0.0193,當(dāng)?shù)?層隱藏單元設(shè)置為60個(gè)時(shí),MAPE取得最小值為0.0188,當(dāng)?shù)?層隱藏單元設(shè)置為60個(gè)時(shí),MAPE取得最小值0.0190。由此可知,對(duì)于該數(shù)據(jù)集,BL-Seq2seq模型編碼端采用2層Bi-LSTM結(jié)構(gòu),解碼端由經(jīng)過選取由單層LSTM組成。
針對(duì)上述不同模型結(jié)構(gòu)所得到的負(fù)荷預(yù)測(cè)結(jié)果對(duì)比圖如圖8、圖9和圖10。
圖8 第一層結(jié)構(gòu)對(duì)比局部放大圖
圖9 第二層結(jié)構(gòu)對(duì)比局部放大圖
圖10 第三層結(jié)構(gòu)對(duì)比局部放大圖
同時(shí),為了防止模型訓(xùn)練中出現(xiàn)過擬合現(xiàn)象,本文引入Dropout機(jī)制,以增強(qiáng)模型的泛化律,在某種程度上達(dá)到正則化效果,阻止了過擬合現(xiàn)象的發(fā)生[20]。為了使模型呈現(xiàn)最優(yōu)效果,選用Adam優(yōu)化器自動(dòng)尋找學(xué)習(xí)率的值,找出最優(yōu)解。相應(yīng)的參數(shù)設(shè)置見表2。
表2 參數(shù)設(shè)置
為了突出BL-Seq2seq算法的優(yōu)勢(shì),本文選用3.1節(jié)所有數(shù)據(jù)集,并將后5天,共計(jì)120個(gè)點(diǎn)的數(shù)據(jù)用作測(cè)試集,依次選取DBN網(wǎng)絡(luò)[21]、LSTM網(wǎng)絡(luò)[22]、GRU網(wǎng)絡(luò)[23](DBN、LSTM、GRU模型參數(shù)選取參照文獻(xiàn)[21-23])展開對(duì)比實(shí)驗(yàn)(其中Observed為用電負(fù)荷實(shí)測(cè)數(shù)據(jù),Predicted-DBN為DBN網(wǎng)絡(luò)預(yù)測(cè)結(jié)果,Predicted-LSTM為L(zhǎng)STM網(wǎng)絡(luò)預(yù)測(cè)結(jié)果,Predicted-GRU為GRU網(wǎng)絡(luò)預(yù)測(cè)結(jié)果,PredictedBL-Seq2seq為BL-Seq2seq網(wǎng)絡(luò)預(yù)測(cè)結(jié)果),預(yù)測(cè)結(jié)果如圖11,預(yù)測(cè)數(shù)據(jù)見表3。
圖11 四種網(wǎng)絡(luò)模型預(yù)測(cè)結(jié)果對(duì)比圖
表3 模型預(yù)測(cè)結(jié)果對(duì)比表格
根據(jù)表3可以直觀的看出,與DBN、GRU和LSTM模型相比,BL-Seq2seq模型的MAPE分別降低了0.049、0.01和0.007,NRMSE分別降低了0.038、0.011和0.009,MAE分別降低了24.88、0.96和0.95,預(yù)測(cè)精度最高。此外,結(jié)合圖11可以發(fā)現(xiàn),DBN、LSTM、GRU等模型在峰谷值預(yù)測(cè)點(diǎn)、時(shí)間序列突變點(diǎn)處擬合程度較低,而BL-Seq2seq模型能夠在很大程度上改善這一缺陷,展示出較好的預(yù)測(cè)效果。
本文利用深度學(xué)習(xí)方法實(shí)現(xiàn)了短期電力負(fù)荷預(yù)測(cè),將歷史用電負(fù)荷實(shí)測(cè)數(shù)據(jù)通過Bi-LSTM神經(jīng)網(wǎng)絡(luò)輸入,并與Seq2seq模型相結(jié)合,最終得到了高精度負(fù)荷預(yù)測(cè)模型。結(jié)果顯示,當(dāng)針對(duì)MAPE、NRMSE及MAE等性能指標(biāo)進(jìn)行評(píng)估時(shí),性能明顯提升,證實(shí)所提算法可更好的提升負(fù)荷預(yù)測(cè)精度。