國網(wǎng)甘肅省電力公司 李云冰 徐蘭蘭 王曉軍 張小玲
電網(wǎng)線損電量預(yù)測是提高供電企業(yè)管理水平、優(yōu)化電網(wǎng)經(jīng)濟(jì)運(yùn)行、實(shí)現(xiàn)節(jié)能降損的一項(xiàng)基礎(chǔ)工作,文獻(xiàn)[1]利用牛頓拉夫遜法,采用負(fù)荷電量來計(jì)算低壓配電臺區(qū)理論線損電量;文獻(xiàn)[2]通過合理地獲取負(fù)荷和基于該負(fù)荷的潮流計(jì)算方法實(shí)現(xiàn)了對配電網(wǎng)理論線損的計(jì)算;文獻(xiàn)[3]提出一種基于前推回代法的配電網(wǎng)損耗計(jì)算方法。然而,上述基于潮流計(jì)算的傳統(tǒng)配電網(wǎng)損耗計(jì)算方法多數(shù)是依賴于配電網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu),因而無法挖掘大量數(shù)據(jù)與配電網(wǎng)損耗之間的關(guān)系。事實(shí)上,隨著智能電網(wǎng)的建設(shè),電力監(jiān)測系統(tǒng)中已經(jīng)積累到了大量的數(shù)據(jù),這為配電網(wǎng)損耗計(jì)算和評估提供了條件與新途徑。文獻(xiàn)[4]提出了一種基于改進(jìn)K-Means聚類和BP神經(jīng)網(wǎng)絡(luò)的損耗計(jì)算方法,該方法無需建立精準(zhǔn)的數(shù)學(xué)計(jì)算模型,通過利用神經(jīng)網(wǎng)絡(luò)自身強(qiáng)大的自學(xué)能力以及非線性處理能力,可以實(shí)現(xiàn)損耗及其影響特征參數(shù)之間的關(guān)系。文獻(xiàn)[5]提出一種基于隨機(jī)森林的損耗計(jì)算方法。但是,基于BP神經(jīng)網(wǎng)絡(luò)、向量機(jī)淺層學(xué)習(xí)模型的配電網(wǎng)理論電網(wǎng)損耗計(jì)算方法多數(shù)僅具有單層的邏輯結(jié)構(gòu),需要手工指定特征且易出現(xiàn)局部最優(yōu)問題,因而在數(shù)據(jù)特征提取表達(dá)能力、數(shù)據(jù)間非線性關(guān)系建立方面均存在缺陷。
深度學(xué)習(xí)的基本思想是構(gòu)建包含多層隱含層的網(wǎng)絡(luò)結(jié)構(gòu),可自動逐層從樣本數(shù)據(jù)中提取深層特征,更加完整地表征數(shù)據(jù)內(nèi)部的豐富信息,進(jìn)而實(shí)現(xiàn)對數(shù)據(jù)關(guān)系的分析。本文在介紹門控循環(huán)神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)理論基礎(chǔ)上,進(jìn)一步搭建了基于門控循環(huán)神經(jīng)網(wǎng)絡(luò)的配電網(wǎng)損耗計(jì)算模型,并對模型進(jìn)行了訓(xùn)練,探尋歷史數(shù)據(jù)中輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的隱含關(guān)系,最后通過算例分析,研究算法性能及配電網(wǎng)損耗計(jì)算精度。
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)作為深度學(xué)習(xí)模型的典型代表之一,是一類用于對序列數(shù)據(jù)建模的神經(jīng)網(wǎng)絡(luò)。RNN的信息在層內(nèi)、層與層之間可雙向傳遞,網(wǎng)絡(luò)中當(dāng)前神經(jīng)元的輸出與之前的輸出也相關(guān),網(wǎng)絡(luò)會對前面的信息進(jìn)行記憶并應(yīng)用于當(dāng)前神經(jīng)元的計(jì)算中,即隱含層之間的節(jié)點(diǎn)也是有連接的,并且隱含層的輸入不僅包括輸入層的輸出,還包括上一時(shí)刻隱含層的輸出,因而可充分利用數(shù)據(jù)中時(shí)序信息的深度表達(dá)能力,為處理序列數(shù)據(jù)帶來了強(qiáng)大支撐,并在語音識別、機(jī)器翻譯及時(shí)序分析等方面實(shí)現(xiàn)了突破。
圖1展示了一個(gè)典型RNN結(jié)構(gòu)及其網(wǎng)絡(luò)展開示意圖。由圖可知,RNN對長度為N的序列展開之后,可視為一個(gè)有N個(gè)中間層的前饋神經(jīng)網(wǎng)絡(luò)。因此RNN網(wǎng)絡(luò)中,對于一個(gè)序列數(shù)據(jù),當(dāng)前神經(jīng)元的輸出與之前的輸出是相關(guān)的,網(wǎng)絡(luò)會對之前的信息進(jìn)行記憶并應(yīng)用于當(dāng)前神經(jīng)元的計(jì)算,即隱含層之間的節(jié)點(diǎn)是有連接的,并且隱含層的輸入不僅包括輸入層的輸出還包括了上一時(shí)刻隱含層的輸出,故RNN可更好地利用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)所不能建模的信息。理論上RNN可處理任意長度的序列數(shù)據(jù),但由于t時(shí)刻需要考慮t時(shí)刻之前所有時(shí)間步驟所帶來的輸入,因此隨著輸入數(shù)據(jù)時(shí)間增加,將引起梯度在傳遞的過程中隨時(shí)間產(chǎn)生累計(jì),出現(xiàn)梯度消失和梯度爆炸問題,即RNN在實(shí)際使用過程中會面臨長期依賴問題。

