陳文中, 陳俊杰, 許 侃, 張金麗
(國家電網(wǎng)上海市電力公司電力科學(xué)研究院, 上海 200437)
隨著科技水平的提高,我國配電網(wǎng)絡(luò)的覆蓋范圍越來越廣,電力用戶的規(guī)模也越來越龐大,同時電能計價的細微變化會直接影響大量電力用戶的日常生活,因此電能計價的公平性必須得到充分的保障,這對國計民生和國民經(jīng)濟的穩(wěn)固發(fā)展都有著重要的影響。保證電能計價公平性的前提是對電力系統(tǒng)中的電壓和電流大小進行精確測量。電容式電壓互感器(capacitor voltage transformer,CVT)[1-2]常被廣泛應(yīng)用于100 kV及以上電壓等級的電力系統(tǒng)中,以實現(xiàn)一次電壓、電流的精確測量。CVT雖然具有絕緣性能好、經(jīng)濟性高等優(yōu)點,但相比傳統(tǒng)的電磁式電壓傳感器,CVT的電路結(jié)構(gòu)較為復(fù)雜,容易受到周圍自然環(huán)境、電場等外界因素的影響,使其測量穩(wěn)定性降低。CVT的測量穩(wěn)定性直接關(guān)系到電能計價的公平性。因此,如何準(zhǔn)確地評估CVT的計量誤差成了很多研究者的研究重點。昌云松等[3]提出一種基于滑動窗口原理和主成分分析的WMPCA(weighted multi-linear principal component analysis)誤差評估方法,相比傳統(tǒng)的CVT誤差評估方法,該方法準(zhǔn)確度更高且能夠用于評估長期運行的CVT。李朝陽等[4]提出基于多元分析的互感器故障判別算法,該算法能夠在不增加額外測量設(shè)備的情況下,正確識別出存在故障的互感器。張秋雁等[5]利用前饋神經(jīng)網(wǎng)絡(luò)建立數(shù)字電量計量系統(tǒng)的數(shù)字模型,從而達到正確評估系統(tǒng)誤差的目的。但上述文獻中提到的評估方法需要用到大量、多維度的離線數(shù)據(jù),且需要花費大量的時間進行數(shù)據(jù)的預(yù)處理。
因此,本文提出一種基于RNN(recurrent neural network)[6]的在線輔助CVT電壓測量方法,該方法通過收集電力系統(tǒng)中電壓的歷史數(shù)據(jù),利用RNN對電壓值的變化趨勢進行擬合和建模。完成RNN模型訓(xùn)練之后,把當(dāng)前時刻和過去幾個時刻的電壓值作為RNN的輸入值,以在線預(yù)測未來某個時刻的電壓值。將RNN的輸出值作為標(biāo)準(zhǔn)值并與CVT的實際測量數(shù)值進行誤差對比,對CVT的測量穩(wěn)定性進行評估,從而幫助測量人員及時發(fā)現(xiàn)異常的測量值并更換CVT設(shè)備,保障電能計價的公平性。該方法不需要使用海量、多維度的離線數(shù)據(jù),能夠利用RNN對CVT的實際測試值進行誤差評估。
基于RNN的在線輔助CVT電壓測量方法的主要流程如圖1所示。首先,需要收集以往電力系統(tǒng)中的電壓序列作為數(shù)據(jù)集,將電壓序列表示為V=(v1,v2, …,vn),n表示總的序列長度,然后使用數(shù)據(jù)集來訓(xùn)練RNN模型。簡單來講,訓(xùn)練RNN模型的過程,即利用反向傳播算法和梯度下降算法來不斷地迭代更新RNN網(wǎng)絡(luò)中的權(quán)重系數(shù),最終使得損失函數(shù)達到最小值。常用的梯度下降算法包括隨機梯度下降算法(SGD)[7]和Adam梯度下降算法[8]等。最后,利用訓(xùn)練好的RNN模型來實時地預(yù)測下一時刻的電壓值,并與CVT得到的實測數(shù)據(jù)進行對比。訓(xùn)練好的RNN模型如式(1)所示。
圖1 基于RNN的在線輔助CVT電壓誤差測量方法的示意圖
(1)
RNN是在神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上進行拓展得到的。神經(jīng)網(wǎng)絡(luò)具有逼近任意一個函數(shù)的特點,因此該算法被廣泛應(yīng)用在生物、醫(yī)療、計算機、通信等多個領(lǐng)域[9-10]。神經(jīng)網(wǎng)絡(luò)的核心算法是向量乘法,并通過引入激活函數(shù)[11]來增加其擬合非線性函數(shù)的能力。
電力系統(tǒng)中的電壓值隨時間的變化趨勢可以看作是一個時間序列[12],即當(dāng)前時刻的電壓值和前一時刻(或前幾個時刻)的電壓值存在著某種函數(shù)映射關(guān)系。因此,選擇神經(jīng)網(wǎng)絡(luò)來逼近這一映射關(guān)系。但由于在傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)[13]或者卷積神經(jīng)網(wǎng)絡(luò)[14](convolutional neural network,CNN)中,當(dāng)前時刻的輸入值與上一時刻的輸入值是相互獨立的,因此這兩者都不適合用來對時間序列進行建模。而RNN很好地彌補了BP神經(jīng)網(wǎng)絡(luò)和CNN沒有“記憶能力”的缺點。
RNN簡易的示意圖如圖2所示。由圖2可知,RNN除了包含輸入層、隱藏層和輸出層以外,多了一個循環(huán)層,便于完成“記憶”的功能。
圖2 RNN的結(jié)構(gòu)示意圖
其中:xt為RNN的輸入向量(下標(biāo)t表示當(dāng)前時刻),其長度等于輸入數(shù)據(jù)的維度;yt為RNN的輸出向量;W1為輸入層到隱藏層這兩者之間的權(quán)重系數(shù)矩陣;st為隱藏層的值,其長度等于隱藏層神經(jīng)元的個數(shù);W2為隱藏層到輸出層這兩者之間的權(quán)重系數(shù)矩陣;W3為前一時刻的隱藏層st-1作為當(dāng)前時刻的輸入信息時,要相乘的權(quán)重系數(shù)矩陣;yt和st分別如式(3)和(4)所示。
yt=g(st·W2)
(3)
st=h(xt·W1+W3·st-1)
(4)
式中:g(·)和h(·)是激活函數(shù),能夠讓RNN更好地擬合非線性函數(shù)。
從式(4)中可以看到,隱藏層st不僅與當(dāng)前時刻的輸入值xt有關(guān),也取決于上一時刻的隱藏層st-1。接著,把式(4)不斷地代入式(3)中,可得
yt=g(h(xt·W1+W3·st-1)·W2)
(5)
yt=g(h(xt·W1+W3·h(xt-1·W1+W3·st-2))·W2)
(6)
yt=g(h(xt·W1+W3·h(xt-1·W1+W3·h(xt-2·W1+…)))·W2)
(7)
輸出層的值yt與當(dāng)前時刻的輸入值xt,以及過去時刻的輸入值xt-1、xt-2、…都有一定的關(guān)系。式(5)非常直觀地體現(xiàn)了RNN具有“記憶”功能這一特點。
首先,在使用電壓序列訓(xùn)練RNN之前,需要對其進行數(shù)據(jù)清洗、歸一化等預(yù)處理操作,對電壓序列進行歸一化的主要目的是為了讓RNN模型更快地收斂。歸一化的具體方式可由式(8)表示。
(8)
式中:vi為某一時刻的電壓值;vmax為電壓序列中的最大值;vmin為電壓序列中的最小值;v′為歸一化后的值。
接著,需要從經(jīng)過歸一化的電壓序列中生成訓(xùn)練RNN所需的數(shù)據(jù)集。數(shù)據(jù)集中包含多行數(shù)據(jù),每行數(shù)據(jù)由輸入值和對應(yīng)的標(biāo)簽兩部分組成。把每3個連續(xù)的序列值作為一行數(shù)據(jù),其中(vi-2,vi-1)作為輸入值,vi則作為對應(yīng)的標(biāo)簽,下標(biāo)i滿足2≤i≤n。得到的數(shù)據(jù)集需要進一步分成訓(xùn)練集和測試集:訓(xùn)練集用于訓(xùn)練RNN,測試集用于評估RNN的性能好壞。然后,把RNN輸出層的預(yù)測值與標(biāo)簽值的均方誤差作為損失函數(shù)來訓(xùn)練RNN。RNN損失函數(shù)如式(9)所示。
(9)
式中:L代表損失函數(shù),w表示RNN中所有的權(quán)重參數(shù);yi表示第i條數(shù)據(jù)經(jīng)過RNN后得到的預(yù)測值;K表示訓(xùn)練集中樣本的個數(shù)。隨后,利用梯度下降算法不斷更新RNN網(wǎng)絡(luò)的權(quán)重系數(shù)以使損失函數(shù)L(w)的值最小化。權(quán)重系數(shù)的更新方式如式(10)所示:
(10)
當(dāng)模型訓(xùn)練完成之后,需要使用測試集對模型的性能進行評估。當(dāng)模型的性能較差時,則需要不斷地調(diào)整學(xué)習(xí)率、神經(jīng)元個數(shù)等超參數(shù)。
使用澳大利亞國家電力市場提供的2021年6月的電力負載數(shù)據(jù)集[16]進行仿真。原始的數(shù)據(jù)集中包含區(qū)域編號、采樣時間點、總的電力負載值和當(dāng)時的電價,本次仿真試驗只使用其中的電力負載數(shù)據(jù)。該數(shù)據(jù)集包含了1 440個樣本點,每間隔30 min進行一次采樣。試驗選擇前400個樣本點進行測試。該數(shù)據(jù)集的特征如圖3所示。
圖3 仿真數(shù)據(jù)集的特征圖
仿真使用的RNN模型包含1個輸入層、1個隱藏層(含32個神經(jīng)元)、1個全連接層和1個輸出層。其中輸入層神經(jīng)元的個數(shù)是2,包含t-1時刻和t-2時刻的負載值;輸出層的神經(jīng)元個數(shù)是1,即t時刻的負載值。學(xué)習(xí)率α設(shè)為0.01,并以7∶3的比例將數(shù)據(jù)集分成訓(xùn)練集和測試集兩個部分。此外,選擇Adam梯度下降算法來更新RNN模型中的權(quán)重系數(shù)。
圖4展示了不同大小的學(xué)習(xí)率對RNN收斂性能的影響。從圖4可以看出,當(dāng)學(xué)習(xí)率α的值越小時,均方誤差下降得越慢,因此需要更多的迭代次數(shù)才能讓RNN收斂。當(dāng)?shù)螖?shù)足夠多時,RNN模型最終都能成功收斂。但當(dāng)α過大時(α=0.900時),則損失函數(shù)達不到最低點,導(dǎo)致最終的均方誤差過大。因此,要適當(dāng)?shù)卣{(diào)整學(xué)習(xí)率α的大小才能使RNN的性能達到最優(yōu),α過小則收斂速度較慢,α過大則均方誤差較大,導(dǎo)致RNN最終的性能較差。
圖4 均方誤差與迭代次數(shù)之間的關(guān)系
在4種不同學(xué)習(xí)率下訓(xùn)練得到的RNN模型上,利用測試集來檢驗RNN的擬合效果,并與數(shù)據(jù)集中的原始數(shù)據(jù)進行比較。圖5為不同學(xué)習(xí)率下的預(yù)測電壓值。由圖5可以看出:當(dāng)學(xué)習(xí)率α為0.900時,得到的RNN性能非常差,幾乎沒有學(xué)習(xí)到電壓序列的相關(guān)特征;當(dāng)α為0.010時,RNN的性能最優(yōu),得到的預(yù)測值基本上與原始的電壓序列相互重合。表1列出了在不同學(xué)習(xí)率下的測試集的均方誤差。從表中能清楚地看到,當(dāng)學(xué)習(xí)率α為0.900和0.001時,均方誤差較大。前者是由于α偏大,導(dǎo)致權(quán)重系數(shù)在最優(yōu)解的附近反復(fù)橫跳,始終無法到達損失函數(shù)的最優(yōu)解。而后者是由于α過小,學(xué)習(xí)速度較慢,經(jīng)過600次迭代仍無法到達損失函數(shù)的最小值。圖5和表1再次說明了學(xué)習(xí)率對RNN模型性能的重要性。
圖5 不同學(xué)習(xí)率下的預(yù)測電壓值
表1 不同學(xué)習(xí)率下的均方誤差
圖6為不同神經(jīng)元個數(shù)下的均方誤差和訓(xùn)練時長,總訓(xùn)練時間為RNN模型迭代600次所需要的時間。隨著神經(jīng)元個數(shù)的增加,最終得到的均方誤差會逐漸減少。這是因為神經(jīng)元個數(shù)越多,RNN的結(jié)構(gòu)就更復(fù)雜,擬合非線性函數(shù)的能力就越強。此外,訓(xùn)練時長整體上也隨著神經(jīng)元個數(shù)的增加而增加。這是因為隨著神經(jīng)元個數(shù)的增加,RNN模型需要更新的權(quán)重系數(shù)的數(shù)量也會增加,導(dǎo)致訓(xùn)練時間變長。但通過仔細觀察可以發(fā)現(xiàn),當(dāng)神經(jīng)元的個數(shù)為32時,相比神經(jīng)元個數(shù)為8這一情況,RNN模型訓(xùn)練所需的時間顯著增長,但最終的均方誤差并沒有顯著減少。這就說明在訓(xùn)練RNN模型的過程中,要綜合考慮均方誤差和訓(xùn)練時間這兩方面的因素來選擇合適的神經(jīng)元個數(shù)。
圖6 不同神經(jīng)元個數(shù)下的均方誤差和訓(xùn)練時間
ARIMA(autoregressive integrated moving average)是一種常用的時間序列預(yù)測模型。該模型中需要確定3個參數(shù)的大小,即自回歸項數(shù)p、差分次數(shù)d、滑動平均項數(shù)q。在本次仿真中,針對所使用的數(shù)據(jù)集,最終確定了一組比較合適的參數(shù)值(p=1,d=1,q=2)。RNN算法與傳統(tǒng)的ARIMA算法[15]的性能比較如圖7所示。從圖7可以看出:RNN模型預(yù)測得到的電壓值與原始數(shù)據(jù)幾乎完全重合;但ARIMA算法的預(yù)測結(jié)果不太理想,與原始數(shù)據(jù)相差較大。這是因為ARIMA模型較為簡單,只能夠擬合線性函數(shù),并不能很好地捕捉復(fù)雜時間序列的規(guī)律。此外,ARIMA要求預(yù)測的時間序列是穩(wěn)定的,或者能夠通過取對數(shù)和差分等手段使其變成穩(wěn)定的,但大部分復(fù)雜的時間序列并不滿足這一要求。RNN本身則可以擬合復(fù)雜的線性和非線性函數(shù),也不要求時間序列具有穩(wěn)定性,因此其預(yù)測的準(zhǔn)確度遠高于ARIMA算法,適用范圍也比ARIMA算法廣。
圖7 RNN與ARIMA的性能比較
表2為RNN算法和ARIMA算法的均方誤差。為了保證公平性,在計算RNN算法的均方誤差時,使用測試集上的均方誤差,并沒有考慮訓(xùn)練集上的均方誤差。從表2可以看出,RNN的預(yù)測效果遠遠優(yōu)于ARIMA算法,其準(zhǔn)確度比ARIMA算法高83%。
表2 RNN和ARIMA的均方誤差
本文提出了一種基于RNN的在線輔助CVT電壓測量方法,該方法不需要使用海量多維度的數(shù)據(jù),只需要使用電力系統(tǒng)中過去的電壓序列作為數(shù)據(jù)集。利用循環(huán)神經(jīng)網(wǎng)絡(luò)RNN對電壓序列進行擬合和建模,把RNN的輸出作為標(biāo)準(zhǔn)值來判斷CVT的實際測量數(shù)據(jù)是否存在誤差。通過實際的數(shù)據(jù)集進行仿真和對比試驗,發(fā)現(xiàn)相比傳統(tǒng)的時間序列算法ARIMA,本文方法的性能提升了83%,證實了該方法的有效性和準(zhǔn)確性。