黃 燕,李金燦,楊霞琴,李佩,李梓
(1.廣西電網(wǎng)有限責(zé)任公司,廣西 南寧 530023;2.廣西電網(wǎng)有限責(zé)任公司南寧供電局,廣西 南寧 530000;3.廣西電網(wǎng)有限責(zé)任公司梧州供電局,廣西 梧州 543002)
電力盜竊不僅會使電網(wǎng)過載,還會對電網(wǎng)的穩(wěn)定性和效率產(chǎn)生負(fù)面影響。因此提出了使用機(jī)器學(xué)習(xí)模型來識別電力盜竊[1-2]。基于機(jī)器學(xué)習(xí)的檢測器包括監(jiān)督分類器和異常檢測器。監(jiān)督分類器包括淺層機(jī)器學(xué)習(xí)分類器,如樸素貝葉斯[3]和支持向量機(jī)(SVM)[4],還有基于決策樹和SVM 的兩步檢測器[5]。雖然上述分類器檢測準(zhǔn)確率高,但過于依賴于客戶耗電數(shù)據(jù)的良性和惡意樣本的可用性,只能檢測到已經(jīng)訓(xùn)練過的攻擊類型。
與監(jiān)督分類器既需要良性數(shù)據(jù)又需要惡意數(shù)據(jù)不同,異常檢測器如單類SVM、自回歸積分移動平均(ARIMA)[6]、主成分分析[7]和異常值檢測[8]可以僅使用良性數(shù)據(jù)檢測竊電。但由于它們呈現(xiàn)出靜態(tài)(不包括ARIMA)和淺層結(jié)構(gòu),因此無法捕獲復(fù)雜的用電模式,從而影響檢測性能。因此,有必要開發(fā)只在良性負(fù)荷曲線上訓(xùn)練還能表現(xiàn)出更好檢測性能的實用異常檢測器。
本文提出基于長短期記憶(LSTM)的序列對序列(seq2seq)結(jié)構(gòu)的深度(堆棧)自編碼器。自編碼器是只在良性客戶數(shù)據(jù)上進(jìn)行訓(xùn)練的無監(jiān)督異常檢測器,能夠基于對學(xué)習(xí)到的良性模式的偏離來檢測不同的竊電活動,不僅克服了惡意數(shù)據(jù)可用性有限的問題,還有助于檢測未知攻擊;同時自編碼器的深度結(jié)構(gòu)能從能源消耗數(shù)據(jù)中提取更多相關(guān)且有代表性的特征。還結(jié)合了序列到序列(seq2seq)的動態(tài)結(jié)構(gòu),以更好地理解和建模數(shù)據(jù)的時間序列性質(zhì)。實驗證明了所提編碼器提高了檢測性能。
本節(jié)提出了基于數(shù)據(jù)驅(qū)動的異常檢測器的設(shè)計,以識別針對智能電表的竊電網(wǎng)絡(luò)攻擊。為了提高檢測性能,研究多種自編碼器結(jié)構(gòu),并進(jìn)行了超參數(shù)優(yōu)化。
SAE 是最簡單的異常檢測器。SAE 的結(jié)構(gòu)如圖1所示。