圖1 典型RNN結(jié)構(gòu)及其網(wǎng)絡(luò)展開示意圖
K.Cho等于2014年提出門控循環(huán)神經(jīng)網(wǎng)絡(luò)(Gated Recurrent Unit,GRU)。GRU屬 于RNN的一種改進(jìn),可以更加簡單的結(jié)構(gòu)帶來更加高效的訓(xùn)練,進(jìn)一步減少梯度彌散和梯度消失問題(圖2)。

圖2 GRU結(jié)構(gòu)圖
GRU單元取消了輸出門,單元的全部狀態(tài)就是該時(shí)刻的單元輸出。與此同時(shí),GRU單元還增加了一個(gè)控制門來控制哪部分前一時(shí)間步的狀態(tài)在該時(shí)刻的單元內(nèi)呈現(xiàn)。在t時(shí)刻GRU的計(jì)算表達(dá)式如式(1)所示,其中,Wxr,Whr為重置門的權(quán)重矩陣;Wxz,Whz為更新門的權(quán)重矩陣;Wxg,Whg為形成當(dāng)前記憶時(shí)的網(wǎng)絡(luò)權(quán)重矩陣;br,bz,bg為偏置矩陣。

系統(tǒng)線損電量具有非線性、隨機(jī)性和時(shí)序性的特點(diǎn),可通過數(shù)據(jù)驅(qū)動方法來進(jìn)行線損電量的預(yù)測。針對本文提出的基于GRU進(jìn)行線損電量預(yù)測方法的總體流程圖如圖3所示,具體過程如下:
確定模型的輸入量及輸出量,并對輸入數(shù)據(jù)和輸出數(shù)據(jù)進(jìn)行預(yù)處理。在本文方法中,輸入數(shù)據(jù)是指影響線損電量的各種因素,包括有功供電量、無功供電量、專變月有功供電量、專變月無功供電量、公變月有功供電量、公變月無功供電量、公用變壓器臺數(shù)及總?cè)萘俊⒐米儔浩髌骄?fù)載率、功率因數(shù)、三相不平衡度、溫度、濕度、是否節(jié)假日;輸出數(shù)據(jù)則為對應(yīng)時(shí)刻的實(shí)際線損電量數(shù)據(jù)。結(jié)合歷史數(shù)據(jù),輸入數(shù)據(jù)與輸出數(shù)據(jù)便可構(gòu)成樣本數(shù)據(jù)集。在此基礎(chǔ)上,分別采用min-max標(biāo)準(zhǔn)化、one-hot或log(x+1)/log(max+1)的方式進(jìn)行數(shù)據(jù)預(yù)處理,并將預(yù)處理后的數(shù)據(jù)集按照60%、20%、20%的方式依次劃分為訓(xùn)練數(shù)據(jù)集、測試集和驗(yàn)證集。
建立基于GRU的線損電量預(yù)測模型,并利用訓(xùn)練集對模型進(jìn)行訓(xùn)練,利用驗(yàn)證集最終確定模型GRU層數(shù)、學(xué)習(xí)率等模型參數(shù)。本文所提出的用于線損電量預(yù)測的GRU模型如圖4所示,該模型包含了1個(gè)輸入層、多個(gè)由GRU單元構(gòu)成的隱含層、1個(gè)輸出層。隱含層為模型的核心部分,主要是用來建立輸入信息與輸出線損電量之間的非線性關(guān)系。通過采用“預(yù)訓(xùn)練+參數(shù)微調(diào)”方式利用訓(xùn)練數(shù)據(jù)集。具體地,利用多GRU層的堆疊實(shí)現(xiàn)逐層數(shù)據(jù)特征提取,通過組合底層特征形成更加抽象的高層特征,最終揭示輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的內(nèi)在隱含關(guān)系。
利用測試集估計(jì)模型的泛化誤差,并確定模型性能是否滿足準(zhǔn)確率的要求。若不能滿足預(yù)測準(zhǔn)確率要求,則需要重新確定模型的隱含層數(shù)、學(xué)習(xí)率等模型參數(shù),直至滿足誤差要求為止。

