國網(wǎng)甘肅省電力公司 李云冰 徐蘭蘭 王曉軍 張小玲
電網(wǎng)線損電量預測是提高供電企業(yè)管理水平、優(yōu)化電網(wǎng)經(jīng)濟運行、實現(xiàn)節(jié)能降損的一項基礎工作,文獻[1]利用牛頓拉夫遜法,采用負荷電量來計算低壓配電臺區(qū)理論線損電量;文獻[2]通過合理地獲取負荷和基于該負荷的潮流計算方法實現(xiàn)了對配電網(wǎng)理論線損的計算;文獻[3]提出一種基于前推回代法的配電網(wǎng)損耗計算方法。然而,上述基于潮流計算的傳統(tǒng)配電網(wǎng)損耗計算方法多數(shù)是依賴于配電網(wǎng)的網(wǎng)絡結(jié)構,因而無法挖掘大量數(shù)據(jù)與配電網(wǎng)損耗之間的關系。事實上,隨著智能電網(wǎng)的建設,電力監(jiān)測系統(tǒng)中已經(jīng)積累到了大量的數(shù)據(jù),這為配電網(wǎng)損耗計算和評估提供了條件與新途徑。文獻[4]提出了一種基于改進K-Means聚類和BP神經(jīng)網(wǎng)絡的損耗計算方法,該方法無需建立精準的數(shù)學計算模型,通過利用神經(jīng)網(wǎng)絡自身強大的自學能力以及非線性處理能力,可以實現(xiàn)損耗及其影響特征參數(shù)之間的關系。文獻[5]提出一種基于隨機森林的損耗計算方法。但是,基于BP神經(jīng)網(wǎng)絡、向量機淺層學習模型的配電網(wǎng)理論電網(wǎng)損耗計算方法多數(shù)僅具有單層的邏輯結(jié)構,需要手工指定特征且易出現(xiàn)局部最優(yōu)問題,因而在數(shù)據(jù)特征提取表達能力、數(shù)據(jù)間非線性關系建立方面均存在缺陷。
深度學習的基本思想是構建包含多層隱含層的網(wǎng)絡結(jié)構,可自動逐層從樣本數(shù)據(jù)中提取深層特征,更加完整地表征數(shù)據(jù)內(nèi)部的豐富信息,進而實現(xiàn)對數(shù)據(jù)關系的分析。本文在介紹門控循環(huán)神經(jīng)網(wǎng)絡的深度學習理論基礎上,進一步搭建了基于門控循環(huán)神經(jīng)網(wǎng)絡的配電網(wǎng)損耗計算模型,并對模型進行了訓練,探尋歷史數(shù)據(jù)中輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的隱含關系,最后通過算例分析,研究算法性能及配電網(wǎng)損耗計算精度。
循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)作為深度學習模型的典型代表之一,是一類用于對序列數(shù)據(jù)建模的神經(jīng)網(wǎng)絡。RNN的信息在層內(nèi)、層與層之間可雙向傳遞,網(wǎng)絡中當前神經(jīng)元的輸出與之前的輸出也相關,網(wǎng)絡會對前面的信息進行記憶并應用于當前神經(jīng)元的計算中,即隱含層之間的節(jié)點也是有連接的,并且隱含層的輸入不僅包括輸入層的輸出,還包括上一時刻隱含層的輸出,因而可充分利用數(shù)據(jù)中時序信息的深度表達能力,為處理序列數(shù)據(jù)帶來了強大支撐,并在語音識別、機器翻譯及時序分析等方面實現(xiàn)了突破。
圖1展示了一個典型RNN結(jié)構及其網(wǎng)絡展開示意圖。由圖可知,RNN對長度為N的序列展開之后,可視為一個有N個中間層的前饋神經(jīng)網(wǎng)絡。因此RNN網(wǎng)絡中,對于一個序列數(shù)據(jù),當前神經(jīng)元的輸出與之前的輸出是相關的,網(wǎng)絡會對之前的信息進行記憶并應用于當前神經(jīng)元的計算,即隱含層之間的節(jié)點是有連接的,并且隱含層的輸入不僅包括輸入層的輸出還包括了上一時刻隱含層的輸出,故RNN可更好地利用傳統(tǒng)神經(jīng)網(wǎng)絡所不能建模的信息。理論上RNN可處理任意長度的序列數(shù)據(jù),但由于t時刻需要考慮t時刻之前所有時間步驟所帶來的輸入,因此隨著輸入數(shù)據(jù)時間增加,將引起梯度在傳遞的過程中隨時間產(chǎn)生累計,出現(xiàn)梯度消失和梯度爆炸問題,即RNN在實際使用過程中會面臨長期依賴問題。
圖1 典型RNN結(jié)構及其網(wǎng)絡展開示意圖
K.Cho等于2014年提出門控循環(huán)神經(jīng)網(wǎng)絡(Gated Recurrent Unit,GRU)。GRU屬 于RNN的一種改進,可以更加簡單的結(jié)構帶來更加高效的訓練,進一步減少梯度彌散和梯度消失問題(圖2)。
圖2 GRU結(jié)構圖
GRU單元取消了輸出門,單元的全部狀態(tài)就是該時刻的單元輸出。與此同時,GRU單元還增加了一個控制門來控制哪部分前一時間步的狀態(tài)在該時刻的單元內(nèi)呈現(xiàn)。在t時刻GRU的計算表達式如式(1)所示,其中,Wxr,Whr為重置門的權重矩陣;Wxz,Whz為更新門的權重矩陣;Wxg,Whg為形成當前記憶時的網(wǎng)絡權重矩陣;br,bz,bg為偏置矩陣。
系統(tǒng)線損電量具有非線性、隨機性和時序性的特點,可通過數(shù)據(jù)驅(qū)動方法來進行線損電量的預測。針對本文提出的基于GRU進行線損電量預測方法的總體流程圖如圖3所示,具體過程如下:
確定模型的輸入量及輸出量,并對輸入數(shù)據(jù)和輸出數(shù)據(jù)進行預處理。在本文方法中,輸入數(shù)據(jù)是指影響線損電量的各種因素,包括有功供電量、無功供電量、專變月有功供電量、專變月無功供電量、公變月有功供電量、公變月無功供電量、公用變壓器臺數(shù)及總?cè)萘?、公用變壓器平均負載率、功率因數(shù)、三相不平衡度、溫度、濕度、是否節(jié)假日;輸出數(shù)據(jù)則為對應時刻的實際線損電量數(shù)據(jù)。結(jié)合歷史數(shù)據(jù),輸入數(shù)據(jù)與輸出數(shù)據(jù)便可構成樣本數(shù)據(jù)集。在此基礎上,分別采用min-max標準化、one-hot或log(x+1)/log(max+1)的方式進行數(shù)據(jù)預處理,并將預處理后的數(shù)據(jù)集按照60%、20%、20%的方式依次劃分為訓練數(shù)據(jù)集、測試集和驗證集。
建立基于GRU的線損電量預測模型,并利用訓練集對模型進行訓練,利用驗證集最終確定模型GRU層數(shù)、學習率等模型參數(shù)。本文所提出的用于線損電量預測的GRU模型如圖4所示,該模型包含了1個輸入層、多個由GRU單元構成的隱含層、1個輸出層。隱含層為模型的核心部分,主要是用來建立輸入信息與輸出線損電量之間的非線性關系。通過采用“預訓練+參數(shù)微調(diào)”方式利用訓練數(shù)據(jù)集。具體地,利用多GRU層的堆疊實現(xiàn)逐層數(shù)據(jù)特征提取,通過組合底層特征形成更加抽象的高層特征,最終揭示輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的內(nèi)在隱含關系。
利用測試集估計模型的泛化誤差,并確定模型性能是否滿足準確率的要求。若不能滿足預測準確率要求,則需要重新確定模型的隱含層數(shù)、學習率等模型參數(shù),直至滿足誤差要求為止。
圖3 基于GRU的線損電量預測流程圖
本文采用TensorFlow的深度學習框架,編譯環(huán)境為Python3.6.8;處理器為i7-8086K,GPU為GTX 1080 Ti。
圖4 基于GRU的模型整體結(jié)構
4.2.1 模型參數(shù)設置
在建立網(wǎng)絡模型時必須要面對這樣一個問題:算法中的不同超參數(shù)控制不同方面的算法性能。有些超參數(shù)會影響算法運行時間和存儲成本,有些超參數(shù)會影響學習到的模型質(zhì)量以及在新輸入上推斷正確結(jié)果的能力。對于某些超參數(shù),當參數(shù)值太大時會發(fā)生過擬合,譬如中間層隱藏單元的數(shù)量,增加數(shù)量能提高模型的容量容易發(fā)生過擬合。而對于某些超參數(shù),當參數(shù)的數(shù)值太小時也會發(fā)生過擬合。譬如,最小的權重衰減系數(shù)允許為零,此時學習算法具有較大的有效容量,反而容易過擬合。
學習率是最重要的超參數(shù),當學習率過大時梯度下降可能會增加而非減少訓練誤差;當學習率太小,訓練不僅慢,還可能永久停留在一個高的訓練誤差上。調(diào)整學習率外的其他超參數(shù)時還需要同時監(jiān)測訓練誤差和測試誤差,以判斷模型是否過擬合或欠擬合,然后調(diào)整其容量。因此,需要綜合考慮各超參數(shù)與線損電量預測準確率之間的關系及其作用規(guī)律,在此基礎上獲得各超參數(shù)。當前的機器學習中,上述各超參數(shù)的選擇往往是通過嘗試的方式。本文通過反復試驗,最終確定的模型參數(shù)為:隱含層數(shù)4,GRU每層神經(jīng)元數(shù)目512,迭代次數(shù)200,世代數(shù)目1000,訓練批次200,學習率0.00015。
4.2.2 結(jié)果分析
損失函數(shù)是用于衡量模型預測得到的線損電量與真實線損電量的差異程度,若預測結(jié)果與實際線損電量差距越大,則損失值Loss越大;反之,若預測結(jié)果與實際線損電量差距越小,則損失值Loss越小。本文選用交叉熵作為損失函數(shù),用以計算模型預測得到的線損電量與真實線損電量的差異程度。交叉熵的基本原理為。
圖5 損失值Loss與訓練Epoch之間的關系
圖6 線損電量預測值與實際值對比圖
本文利用Tensorflow人工智能框架,Python語言編寫,Jupyter Notebook編程環(huán)境。損失函數(shù)值Loss隨著迭代Epoch變化關系如圖5所示。由圖可知,損失函數(shù)隨迭代Epoch增加而逐漸降低,這也說明模型的訓練結(jié)果越來越好,準確率也越來越高。在訓練結(jié)束后,利用測試樣本集對線損電量進行預測,得到的預測結(jié)果與實際結(jié)果對比如圖6。驗證表明,本方法具有較好的收斂性和泛化能力,以及較高的預測準確率。