圖1 SAE 結(jié)構(gòu)示意圖
定義異常的一種有效方法是基于重構(gòu)誤差[9],可以使用堆棧自編碼器(SAEs)來實現(xiàn)。在編碼階段,使用疊加的SAE 降低數(shù)據(jù)的維度,然后在解碼階段重構(gòu)數(shù)據(jù)。SAE 使用良性數(shù)據(jù)進(jìn)行訓(xùn)練,以確定將重構(gòu)誤差最小化的編碼器和解碼器參數(shù)。用H=fθ(x)表示編碼器,R=gθ(x)表示解碼器,其中x為XTR的 行,θ表 示SAE 參數(shù),由下式?jīng)Q定:
其中,C(x,gθ(fθ(x)))表示代價函數(shù)(即均方誤差(mse)),它衡量gθ(fθ(x))重構(gòu)的數(shù)據(jù)與原始數(shù)據(jù)x之間不相似的程度。根據(jù)代價函數(shù)(式(1)),良性數(shù)據(jù)的重構(gòu)誤差會較小,異常數(shù)據(jù)的重構(gòu)誤差會較大。使用重構(gòu)誤差來表示模型對給定測試實例的熟悉程度;當(dāng)超過一定閾值時,就會檢測到竊電。采用以下兩種SAE 結(jié)構(gòu)。
(1)全連接SAE:FC-SAE 的編碼器由一個輸入層、一個隱含層和若干個密集隱藏層組成。解碼器由若干密集隱藏層和一個輸出層組成[9]。輸入層有48 個神經(jīng)元,以能量消耗曲線x∈XTR為輸入。編碼器部分的隱藏密集層將輸入壓縮到隱含層l′,然后通過解碼器的隱藏密集層進(jìn)行濾波,以重構(gòu)輸出。編碼器和解碼器的隱藏層由L層組成,每層有Nl個神經(jīng)元。令表示第l-1 層神經(jīng)元n′到第l層神經(jīng)元n的連接權(quán)值。權(quán)重矩陣用Wl表示。定義bl n為第l層中神經(jīng)元n的偏置。第l層的偏置向量用bl表示。神經(jīng)元n的輸入加權(quán)和為,其中al=?(zl),?(·)為激活函數(shù)。SAE 的訓(xùn)練目標(biāo)是尋找滿足式(1)的模型參數(shù)Wl和bl,記為θ。使用迭代梯度下降算法來最小化式(1),該算法采用隨機(jī)梯度下降(SGD)實現(xiàn),學(xué)習(xí)速率為η。
(2)Sequence-to-Sequence SAE:客戶的能消耗曲線為時間序列數(shù)據(jù),具有明顯的時間相關(guān)性。雖然FCSAE 的計算復(fù)雜度較低,但是無法利用能耗曲線中時間相關(guān)性。因此與FC-SAE 相比,基于深度RNN 的自動編碼器有望提供更好的檢測性能。采用基于LSTM 的RNN 變體來解決學(xué)習(xí)過程中長時間間隔內(nèi)的時間相關(guān)性的梯度消失問題。門控循環(huán)單元(GRU)可以通過使用較少的門數(shù)來縮短訓(xùn)練時間,LSTM 則可以犧牲訓(xùn)練時間來提供比GRU 更高的精度[10]。深度LSTM-SAE 模型由兩個LSTM-RNN 組成,一個是深度LSTM 編碼器,另一個是深度LSTM 解碼器[11]。LSTM 編碼器的輸入是能耗曲線(x∈XTR)的時間序列,該時間序列向量被LSTM 編碼器加密為隱藏狀態(tài)。因此編碼器的輸入層后面跟著若干個隱藏的LSTM 層L,每層包含Nl個LSTM 單元。LSTM 編碼器的輸出作為LSTM 解碼器的輸入,解碼器重構(gòu)原始的時序數(shù)據(jù)。LSTM-SAE 的目標(biāo)是最小化重構(gòu)均方誤差,以便得到更準(zhǔn)確的重構(gòu)時間序列數(shù)據(jù)。
變分自編碼器(VAE)結(jié)構(gòu)如圖2 所示。由于SAE 表示確定性映射,將其建模為對狄拉克delta 分布均值的映射。如果正常數(shù)據(jù)和異常(竊電)數(shù)據(jù)具有相同的均值但有不同的方差,SAE 模型無法準(zhǔn)確識別出異常情況。相比之下,VAE 是一種更好的異常檢測選擇[1]。

