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