肖 勇,鄭楷洪,鄭鎮(zhèn)境,錢 斌,李 森,馬千里*
(1.南方電網(wǎng)科學研究院有限責任公司,廣州 510080;2.華南理工大學計算機科學與工程學院,廣州 510006)
隨著社會經(jīng)濟的發(fā)展和人民生活水平的提高,對供電質(zhì)量提出了更高的要求。精確的電力負荷預(yù)測能為電量生產(chǎn)和供電調(diào)度提供可靠的指導,從而提升電力系統(tǒng)的供電質(zhì)量。
傳統(tǒng)的電力負荷預(yù)測方法有時間序列分析[1]、回歸分析[2]和卡爾曼濾波[3]等。隨著人工智能技術(shù)的發(fā)展,神經(jīng)網(wǎng)絡(luò)[4-5]、支持向量回歸[6]和高斯過程[7]等智能方法被應(yīng)用于電力負荷預(yù)測,其中神經(jīng)網(wǎng)絡(luò)擁有較強的非線性擬合和自學習能力,能夠較好地解決傳統(tǒng)方法非線性擬合能力差的缺陷。循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[8]是一類擁有循環(huán)連接的神經(jīng)網(wǎng)絡(luò),能夠?qū)r序數(shù)據(jù)進行建模。因此,在人工智能方法中使用RNN 為主體構(gòu)建的預(yù)測模型成為短期電力負荷預(yù)測模型的典型代表。雖然RNN 具有時序建模的能力,但存在“梯度消失”和“梯度爆炸”的問題。為了解決該問題,Hochreiter 等[9]提出了長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)。文獻[10]和文獻[11]成功將LSTM 應(yīng)用到短期電力負荷預(yù)測中,提升了負荷預(yù)測精度。然而,短期電力負荷數(shù)據(jù)中存在著多尺度時序特征,其具體表現(xiàn)為在年、月、星期和日不同期限上均具有明顯的周期性[12]。近年來,在時間序列分類[13]和聚類[14]任務(wù)中,多尺度特征已經(jīng)展示出能有效提升模型性能的潛力。然而,如何高效地對存在于短期電力負荷數(shù)據(jù)中的多尺度時間結(jié)構(gòu)進行建模,進一步提升短期電力負荷預(yù)測的精度,仍未得到廣泛的研究。
針對電力負荷數(shù)據(jù)中存在的多尺度時間結(jié)構(gòu),本文提出了一種基于多尺度跳躍深度LSTM(Multi-scale Skip Deep Long Short-Term Memory,MSD-LSTM)的短期電力負荷預(yù)測模型。該模型使用多層LSTM 網(wǎng)絡(luò)架構(gòu)并且每層設(shè)計不同的跳躍連接。LSTM能夠較好地對電力負荷進行建模,跳躍連接使得模型具有捕獲負荷數(shù)據(jù)中多尺度時序特征的能力。實驗結(jié)果證明該模型有效地提升了短期電力負荷預(yù)測的精度。
本文的主要貢獻如下:
1)提出了一種基于多尺度跳躍深度LSTM 的短期電力負荷預(yù)測模型,通過使用不同的跳躍連接來捕獲短期電力負荷數(shù)據(jù)中的多尺度時序結(jié)構(gòu)特征,幫助模型更好地進行負荷預(yù)測;
2)兩個地區(qū)負荷數(shù)據(jù)的實驗結(jié)果表明所提出的短期負荷預(yù)測方法可以有效提高電力負荷預(yù)測精度。
電力負荷數(shù)據(jù)從長期來看是波動變化的,但是這種波動變化會呈現(xiàn)出周期性和連續(xù)性的特點。對于短期電力負荷預(yù)測而言,其在年、月、星期、日不同期限上均具有明顯的周期性。
圖1 所示為某地區(qū)四個星期的電力負荷變化曲線。從圖1 可以看出,每個星期中工作日的負荷值較為平穩(wěn),此時工業(yè)和商業(yè)用電主導。在休息日,負荷從工業(yè)和商業(yè)用電主導轉(zhuǎn)變?yōu)榧彝ビ秒娭鲗?,負荷值呈現(xiàn)下降趨勢。此外,從圖1 中可以看出電力負荷值在星期這個時間尺度上呈現(xiàn)出明顯的周期性。
通過上述分析可以發(fā)現(xiàn),時間是短期電力負荷預(yù)測中重要的影響因素,這使得電力負荷數(shù)據(jù)呈現(xiàn)出規(guī)律波動的特點并具有明顯的周期性。針對短期電力負荷數(shù)據(jù)存在的周期性變化,本文利用多層LSTM 并且在每層設(shè)置不同的跳躍連接數(shù),顯式地建模電力負荷數(shù)據(jù)中存在的多尺度時間結(jié)構(gòu),從而更好地進行短期電力負荷預(yù)測。
圖1 某地區(qū)四周的負荷變化曲線Fig.1 Four-week load curve of an area
雖然RNN 具有時序建模的能力,能夠較好地應(yīng)用于電力負荷預(yù)測任務(wù),但在誤差反向傳播時,會存在“梯度消失”和“梯度爆炸”的問題。為了解決RNN 存在的問題,Hochreiter等[9]提出了LSTM。LSTM 通過專門地設(shè)計隱含層單元來解決長期依賴問題。不同于標準的RNN,LSTM 在隱含層的內(nèi)部設(shè)計了遺忘門、輸入門、輸出門以及細胞狀態(tài),這使得LSTM能夠擁有良好的長短期記憶能力。
LSTM的隱含層單元可以看作一個細胞,細胞狀態(tài)保存了長期記憶。細胞狀態(tài)在每個時刻與當前輸入進行少量的線性交互,從而允許網(wǎng)絡(luò)在較長持續(xù)時間內(nèi)保存信息。此外,當信息被使用,網(wǎng)絡(luò)可以遺忘舊的狀態(tài)。
LSTM 的隱含層內(nèi)部結(jié)構(gòu)如圖2 所示,其中xt表示t時刻LSTM 輸入變量,ht和ht-1分別表示t和t-1 時刻的隱含層狀態(tài),Ct和Ct-1分別表示t和t-1時刻的細胞狀態(tài),ft表示遺忘門的輸出,it表示輸入門的輸出,C~t表示t時刻用來更新細胞狀態(tài)的備選信息,ot表示輸出門的輸出,σ表示sigmoid函數(shù)。
圖2 LSTM隱含層內(nèi)部結(jié)構(gòu)Fig.2 Hidden layer internal structure of LSTM
式(1)中:Wf表示遺忘門權(quán)重矩陣,bf表示遺忘門偏置。根據(jù)式(1)和式(2)可知,ft為一個0 到1 的實數(shù),這決定了細胞狀態(tài)的遺忘比例。
同樣的,式中的Wi和WC表示連接權(quán)重矩陣,bi和bC表示偏置。it為0到1的實數(shù)表示t時刻用來更新細胞狀態(tài)的備選信息,tanh(·)表示雙曲正切函數(shù)。
在遺忘門中細胞狀態(tài)與ft相乘,遺忘需要丟棄的信息;在輸入門中再加上更新細胞狀態(tài)。這可以用以下公式表示:
最后,LSTM 需要確定輸出什么值,這個輸出是基于經(jīng)過更新的細胞狀態(tài),具體過程可以用以下公式表示:
其中:Wo表示輸出門權(quán)重矩陣,bo表示輸出門偏置。簡便起見,本文將LSTM 隱含層狀態(tài)的更新過程表示為函數(shù)FLSTM(·),在長短期記憶網(wǎng)絡(luò)的前向傳播過程中,隱含層狀態(tài)的更新公式為:
LSTM 雖然有效地解決了RNN 存在的無法有效學習長時依賴的問題,但是電力負荷數(shù)據(jù)中存在著不同尺度的時間結(jié)構(gòu)特征,而LSTM 卻不具備捕捉多尺度時間特征的能力。針對該問題,本文對LSTM 進行改進,提出了一種基于多尺度跳躍深度長短期記憶(MSD-LSTM)網(wǎng)絡(luò)的短期負荷預(yù)測方法,使其具有捕捉電力負荷數(shù)據(jù)中多尺度時序信息的能力。MSD-LSTM 通過把LSTM 的拓撲結(jié)構(gòu)設(shè)計為多層并且加入循環(huán)跳躍連接[15],以此改變歷史信息與當前信息的交互周期,使得每層擁有了不同時間周期的建模能力,顯式地對電力負荷數(shù)據(jù)中的多尺度時間結(jié)構(gòu)進行建模。MSD-LSTM 的每一層使用不同循環(huán)跳躍尺度的LSTM,即每個時刻的隱含層狀態(tài)更新時依賴的不是上一個時刻的隱含層狀態(tài),而是依賴多個時刻之前的狀態(tài)。如圖3 所示,第一層的跳躍連接數(shù)為1,則第一層為傳統(tǒng)的LSTM;第二層的跳躍連接數(shù)為2,則隱含層狀態(tài)更新時依賴的是往前兩個時刻的隱含層狀態(tài);第三層的跳躍連接數(shù)為4,則隱含層狀態(tài)更新時依賴的是往前4個時刻的隱含層狀態(tài)。加入循環(huán)跳躍連接后的LSTM 的更新過程可以表示為:
其中上標i表示層數(shù),后續(xù)模型部分的所有上標皆為該含義。
在網(wǎng)絡(luò)訓練的前向傳播過程中,第一層LSTM 的輸入為預(yù)處理后的電力負荷數(shù)據(jù)以及天氣數(shù)據(jù)組成的多維變量序列,如圖3 中輸入數(shù)據(jù)為1 到T時刻的負荷數(shù)據(jù),維度為T×D,T表示輸入的時刻數(shù),D表示每個時刻輸入的向量的維度;輸出為T+1時刻的負荷預(yù)測值。天氣數(shù)據(jù)幫助模型更好地進行負荷預(yù)測。其余層的輸入為上一層LSTM 的輸出,最后把每一層最后一個時刻的隱含層狀態(tài)進行拼接后輸入到全連接層形成融合特征,利用該融合特征進行未來負荷值的預(yù)測。多層不同跳躍尺度的LSTM 前向傳播過程可以用下列公式表示:
MSD-LSTM的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,其中方框內(nèi)的圓形表示圖2的LSTM 單元,圓形左邊的箭頭表示接收上一個時刻的隱含層狀態(tài);右邊的箭頭當前時刻的隱含層狀態(tài)輸入到下一個時刻的LSTM 單元;下方的箭頭表示當前時刻的輸入;上方的箭頭表示當前時刻的LSTM 單元的輸出。使用前T個時刻的數(shù)據(jù)來預(yù)測T+1 時刻的負荷值,每個時刻的輸入為一個6維向量,即D為6,包含負荷數(shù)據(jù)以及天氣數(shù)據(jù)。網(wǎng)絡(luò)層數(shù)設(shè)為3 層,每一層的跳躍連接數(shù)分別為1,2 和4。最后,通過全連接層將每層LSTM 第T個時刻的隱含層狀態(tài)進行融合得到融合特征,利用該融合特征去預(yù)測下一時刻的負荷值。
圖3 MSD-LSTM網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Structure of MSD-LSTM network
MSD-LSTM 通過給每層LSTM 設(shè)計不同的跳躍連接數(shù),使得每層擁有不同時間周期的建模能力。本文研究的負荷預(yù)測是短期電力負荷預(yù)測,其在年、月、星期、日不同期限上均具有明顯的周期性。因此,MSD-LSTM 第一層的跳躍連接數(shù)設(shè)為1,捕捉日依賴關(guān)系;第二層的跳躍連接數(shù)設(shè)為7,捕捉周依賴關(guān)系;第三層的跳躍連接數(shù)設(shè)為30,捕捉月依賴關(guān)系。最后通過引入全連接層,把每層提取到的不同尺度信息進行融合,即將每層T時刻的隱含層狀態(tài)拼接后作為全連接層的輸入,實現(xiàn)多尺度結(jié)構(gòu)信息的融合,并把全連接層的輸出作為預(yù)測值,即T+1時刻的負荷值。全連接層可以使用以下公式表示:
其中:Wfc為全連接層權(quán)重,b表示偏置,xT+1為全連接層的輸出,HT為各層LSTM 最后一個時刻隱含層狀態(tài)的拼接,可以用以下公式表示:
步驟1 構(gòu)建時間序列數(shù)據(jù)進行訓練和測試。對電力負荷數(shù)據(jù)以及天氣數(shù)據(jù)進行歸一化,采取一步預(yù)測的方法并對歸一化后的數(shù)據(jù)做窗口滑動處理得到N條長度為T的負荷序列樣本集,即以前T個時間點的數(shù)據(jù)作為“特征”,下一個時間點的數(shù)據(jù)作為“標簽”。將樣本集按7∶3 的比例劃分為訓練集和測試集,即前0.7×N條序列作為訓練集,后0.3×N條序列作為測試集。
步驟2 逐層構(gòu)建LSTM,每一層設(shè)置不同的跳躍連接以建模多尺度時序依賴關(guān)系。
步驟3 構(gòu)建全連接層將各層LSTM 的依賴關(guān)系進行融合并把全連接層的輸出作為預(yù)測值形成多尺度跳躍深度LSTM模型。
步驟4 訓練步驟3構(gòu)建的模型,在網(wǎng)絡(luò)訓練的前向傳播過程中,第一層LSTM 輸入為經(jīng)步驟1 處理過的訓練數(shù)據(jù)集,其余層的輸入為上一層LSTM 的輸出,把每一層最后一個時刻的隱含層狀態(tài)進行拼接后輸入到全連接層形成融合特征,利用該融合特征進行未來負荷值的預(yù)測。在網(wǎng)絡(luò)訓練的反向傳播過程中,使用基于時間的反向傳播(BackPropagation Through Time,BPTT)算法[16]來最小化損失函數(shù),即均方誤差,從而優(yōu)化模型的參數(shù)。
步驟5 使用訓練后的模型對經(jīng)步驟1 處理過的電力負荷測試數(shù)據(jù)集進行預(yù)測,計算預(yù)測值和真實值之間的均方誤差。
本文研究的是帶有天氣數(shù)據(jù)的短期電力負荷預(yù)測,使用2012年1月1日到2014年12月31日兩個地區(qū)真實負荷數(shù)據(jù),數(shù)據(jù)來源于2016 年電工數(shù)學建模競賽A 題。此外,這個數(shù)據(jù)集還提供最高溫度、最低溫度、平均溫度、相對濕度和降雨量5個天氣數(shù)據(jù)。本文利用這5個天氣數(shù)據(jù)來幫助負荷預(yù)測,即將負荷數(shù)據(jù)以及5個天氣數(shù)據(jù)拼接為6維向量。
本文分別抽取兩個地區(qū)每天6:00、12:00和18:00的負荷值進行負荷預(yù)測,因此總的樣本集有6 個,每個樣本集中有1 096 個時間點,每個時間點為一個6 維的向量,包含負荷及天氣數(shù)據(jù)。負荷和天氣數(shù)據(jù)擁有不同的數(shù)量級和量綱。為了去除這些影響,需要對輸入量進行歸一化處理,將其轉(zhuǎn)化為無量綱的純數(shù)值。本文采取離差標準化的歸一化方式。每個樣本集原始數(shù)據(jù)表示為s=[s1,s2,…,sn]T其中sj=對原始數(shù)據(jù)進行如下歸一化:
得到歸一化的樣本集e=[e1,e2,…,en]T。
這部分展示了MSD-LSTM 應(yīng)用在短期電力負荷預(yù)測上的實驗設(shè)置。本文將MSD-LSTM 與多層長短期記憶(Multi-layer Long Short-Term Memory,MLSTM)網(wǎng)絡(luò)、單層長短期記憶(Single-layer Long Short-Term Memory,SLSTM)網(wǎng)絡(luò)、支持向量回歸(Support Vector Regression,SVR)[17]和高斯過程(Gaussian Process,GP)[18]進行了對比實驗。使用過去35 天的負荷值和天氣數(shù)據(jù)來預(yù)測下一天的負荷值,則對樣本集做窗口滑動處理得到1 062 條長度為35 的序列,即樣本。構(gòu)建時間序列數(shù)據(jù)進行訓練和測試時,將1 062 個樣本集按7∶3 的比例劃分為訓練集和測試集。MSD-LSTM 的層數(shù)設(shè)為3,每層的跳躍尺度分別設(shè)為1、7、30,相應(yīng)的每層分別對時間尺度以天、周、月為單位的電力負荷數(shù)據(jù)時序依賴關(guān)系進行捕捉。為了檢驗MSD-LSTM 對電力負荷數(shù)據(jù)中的多尺度時間結(jié)構(gòu)的捕捉能力,本文設(shè)置了MLSTM 和SLSTM 兩個對比實驗。MLSTM 的層數(shù)設(shè)為3,每一層的跳躍尺度設(shè)為1,以檢驗多尺度時間結(jié)構(gòu)對預(yù)測性能的提升;SLSTM 的層數(shù)設(shè)為1,跳躍尺度設(shè)為1,以檢驗深層網(wǎng)絡(luò)結(jié)構(gòu)對預(yù)測性能的提升。LSTM 的隱含層單元數(shù)固定為48。為了保證對比實驗的公平,本文保持上述三種模型在每個樣本集上所使用的隱含層單元數(shù)一致。SVR 和GP 同樣使用過去35 天的負荷值和天氣數(shù)據(jù)來預(yù)測下一天的負荷值。每天的數(shù)據(jù)包含負荷值以及5 個天氣數(shù)據(jù),因此本文將35天的數(shù)據(jù)拼接成一個35×6的向量作為模型的輸入,并預(yù)測下一天的負荷值。此外,SVR 和GP 都是基于核函數(shù)的模型,在本文中SVR 和GP 的核函數(shù)都選取高斯核函數(shù)。
MSD-LSTM、MLSTM 和SLSTM 訓練時使用mini-batch 技術(shù),batch size 設(shè)置為32,即訓練時每次迭代輸入32 個樣本并計算損失函數(shù),根據(jù)損失函數(shù)反向傳播更新網(wǎng)絡(luò)的參數(shù)。訓練時使用mini-batch 技術(shù),可以使網(wǎng)絡(luò)參數(shù)更新更快,同時有利于網(wǎng)絡(luò)參數(shù)更加魯棒地收斂。此外,為了防止過擬合,在全連接層使用Dropout,Dropout率設(shè)為0.05。
4.3.1 對比實驗
使用MSD-LSTM 與MLSTM、SLSTM、SVR 和GP 分別進行實驗并對比。表1 為各模型在短期電力負荷上的預(yù)測結(jié)果,采用均方誤差(Mean Squared Error,MSE)作為評判標準:
其中:yi和分別表示測試集中對應(yīng)第i個樣本的真實值和預(yù)測值,M表示測試集樣本個數(shù)。
從表1 可以看出,MSD-LSTM 在6 個樣本集中的短期負荷預(yù)測都取得了較好的預(yù)測精度。一方面,與SVR 和GP 對比,MSD-LSTM 是以LSTM 為主體構(gòu)建的預(yù)測模型,能夠較好地處理序列建模任務(wù),而SVR和GP并未對存在于電力負荷數(shù)據(jù)中的時序依賴關(guān)系進行建模,因此MSD-LSTM 的預(yù)測性能要明顯優(yōu)于這兩種方法;另一方面,與SLSTM 對比,MSD-LSTM 由三層LSTM 構(gòu)成,能夠更好地建模電力負荷數(shù)據(jù)中的動態(tài)特性,取得了更好的預(yù)測精度,表明深層網(wǎng)絡(luò)結(jié)構(gòu)有利于預(yù)測性能的提升。與MLSTM 對比,MSD-LSTM 通過循環(huán)跳躍連接對短期電力負荷中的日、周和月的時序依賴關(guān)系進行建模,增強了LSTM 對多尺度時序結(jié)構(gòu)建模的能力,取得了更好的預(yù)測精度,表明多尺度時間結(jié)構(gòu)能夠提升預(yù)測性能。因此,MSDLSTM 通過結(jié)合深層網(wǎng)絡(luò)結(jié)構(gòu)建模動態(tài)特性的能力以及多尺度跳躍連接提取多尺度時間結(jié)構(gòu)信息的能力,有效地提升了短期電力負荷預(yù)測精度。
表1 不同方法的負荷預(yù)測均方誤差(MSE)對比Tab.1 Comparison of load forecasting MSE of different methods
更進一步地,本文從6 個樣本集中隨機抽取1 個樣本集,使用上述各種模型對其進行負荷預(yù)測,并對比了各種模型的絕對誤差。絕對誤差越接近0說明預(yù)測精度越高,越遠離0說明預(yù)測精度越低。圖4 展示了MSD-LSTM、SLSTM、MLSTM、SVR 和GP 五種模型預(yù)測的負荷值與實際負荷值的絕對誤差曲線。對比5 條絕對誤差曲線,可以看出MSD-LSTM 能夠取得最好的預(yù)測精度,具體表現(xiàn)為取得了最低的絕對誤差,平均值為0.069。
圖4 不同方法的絕對誤差曲線Fig.4 Absolute error curves of different methods
4.3.2 超參數(shù)探究
為了探究層數(shù)、跳躍數(shù)以及步長(即使用過去多少天的數(shù)據(jù)來進行下一天的負荷預(yù)測)對MSD-LSTM 性能的影響,本文設(shè)置了7組使用不同超參數(shù)的對比實驗,其在6個樣本集上的結(jié)果如表2所示。首先,對比實驗1和實驗4的結(jié)果,實驗4取得了更低的MSE,這表明深層網(wǎng)絡(luò)有利于提升短期負荷預(yù)測的精度。對比實驗2 和實驗7 可以得到同樣的結(jié)果。進一步的,對比實驗4,5 和7 的結(jié)果,實驗7 取得了最低的MSE。這表明跳躍數(shù)會影響模型的性能,同時根據(jù)數(shù)據(jù)實際的多尺度時間結(jié)構(gòu)來選擇合適的跳躍數(shù)有利于提升模型的性能。最后,對比實驗2,3 以及實驗6,7 的結(jié)果,可以發(fā)現(xiàn)具有更短步長的模型可以取得更好的結(jié)果。因此,有效地使用MSDLSTM需要綜合考慮多個超參數(shù)的影響。
表2 不同超參數(shù)設(shè)置的負荷預(yù)測均方誤差(MSE)對比Tab.2 Comparison of load forecasting MSE of different hyperparameter settings
本文針對LSTM 無法有效建模電力負荷數(shù)據(jù)中存在的多尺度時間結(jié)構(gòu)的問題,提出了MSD-LSTM。MSD-LSTM 將LSTM 的拓撲結(jié)構(gòu)設(shè)計為多層并在每層中設(shè)置不同的跳躍連接,顯式地對短期電力負荷數(shù)據(jù)中的多尺度時間結(jié)構(gòu)進行建模。通過兩個地區(qū)負荷數(shù)據(jù)的實驗分析,證明了MSD-LSTM能夠有效地捕捉短期電力負荷數(shù)據(jù)中的多尺度時間結(jié)構(gòu),從而提升負荷預(yù)測精度。
MSD-LSTM 采取的跳躍連接數(shù)是手工設(shè)置的,需要依靠先驗知識,無法自適應(yīng)地學習電力負荷數(shù)據(jù)的多尺度結(jié)構(gòu)。未來的工作會研究如何動態(tài)自適應(yīng)地學習跳躍連接,更好地根據(jù)電力負荷數(shù)據(jù)來學習多尺度結(jié)構(gòu)并對其進行建模,進一步提高電力負荷預(yù)測的精度。