圖2 VAE 結(jié)構(gòu)示意圖
VAEs 假設(shè)數(shù)據(jù)中的任何點x都是基于未觀測到的連續(xù)隨機(jī)變量k生成的。首先,通過先驗分布p(k),生成一個特定的值k′。然后,基于條件分布p(x|k),生成數(shù)據(jù)實例x′。由于k的值是未知的,并且難以推斷p(k|x)的精確分布,因此VAE 通過近似來逼近編碼器中的p(k|x)和解碼器中的p(x|k)。q(k|x)描述了真實后驗分布p(k|x)的近似。對于數(shù)據(jù)點x,其對數(shù)似然是:
其中,庫爾貝克-萊布勒(KL)散度用DKL表示,模型參數(shù)用θ表示,對數(shù)似然的變分下界為:
由于L(θ;x)≤logp(k),θ通過優(yōu)化L(θ;x)來學(xué)習(xí);采用重參數(shù)化技巧[1]將隨機(jī)變量k~q(k|x)建模為確定性變量。k=μ+σN,其中N為均值為零、方差為零的正態(tài)分布,如果將潛變量表示為單變量高斯分布,則高斯分布的均值(μ)和方差(σ2)由編碼器前向傳遞的激活確定[12]。p(x|k)的分布參數(shù)由解碼器的前向傳遞激活決定。因此,VAE對數(shù)據(jù)分布參數(shù)而不是數(shù)據(jù)本身進(jìn)行建模。
假設(shè)概率編碼器和解碼器分別服從潛在變量空間和原始輸入空間的多元高斯分布。使用良性能耗數(shù)據(jù)訓(xùn)練的概率編碼器確定輸入數(shù)據(jù)分布參數(shù)。針對分布參數(shù)生成的多個樣本,使用概率解碼器恢復(fù)分布參數(shù),并計算原始數(shù)據(jù)從該分布中生成的概率。所有樣本的概率均值稱為重構(gòu)概率。由于VAE 模型參數(shù)為良性數(shù)據(jù),異常數(shù)據(jù)的重構(gòu)概率將會很低。如果重構(gòu)概率低于所定義的閾值,則檢測到電力盜竊。
(1)全連接VAE:全連接VAE(FC-VAE)和FC-SAE在輸入層和隱藏密集層方面具有類似的結(jié)構(gòu)。但是,在生成建模方面,VAE 比SAE 具有優(yōu)勢,因為其潛在空間以一種連續(xù)的方式使得隨機(jī)采樣更容易進(jìn)行插值。通過產(chǎn)生平均值μx和方差向量來形成隨機(jī)變量向量的參數(shù),然后將其傳遞給解碼器來實現(xiàn)。解碼器使用μx和生成用電數(shù)據(jù)樣本。為了檢測竊電,計算重構(gòu)概率并將其與閾值進(jìn)行比較。VAE 的損失函數(shù)約束重構(gòu)和正則化項為:
FC-VAE 與FC-SAE 訓(xùn)練算法類似,不同的是FCVAE 添加了概率分布參數(shù)(μx和σ2x)的生成以及在給定迭代梯度下降的情況下計算最優(yōu)參數(shù)的計算。先使用這些生成的概率分布參數(shù)(μx和σ2x)并假設(shè)為高斯分布,然后由解碼器生成輸出。使用式(4)計算損失;用反向傳播更新編碼器和解碼器的參數(shù)。
(2)Sequence-to-Sequence VAE:考慮概率編碼器和解碼器的LSTM 結(jié)構(gòu)[13]引入LSTM-VAE。最初,LSTMVAE 用于生成語言建模應(yīng)用程序的數(shù)據(jù)[14]。在本文中,將其用于異常檢測。LSTM-VAE 的結(jié)構(gòu)與LSTM-SAE相似,但增加了潛在分布。就邏輯而言,LSTM-SAE 和LSTM-VAE 的訓(xùn)練算法也是相似的,LSTM-VAE 生成μx和用于在解碼器中生成樣本。
對于上述模型,存在輸入和輸出序列大小的限制,這會影響檢測性能。AEA 結(jié)構(gòu)如圖3 所示。在SAE 和VAE 模型中,編碼器的作用是檢查輸入的時間步,并將整個序列編碼為具有固定長度的上下文向量。解碼器的作用是檢查輸出的時間步,同時查看上下文向量。因此,這類模型的能力受到編碼器生成的固定大小的內(nèi)部表示的限制。AEA 模型擴(kuò)展了這種架構(gòu)并解決了這一局限性[14]。注意力機(jī)制通過為每個時間步分配不同的權(quán)重和分?jǐn)?shù),有助于克服傳統(tǒng)seq2seq 網(wǎng)絡(luò)的性能損失。

圖3 AEA 結(jié)構(gòu)示意圖
由于AEA 模型的本質(zhì)是序列性的,因此只有在添加注意力層時使用seq2seq 算法才有意義[15]。AEA 架構(gòu)類似于LSTM-SAE,但增加了一個新層,即注意力層,位于編碼器和解碼器之間。注意力層有兩個輸入:編碼器在時間步t處的隱藏狀態(tài)和解碼器在時間步長為t-1 時的隱藏狀態(tài)。注意力層通過對不同時間步驟賦予權(quán)重,使得對于對于產(chǎn)生所需輸出的貢獻(xiàn)更大的時間步驟,賦予更高的重要性。因此,在發(fā)生竊電時,重構(gòu)誤差會更大。這是通過在注意力層中使用對齊評分、Softmax 和乘法運算來實現(xiàn),如圖4 所示。

