王德文,潘曉飛,趙紅博
(1.華北電力大學(xué) 控制與計算機工程學(xué)院,河北 保定 071003;2.復(fù)雜能源系統(tǒng)智能計算教育部工程研究中心,河北 保定 071003)
近年來,隨著深度神經(jīng)網(wǎng)絡(luò)迅速發(fā)展,基于深度學(xué)習(xí)的異常檢測算法變得越來越流行,它能夠較好地處理復(fù)雜的時間相關(guān)性并且具有較強的學(xué)習(xí)能力,因此被用于許多時序數(shù)據(jù)的異常檢測中[1-3]。
生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)在圖像的異常檢測和生成領(lǐng)域被廣泛應(yīng)用[4],并且GAN和對抗訓(xùn)練框架已經(jīng)能夠成功地用于生成復(fù)雜和高維分布的真實數(shù)據(jù)中[5],足以說明它可以用于時序數(shù)據(jù)的異常檢測。使用GAN進行異常檢測的方法是使用對抗訓(xùn)練學(xué)習(xí)正常數(shù)據(jù)的特征,檢測重構(gòu)效果不佳的異常數(shù)據(jù)[6]。
然而,由于時序數(shù)據(jù)具有高度復(fù)雜的時間相關(guān)性并且通常缺少標簽,現(xiàn)有的異常檢測模型難以有效提取時序數(shù)據(jù)的時間信息,缺乏時間關(guān)系和特征關(guān)系的結(jié)合,模型檢測的準確性不高;模型在訓(xùn)練過程中不穩(wěn)定,容易發(fā)生訓(xùn)練不穩(wěn)定[7]等問題;進行異常檢測時,若使用人為統(tǒng)一設(shè)定的閾值會影響異常檢測效果。針對以上問題,本文提出結(jié)合BiLSTM與WGAN-GP的時序數(shù)據(jù)異常檢測模型。該模型的生成器和判別器采用BiLSTM來捕捉時序數(shù)據(jù)復(fù)雜的時間相關(guān)性。為保證訓(xùn)練過程穩(wěn)定性,使用Wasserstein距離代替JS散度的衡量方法,并且在判別器損失中增加梯度懲罰項。最后使用重構(gòu)損失和判別損失的加權(quán)平均值來定義異常函數(shù),通過局部自適應(yīng)閾值判別異常,提高異常檢測的準確性。
時序數(shù)據(jù)異常檢測方法主要包括基于相似度、基于預(yù)測、基于重構(gòu)3大類方法。
基于相似度的方法有:基于距離度量的KNN(K-nearest-neighbors)算法、基于密度度量的LOF(local outlier factor)算法。然而,這些方法無法捕捉時序數(shù)據(jù)之間的時間相關(guān)性,不適用于時序數(shù)據(jù)中[8]。
基于預(yù)測的方法是通過預(yù)測未來值,將預(yù)測值與預(yù)定義的閾值或者觀測值相比較來檢測異常?;陂L短期記憶網(wǎng)絡(luò)(LSTM)[9]和基于深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)[10]的模型被提出用于預(yù)測下一個時間戳來發(fā)現(xiàn)時序數(shù)據(jù)中的異常。
基于重構(gòu)的方法是通過學(xué)習(xí)一個模型來捕捉時序數(shù)據(jù)的潛在結(jié)構(gòu),將重構(gòu)值與觀測值的差異進行比較檢測異常。一種基于自動編碼器的無監(jiān)督時序數(shù)據(jù)的實時異常檢測方法被提出[11],然而,該方法較容易發(fā)生過擬合問題,降低異常檢測的效果,因此本文采用對抗學(xué)習(xí)的方式進行時序數(shù)據(jù)的重構(gòu)。
與傳統(tǒng)的方法不同,在缺少標簽的情況下,GAN經(jīng)過訓(xùn)練后的判別器可以判別數(shù)據(jù)的真假,這使得GAN成為一種有吸引力的無監(jiān)督異常檢測模型。AnoGAN[12]模型是基于無監(jiān)督GAN的圖像數(shù)據(jù)異常檢測方法,該模型使用CNN作為生成器和判別器,將圖像映射到潛在空間并重構(gòu)圖像數(shù)據(jù),使用重構(gòu)圖像的損失來計算異常分數(shù)。Zenati等[13]提出了稱為EGBAD的異常檢測方法,該模型使用BiGAN[14]網(wǎng)絡(luò)結(jié)構(gòu),解決了AnoGAN每次接收新圖片需要調(diào)整參數(shù)的問題。但是,由于CNN不包含處理時序數(shù)據(jù)的機制,AnoGAN和EGBAD方法并不適用于序列數(shù)據(jù)。Li等[5]提出了MAD-GAN模型,該模型將LSTM作為生成器和判別器檢測異常,通過實驗發(fā)現(xiàn)LSTM能夠有效地捕捉時序數(shù)據(jù)的時間關(guān)系輸入到GAN中。BeatGAN[15]模型將自動編碼器(AE)和GAN結(jié)合檢測異常節(jié)拍。Bashar等[16]提出了一種TAnoGAN異常檢測方法,結(jié)合LSTM和AnoGAN來處理時序數(shù)據(jù)異常問題,可以用在只有少量實例的時候。馬標等[17]提出使用多級離散小波變換進行數(shù)據(jù)預(yù)處理,在GAN模型中加入注意力機制并使用多層LSTM提取數(shù)據(jù)特征。但是上述幾種方法忽略了原始GAN在訓(xùn)練的過程中對超參數(shù)非常敏感,容易造成訓(xùn)練不穩(wěn)定的問題[18]。
使用GAN進行異常檢測的研究已經(jīng)有幾年的時間了,但它在時序數(shù)據(jù)異常檢測上的應(yīng)用仍是一個新興的領(lǐng)域,針對現(xiàn)有的模型仍存在準確率不高、訓(xùn)練不穩(wěn)定等問題,本文使用能夠保留長期歷史信息的BiLSTM來捕獲時序數(shù)據(jù)特征,使用Wasserstein距離度量真實數(shù)據(jù)分布與模型擬合分布之間的距離。
圖1 原始數(shù)據(jù)與滑動窗口的關(guān)系
本文提出一種BiLSTM與WGAN-GP結(jié)合的時序數(shù)據(jù)異常檢測模型,結(jié)構(gòu)如圖2所示。
圖2 BiLSTM-WGAN-GP模型結(jié)構(gòu)
BiLSTM-WGAN-GP時序數(shù)據(jù)異常檢測模型主要分為模型訓(xùn)練和異常檢測兩個部分。
網(wǎng)絡(luò)模型訓(xùn)練部分的主要目的是通過對抗性訓(xùn)練學(xué)習(xí)真實的數(shù)據(jù)分布,經(jīng)過足夠多次迭代后訓(xùn)練出能夠產(chǎn)生相似(假)時序數(shù)據(jù)的生成器(Generator,G)和能夠區(qū)分假時序數(shù)據(jù)與真時序數(shù)據(jù)的判別器(Critic,C)。將隨機噪聲Z輸入到G中,G需要學(xué)習(xí)如何生成相似(假)的樣本騙過C。然后將生成的時序數(shù)據(jù)和真實的時序數(shù)據(jù)輸入到C中,C需要區(qū)分出真實樣本和假樣本。為了處理時序數(shù)據(jù),生成器和判別器均使用BiLSTM作為基礎(chǔ)網(wǎng)絡(luò),BiLSTM的計算過程將在2.3.1節(jié)中詳細闡述。
異常檢測部分是使用訓(xùn)練好的生成器G和判別器C來檢測序列中的異常數(shù)據(jù)。首先將測試樣本通過逆映射從潛在空間中找到最合適的隨機噪聲向量z,然后將最合適的隨機噪聲向量z輸入到G中,G生成的樣本與真實樣本的距離定義為重構(gòu)損失;將測試樣本輸入到判別器C中,輸出得到判別損失。最后利用重構(gòu)損失和判別損失的加權(quán)平均值計算出異常分數(shù),采用局部自適應(yīng)閾值方法找出異常的時序數(shù)據(jù)?;贐iLSTM-WGAN-GP的時序數(shù)據(jù)異常檢測算法如算法1所示。
算法1:基于BiLSTM-WGAN-GP的時序數(shù)據(jù)異常檢測算法
輸入:一個小序列X
輸出:異常分數(shù)Score
(1)Function Train(X):
for epochs do
從隨機噪聲Z中取隨機噪聲向量z
從真實樣本分布Pr中取真實數(shù)據(jù)向量x
Train C//訓(xùn)練判別器C區(qū)分真實數(shù)據(jù)和生成數(shù)據(jù),更新參數(shù)
Train G//在第二組隨機噪聲向量上訓(xùn)練生成器G,更新參數(shù)
return G,C
(2)Function AD(X,G,C):
foriin 1 to m do
通過逆映射從隨機噪聲中找到最合適的噪聲向量zi
forλin 1 toτdo
生成器生成數(shù)據(jù)向量G(zi)
計算損失函數(shù)L并通過梯度下降更新zi
計算異常分數(shù)Score
returnScore
2.3.1 BiLSTM捕獲時序數(shù)據(jù)相關(guān)性
在本文所提出的模型中,生成器和判別器均將BiLSTM作為基礎(chǔ)網(wǎng)絡(luò)來捕獲時序數(shù)據(jù)的時間相關(guān)性。BiLSTM是以LSTM為基礎(chǔ)的優(yōu)化網(wǎng)絡(luò),包含正向?qū)雍头聪驅(qū)?,其運算如圖3所示。
圖3 BiLSTM運算
BiLSTM網(wǎng)絡(luò)結(jié)構(gòu)的優(yōu)勢在于可以讓輸出單元同時包含過去和未來序列的數(shù)據(jù)特征,更好地捕捉時序數(shù)據(jù)的依賴性,能夠保留長期的歷史信息。其正向?qū)佑嬎氵^程可以表示為
(1)
(2)
基于以上計算,則隱藏層輸出為
(3)
2.3.2 生成器
生成器的目的是能夠生成與真實樣本相似的假數(shù)據(jù)分布來騙過判別器。對于小數(shù)據(jù)集上的訓(xùn)練,淺層的生成器無法生成足夠相似的假數(shù)據(jù),因此本文采用中等深度的生成器,使用具有64個隱藏單元的兩層BiLSTM、一層全連接層,采用LeakyRELU作為激活函數(shù),生成器結(jié)構(gòu)如圖4所示。
圖4 生成器結(jié)構(gòu)
(4)
生成器的損失函數(shù)定義為
(5)
式中:pg表示生成樣本分布。
2.3.3 判別器
針對數(shù)據(jù)集較小的情況,若使用較大的判別器容易發(fā)生過擬合,因此本文模型的判別器使用一層包含100個隱藏單元的BiLSTM網(wǎng)絡(luò)。原始的GAN容易發(fā)生訓(xùn)練不穩(wěn)定的問題,它的生成器傾向于生成那些被發(fā)現(xiàn)擅長于愚弄判別器的樣本,不愿意生成有助于獲取時序數(shù)據(jù)中的其它模式的新樣本。為了克服這個限制,保證訓(xùn)練過程的穩(wěn)定性,本文使用Wasserstein距離代替JS散度,并且在判別器的損失中加入梯度懲罰項限制梯度變化范圍。直接計算真實樣本分布Pr和生成樣本分布Pg的Wasserstein距離比較困難,因此采用以下方式計算
(6)
(7)
由于需要擬合Wasserstein距離,去掉了最后一層的Sigmoid函數(shù),采用全連接層來輸出各類分布的值。判別器的損失函數(shù)定義為
(8)
(9)
δ為0到1之間的一個隨機數(shù)。
(1)重構(gòu)損失
(10)
(2)判別損失
原始GAN是完成真假二分類任務(wù),但本文模型采用了WGAN-GP的思想,判別器輸出的是Wasserstein距離,因此本文使用判別器的輸出來計算判別損失,定義為
Lc(xn)=f(xn)
(11)
f(·) 表示判別器的輸出。
損失函數(shù)L被定義為重構(gòu)損失LR和判別損失LC的加權(quán)平均值
L(xn)=(1-η)LR(xn)+ηLC(xn)
(12)
η是由經(jīng)驗決定的平衡因子。
在每次迭代中,損失函數(shù)L會估計生成的假序列和真實序列的差異,異常評分函數(shù)Score(x)以表示給定時間序列X與正常小序列模型的差異,公式如下
Score(xn)=(1-η)R(xn)+ηC(xn)
(13)
為了減少誤報,本文采用Hundman等[9]提出的修剪方法。對于每個異常序列,先獲得該異常序列的最大異常分數(shù) {Score1,Score2,…,Scorem},然后按照降序排序,計算下降百分比pi=(Scorei-1-Scorei)/Scorei-1,當?shù)谝粋€Scorei不超過某個閾值θ(默認θ=0.1)時,后續(xù)的序列則被重新分類為正常序列。
本文所有實驗均在同一環(huán)境及配置下進行,見表1。
表1 實驗環(huán)境
實驗使用numenta anomaly benchmark(NAB)數(shù)據(jù)集[19],NAB數(shù)據(jù)集旨在為時間序列異常檢測提供數(shù)據(jù)。該數(shù)據(jù)集分為7類,除去一類不含任何異常的人工數(shù)據(jù)集和一類已知異常原因不含手工標簽的數(shù)據(jù)集,本文選取剩下的5類包括多個領(lǐng)域的時序數(shù)據(jù)集共45個數(shù)據(jù)文件(除去一個不含任何異常的數(shù)據(jù)文件),每個文件有1000~22 000個數(shù)據(jù)實例,每一行包含一個時間戳和一個標量值。這5類數(shù)據(jù)集分別是AWS、AdEx、Art、Traffic、Tweets。AWS是AmazonCloudwatch服務(wù)收集的AWS服務(wù)器指標數(shù)據(jù)集;AdEx是在線廣告點擊率數(shù)據(jù)集;Art是包含不同類型異常的人工生成的數(shù)據(jù)集;Traffic是由明尼蘇達州交通部收集的實時交通數(shù)據(jù)集;Tweets是Twitter上關(guān)于大型上市公司報道的數(shù)據(jù)集。
本文提出的方法是基于無監(jiān)督的方式來訓(xùn)練模型,也就是說沒有標簽,NAB提供的標簽僅僅用于比較檢測的異常來評估模型的性能。
本文采用精確率(Precision)、召回率(Recall)、F1分數(shù)3項指標作為評估指標。
精確率Precision值是針對識別為正確的樣本,反映的是模型能正確識別出樣本類別的程度
(14)
召回率Recall值是針對實際樣本,反映的是模型能夠正確識別出所有樣本類別的程度
(15)
F1分數(shù)是調(diào)和平均值,能夠兼顧精確率和召回率的影響,作為評估模型的主要指標
(16)
3.3.1 模型訓(xùn)練過程分析
本文通過可視化訓(xùn)練過程中生成器和判別器的損失函數(shù)的絕對值來反映本文提出模型的性能,原始GAN和BiLSTM-WGAN-GP模型訓(xùn)練過程中的生成器和判別器的損失函數(shù)變化對比如圖5所示。
圖5 訓(xùn)練損失對比
圖5顯示了迭代500次模型損失函數(shù)變化對比,圖中虛線為未使用WGAN-GP的GAN模型損失值變化,實線為本文提出模型的損失值變化,左圖為生成器損失函數(shù)變化,右圖為判別器損失函數(shù)變化,縱坐標為損失值。可以看出,未使用WGAN-GP的模型在訓(xùn)練過程中損失值變化浮動較大,損失值未收斂。本文所提出模型在訓(xùn)練的剛開始階段,判別器能夠比較容易地判別出輸入數(shù)據(jù)的真假,生成器和判別器的損失變化較大;當訓(xùn)練次數(shù)在50次之后,生成器逐漸學(xué)習(xí)到部分特征,生成器和判別器的損失函數(shù)的絕對值呈現(xiàn)下降的趨勢;在訓(xùn)練次數(shù)達到75次之后,生成器和判別器的損失函數(shù)值變化趨勢趨于平緩;在訓(xùn)練次數(shù)達到100次之后,生成器和判別器的損失沒有較大的波動達到相對穩(wěn)定且接近0,表示該模型具有了較好的收斂能力,判別器的判別能力在訓(xùn)練過程中不斷增強,生成器能夠生成相似于真實數(shù)據(jù)的樣本。
3.3.2 滑動窗口大小設(shè)置
在BiLSTM-WGAN-GP模型中,使用了滑動窗口將長時間序列劃分為較短的時間序列,滑動窗口太短則會無法很好地捕捉時序數(shù)據(jù)的特征,同時也不宜太長。因此確定出最佳的窗口長度是該研究中一項重要的問題。本文嘗試了不同長度的窗口大小來進行實驗,經(jīng)過分析,窗口長度window_length控制在70范圍以內(nèi)即可,以10為間隔進行對比實驗,如圖6所示。
圖6 滑動窗口大小對比實驗
由圖6中所顯示的實驗結(jié)果可以看出,當窗口長度window_length為60時,BiLSTM-WGAN-GP模型的各項評估指標均為最好。
3.3.3 實驗結(jié)果
為了分析BiLSTM-WGAN-GP模型的時序數(shù)據(jù)異常檢測效果,本文采用LSTM[9]、DeepANT[10]、LSTM-AE[11]、MAD-GAN[3]、TAnoGAN[16]、CNNGAN[12]模型與其進行比較,通過對比幾種模型在5類數(shù)據(jù)集上的綜合性指標F1分數(shù)來驗證本文提出模型的性能。對比結(jié)果見表2。
表2 不同時序數(shù)據(jù)異常檢測模型實驗結(jié)果對比
表2中使用加粗字體顯示了各個數(shù)據(jù)集中最高的結(jié)果,BiLSTM-WGAN-GP模型同其它幾個模型相比,F(xiàn)1分數(shù)的平均值最高。
LSTM、DeepANT是基于預(yù)測的方法學(xué)習(xí)時間序列的歷史變化,對接下來的幾個時間步長進行預(yù)測,使用逐點預(yù)測損失定義異常分數(shù)。這兩種模型在每個數(shù)據(jù)集上的F1分數(shù)均不如本文提出的模型。LSTM對上下文異常并不敏感,檢測準確性并不高。DeepANT模型在各個數(shù)據(jù)集上的檢測結(jié)果均不佳,使用CNN作為預(yù)測器檢測異常的效果并不好。
LSTM-AE、MAD-GAN、TAnoGAN、CNNGAN均是基于重構(gòu)的異常檢測方法。LSTM-AE使用LSTM單元捕捉傳感器之間的時間依賴性,自動編碼器結(jié)構(gòu)用于學(xué)習(xí)數(shù)據(jù)集的正常行為。LSTM-AE在AWS數(shù)據(jù)集上表現(xiàn)最好,但在其它4類數(shù)據(jù)集上異常檢測效果并不如本文提出的模型,且本文所提出模型的F1分數(shù)平均值提升了6.9%。MAD-GAN、TAnoGAN具有與BiLSTM-WGAN-GP相似的架構(gòu)。MAD-GAN是使用LSTM-RNN作為GAN基本架構(gòu)的多元時序數(shù)據(jù)異常檢測模型,本文模型的異常檢測結(jié)果明顯優(yōu)于MAD-GAN模型,所使用的BiLSTM能夠?qū)崿F(xiàn)捕捉上一單元和下一單元的時序特征。MAD-GAN在面對數(shù)據(jù)集較小時,異常檢測效果并不好,適用于數(shù)據(jù)集較大的情況。TAnoGAN同樣是適用于較小數(shù)據(jù)集的異常檢測模型,使用LSTM作為生成器和判別器的基礎(chǔ)網(wǎng)絡(luò),通過表中對比結(jié)果來看本文所提出模型的F1分數(shù)平均值提升了6.2%,且在5類數(shù)據(jù)集上的F1分數(shù)均比TAnoGAN模型高。TAnoGAN中使用原始GAN,忽略了可能會發(fā)生訓(xùn)練不穩(wěn)定的問題。CNNGAN模型將CNN作為生成器和判別器的基礎(chǔ)網(wǎng)絡(luò)捕獲時間依賴性,其結(jié)構(gòu)與AnoGAN[14]相似,該模型在Art數(shù)據(jù)集上檢測效果最好,但在其它數(shù)據(jù)集上的檢測效果均不如本文提出的模型,本文模型的F1分數(shù)平均值相比較該模型提升了4.2%,這是由于使用CNN作為生成器并不適用于時序數(shù)據(jù)中。
為了進一步驗證本文所提出模型的性能,本文模型與使用LSTM作為生成器和判別器的GAN(LSTM-GAN)、使用BiLSTM作為生成器和判別器的GAN(BiLSTM-GAN)、使用LSTM作為生成器和判別器的WGAN-GP(LSTM-WGAN-GP)分別進行了實驗,實驗對比結(jié)果如圖7所示。
圖7 不同模型實驗結(jié)果對比
從圖中可以看出,僅僅加入BiLSTM之后3項指標均有所上升,這是因為BiLSTM能夠捕捉過去和未來的數(shù)據(jù)特征。單獨使用WGAN-GP作為基本模型時,可以發(fā)現(xiàn)雖然精確率有所下降但是有更高的召回率,綜合指標F1分數(shù)也比基礎(chǔ)模型GAN高,驗證了本文使用WGAN-GP模型的有效性。本文所提出的BiLSTM-WGAN-GP模型在3個評估指標上表現(xiàn)均為最好,表明了該模型將BiLSTM與WGAN-GP結(jié)合可以提升異常檢測效果。
本文提出BiLSTM-WGAN-GP模型用于時序數(shù)據(jù)異常檢測。該模型使用BiLSTM作為生成器和判別器的基本模型,用來捕捉時間依賴性。使用Wasserstein距離代替JS散度的計算方法并且在判別器損失中增加梯度懲罰項,避免訓(xùn)練不穩(wěn)定等問題;將重構(gòu)損失與判別損失相結(jié)合定義異常函數(shù),使用局部自適應(yīng)閾值方法找出異常數(shù)據(jù)。為了驗證BiLSTM-WGAN-GP模型有良好的性能,該模型在涉及多個領(lǐng)域的5類數(shù)據(jù)集上進行了實驗,并且與其它方法進行了對比,本文提出的模型有較好的異常檢測效果。在接下來的工作中,我們將在模型訓(xùn)練時間方面繼續(xù)探索,做到在提升模型異常檢測效果的同時壓縮模型訓(xùn)練的時間。