柯 銘 劉 凱 趙 宏
(蘭州理工大學計算機與通信學院 甘肅 蘭州 730050)
風能是清潔、可再生能源,風電產業發展越來越快。風電平價上網的有序推進,對風電企業自身提出了更高的要求。由于風電大規模接入電網,風電自身的間歇性、波動性、隨機性對電網安全造成的威脅越來越大[1]。風電功率預測技術是風電產業平穩發展的重要支撐。
傳統風電功率預測技術主要分為兩類:一類是基于物理方法的預測;另一類是基于歷史數據的預測[2]。本文采用了基于歷史數據的風電功率預測方法。該方法的基本前提是假定風電功率變化與歷史數據存在密切聯系[3-4]。基于這樣的假設,建立不同的模型,訓練模型,從而使模型學習到風電功率變化規律,利用訓練完成的模型和風電廠產生的新數據,對下一時段的風電功率做相應預測。基于歷史數據的預測方法已經取得了良好的預測結果。文獻[5]采用小波變換與人工神經網絡(ArtificialNeuralNetwork,ANN)結合的方法對風機發電量預測,解決了風機發電量預測中的時延問題,但風電場預測時延問題也可以通過追蹤實時風電變化規律得到緩解。文獻[6]對比了LSTM模型、ANN模型和SVM模型在預測風機發電量時的性能,隨著預測時長的增加,各模型誤差均有所上升,但LSTM模型在各時段均取得了最好的預測效果。然而,上述文獻并未考慮不同風電廠風電變化規律的差異性。
不同風電場、不同季節風電功率預測非常復雜。為尋求一種新的預測方法,可以快速自適應于任意風電廠,本文提出了基于LSTM的滾動預測方法。基于滾動預測的神經網絡模型相比于傳統神經網絡模型可以更加及時地追蹤風電數據變化規律。滾動預測方法在時間尺度上設計了特殊的預測邏輯,其預測邏輯及數據利用方式與傳統神經網絡不相同。滾動預測方法可以使模型不斷微調,更加準確地跟蹤最新的風電功率變化規律,有效預測超短期風電功率;滾動預測方法使模型具有快速自調節能力,因此模型可以快速應用到不同風電場進行預測。本文采用某風電廠的數據采集與監視控制系統(SupervisoryControlAndDataAcquisition,SCADA)真實歷史數據作為實驗數據。
循環神經網絡(RecurrentNeuralNetwork,RNN)是人工神經網絡的一種。RNN善于處理時間序列數據,可以在時間軸上描述數據前后關系。TensorFlow所提供的RNN結構如圖1所示。

圖1 TensorFlow截斷反向傳播
TensorFlow提供的RNN截斷反向傳播不同于標準的截斷反向傳播,TensorFlow將序列分為兩部分,第一部分的FinalState作為第二部分的InitialState。這樣可以緩解梯度消失或梯度爆炸問題,更容易獲取長時間前后數據依賴關系。RNN每一層的層內神經元之間都有連接,這樣的結構既有好處,也有不利影響。由于RNN層內神經元之間有連接,使網絡能夠學習到序列數據前后變化規律,序列數據內部時序規律易于被挖掘,因此,RNN被廣泛應用在語音識別、機器翻譯等序列數據處理領域[7-8]。但這樣的結構也產生了一些問題,在數據后向傳遞時,不可避免地容易產生梯度消失或梯度爆炸問題,限制了其對長時依賴關系的處理。RNN衍生的LSTM網絡通過在RNN隱藏層增加多個特殊的計算節點,改變了反向傳播時梯度傳遞的方式,有效減緩了梯度消失或梯度爆炸問題。
SeppHochreiter和JurgenSchmidhuber于1997年提出LSTM網絡,它是一種特殊的RNN網絡[9-11]。LSTM網絡的block結構如圖2所示。