圖4 注意力層示意圖
注意力層的對齊評分函數(shù)Γ是一個前饋神經(jīng)網(wǎng)絡(luò),使用兩個輸入和與模型聯(lián)合訓(xùn)練。神經(jīng)網(wǎng)絡(luò)Γ學(xué)習(xí)給重要的時間步驟賦予權(quán)重。對齊分?jǐn)?shù)m是該前饋神經(jīng)網(wǎng)絡(luò)的輸出,公式為:
注意力權(quán)重是對齊分?jǐn)?shù)的Softmax 函數(shù):
其中,|m|表示向量m的基數(shù)。上下文向量是編碼器隱藏狀態(tài)向量的加權(quán)和。
在輸入通過隱藏的LSTM 層順序處理后,將其傳遞到注意力層,在那里進(jìn)行了上述的線性組合過程。然后,它們被傳遞到潛在層。最后,在循環(huán)的seq2seq LSTM 層中進(jìn)行重構(gòu)。AEA 的訓(xùn)練算法與之前算法邏輯類似,不同的是添加了注意力層。∑(cV,t,x)被饋送到解碼器的隱藏層中。cV,t為上下文向量和x為重構(gòu)輸出。
對于以上構(gòu)建的所有體系結(jié)構(gòu),在使用XTR完成訓(xùn)練后,應(yīng)用測試數(shù)據(jù)集XTST。如果代價函數(shù)(計算SAE和AEA 的原始和重構(gòu)電力消耗數(shù)據(jù)之間的均方誤差或VAEs 的重構(gòu)概率)大于特定閾值,則標(biāo)記為Y=“1”表示惡意樣本;否則,分配Y=“0”標(biāo)簽表示良性樣本。
為了評估所研究檢測器的性能,使用多個評估指標(biāo)。靈敏度(DR)使用正確識別的惡意樣本計算(DR=TP/(FN+TP))。FA 使用錯誤標(biāo)記的良性樣本來計算(FA=FP/(FP+TN))。特異性(SP)表示為(SP=100-FA)。精確度(PR)是指正確識別的惡意讀數(shù)占所有惡意讀數(shù)的比例(PR=TP/(FP+TP))。真陽性(TP)是正確檢測到的惡意樣本,真陰性(TN)是正確檢測到的良性樣本,假陽性(FP)是錯誤檢測的良性樣本,假陰性(FN)是錯誤檢測的惡意樣本。準(zhǔn)確率(ACC)是DR 和SP 的算術(shù)平均值。F1 分?jǐn)?shù)表示DR 和PR 的調(diào)和平均值。接收器操作特征(ROC)曲線下的面積(AUC)將TP 與FP 繪制在一起。
對于每個所提的檢測器,將預(yù)測標(biāo)簽YCAL與YTST進(jìn)行比較,以構(gòu)建混淆矩陣,用于計算性能評估指標(biāo)的得分。為了獲得異常檢測器的YCAL,引入了閾值。將重構(gòu)誤差/概率與此閾值進(jìn)行比較可區(qū)分良性和惡意樣本。對于異常檢測器,根據(jù)ROC 曲線的四分位間距(IQR)的中位數(shù)設(shè)置閾值。低于該閾值的數(shù)表示良性樣本,高于該閾值的數(shù)表示惡意樣本。
超參數(shù)的優(yōu)化選擇提高了竊電檢測器的檢測性能。調(diào)整了以下超參數(shù):隱藏(密集或LSTM)層的數(shù)量(L);編碼器和解碼器的層數(shù)相同,每層的最優(yōu)神經(jīng)元數(shù)(Nl),優(yōu)化器(O),丟包率(D),隱藏激活(AH),輸出激活函數(shù)(AO)。采用序列網(wǎng)格搜索,通過對ISET 數(shù)據(jù)集的XTR進(jìn)行交叉驗證選擇超參數(shù)。超參數(shù)最佳設(shè)置用P*表示,提高了驗證集的DR。
使用Keras 序列API 對正在研究的檢測器進(jìn)行訓(xùn)練和測試。先將所有開發(fā)的檢測器(和基準(zhǔn))在供電公司進(jìn)行離線訓(xùn)練,隨后再對惡意樣本進(jìn)行實時在線檢測。
將所提出檢測器與監(jiān)督分類器和異常檢測器的性能進(jìn)行比較。監(jiān)督分類器包括淺層分類器(如多類SVM和樸素貝葉斯[16])和深度分類器(如前饋和LSTM);異常檢測器包括淺層單類SVM 和ARIMA。SVM、樸素貝葉斯和基于前饋的檢測器是靜態(tài)分類器,無法捕獲能量數(shù)據(jù)的時間序列特性。ARIMA 模型是動態(tài)的,能夠捕獲時間序列特性,但具有淺層結(jié)構(gòu)。LSTM 模型是動態(tài)的,具有深層結(jié)構(gòu),但它是一個監(jiān)督模型。
為了繪制ROC 曲線并確定閾值,使用ISET 數(shù)據(jù)集的XTR進(jìn)行相同的交叉驗證。基準(zhǔn)檢測器和自編碼器的ROC 曲線分別如圖5 和圖6 所示。將每條曲線分成3 個四分位數(shù),然后取IQR 的中位數(shù),得到的最佳閾值為:ARIMA 和單類SVM 分別為0.58 和0.45,F(xiàn)C-SAE 和LSTM-SAE 分別為0.58 和0.61,F(xiàn)C-VAE 和LSTM-VAE分別為0.43 和0.47,AEA 為0.51。圖6 還繪制了其他監(jiān)督基準(zhǔn)檢測器的ROC 曲線。

