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

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

圖2 GRU結構圖
GRU單元取消了輸出門,單元的全部狀態就是該時刻的單元輸出。與此同時,GRU單元還增加了一個控制門來控制哪部分前一時間步的狀態在該時刻的單元內呈現。在t時刻GRU的計算表達式如式(1)所示,其中,Wxr,Whr為重置門的權重矩陣;Wxz,Whz為更新門的權重矩陣;Wxg,Whg為形成當前記憶時的網絡權重矩陣;br,bz,bg為偏置矩陣。

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

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

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

圖5 損失值Loss與訓練Epoch之間的關系

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