圖2 LSTM網絡block結構
在LSTM網絡block結構中出現了多個gate結構。在RNN網絡中前后兩個神經元的隱藏層節點中只經過一層Sigmoid激活函數,因此后向傳播時梯度會乘以Sigmoid激活函數的導數值。與RNN不同,LSTM的block是擁有三個gate結構的特殊網絡,即inputgate、forgategate和outputgate。gate結構含有一個Sigmoid激活函數和一個按位做乘法的計算節點。在LSTM中,前后兩個神經元的隱藏層節點的信息傳播不是經過Sigmoid層,而是乘以Sigmoid的函數值激活值,即LSTM的forgetgate,因此后向傳播時梯度會乘以Sigmoid的函數值。由于RNN在后向傳播時梯度不斷乘以Sigmoid的導數值,LSTM在后向傳播時梯度不斷乘以sigmoid的函數值,故兩者的數值分布存在著顯著差異[12]。這樣就解決了RNN在處理長時依賴關系的數據時易產生梯度消失或梯度爆炸問題。LSTM網絡block中顯示了LSTM的前向傳播,其具體計算如下:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
式中:ft為forget gate的計算結果,forget gate主要用來控制上一時刻單元狀態ct-1傳遞到當前時刻單元狀態ct的信息保留;[]表示對兩個向量做拼接計算;ht-1為上一時刻單元的輸出;wf和bf分別為forget gate的權重和偏置;σ為Sigmoid激活函數。
it=σ(Wi·[ht-1,xt]+bi)
(2)
式中:it為input gate的計算結果,輸入門也具有獨立的權重和偏置。

(3)
由式(1)-式(3)計算出當前時刻單元狀態ct:
(4)
式中:° 表示按元素乘。
ot=σ(Wo·[ht-1,xt]+bo)
(5)
式中:ot為output gate的計算。
由式(4)-式(5)得出當前時刻的輸出nt:
ht=ot° tanh(ct)
(6)
LSTM的正向傳播計算了當前時刻單元狀態ct和當前時刻的輸出ht,完成了網絡前向傳播計算。網絡的反向誤差傳播與其他神經網絡反向傳播原理類似,最終更新網絡各處權重和偏置,完成模型訓練。本文采用了LSTM網絡模型,同時結合了滾動預測的方法進行實驗。
數據歸一化是數據預處理的重要步驟之一,目的是使目標函數快速收斂,歸一化操作是由于數據原始量綱不適合于模型輸入。本文選取了影響風電功率預測的四種重要參數,即歷史功率、風速、風向以及溫度。對這幾種不同參量采用了不同的歸一化方法。功率歸一化如下:
(7)
式中:Po為原始數據;Pcap為風機額定功率;Ps為歸一化后的功率值。風速、風向以及溫度歸一化計算如下:
(8)
在獲取長時間的數據后得到了具有代表性的最值進而計算歸一化后的數據。歸一化數據用于預測之后,重新將功率數值還原,從而具有實際意義,最終計算出模型的準確率。
基于歷史數據的風電功率預測本質是建立一個模型,反映一種映射關系,即未來一段時間的風電功率與歷史風電功率以及歷史環境因素參數之間的映射關系。這種映射關系是隨時間、地點變化的,描述一種變化的映射關系,只有使模型學習到相對完備的信息,這種關系才有可能被準確描述。一個固定的、不變的復雜模型可以描述一個或周圍幾個風電場的映射關系。距離較遠風電場預測難以用同一模型來描述各自的映射關系。同一風電廠不同季節數據變化規律也難以用一個模型來描述。而基于數值天氣的預測方法是一種直接的輸出預測結果,其預測準確性僅依賴于輸入的天氣數值參數的準確性。雖然原理相對簡單,但模型考慮了瞬時風電功率變化規律,而不是用一套不變的參數去預測風電功率,其各項參數因風電場的不同而改變,可以準確描述功率變化規律。
綜上,本文提出基于LSTM的滾動預測模型,建立一種持續學習的預測方法,使網絡在實際應用時具有自我微調能力。因此,網絡可以追蹤最新的功率變化規律,有利于提高模型的預測質量。
滾動預測將網絡接收到的最新數據,不僅作為預測的依據,同時與前一時刻的預測結果構成訓練數據,對新數據規律進行再次學習,微調網絡參數,使網絡可以實時跟蹤數據變化規律,并使下一次預測更加精確。滾動預測方法不僅能在被訓練的風機上取得良好的效果,也可以迅速遷移應用到其他風機上。若需要快速應用到其他風機可以使其學習目標風機的歷史數據,初步訓練網絡,然后將其應用于目標風機。若目標風機無歷史數據,可以學習臨近風場的風機數據或類似地形氣候條件下的風機數據,再通過滾動預測掌握目標風機功率變化規律。滾動預測網絡的時序邏輯如圖3所示。
當網絡進行實際預測時,從T2時刻起會自動更新LSTM網絡參數,以及時追蹤到參數變化規律,有利于提高預測質量。此外,為了防止過擬合現象的出現,網絡在模型訓練時采用的學習率為指數衰減策略,而在測試,即模擬實際應用中使用了固定且很小的學習率,控制了每次滾動預測中網絡參數可調整的范圍。這樣使得網絡在滾動預測測試中能夠微調網絡參數,跟蹤數據最新變化規律,且不易發生過擬合現象。
本文以LSTM網絡作為預測模型。利用Python及深度學習框架TensorFlow搭建了模型進行實驗。利用TensorFlow可視化工具Tensor Board可以顯示整個模型的結構,如圖4所示。其中,LSTM網絡采用了basic_lstm_cell作為LSTM網絡的隱藏層。

