陳 冰 唐永旺
1(河南工業(yè)大學(xué)漯河工學(xué)院電氣電子工程系 河南 漯河 462000) 2(中國人民解放軍戰(zhàn)略支援部隊(duì)信息工程大學(xué)信息系統(tǒng)工程學(xué)院 河南 鄭州 450002)
智能電網(wǎng)以其可靠、高效和經(jīng)濟(jì)的傳輸特點(diǎn)成為現(xiàn)代電力系統(tǒng)最重要的組成部分,然而智能電網(wǎng)嚴(yán)重依賴數(shù)據(jù)通信和大規(guī)模數(shù)據(jù)處理技術(shù),容易遭到各種惡意網(wǎng)絡(luò)攻擊[1]。盡管已經(jīng)頒布了很多針對智能電網(wǎng)安全的通信標(biāo)準(zhǔn)、官方指南和監(jiān)管法律(如IEC 61850-90-5、NISTIR7628等),惡意網(wǎng)絡(luò)攻擊仍活躍于智能電網(wǎng)中。
虛假數(shù)據(jù)注入攻擊(False Data Injection Attacks,F(xiàn)DIA)是Liu等[2]提出的惡意網(wǎng)絡(luò)攻擊技術(shù),被證明是一種對智能電網(wǎng)狀態(tài)估計(jì)產(chǎn)生嚴(yán)重影響的惡意網(wǎng)絡(luò)攻擊行為。其通過規(guī)避現(xiàn)有數(shù)據(jù)注入監(jiān)測系統(tǒng),篡改電網(wǎng)的狀態(tài)估計(jì)數(shù)據(jù),誘導(dǎo)電網(wǎng)控制中心作出錯(cuò)誤決策,導(dǎo)致整個(gè)智能電網(wǎng)出現(xiàn)故障。如何高效地檢測 FDIA,對于保障智能電網(wǎng)安全運(yùn)行具有重要意義。
傳統(tǒng)的FDIA檢測思路主要?dú)w為兩種[3-4]。一種是策略性的保護(hù)部分關(guān)鍵基礎(chǔ)測量數(shù)據(jù)的安全,避免惡意數(shù)據(jù)注入的發(fā)生。如:Kim等[5]提出兩種快速貪婪算法分別用于選擇待保護(hù)的測量子集數(shù)據(jù)和尋找存儲安全相量測量單元的位置。Bi等[6]利用圖形分析研究方法引入到FDIA檢測中,提出精確、低復(fù)雜度的近似算法來選擇保護(hù)系統(tǒng)中最小的數(shù)據(jù)測量值。另一種是通過獨(dú)立檢驗(yàn)每個(gè)狀態(tài)變量進(jìn)行FDIA檢測。例如:Liu等[7]考慮到電網(wǎng)狀態(tài)時(shí)間測量的內(nèi)在低維度以及FDIA的稀疏性質(zhì),將FDIA檢測視為低秩矩陣分離問題,并提出核規(guī)范最小化和低秩矩陣分解兩種優(yōu)化方法來解決該問題。Ashok等[8]提出了一種在線FDIA檢測算法,該算法利用統(tǒng)計(jì)信息和狀態(tài)變量的預(yù)測來檢測量測異常。
近年來隨著智能電網(wǎng)通信數(shù)據(jù)量級的增加和FDIA方法的不斷升級,傳統(tǒng)方法在進(jìn)行FDIA檢測時(shí)越來越力不從心。機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)算法逐漸應(yīng)用在智能電網(wǎng)惡意網(wǎng)絡(luò)攻擊檢測中,并較傳統(tǒng)檢測方法檢測性能有明顯提高[9-13]。Ozay等[14]利用監(jiān)督和半監(jiān)督機(jī)器學(xué)習(xí)方法完成對高斯分布式攻擊的分類。Esmalifalak等[15]設(shè)計(jì)了一種基于分布式支持向量機(jī)的標(biāo)簽數(shù)據(jù)模型和一種無監(jiān)督學(xué)習(xí)的統(tǒng)計(jì)異常檢測器。He等[11]采用條件深度信念網(wǎng)絡(luò)有效學(xué)習(xí)了FDIA的高維時(shí)間行為特征。Niu等[16]利用卷積神經(jīng)網(wǎng)絡(luò)提取和長短時(shí)記憶網(wǎng)絡(luò)(Long Short Term Memory Network,LSTM)學(xué)習(xí)量測狀態(tài)序列的時(shí)間和空間關(guān)系特征,進(jìn)而實(shí)現(xiàn)FDIA檢測。James等[17]基于小波變換和單向門控循環(huán)單元(Gated Recurrent Unit,GRU)進(jìn)行系統(tǒng)狀態(tài)連續(xù)估計(jì),檢測序列狀態(tài)中的FDIA。Wang等[18]利用3層LSTM作為序列編碼器,學(xué)習(xí)FDIA樣本的特征,在測試數(shù)據(jù)中準(zhǔn)確率高達(dá)90%。深度學(xué)習(xí)算法可以自動(dòng)學(xué)習(xí)電網(wǎng)中各節(jié)點(diǎn)的狀態(tài)量測數(shù)據(jù)特征,發(fā)現(xiàn)異常狀態(tài)序列或?qū)Ξ惓P蛄蟹诸?,整個(gè)過程不需要人工設(shè)定特征。
然而,現(xiàn)有基于循環(huán)神經(jīng)網(wǎng)絡(luò)[16-18](Recurrent Neural Network,RNN)的FDIA檢測方法在訓(xùn)練量測值時(shí)僅使用了多層單向的RNN訓(xùn)練框架,單向的RNN模型在處理序列數(shù)據(jù)時(shí)只能利用已經(jīng)出現(xiàn)過的序列元素,忽略了未來的序列信息,導(dǎo)致模型性能下降,影響特征最終的提取效果。這些方法中只選取RNN最后一個(gè)時(shí)刻的隱狀態(tài)或者各時(shí)刻隱狀態(tài)的拼接作為提取的特征,無法突出注入攻擊數(shù)據(jù)的特征。因?yàn)樽⑷牍粝蛄坎灰欢〞?huì)對狀態(tài)量測數(shù)據(jù)的每一維都均勻地注入攻擊,有可能只對一部分維數(shù)的數(shù)據(jù)進(jìn)行攻擊。另外,這些方法只針對單個(gè)樣本參數(shù)(電壓、電流、有用功、支路電流等)進(jìn)行分析,沒有考慮連續(xù)時(shí)間樣本參數(shù)之間的關(guān)聯(lián)關(guān)系。再者,RNN的順序性決定其訓(xùn)練緩慢,因?yàn)殚L序列需要更多的處理步驟,反復(fù)循環(huán)的結(jié)構(gòu)也使訓(xùn)練更加困難。
Transformer[19]是當(dāng)前機(jī)器翻譯領(lǐng)域的主流模型,利用基于注意力機(jī)制的編碼器和解碼器直接學(xué)習(xí)源語言內(nèi)部關(guān)系和目標(biāo)語言內(nèi)部關(guān)系。相較于RNN,Transformer無循環(huán)結(jié)構(gòu),可以并行處理序列中的所有元素,從整個(gè)樣本序列中挖掘與當(dāng)前預(yù)測元素關(guān)系緊密的上下文元素,Transformer編碼器具有更強(qiáng)的特征提取能力。
考慮到Transformer以上優(yōu)點(diǎn)以及量測數(shù)據(jù)序列元素互相依賴、關(guān)系緊密的特點(diǎn),本文提出一種基于Tansformer編碼器的FDIA檢測框架,輸入兩個(gè)連續(xù)時(shí)間量測樣本,對后一時(shí)刻的樣本進(jìn)行檢測。首先,對連續(xù)時(shí)間樣本數(shù)據(jù)進(jìn)行歸一化處理,結(jié)合連續(xù)時(shí)間樣本中元素相對位置信息得到連續(xù)時(shí)間樣本向量。然后,采用Tansformer編碼器對量測序列進(jìn)行建模,通過多頭自注意力機(jī)制計(jì)算長距離依賴關(guān)系,挖掘結(jié)合樣本中和樣本間測量值的特征表示。最后,將該特征表示輸入到全連接神經(jīng)網(wǎng)絡(luò)層和Softmax層,輸出后一時(shí)刻樣本受到注入攻擊的概率,完成FDIA檢測。
在電力系統(tǒng)中,待估計(jì)的狀態(tài)變量包括電壓幅值V∈Rn和相位角θ∈([-π,π])n,n是總線數(shù)量。令z=[z1,z2,…,zm]T∈Rm表示量測向量,x=[x1,x2,…,x2n]T∈R2n代表狀態(tài)變量,e=[e1,e2,…,em]T∈Rm代表量測誤差向量。在標(biāo)準(zhǔn)直流系統(tǒng)下,可忽略電阻,電壓幅值均為1,僅考慮帶有相位角的狀態(tài)變量,量測值和狀態(tài)變量的關(guān)系如式(1)所示。
z=Tx+e
(1)
式中:T是m×n的拓展結(jié)構(gòu)雅可比矩陣。求使加權(quán)殘差平方和最小的狀態(tài)估計(jì)變量x,目標(biāo)函數(shù)如式(2)所示。
j(x)=(z-Tx)TR-1(z-Tx)
(2)
式中:R是協(xié)方差矩陣。利用加權(quán)最小二乘法求解式(2)的目標(biāo)函數(shù),如式(3)所示。
(3)
注意力機(jī)制的本質(zhì)是將一個(gè)查詢向量和一組鍵值向量對映射到輸出,查詢向量與鍵向量用于計(jì)算每個(gè)值向量對應(yīng)的權(quán)重,值向量的加權(quán)和為輸出。常用的注意力函數(shù)為加法注意力(additive attention)和點(diǎn)乘注意力(dot-product attention)[21],由于點(diǎn)乘注意力可以利用高度優(yōu)化的矩陣乘法運(yùn)算,高效且更加節(jié)省空間,因此本文選取放縮點(diǎn)積注意力,其計(jì)算流程如圖1所示,其中:Q代表查詢向量矩陣;K代表鍵向量矩陣;V代表值向量矩陣;Q和K中每個(gè)向量的維度為dk,V中每個(gè)向量維度為dv。
圖1 放縮點(diǎn)積注意力計(jì)算流程
(4)
本文利用Transformer編碼器提取攻擊樣本的特征,提出基于Transformer編碼器的FDIA檢測框架,其訓(xùn)練結(jié)構(gòu)如圖2所示。
圖2 本文提出的FDIA檢測模型框架
該框架主要分為輸入層、Transformer編碼層、全連接層和Softmax層四大部分,[CLS]是樣本之間的分類符,表示樣本A之后的連續(xù)時(shí)間樣本B是否受到虛假數(shù)據(jù)注入攻擊。[SEP]是樣本之間的分隔符,為便于區(qū)分連續(xù)時(shí)間樣本的切割點(diǎn)。該訓(xùn)練框架將連續(xù)時(shí)間樣本A、B作為模型輸入,通過Transformer編碼層提取單樣本各測量值之間的特征和兩個(gè)連續(xù)時(shí)間樣本A、B整體之間的特征,用于判斷樣本B是否被注入攻擊。
輸入層的作用是將樣本A、B向量化,將Toki的向量、相應(yīng)的位置向量、分割向量進(jìn)行求和[22],如圖3所示。
圖3 輸入層向量化的過程
由于Transformer編碼器中沒有循環(huán)或者卷積結(jié)構(gòu),無法使用序列元素的位置信息,因此對序列編碼時(shí)需要添加位置信息。相對位置編碼表示如下:
PE(pos,2i)=sin(pos/10 0002i/dmodel)
(5)
PE(pos,2i+1)=cos(pos/10 0002i/dmodel)
(6)
式中:pos代表位置;i代表維度。相對位置編碼的每個(gè)維度均采樣于正弦曲線,根據(jù)式(7)和式(8)可知任意位置的編碼PE(pos+k)都可由PE(pos)的線性函數(shù)表示,該特點(diǎn)為模型捕捉序列元素之間的相對位置關(guān)系提供便利。
sin(α+β)=sinαcosβ+cosαsinβ
(7)
cos(α+β)=cosαcosβ-sinαsinβ
(8)
Transformer編碼層由三層的雙向Transformer編碼器構(gòu)成,具體結(jié)構(gòu)如圖4所示。
圖4 Transformer編碼層
圖4中每個(gè)Trm均代表一個(gè)Transformer編碼器;Ei表示輸入的詞向量,由Toki的向量、位置向量、分割向量的和組成;Ti表示第i個(gè)Token在經(jīng)過Transformer編碼層處理之后得到的特征向量,其模型結(jié)構(gòu)如圖5所示。
圖5 Transformer編碼器
Transformer編碼器由6個(gè)相同的編碼層堆疊而成,每個(gè)編碼層又包括兩個(gè)子層,分別為多頭自注意力層和位置全連接層。為了更好地優(yōu)化深度網(wǎng)絡(luò),整個(gè)網(wǎng)絡(luò)使用了殘差連接和層歸一化。因此,每層輸出可以表示為LayerNorm(x+Sublayer(x)),其中Sublayer(x)為各層的功能函數(shù)。為了使模型正常訓(xùn)練,模型中的所有子層以及嵌入層都需要產(chǎn)生維度dmodel的輸出。
(1) 多頭注意力機(jī)制。一次自注意力計(jì)算關(guān)注到的序列關(guān)系有限,而量測數(shù)據(jù)中的功率、電壓、電流、有用功率、無用功率、總功率和分支功率等數(shù)據(jù)之間關(guān)系多樣,因此本文采用多頭注意力使編碼器同時(shí)關(guān)注來自不同位置的不同表示子空間的信息,其具體計(jì)算流程如圖6所示。
圖6 多頭注意力機(jī)制計(jì)算流程
圖6中,首先將Q、K、V線性變換后分h次輸入到放縮點(diǎn)乘注意力模型,h即為多頭注意力的頭數(shù),每次線性變換的參數(shù)矩陣不同。然后將h次的放縮點(diǎn)積注意力結(jié)果拼接后再進(jìn)行一次線性變換得到多頭注意力的結(jié)果。計(jì)算公式如下:
Multihead(Q,K,V)=Concat(head1,head2,…,headh)WO
(9)
(10)
(2) 位置全連接前饋網(wǎng)絡(luò)。位置全連接前饋網(wǎng)絡(luò)分兩層,用于處理每個(gè)位置的多頭注意力計(jì)算結(jié)果,其輸入和輸出的維度相同。第一層的激活函數(shù)是ReLU,第二層是線性激活函數(shù),如果多頭注意力層輸出表示為X,則FFN可表示為:
FFN(x)=max(0,XW1+b1)W2+b2
(11)
式中:W1、b1和W2、b2分別是兩個(gè)激活函數(shù)的參數(shù)。Transformer編碼器通過對輸入的序列不斷進(jìn)行注意力機(jī)制層和普通的非線性層交疊得到最終的序列表示。
對于量測數(shù)據(jù)訓(xùn)練集C,給定輸入樣本A:x1,x2,…,xN,樣本B:x1,x2,…,xM和對應(yīng)標(biāo)簽y。[CLS]在最后一個(gè)Transformer編碼器的隱藏層輸出記為C∈Rdmodel,經(jīng)過全連接層和Softmax層后對y進(jìn)行預(yù)測:
P(y|||x1,x2,…,xN,x1,x2,…,xM)=Softmax(CWf+b)
(12)
式中:Wf是全連接層的權(quán)重矩陣;b為偏置;P(y|||x1,x2,…,xN,x1,x2,…,xM)是Softmax層計(jì)算的概率結(jié)果。則模型訓(xùn)練的目標(biāo)為最大化目標(biāo)函數(shù)L(C):
(13)
FDIA檢測模型訓(xùn)練完畢后,就可以對連續(xù)時(shí)間的量測數(shù)據(jù)樣本進(jìn)行檢測。
本文選擇該領(lǐng)域主流的IEEE 14-bus和IEEE 30-bus節(jié)點(diǎn)測試系統(tǒng)作為測試環(huán)境,系統(tǒng)網(wǎng)絡(luò)拓?fù)洹⒐?jié)點(diǎn)數(shù)據(jù)、支路參數(shù)等均從Matpower中獲得。在每個(gè)環(huán)境中利用Matpower軟件仿真生成150 000對連續(xù)時(shí)間的正常量測數(shù)據(jù)樣本和50 000對后一時(shí)刻量測值被注入攻擊的樣本,標(biāo)簽分別為-1和1。IEEE 14-bus中每個(gè)樣本包括54個(gè)量測值,IEEE 30-bus中每個(gè)樣本包括112個(gè)量測值。每個(gè)測試系統(tǒng)的量測值包括電壓幅值、總線相位角、總線注入有功功率和無功功率、各支路注入有功功率和無功功率等,將正常樣本和FDIA樣本進(jìn)行去均值和歸一化處理,分別按照7 ∶3的比例隨機(jī)抽取樣本制作訓(xùn)練集和測試集。
本文采用準(zhǔn)確率、漏報(bào)率和誤報(bào)率三個(gè)FDIA檢測領(lǐng)域通用的評測指標(biāo)驗(yàn)證本文方法的可行性和有效性,首先定義以下變量:
真負(fù)類(Ture Negative)表示將正常量測樣本正確地識別成正常量測樣本的數(shù)量,記為Tn。
假負(fù)類(False Negative)表示將正常量測樣本誤識別成FDIA樣本的數(shù)量,記為Fn。
真正類(Ture Positve)表示將FDIA樣本正確地識別成FDIA樣本的數(shù)量,記為Tp。
假正類(False Positive)表示將FDIA樣本誤識別成正常量測樣本的數(shù)量,記為Fp。
(1) 準(zhǔn)確率(記為Ac)計(jì)算表達(dá)式為:
(14)
式(14)表示所有被正確判斷的樣本數(shù)量占所有樣本的百分比,準(zhǔn)確率越高,算法越好。
(2) 正報(bào)率計(jì)算表達(dá)式為:
(15)
式(15)表示在所有被檢測為FDIA樣本中,被正確預(yù)測FDIA樣本所占的百分比。正報(bào)率越高,算法越好。
(3) 誤報(bào)率計(jì)算表達(dá)式為:
(16)
式(16)表示在所有被檢測為正常樣本中,被錯(cuò)誤預(yù)測樣本所占百分比,誤報(bào)率越高,算法越差。
本文選取文獻(xiàn)[15,18]的方法作為對比方法,文獻(xiàn)[15]利用標(biāo)簽數(shù)據(jù)的監(jiān)督學(xué)習(xí)訓(xùn)練分布式支持向量機(jī)對FDIA樣本檢測,測試結(jié)果記為SVM;選取文獻(xiàn)[18]提出的方法,基于三層雙向LSTM模型學(xué)習(xí)單個(gè)樣本狀態(tài)量測值序列的特征,測試結(jié)果記為Bi-LSTM。另外,將三層雙向Transformer編碼器作為編碼器,測試結(jié)果記為Bi-TRAM。
本文方法首先分別將IEEE 14-bus和IEEE 30-bus環(huán)境中獲取的單個(gè)樣本歸一化處理為60維和120維(54維和112維數(shù)據(jù)通過補(bǔ)零變?yōu)?0維和120維,方便后續(xù)處理)的序列向量,則輸入為120維和240維的連續(xù)時(shí)間序列向量。使用TensorFlow深度學(xué)習(xí)框架構(gòu)造模型結(jié)構(gòu)。根據(jù)模型訓(xùn)練經(jīng)驗(yàn),選取多頭注意力的頭數(shù)為10,在訓(xùn)練IEEE 14-bus環(huán)境樣本時(shí)dk=dv=dmodel/h=6,在訓(xùn)練IEEE 30-bus環(huán)境樣本時(shí),dk=dv=dmodel/h=12,全連接層的隱藏節(jié)點(diǎn)數(shù)量為768。優(yōu)化算法選取Adam[23],令β1=0.9,β2=0.98,ε=10-9,epochs設(shè)置為100,每批數(shù)據(jù)batch_size大小為256,學(xué)習(xí)速率為2e-5,本文連續(xù)時(shí)間樣本訓(xùn)練的方法測試結(jié)果記為CON-TRAM。
實(shí)驗(yàn)硬件配置為Intel Xeon E5-2650,128 GB內(nèi)存的服務(wù)器、配備12 GB的雙GTX 1080Ti獨(dú)立顯卡進(jìn)行加速訓(xùn)練。
(1) 綜合對比實(shí)驗(yàn)。本文方法與各對比方法測試結(jié)果如表1和表2所示。
表1 IEEE 30-bus綜合實(shí)驗(yàn)結(jié)果
表2 IEEE 14-bus綜合實(shí)驗(yàn)結(jié)果
可以看出,Bi-LSTM的測試結(jié)果優(yōu)于SVM,這是因?yàn)镽NN網(wǎng)絡(luò)在處理高維度序列數(shù)據(jù)方面比SVM更有優(yōu)勢。Bi-LSTM在計(jì)算時(shí)刻t的隱狀態(tài)時(shí)只利用了量測序列前向t-1時(shí)刻和后向t+1時(shí)刻的隱狀態(tài),而基于自注意力機(jī)制的Transformer編碼器可以同時(shí)利用所有時(shí)刻的隱狀態(tài),可以輕松捕獲長距離的特征,提取量測序列中電壓、電流、功率、有用功、無用功、輸入功率、輸出功率等多種序列關(guān)系特征,經(jīng)過多頭注意力層和位置全連接層的多次迭代訓(xùn)練,最終得到量測序列的向量表示。該向量表示可以更加準(zhǔn)確地代表量測樣本,因此Bi-TRAM三項(xiàng)的評測指標(biāo)優(yōu)于Bi-LSTM。本文CON-TRAM不僅關(guān)注樣本內(nèi)部特征,還著重考慮了連續(xù)時(shí)間樣本之間的關(guān)聯(lián)特征,利用正常連續(xù)內(nèi)電壓、電流、功率、有用功、無用功、輸入功率、輸出功率等變化的特征判斷注入攻擊行為。因此CON-TRAM的測試結(jié)果與對比方法相比有較顯著的提升,與次優(yōu)結(jié)果相比,準(zhǔn)確率平均提高7.41%,正報(bào)率平均提高4.51%,誤報(bào)率平均降低60.99%。
(2) 多頭注意力機(jī)制中頭數(shù)h的分析。多頭注意力計(jì)算中頭數(shù)h是Transformer編碼器的關(guān)鍵一步,因此本節(jié)以IEEE 30-bus環(huán)境的實(shí)驗(yàn)數(shù)據(jù)分析h對FDIA檢測的影響。令h在[0,15]內(nèi)取值,以1為步長訓(xùn)練FDIA檢測模型,在測試集進(jìn)行檢測任務(wù),以評測指標(biāo)準(zhǔn)確率分析,結(jié)果如圖7所示。
圖7 準(zhǔn)確率隨著h的變化分析
可以看出,在[0,10]的區(qū)間內(nèi),準(zhǔn)確率的總體趨勢是隨著h的增加而增加,從FDIA樣本提取的特征關(guān)系也越來越多樣,說明多頭注意力機(jī)制對提升檢測性能有重要作用。當(dāng)h為10時(shí)達(dá)到峰值,隨后趨于平穩(wěn),可以推測量測樣本數(shù)據(jù)中的電壓幅值、總線相位角、總線注入有功功率和無功功率、各支路注入有功功率和無功功率等有10種左右的內(nèi)在關(guān)系,符合數(shù)據(jù)的真實(shí)特征。
本文通過引入Transformer編碼器,解決了當(dāng)前基于單向多層RNN的FDIA檢測方法中無法同時(shí)利用樣本序列前后參數(shù)信息的問題。另外,本文提出基于連續(xù)時(shí)間的量測樣本訓(xùn)練FDIA檢測模型,利用連續(xù)時(shí)間樣本之間的關(guān)聯(lián)特征進(jìn)行檢測,提高了FDIA檢測性能。下一步準(zhǔn)備在電網(wǎng)節(jié)點(diǎn)規(guī)模更大的模擬環(huán)境中測試本文方法的有效性。