圖3 基于GRU的線損電量預(yù)測流程圖
本文采用TensorFlow的深度學(xué)習(xí)框架,編譯環(huán)境為Python3.6.8;處理器為i7-8086K,GPU為GTX 1080 Ti。

圖4 基于GRU的模型整體結(jié)構(gòu)
4.2.1 模型參數(shù)設(shè)置
在建立網(wǎng)絡(luò)模型時(shí)必須要面對這樣一個(gè)問題:算法中的不同超參數(shù)控制不同方面的算法性能。有些超參數(shù)會影響算法運(yùn)行時(shí)間和存儲成本,有些超參數(shù)會影響學(xué)習(xí)到的模型質(zhì)量以及在新輸入上推斷正確結(jié)果的能力。對于某些超參數(shù),當(dāng)參數(shù)值太大時(shí)會發(fā)生過擬合,譬如中間層隱藏單元的數(shù)量,增加數(shù)量能提高模型的容量容易發(fā)生過擬合。而對于某些超參數(shù),當(dāng)參數(shù)的數(shù)值太小時(shí)也會發(fā)生過擬合。譬如,最小的權(quán)重衰減系數(shù)允許為零,此時(shí)學(xué)習(xí)算法具有較大的有效容量,反而容易過擬合。
學(xué)習(xí)率是最重要的超參數(shù),當(dāng)學(xué)習(xí)率過大時(shí)梯度下降可能會增加而非減少訓(xùn)練誤差;當(dāng)學(xué)習(xí)率太小,訓(xùn)練不僅慢,還可能永久停留在一個(gè)高的訓(xùn)練誤差上。調(diào)整學(xué)習(xí)率外的其他超參數(shù)時(shí)還需要同時(shí)監(jiān)測訓(xùn)練誤差和測試誤差,以判斷模型是否過擬合或欠擬合,然后調(diào)整其容量。因此,需要綜合考慮各超參數(shù)與線損電量預(yù)測準(zhǔn)確率之間的關(guān)系及其作用規(guī)律,在此基礎(chǔ)上獲得各超參數(shù)。當(dāng)前的機(jī)器學(xué)習(xí)中,上述各超參數(shù)的選擇往往是通過嘗試的方式。本文通過反復(fù)試驗(yàn),最終確定的模型參數(shù)為:隱含層數(shù)4,GRU每層神經(jīng)元數(shù)目512,迭代次數(shù)200,世代數(shù)目1000,訓(xùn)練批次200,學(xué)習(xí)率0.00015。
4.2.2 結(jié)果分析
損失函數(shù)是用于衡量模型預(yù)測得到的線損電量與真實(shí)線損電量的差異程度,若預(yù)測結(jié)果與實(shí)際線損電量差距越大,則損失值Loss越大;反之,若預(yù)測結(jié)果與實(shí)際線損電量差距越小,則損失值Loss越小。本文選用交叉熵作為損失函數(shù),用以計(jì)算模型預(yù)測得到的線損電量與真實(shí)線損電量的差異程度。交叉熵的基本原理為。

圖5 損失值Loss與訓(xùn)練Epoch之間的關(guān)系

圖6 線損電量預(yù)測值與實(shí)際值對比圖
本文利用Tensorflow人工智能框架,Python語言編寫,Jupyter Notebook編程環(huán)境。損失函數(shù)值Loss隨著迭代Epoch變化關(guān)系如圖5所示。由圖可知,損失函數(shù)隨迭代Epoch增加而逐漸降低,這也說明模型的訓(xùn)練結(jié)果越來越好,準(zhǔn)確率也越來越高。在訓(xùn)練結(jié)束后,利用測試樣本集對線損電量進(jìn)行預(yù)測,得到的預(yù)測結(jié)果與實(shí)際結(jié)果對比如圖6。驗(yàn)證表明,本方法具有較好的收斂性和泛化能力,以及較高的預(yù)測準(zhǔn)確率。