金宇悅,康健,陳永杰
(1.華北理工大學(xué)以升創(chuàng)新教育基地,河北唐山,063210;2.華北理工大學(xué)電氣工程學(xué)院,河北唐山,063210)
由于風力發(fā)電機工作受到包括風速、風向等氣候因素的影響,導(dǎo)致發(fā)電的不穩(wěn)定性與隨機性,盲目將風電接入電網(wǎng)可能會對電網(wǎng)造成損害,而對風力發(fā)電進行提前預(yù)測有助于制定調(diào)度計劃,提升電網(wǎng)運行的安全性。目前常用于超短期風力發(fā)電預(yù)測的方法是機器學(xué)習。文獻[1]將小波分解與自適應(yīng)神經(jīng)模糊推理系統(tǒng)相結(jié)合,利用支持向量機減少預(yù)測誤差。文獻[2]采用統(tǒng)計預(yù)測方法并利用人工蜂群算法優(yōu)化得到神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,構(gòu)建ABC-BP神經(jīng)網(wǎng)絡(luò)風電功率預(yù)測模型。文獻[3-5]提出了利用小波變換將原始風電數(shù)據(jù)分解為不同的頻率,然后利用卷積神經(jīng)網(wǎng)絡(luò)有效地學(xué)習了每個頻率中用于提高預(yù)測精度的非線性特征。
本文選擇具有LSTM結(jié)構(gòu)的循環(huán)神經(jīng)網(wǎng)絡(luò)。以其優(yōu)異的非線性擬合能力和數(shù)據(jù)的學(xué)習能力,有效的提升了網(wǎng)絡(luò)訓(xùn)練效果和預(yù)測精度,從而實現(xiàn)每15分鐘一次自動預(yù)測,滾動執(zhí)行的要求。
相較于傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)沒有選擇性的記憶所有信息,LSTM-RNN采用了“門控制”的思想,通過遺忘門、輸入門、輸出門來控制更新這個網(wǎng)絡(luò)的記憶內(nèi)容[6]。其核心思想是將數(shù)值位小數(shù)的梯度由連乘形式變?yōu)槔奂有问絒7],可使LSTM在處理長期時序信息時解決梯度消失問題。具體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 LSTM-RNN結(jié)構(gòu)
第一個門控制是遺忘門,利用輸出之后的0~1的一個數(shù)與細胞狀態(tài)C相乘,就可以實現(xiàn)對跨時間的信息的遺棄。此操作可以由式1表示:
第二個門控制為輸入門,則負責決定輸入新信息的數(shù)量[9]。輸入門的操作分成兩個部分,如下兩式所示:
式中字母與式1中含義相同,但是權(quán)重和偏倚的數(shù)值會有所不同。通過這兩個式子的結(jié)果進行點乘,可以獲得更新進入到新細胞狀態(tài)的內(nèi)容。
通過遺忘門和輸入門的操作對細胞狀態(tài)C進行更新。攜帶記憶信號的Ct解決了網(wǎng)絡(luò)梯度消失的問題。最終細胞狀態(tài)經(jīng)過tanh激活函數(shù)與ot相乘所得,而ot是上一時刻隱藏層神經(jīng)元的輸出和這個時刻的輸入相結(jié)合通過sigmoid激活函數(shù)所得[10],具體如式(4)和式(5)所示 :
選用Adam作為網(wǎng)絡(luò)的優(yōu)化器,選用平均絕對誤差MAE作為網(wǎng)絡(luò)的損失函數(shù),網(wǎng)絡(luò)由兩層LSTM神經(jīng)元和一個全連接層構(gòu)成,結(jié)構(gòu)如圖2所示。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)
選用風速值作為輸入,選用長度為20個數(shù)據(jù)的窗口,對第21個數(shù)據(jù)進行預(yù)測,即對未來10分鐘的數(shù)據(jù)進行預(yù)測。訓(xùn)練集輸入到模型的數(shù)據(jù)格式為(34980,20,1)的張量,驗證集為(12590,20,1)的張量。
網(wǎng)絡(luò)訓(xùn)練參數(shù)選用Batch_size=256,Steps_per_epo ch=120,validation_steps=40,Eopch=20。通過模型訓(xùn)練可得,每個Epoch耗時2s 20ms~3s 21ms,最終總耗時50s 419ms。訓(xùn)練過程中的損失如圖3所示。
圖3 訓(xùn)練損失和驗證損失
最后模型在測試集上的平均絕對誤差MAE為0.1659,由于模型進行了標準化,通過MAE誤差和標準差相乘可以得到實際誤差約為0.4637,由此可知此模型擁有非常好的預(yù)測精度,預(yù)測效果圖可見圖4所示。
圖4 預(yù)測結(jié)果
在圖4中由藍色的點連成的線是前20個數(shù)據(jù),紅色的叉表示第21個點的真實數(shù)據(jù),綠色的點是模型的預(yù)測數(shù)據(jù)。
選用風速本身、風速的最大值、風速的最小值和氣溫這四個變量作為模型的輸入,輸入數(shù)據(jù)選用連續(xù)720個數(shù)據(jù),在這720個數(shù)據(jù)中進行步長為6的采樣。訓(xùn)練集輸入網(wǎng)絡(luò)的數(shù)據(jù)形狀為(34280,120,4)的張量,驗證集為(11890,120,4)的張量,測試集為(3744,120,4)的張量。
與單個變量預(yù)測一個數(shù)據(jù)不同,多個變量會導(dǎo)致數(shù)據(jù)集數(shù)據(jù)量大幅上漲。為了避免出現(xiàn)過擬合現(xiàn)象,模型在之前的結(jié)構(gòu)上加入了dropout隨機失活技術(shù),同時由于輸入數(shù)據(jù)大小的增加,提升了LSTM結(jié)構(gòu)中神經(jīng)元的個數(shù)。
網(wǎng)絡(luò)訓(xùn)練參數(shù)選擇,Batch_size=256,Steps_per_epoch=60,validation_steps=40,Eopch=20。通過對模型的訓(xùn)練可得,每個Epoch耗時15s 248ms~18s 298ms,最終總耗時312s 113ms。網(wǎng)絡(luò)的訓(xùn)練損失如圖5所示。
圖5 網(wǎng)絡(luò)訓(xùn)練損失圖
網(wǎng)絡(luò)最終的平均絕對誤差MAE為0.1616,換算成實際風速誤差約為0.4517,可以發(fā)現(xiàn),在使用多變量對未來某個時間點進行預(yù)測時,實際效果與單變量預(yù)測誤差相差不大,說明了風速在多變量預(yù)測中占主要作用。
本文主要從輸入門、輸出門、遺忘門三個門控制值和細胞狀態(tài)更新四方面介紹了LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)。通過LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)算法的構(gòu)建,分別完成了單變量預(yù)測未來一個時間點、多變量預(yù)測未來一個時間點的實例驗證,最終模型很好地完成了風速到發(fā)電功率的預(yù)測,驗證了在實際風速預(yù)測中在多變量數(shù)據(jù)里風速本身仍起決定性作用。