徐麗燕,徐 康,黃興挺,李熠軒,季學(xué)純,葉 寧
(1.智能電網(wǎng)保護和運行控制國家重點實驗室,江蘇 南京 211106;2.南瑞集團(國網(wǎng)電力科學(xué)研究院)有限公司,江蘇 南京 211106;3.南京郵電大學(xué) 計算機學(xué)院、軟件學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 210003;4.南京郵電大學(xué) 貝爾英才學(xué)院,江蘇 南京 210003)
為保障網(wǎng)絡(luò)系統(tǒng)的正常運行,運維人員需要時刻監(jiān)控海量的數(shù)據(jù)。其中,關(guān)鍵性能指標(biāo)(Key Performance Indicator,KPI)異常檢測是一個底層核心任務(wù)[1],其目標(biāo)是根據(jù)KPI變化曲線,從大量數(shù)據(jù)中找出與預(yù)期不符的離群點,也就是系統(tǒng)軟硬件服務(wù)的異常。隨著服務(wù)系統(tǒng)的大型化與復(fù)雜化,需要監(jiān)控的關(guān)鍵性能指標(biāo)呈現(xiàn)多樣化、規(guī)?;内厔荨@萌斯ぶ悄芗夹g(shù)和機器學(xué)習(xí)算法對大型網(wǎng)絡(luò)系統(tǒng)進行異常檢測成為智能運維技術(shù)發(fā)展的必然趨勢[2]。深度學(xué)習(xí)算法利用神經(jīng)網(wǎng)絡(luò)自動學(xué)習(xí)特征,憑借強學(xué)習(xí)能力與高適應(yīng)力的優(yōu)勢在異常檢測領(lǐng)域變得越來越流行,并已應(yīng)用于各種任務(wù)。研究表明,在異常檢測領(lǐng)域,深度學(xué)習(xí)[3]方法已經(jīng)完全超越傳統(tǒng)方法[4]。
傳統(tǒng)深度異常檢測方法通過搭建神經(jīng)網(wǎng)絡(luò)自動化地完成特征提取并對異常進行量化評估。例如,基于自編碼器的方法[5]通過自編碼器重構(gòu)原始數(shù)據(jù)的誤差,評估異常值;基于對抗生成網(wǎng)絡(luò)的方法[6]根據(jù)生成器模擬原始數(shù)據(jù),通過原始數(shù)據(jù)與模擬數(shù)據(jù)的誤差以及判別器的值協(xié)同評估數(shù)據(jù)的異常值。而各種神經(jīng)網(wǎng)絡(luò)框架如循環(huán)神經(jīng)網(wǎng)絡(luò)[7](Recurrent Neural Network,RNN)、長短期記憶網(wǎng)絡(luò)[8](Long Short-Term Memory,LSTM)在異常檢測中的應(yīng)用,一定程度解決了異常檢測時間序列在時間上的相關(guān)性問題。
更復(fù)雜的組合模型也被應(yīng)用于時序數(shù)據(jù)異常檢測領(lǐng)域?;赗NN、LSTM等循環(huán)神經(jīng)網(wǎng)絡(luò)和編碼-解碼框架的網(wǎng)絡(luò)能捕獲長短期的時間序列的趨勢[9-10],但RNN、LSTM等方法仍然難以很好地捕獲時序中的長距離依賴,并且難以并行計算[11]。Li等人提出了基于生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)的MAD-GAN模型[12],這類基于GAN重構(gòu)數(shù)據(jù)的模型相較于自編碼器具有更好的生成能力,但對抗生成網(wǎng)絡(luò)存在著模式崩潰等問題。最近,圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN)也被應(yīng)用于多元時間序列[13],通過圖結(jié)構(gòu)建模變量之間的關(guān)系來預(yù)測某個節(jié)點的值[14],但這類方法過于依賴于單個時間點之間的關(guān)聯(lián),而沒有有效利用序列的上下文信息。
盡管已經(jīng)提出了很多基于深度學(xué)習(xí)的異常檢測方法,但現(xiàn)有的方法仍有兩點不足:
(1)現(xiàn)有的深度學(xué)習(xí)方法建模序列數(shù)據(jù)時因其長期依賴性導(dǎo)致模型性能下降。
(2)現(xiàn)有的時序深度學(xué)習(xí)模型中因其包含遞歸運算導(dǎo)致模型難以并行計算。
針對以上兩點不足,提出一種基于Transformer[15]的時序數(shù)據(jù)異常檢測方法(Devformer)。利用多頭自注意力機制[16]并行化地處理當(dāng)前上下文環(huán)境中的全部數(shù)據(jù),自動化地提取每個時間節(jié)點數(shù)據(jù)的長距離依賴特征;利用編碼-解碼框架[17],建立一個端到端的異常得分模型,得到每個時刻異常傾向的量化評估。
相較已有方法,這篇文章的主要貢獻有:
(1)將Transformer引入異常檢測領(lǐng)域,有效解決異常檢測時間序列上下文依賴與神經(jīng)網(wǎng)絡(luò)并行化運算問題。
(2)在WADI、SWaT、KDDCUP99與AIOPS18數(shù)據(jù)集上的異常檢測實驗中,Devformer表現(xiàn)優(yōu)于現(xiàn)有的時序數(shù)據(jù)異常檢測的對比方法。
這部分將主要介紹時序數(shù)據(jù)的異常檢測與Transformer。
異常監(jiān)測是對數(shù)據(jù)集中不匹配預(yù)期模式的離群點進行識別,屬于不均衡數(shù)據(jù)的分類問題[18]。異常檢測的核心就在于建立一個合適的模型,自動學(xué)習(xí)數(shù)據(jù)的深層次特征,得到正常和異常的決策邊界,以區(qū)分正常和異常樣本。
時序數(shù)據(jù)指以一定的時間間隔持續(xù)捕獲的一系列指標(biāo)數(shù)據(jù)。網(wǎng)絡(luò)系統(tǒng)的流量變化,銀行的量化交易,工業(yè)物聯(lián)網(wǎng)的環(huán)境監(jiān)控都具體表現(xiàn)為時間序列數(shù)據(jù),是系統(tǒng)正常工作與性能變化的最直觀反映。因此,通過監(jiān)測時序數(shù)據(jù)的變化,實現(xiàn)異常檢測是智能運維領(lǐng)域的重要內(nèi)容。基于時序數(shù)據(jù)普遍表現(xiàn)出數(shù)據(jù)量大、監(jiān)測指標(biāo)多、異常種類多樣的特點,更適合使用學(xué)習(xí)能力強的深度學(xué)習(xí)方法實現(xiàn)時序數(shù)據(jù)的異常檢測。
傳統(tǒng)的統(tǒng)計學(xué)方法通過移動差分自回歸[19]等模型分解并平穩(wěn)化時間序列,異常檢測具有明顯季節(jié)性與趨勢性的非平穩(wěn)時間序列,但由于數(shù)據(jù)維度災(zāi)難的原因,難以捕捉高維或非線性關(guān)系,對異常與正常分界模糊的數(shù)據(jù)分類困難。支持向量機[20]、決策樹和隨機森林[21]的分類方法與XGBoost[22]等回歸算法解決了上述問題,較快且較好地擬合非線性或高維數(shù)據(jù),一定程度避免了過擬合的問題,提高了模型的泛化能力。但傳統(tǒng)的關(guān)鍵性能指標(biāo)異常檢測方法并沒有充分考慮時間序列的上下文信息,難以捕獲異常對全文信息的依賴。
在基于機器學(xué)習(xí)的異常檢測方法中,需要對原始數(shù)據(jù)進行特征工程,提取樣本特征。特征的選取決定了異常檢測的效果,但卻取決于相關(guān)領(lǐng)域的專家經(jīng)驗,導(dǎo)致檢測效果并不穩(wěn)定。同時,異常檢測時間序列數(shù)據(jù)量大且異常種類多的特點,決定了機器學(xué)習(xí)算法在異常檢測領(lǐng)域的局限性。因此,引入對大規(guī)模高維數(shù)據(jù)、非線性參數(shù)學(xué)習(xí)能力更強的深度學(xué)習(xí)異常檢測方法。
Transformer作為一種新型的神經(jīng)網(wǎng)絡(luò)框架,利用自注意力機制學(xué)習(xí)數(shù)據(jù)的長距離依賴關(guān)系,利用編碼-解碼框架實現(xiàn)輸入與輸出的端到端運算。
注意力是有限的,并且數(shù)據(jù)中總有冗余信息。Transformer的自注意力機制解決了如何將有限的注意力聚焦在有效信息。自注意力機制捕獲數(shù)據(jù)的長距離依賴關(guān)系,以并行運算模式使數(shù)據(jù)對不同距離數(shù)據(jù)的依賴關(guān)系學(xué)習(xí)能力相同,解決了LSTM等方法因包含遞歸運算而導(dǎo)致模型難以并行計算,同時長期依賴性會導(dǎo)致模型性能下降的問題。
Transformer最初被應(yīng)用于機器翻譯[15],用于學(xué)習(xí)句內(nèi)單詞的相關(guān)性。Transformer框架憑借學(xué)習(xí)長距離依賴關(guān)系的優(yōu)勢,較好地適應(yīng)了時間序列中當(dāng)前數(shù)據(jù)值依賴于歷史數(shù)據(jù)的特征。同時,Dai等人引入段級遞歸機制,有效地解決了Transformer并行運算機制中分批次投入導(dǎo)致的上下文碎片問題[23]。各項研究表明,Transformer在序列數(shù)據(jù)處理任務(wù)表現(xiàn)出較優(yōu)的性能。Wu等人通過改變編碼器的輸入與解碼器的輸入、輸出模式將Transformer用于時序數(shù)據(jù)的預(yù)測[24];Bryan Lim等人在時序預(yù)測任務(wù)中,將LSTM應(yīng)用于Transformer的編碼器并結(jié)合門限機制提高了時序預(yù)測的精度[25]。
而近年來,Transformer也被應(yīng)用于時序數(shù)據(jù)異常檢測的任務(wù)中。Chen等人在構(gòu)建的模型中使用Transformer架構(gòu)建模時序數(shù)據(jù)的依賴關(guān)系[26];Li等人提出的基于生成對抗網(wǎng)絡(luò)的模型也使用了Transformer組件構(gòu)成GAN模型的生成器,來挖掘時序數(shù)據(jù)的深層信息[27];Wang等人將Transformer與變分自編碼器(Variational Auto-Encoder,VAE)結(jié)合起來,在多元時序數(shù)據(jù)上進行異常檢測[28];Xu等人同樣通過Transformer對每個時間點計算自注意力權(quán)重來得到點與序列之間的關(guān)系[29];這些工作展現(xiàn)了Transformer在時序數(shù)據(jù)處理上的優(yōu)秀性能。
時序型的多維KPI數(shù)據(jù)及其對應(yīng)的異常標(biāo)簽為本模型的輸入和輸出。該文使用滑動窗口方法處理原始時序數(shù)據(jù)獲取窗口數(shù)據(jù)。
本模型輸入的時間序列數(shù)據(jù)處理為T個長度為m的滑動窗口,每個滑動窗口數(shù)據(jù)記作Seriest,為模型輸入的基本單位。以圖1為例,模型將5條數(shù)據(jù)處理為3個長度為3的滑動窗口。本模型的編碼器將輸入的Series1…T編碼為中間表示C1…T,Ct=fe(xt1,xt2,…,xtm),其中xt1,xt2,…,xtm為Seriest的每個時間點的多維KPI向量數(shù)據(jù),fe(…)為Transformer編碼器[15]。接著,使用解碼器φt=fd(Ct,Seriest),將中間表示Ct和Seriest作為Transformer解碼器fd(…)的輸入,輸出為異常得分Φt。使用分數(shù)生成器生成規(guī)范化的異常得分dev(Φt),模型假設(shè)Seriest的異常得分滿足高斯分布,其中Margin為正常值和異常值的閾值,μ和σ為高斯分布的均值和標(biāo)準(zhǔn)差。Seriest中的異常得分表示時間窗口內(nèi)最后一個時間點數(shù)據(jù)的異常得分。
本模型訓(xùn)練基于Transformer的異常檢測模型,主要分為三個模塊:(1)編碼器模塊,輸入為預(yù)處理后的窗口數(shù)據(jù),輸出數(shù)據(jù)的中間表示;(2)解碼器模塊,輸入為預(yù)處理后的窗口數(shù)據(jù)和編碼器的中間表示,輸出窗口數(shù)據(jù)的初始異常分數(shù);(3)分數(shù)生成器,將初始異常分數(shù)通過分數(shù)生成器生成規(guī)范化的異常得分,最后通過閾值判別數(shù)據(jù)中的異常,通過該異常得分模型,當(dāng)滑動窗口的異常得分Φt>Margin時,判斷滑動窗口的最后一條數(shù)據(jù)為異常。具體流程如圖2所示。
圖2 基于Transformer的時序數(shù)據(jù)異常檢測框架
Devformer編碼器主要分為多頭自注意力機制,殘差與歸一化網(wǎng)絡(luò)兩個模塊。
2.1.1 多頭注意力機制
注意力機制有三個輸入:Query,Key,Value。由Query索引鍵值Key,計算兩者相關(guān)性,再加權(quán)Value得到注意力矩陣。
Attention(Query,Key,Value)=
(1)
定義三個矩陣WQ、WK、WV分別作為Query、Key、Value取相同值Seriest時的權(quán)重,注意力機制能夠捕捉序列內(nèi)部的依賴關(guān)系。
(2)
將多維的時序數(shù)據(jù)切片分別訓(xùn)練,并將多次注意力機制結(jié)果用前饋神經(jīng)網(wǎng)絡(luò)拼接。多頭的機制能夠提高模型的訓(xùn)練效率,有助于捕捉更豐富的特征。
Multihead(Q,K,V)=concat[head1,…,
headn]Wo
(3)
headi=Attention(Qi,Ki,Vi)
(4)
其中,n為頭的數(shù)量,i為頭的索引。
2.1.2 殘差與歸一化網(wǎng)絡(luò)
(5)
歸一化網(wǎng)絡(luò)基于Seriest的均值與方差,不斷調(diào)整神經(jīng)網(wǎng)絡(luò)中間輸出,使編碼器輸出Ct更加穩(wěn)定,起到正則化作用。
(6)
在前饋神經(jīng)網(wǎng)絡(luò)后添加殘差與歸一化網(wǎng)絡(luò)有同樣的效果。
Devformer解碼器主要分為后遮擋的自注意力機制、殘差與歸一化網(wǎng)絡(luò)、注意力解碼機制三個模塊。
MaskedAttention(Query,Key,Value)=
(7)
WVSeriest)
(8)
其中,mask為與Seriest相同維度的單位上三角矩陣,-inf的含義為負無窮。在進入激活函數(shù)前,Query和Key的點積結(jié)果需要先經(jīng)過mask層。mask層將注意力矩陣的上三角置為負無窮,對應(yīng)激活后的注意力系數(shù)趨于0,使當(dāng)前時刻數(shù)據(jù)的異常得分與未來時刻無關(guān)。
(9)
最后通過前饋神經(jīng)網(wǎng)絡(luò)進行降維處理,輸出單維的Φt,作為Seriest最后一條數(shù)據(jù)xtm異常得分。
(3) 若Uα,取V=[α],則對任意的(x,z)V°V,存在L,使得(x,y)V, (y,z)V。由[α]的定義知(x→y)?(y→z)≥α,同時(y→z)?(z→y)≥α。
(10)
解碼器中的每個注意力網(wǎng)絡(luò)與前饋神經(jīng)網(wǎng)絡(luò)都加入了殘差與歸一化網(wǎng)絡(luò)。
Devformer以多頭自注意力機制的編碼-解碼框架學(xué)習(xí)異常得分之后,假設(shè)所有數(shù)據(jù)的異常得分滿足高斯分布,構(gòu)造一個損失函數(shù)?;诋惓z測時間序列異常數(shù)量少而種類多的特征,該文采用偏差網(wǎng)絡(luò)框架[30],通過高斯分布獲取參考分數(shù),建立基于Z得分的損失函數(shù)。
Devformer由解碼器獲得異常得分fd(Ct,Seriest)后,采用先驗驅(qū)動的方法,從標(biāo)準(zhǔn)高斯分布中隨機抽取一定數(shù)量的樣本,并取樣本的平均值、標(biāo)準(zhǔn)差作為參考分數(shù)。
r1,r2,…,rm~N(μR,σR)
(11)
(12)
(13)
其中,ri(1≤i≤m)為隨機選取的一組數(shù)據(jù)的異常得分,m為數(shù)據(jù)量,μR為先驗數(shù)據(jù)集參考分數(shù)的數(shù)學(xué)期望,σR為參考分數(shù)的方差。
(14)
引入L(φt,μR,σR)作為損失函數(shù):
L(φt,μR,σR)=(1-y)|dev(φt)|+ymax(0,a-dev(φt))
(15)
其中,y為Seriest最后一條數(shù)據(jù)的異常標(biāo)記。
在基于Z得分建立的損失函數(shù)中,正常數(shù)據(jù)的異常得分會向0靠近,異常數(shù)據(jù)的異常得分會遠離0,或保持大于a的值不變,以此實現(xiàn)了正常數(shù)據(jù)和異常數(shù)據(jù)異常得分的區(qū)分。在異常檢測過程中,時序數(shù)據(jù)xt投入已訓(xùn)練的模型,將輸出對應(yīng)的異常得分Φt。將異常得分在[0,a]范圍內(nèi)的數(shù)據(jù)歸為正常,否則為異常。
算法1給出了基于偏差網(wǎng)絡(luò)的Transformer算法的異常得分模型建立方法。
算法1:Devformer模型訓(xùn)練方法。
輸入:n維的異常檢測時間序列X∈Rn的集合;
輸出:異常評分網(wǎng)絡(luò)Φt∈R。
預(yù)處理數(shù)據(jù)集建立T個長度為m的滑動窗口集合{Seriest};/*m為滑動窗口長度*/
(1)隨機初始化編碼器向量{Ct};
(2)fori=1 to epochs do
(3)forj=1 to nb_batch do
(4)從訓(xùn)練集隨機抽取batch_size個數(shù)據(jù)投入訓(xùn)練;
(5)將m維序列切成n片,每片m/n維,分別訓(xùn)練后將結(jié)果拼接;/*m為n的整數(shù)倍*/
(6)編碼器編碼所有的Seriest為中間向量Ct;
(7)解碼器解碼Seriest、Ct,獲得異常得分Φt
(8)梯度下降最小化損失函數(shù)L(φt,μR,σR);
(9)end for
(10)end for
(11)return 0
在數(shù)據(jù)集中隨機采集固定數(shù)量的正常數(shù)據(jù)和異常數(shù)據(jù),保證模型單次投入的數(shù)據(jù)組中正常數(shù)據(jù)和異常數(shù)據(jù)數(shù)量相等,訓(xùn)練足夠數(shù)量的異常數(shù)據(jù),解決時序數(shù)據(jù)集異常類別不平衡的問題。
該文由Python3.8與Tensorflow2.3.0搭建了基于Transformer的時序數(shù)據(jù)異常檢測模型,并利用SWaT、WADI和KDDCUP99、AIOPS18四個數(shù)據(jù)集評價該模型的性能。表1為數(shù)據(jù)集基本信息。
表1 數(shù)據(jù)集基本信息
表1中,Train Rate表示訓(xùn)練集中異常數(shù)所占比例,Test Rate表示測試集中異常數(shù)所占比例。
SWaT與WADI數(shù)據(jù)集分別來自新加坡科技與設(shè)計大學(xué)網(wǎng)絡(luò)安全中心的配水系統(tǒng)與水安全處理系統(tǒng)的攻擊檢測。SWaT數(shù)據(jù)集的KPI來自對應(yīng)系統(tǒng)的網(wǎng)絡(luò)流量與51個傳感器與執(zhí)行器的數(shù)據(jù),WADI數(shù)據(jù)集的KPI來自配水系統(tǒng)123個傳感器與執(zhí)行器的數(shù)據(jù)。
KDDCUP 99數(shù)據(jù)集來自1999年KDDCUP競賽的比賽數(shù)據(jù),模擬了US空軍局域網(wǎng)環(huán)境,并監(jiān)控了34類關(guān)鍵性能指標(biāo),其異常來自局域網(wǎng)受到的模擬攻擊;AIOPS18數(shù)據(jù)集來自2018年AIOPS挑戰(zhàn)賽的比賽數(shù)據(jù)集,該數(shù)據(jù)集由時間戳、一維的關(guān)鍵性能指標(biāo)與異常標(biāo)記組成,體現(xiàn)了智能運維在時間序列異常檢測領(lǐng)域的代表形式。
上述數(shù)據(jù)集,長時間、短間隔地記錄多維的關(guān)鍵性能指標(biāo)(如網(wǎng)絡(luò)流量、傳感器與執(zhí)行器的所有值)與異常檢測標(biāo)簽,符合模型異常檢測的時序要求與深度學(xué)習(xí)的大數(shù)據(jù)量與高維數(shù)據(jù)的要求。
實驗中,偏差網(wǎng)絡(luò)損失函數(shù)的置信度邊界值(confidence margin)設(shè)置為5.0,高斯分布數(shù)據(jù)量設(shè)置為5 000時,實驗結(jié)果較優(yōu)。
設(shè)置模型訓(xùn)練次數(shù)epochs為800,單次訓(xùn)練投入數(shù)據(jù)組批數(shù)nb_batch為10,一批數(shù)據(jù)組的數(shù)據(jù)量batch_size為30。
實驗使用準(zhǔn)確率(Precision)、召回率(Recall)和F1分數(shù)衡量模型異常檢測的效果:
(16)
(17)
(18)
其中,TP為正確檢測的異常數(shù),F(xiàn)P為檢測為異常的正常數(shù),F(xiàn)N為檢測為正常的異常數(shù)。
異常檢測的目標(biāo)是盡可能完全地檢測出異常,在進行實驗與模型評估時,更加重視模型在召回率指標(biāo)上的表現(xiàn)。因此,在保證F1分數(shù)更高的同時,該文主要使用召回率作為模型的性能衡量指標(biāo)。
將基于偏差網(wǎng)絡(luò)的Transformer異常檢測方法分別與主成分分析異常檢測方法(PCA)、隨機森林異常檢測方法(Random Forest)、基于偏差網(wǎng)絡(luò)的長短期記憶(LSTM)異常檢測方法、文獻[12]中基于生成對抗網(wǎng)絡(luò)的重構(gòu)方法MAD-GAN、文獻[30]中基于偏差網(wǎng)絡(luò)的深度學(xué)習(xí)模型Devnet、文獻[14]中基于圖注意力網(wǎng)絡(luò)的GDN模型進行比較。其中,MAD-GAN將數(shù)據(jù)映射到潛在空間,并通過潛在空間重構(gòu)數(shù)據(jù),計算重構(gòu)損失得到異常得分;Devnet結(jié)合高斯先驗分布計算偏差損失,通過端到端方式直接優(yōu)化模型;GDN將數(shù)據(jù)的每個特征維度作為圖神經(jīng)網(wǎng)絡(luò)的一個節(jié)點,通過節(jié)點相似度學(xué)習(xí)圖結(jié)構(gòu),結(jié)合注意力機制計算每個節(jié)點的異常得分。
具體實驗結(jié)果如表2所示,表2中加粗部分表示單個數(shù)據(jù)集中最優(yōu)的性能。
表2 不同方法的性能比較
實驗結(jié)果表明,相較于其他方法,Devformer能夠較好地分析出時間序列的長距離依賴關(guān)系,能夠全面檢測出存在的異常,在召回率方面有著顯著的優(yōu)勢。
對于SWaT數(shù)據(jù)集,Devformer擁有最高的召回率,相較于召回率第二的主成分分析方法,提升了高達0.050 2的得分,提升率達6.275%;同樣,在特征數(shù)量更多的WADI數(shù)據(jù)集上,Devformer的召回率依然最高,達到了0.982 4,相比于其他對比方法,召回率得分有著平均0.376 4的提升;對于KDDCUP99數(shù)據(jù)集,Devformer的召回率也超過了0.95,在保證可觀的召回率的同時,還擁有出色的準(zhǔn)確率(得分超過0.99),F(xiàn)1值也超過了0.97,相較于其他方法,三項指標(biāo)均為最高水準(zhǔn),體現(xiàn)出了模型優(yōu)秀的綜合性能;同樣,在AIOPS18數(shù)據(jù)集上,Devformer的三項指標(biāo)均為最高,在Recall值上有著平均0.194 7的提升。
經(jīng)分析發(fā)現(xiàn),Devformer的性能在大規(guī)模數(shù)據(jù)集中更優(yōu)。并且,Devformer在特征維度較高的WADI與僅包含六個特征的AIOPS18數(shù)據(jù)集上,都有著優(yōu)秀的性能表現(xiàn),說明了該模型對不同的特征維度均具有良好的適應(yīng)性。Devformer在WADI數(shù)據(jù)集中準(zhǔn)確率過低,在SWaT數(shù)據(jù)集中召回率不夠高,主要因為訓(xùn)練數(shù)據(jù)量不足。各深度方法對于AIOPS18數(shù)據(jù)集的訓(xùn)練效果均不理想,是因為該數(shù)據(jù)集的關(guān)鍵性能指標(biāo)維度過低導(dǎo)致的數(shù)據(jù)中包含的特征信息過少,可以通過抽樣重復(fù)訓(xùn)練的方法提升訓(xùn)練效果。
Devformer中窗口大小(即序列長度)通過影響模型捕獲單個異常對其他數(shù)據(jù)依賴的最大距離,而對模型性能影響巨大。為了分析不同序列長度對模型準(zhǔn)確率、召回率與F1的影響,本實驗控制其他變量不變,通過設(shè)置不同的序列長度,分析序列長度對模型性能的影響。實驗結(jié)果如圖3所示。
圖3 序列長度對模型性能的影響
在實際應(yīng)用中,訓(xùn)練用數(shù)據(jù)集是有噪聲的,即無法將所有的異常標(biāo)注。Devformer的偏差網(wǎng)絡(luò)更關(guān)注異常并重復(fù)訓(xùn)練陽性數(shù)據(jù),減少了假陰型樣本的干擾。為了證明Devformer對假陰型數(shù)據(jù)的抗干擾能力,在訓(xùn)練集中分別增加0%、2%、5%、10%、20%的假陰性樣本,比較Devformer分別與主成分分析異常檢測方法(PCA)、隨機森林異常檢測方法(Random Forest)、文獻[12]的MAD-GAN、文獻[30]中的Devnet、基于偏差網(wǎng)絡(luò)的長短期記憶(LSTM)異常檢測方法在有噪聲的KDD訓(xùn)練集中的性能。實驗結(jié)果如圖4所示。
圖4 污染訓(xùn)練集對模型性能的影響
實驗證明,Devformer具有較好的魯棒性,即使訓(xùn)練集中有較多的假陰型樣本,對模型性能也不會有明顯影響。這是因為Devformer采集大量正常數(shù)據(jù)的異常得分建立正態(tài)分布作為參考分數(shù),即使數(shù)據(jù)中有少量假陰型樣本作為異常數(shù)據(jù),對模型學(xué)習(xí)到的分布影響不大。
在Devformer中設(shè)置了不同數(shù)量的Transformer層,模型表現(xiàn)出不同的性能,圖5顯示了三個數(shù)據(jù)集WADI、SWaT和KDDCUP99在不同Transformer層數(shù)的模型中的性能變化。
圖5 Transformer層數(shù)對模型性能的影響
實驗結(jié)果表明,該模型在SWaT數(shù)據(jù)集、KDDCUP99數(shù)據(jù)集以及WADI數(shù)據(jù)集Transformer層數(shù)分別設(shè)置為3層、5層和1層時表現(xiàn)最佳。
當(dāng)Transformer層數(shù)過多時,神經(jīng)網(wǎng)絡(luò)過于復(fù)雜,會導(dǎo)致過擬合的問題;Transformer層數(shù)過少,可能導(dǎo)致簡單的神經(jīng)網(wǎng)絡(luò)難以學(xué)習(xí)高維度數(shù)據(jù)中復(fù)雜的異常模式。
該文提出了一種用于時間序列的基于Devformer的深度異常檢測方法。首先,通過基于時間窗口的方法預(yù)處理時序數(shù)據(jù);其次,通過Transformer和基于Z得分的偏差網(wǎng)絡(luò)建立異常得分模型。實驗結(jié)果表明,相比于現(xiàn)有深度學(xué)習(xí)異常檢測方法,該方法對于大規(guī)模時間序列的異常檢測有更好的召回率、穩(wěn)定性和抗干擾性。
由于Devformer的神經(jīng)網(wǎng)絡(luò)較為復(fù)雜,模型訓(xùn)練時間偏長,且若訓(xùn)練數(shù)據(jù)規(guī)模過小,模型效果偏差。Devformer中神經(jīng)網(wǎng)絡(luò)的簡化與提優(yōu)是很重要的研究課題,可以提高模型訓(xùn)練效率以及對小規(guī)模數(shù)據(jù)的適應(yīng)能力。