圖5 所提自動編碼器的ROC 曲線

圖6 基準(zhǔn)檢測器的ROC 曲線
采用序列網(wǎng)格搜索對基準(zhǔn)檢測器和所提檢測器的超參數(shù)進(jìn)行優(yōu)化。在淺層檢測器中,樸素貝葉斯分類器的最優(yōu)方差為10-9。對于ARIMA 模型,差分階數(shù)為1,移動平均值為0。對于基于SVM 的檢測器,最優(yōu)的核函數(shù)和Gamma 值分別為scale 和sigmoid。對于多類SVM,最優(yōu)的正則化參數(shù)為1.0。
對于深度基準(zhǔn)檢測器和所提出的自編碼器,從以下范圍選擇最優(yōu)值:對于層數(shù)L={2,3,4,5},神經(jīng)元數(shù)量N={100,200,300,400,500},優(yōu)化器O={SGD,Adam,Adamax,and Rmsprop},丟包率D={0,0.2,0.4,0.5},隱藏層激活函數(shù)AH={ReLU,Sigmoid,Linear,Tanh},輸出層激活函數(shù)AO={Softmax,Sigmoid}。對于前 饋模型,L?=5,=500,O?:Adamax,D?=0,A?H:ReLU,A?O:Softmax。對于LSTM 模型,L?=4,=300,O?:Adam,D?=0.2,A?H:ReLU,A?O:Sigmoid。表1 總結(jié)了每個自編碼器的優(yōu)化超參數(shù)值,表明了基于LSTM 的檢測器通常比基于全連接的檢測器層數(shù)更少。此外,基于全連接的檢測器在使用Softmax 輸出激活函數(shù)時性能更好,而基于LSTM 的檢測器則更適合使用Sigmoid。對于FC-SAE,4 個編碼層中的神經(jīng)元數(shù)量Nl為:(400,300,200,100),在解碼器中則順序相反。對于LSTM-SAE,兩個編碼器層中的神經(jīng)元數(shù)量分別為(500,300),解碼器中則順序相反。FC-VAE 的編碼器部分神經(jīng)元數(shù)量為(500,400,300,100),LSTM-VAE 模型的編碼器部分為(400,300),解碼器中神經(jīng)元數(shù)順序相反。AEA模型的編碼器內(nèi)3 層神經(jīng)元數(shù)量分別為(500,300,200),解碼器中神經(jīng)元數(shù)順序相反。