圖4 LSTM模型
本文使用TensorFlow深度學習框架搭建LSTM模型,修改了模型對數據處理的邏輯順序,即將其與滾動預測方法相結合,并對不同時長的數據進行預測實驗。采用某風電場真實歷史數據,選取了四維參數:歷史功率、瞬時風速、瞬時風向和環境溫度對未來風電功率進行了預測。實驗選取了與風機發電量聯系最為緊密的四維歷史參數數據,在參數選取時,參數不宜過多,這會影響對風電功率變化規律的特征提取,也不宜太少,導致其提供的信息量不足,數據特征也難以提取。
搭建模型之后將實驗數據分為兩部分:訓練數據和測試數據。設計了輸入輸出的數據格式,將輸入網絡的數據進行后項截取,提取風電功率數據,進行前向截取,使其形成時間差,模擬時間序列,使輸入到模型中的數據能按照滾動預測方法的要求模擬出真實的用場景。
實驗采用了同一數據集,對比了不同的數據量對模型進行測試。首先設計程序檢查錯誤缺失數據,然后進行數據截取及歸一化,最后在不同數據量中檢測了模型性能。經過多次實驗分析,發現建立具有240個隱含神經元的LSTM網絡,在運算速度以及預測準確率之間得到了一定的平衡。同時,如使用過于復雜的網絡而沒有足夠的數據進行訓練,易導致過擬合現象的產生,因此,建模過程中需要多次實驗驗證所建網絡的復雜程度是否合理。
實驗中滾動LSTM模型15分鐘預測損失函數變化趨勢如圖5所示。

圖5 LSTM損失函數變化曲線
可以看出,損失函數的值在前20次迭代中下降很快,表明網絡正在不斷學習數據特征。經過40輪迭代計算后順勢函數波動較小。最終損失函數維持在0.5左右。
BP((back propagation,BP)網絡作為一種基本的神經網絡被廣泛應用在回歸預測問題中。本文首先對比研究了BP網絡與LSTM網絡在同一數據集下對風機發電量的預測。在預測中BP網絡采用了13層的隱含層網絡,分別對不同時間長度的風機發電量進行了預測,結果如表1所示。

表1 BP網絡LSTM網絡實驗結果
從表1可以看出,LSTM網絡整體性能優于BP神經網絡,在各個預測時長均取得了優于BP神經網絡的預測效果。
在研究滾動預測與LSTM相結合的實驗中,訓練、測試和預測數據,時間分辨率均為1分鐘,預測時長和預測依據時長相等。采用了相同的訓練數據集,測試數據集有所不同,分別使用了6 840和66 240條數據進行測試實驗。同時研究了15分鐘、30分鐘、45分鐘和60分鐘的風電預測。BP網絡與LSTM網絡在預測風機發電預測結果如表2所示,可以看出滾動預測的方法明顯優于傳統方法。采用66 240條測試數據預測15分鐘,滾動預測方法比傳統LSTM模型誤差減小了約13%。此外,滾動預測模型隨著測試數據的增加,其預測性能進一步被提高。不同測試數據量預測15分鐘功率時,采用66 240條數據的準確率比采用6 840條數據提高了9.3%。

表2 滾動LSTM網絡實驗結果
隨著預測時長的增加,所有預測模型的誤差都在不斷增加,因此僅依賴歷史數據的預測方法隨著預測時長增加誤差也逐步增大。基于滾動預測的LSTM模型在任何時長的預測中均取得了最好的結果。滾動預測的方法隨著測試數據集的來源與訓練數據集的差異變化,更能體現其優越性。
最終得到15分鐘基于滾動預測的LSTM模型結果,選取2 000分鐘的預測結果與真實數據,如圖6所示。

圖6 預測結果
可以看出,雖然預測數據基本接近真實值,但延遲現象還是非常明顯。
本文提出了基于LSTM的滾動預測風機發電量預測方法,該方法可以及時追蹤風電功率變化規律。相比普通LSTM網絡提高了風機發電量預測準確率,同時增強了網絡對不同風電場的適應能力,隨著測試數據的增加。滾動預測方法更能體現其優勢,即模型長時間地投入使用,其預測準確率可進一步提高。