表1 最優(yōu)超參數(shù)值表
表2 和表3 總結(jié)了使用SGCC 和ISET 數(shù)據(jù)集開發(fā)的檢測器的性能。報告的性能基于完全未見過的數(shù)據(jù)(測試集),這與用于選擇超參數(shù)和構(gòu)建ROC 曲線的數(shù)據(jù)(驗證集)不同。

表2 使用SGCC 數(shù)據(jù)集進(jìn)行性能評估表

表3 使用ISET 數(shù)據(jù)集進(jìn)行性能評估表
使 用SGCC 數(shù)據(jù)集 時,LSTM-SAE 將DR 提高了3%,F(xiàn)A 提高了2%,這是由于LSTM-SAE 可以更好地捕捉電力消耗數(shù)據(jù)的時間序列特征;當(dāng)使用VAE 檢測器時,VAE 能更好地捕捉用電數(shù)據(jù)中的可變性。所以可以觀察到VAE 檢測器將DR 提高了4%~7%,F(xiàn)A 提高了3%~5%,進(jìn)一步提高了竊電性能。
相對于全連接模型,基于LSTM 的模型在DR 和FA方面將檢測性能提高了3%。相對于VAE 模型,AEA 進(jìn)一步提高了DR 和FA,分別提高了3%~6% 和2%~5%。相對于SAE 模型,AEA 在DR 和FA 方面分別提供了高達(dá)10%~13%和8%~10%的改進(jìn)。這些結(jié)果表明,與全連接模型相比,基于LSTM 的模型增強(qiáng)了檢測性能。基于AEA 的檢測器提供了最佳的檢測性能。與基準(zhǔn)檢測器相 比,AEA 將DR 和FA 分別提高了4%~21% 和3.5%~12%。
使 用ISET 數(shù)據(jù)集 時,LSTM-SAE 模型比FC-SAE 模型的DR 高了4%,F(xiàn)A 高了2%。而VAE 檢測器又比SAE模型的DR、FA 分別高了3%~7%、2%~4%。與完全連接模型相比,基于LSTM 的模型在DR 和FA 方面的檢測性能分別提高了3%、4%。AEA 模型比VAE 模型的DR、FA 分別提高了3%~6%、2%~6%;比SAE 模型的DR、FA分別提高了9%~13%、8%~10%。與基準(zhǔn)檢測器相比,AEA 檢測器將DR、FA 分別提高了3%~21%、3%~13%。這表明AEA 模型的深層和循環(huán)結(jié)構(gòu)提供了優(yōu)越的性能。
表4 給出了在不同大小的ISET 數(shù)據(jù)集上訓(xùn)練所提出的檢測器所需的時間,其中|XTR|大小為6 000 萬,|·|表示基數(shù)。從表4 可以看出,AEA 需要的時間最長為3 h。所有開發(fā)的檢測器的在線測試需要1 s~2 s 來報告決策。

表4 使用ISET 數(shù)據(jù)集計算的復(fù)雜度
表5 顯示了在6 個不同攻擊函數(shù)上單獨測試時所提出的自動編碼器的DR 和FA。模型僅使用ISET 數(shù)據(jù)集中的良性樣本上進(jìn)行訓(xùn)練,使用上文中討論的最優(yōu)超參數(shù)和閾值進(jìn)行訓(xùn)練,而不使用ADASYN,因為數(shù)據(jù)已經(jīng)平衡。從結(jié)果可以看出,使用圖5 得到的閾值,在多次實驗中可以得到一致的結(jié)果。雖然DR 隨攻擊復(fù)雜性的不同而變化,但平均值仍然與表3 中的結(jié)果一致。

表5 針對各攻擊的性能評估
本文提出了多個深度自編碼器異常檢測器用于竊電檢測,克服了惡意用電數(shù)據(jù)樣本有限的問題。深層結(jié)構(gòu)相對于淺層檢測器,可以提供更好的檢測性能;基于循環(huán)LSTM 的結(jié)構(gòu)與靜態(tài)的全連接檢測器相比能提高檢測性能。實驗結(jié)果表明,當(dāng)使用深層和周期性異常檢測器時,與淺層和靜態(tài)結(jié)構(gòu)相比,性能有了顯著的改進(jìn)。其中LSTM-AEA 表現(xiàn)出最佳的檢測性能,在DR 和FA 方面分別提高了4%~21%和4%~13%。