姚 珺
(銅陵學(xué)院 數(shù)學(xué)與計(jì)算機(jī)學(xué)院,安徽 銅陵 244061)
多變量時間序列異常檢測[1]在工業(yè)控制、醫(yī)療診斷、網(wǎng)絡(luò)安全等應(yīng)用領(lǐng)域中被廣泛研究和關(guān)注,旨在通過構(gòu)建以往時間序列變化的正常模式,以檢測數(shù)據(jù)中不符合預(yù)期模式的時序片段[2]。例如,在網(wǎng)絡(luò)安全領(lǐng)域,通過監(jiān)測網(wǎng)絡(luò)流量可有效地檢測出用戶的異常行為,從而保護(hù)系統(tǒng)免受網(wǎng)絡(luò)攻擊。時間序列異常檢測通常會面臨兩大難題:一是在采集的樣本中,異常數(shù)據(jù)遠(yuǎn)比正常數(shù)據(jù)少;二是樣本標(biāo)簽通常需要由相應(yīng)領(lǐng)域的專家進(jìn)行人工標(biāo)注,但給所有樣本都打上標(biāo)簽很難實(shí)現(xiàn)。因此,僅用正常數(shù)據(jù)即可訓(xùn)練模型的無監(jiān)督方法更適合時間序列的異常檢測。
近年來,生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)[3]備受關(guān)注。作為一種無監(jiān)督的深度學(xué)習(xí)模型,GAN在高維數(shù)據(jù)建模方面具有優(yōu)勢,因而被廣泛應(yīng)用于時序數(shù)據(jù)的異常檢測?;贕AN的異常檢測方法通常分為兩個階段:模型訓(xùn)練階段和異常檢測階段。在訓(xùn)練階段,只使用正常數(shù)據(jù)來訓(xùn)練模型,逐步學(xué)習(xí)正常時序數(shù)據(jù)的分布特性,使得訓(xùn)練后的模型能理想地重構(gòu)正常數(shù)據(jù);在測試階段,以樣本重構(gòu)誤差作為判別依據(jù),重構(gòu)誤差偏大的數(shù)據(jù)被將判定為異常。具體來說,根據(jù)模型輸出的異常分?jǐn)?shù)來判斷樣本是否為異常,且異常分?jǐn)?shù)越高則樣本是異常的可能性就越高。
從重構(gòu)角度出發(fā),按隱空間變量的生成方式,基于GAN的異常檢測模型大致分為三種:第一種是不使用編碼器(Encoder)生成隱空間變量的方法。與標(biāo)準(zhǔn)GAN一樣,僅通過生成器和判別器來構(gòu)造GAN,并對隨機(jī)生成的隱變量進(jìn)行優(yōu)化,以生成與異常檢測對象測試數(shù)據(jù)最相似的數(shù)據(jù)。代表模型有MADGAN[4],該方法以LSTM-RNN網(wǎng)絡(luò)作為GAN的基本模型來捕捉多變量時間序列分布,并設(shè)計(jì)同時考慮判別損失和重構(gòu)損失的異常分?jǐn)?shù)檢測。第二種是使用雙向GAN[5](Bidirectional GAN,BiGAN)的方法。BiGAN是在標(biāo)準(zhǔn)GAN中添加編碼器,從而使模型具備學(xué)習(xí)真實(shí)數(shù)據(jù)到隱空間逆映射功能,因此在訓(xùn)練時可以實(shí)現(xiàn)數(shù)據(jù)空間和隱空間的雙向映射,從而生成用于重建測試數(shù)據(jù)的隱變量。代表模型有ALAD[6],該方法在特征維度較高的大數(shù)據(jù)集上表現(xiàn)優(yōu)異。第三種是使用自編碼器(Auto-encoder)的方法。該方法通過自編碼器來構(gòu)造生成器,與BiGAN一樣,在訓(xùn)練時可以實(shí)現(xiàn)學(xué)習(xí)數(shù)據(jù)空間與隱空間的雙向映射。代表模型有BeatGAN[7],該方法通過使用一維CNN或全連接神經(jīng)網(wǎng)絡(luò)來構(gòu)造自編碼器,有效提高了對單變量和多變量時間序列異常檢測的精度。
由于多變量時間序列固有的高維復(fù)雜特性,其異常檢測仍然是一個很大的挑戰(zhàn)。本文提出了一種基于GAN的多變量時間序列異常檢測模型。該模型使用長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)作為基本模塊,生成器采用編碼-解碼結(jié)構(gòu),在模型訓(xùn)練時可以學(xué)習(xí)數(shù)據(jù)空間和隱空間的雙向映射。因此,在異常檢測階段無需對每個測試樣本進(jìn)行隱空間變量優(yōu)化,從而縮短了模型檢測異常的時間。此外,在編碼器、解碼器和判別器中均加入一個多通道注意力(Multi-Channel Attention)[8]層,以學(xué)習(xí)多變量時間序列時空上的復(fù)雜依賴關(guān)系,并通過捕捉時序數(shù)據(jù)在時間和空間維度的重要性,從而提升異常檢測的準(zhǔn)確性。該模型結(jié)合生成器的重構(gòu)損失和判別器的判別損失共同定義的異常分?jǐn)?shù)來檢測異常,同時在公開數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)并驗(yàn)證了本文模型的有效性。
本節(jié)給出了本文所使用的符號和問題定義。X=(…,xt,xt+1,…)∈Rn×d,d>1被稱為多變量時間序列數(shù)據(jù),其中,n表示時序數(shù)據(jù)的長度,xt∈Rd表示t時刻的時序向量,d表示時序向量的維度。
定義1多變量時間序列片段是指作為待訓(xùn)練或待檢測的時序數(shù)據(jù)集合。
本文通過滑動窗口機(jī)制[9]從原始的多變量時間序列中提取時間序列片段?;瑒哟翱诎瑑蓚€屬性:窗口大小w和滑動步長s。將滑動窗口與時序數(shù)據(jù)起始處對齊,并沿著時序方向滑動。在每次滑動后,滑窗選中的數(shù)據(jù)即為一個時序片段。Xi=(xt-w+1,…,xt-1,xt)∈Rw×d表示滑窗移動了i步后所提取的時序片段,其中,t表示提取時序片段中時序數(shù)據(jù)的結(jié)束時刻,w表示時序片段的長度。給定多變量時間序列數(shù)據(jù)X的一個時間序列片段Xi,則多變量時間序列異常檢測的目標(biāo)是得到t時刻的異常分?jǐn)?shù),該異常分?jǐn)?shù)可反映t時刻時序點(diǎn)的異常程度。
針對多變量時間序列數(shù)據(jù)的高維度和復(fù)雜性,本文基于GAN提出了一種無監(jiān)督多變量時間序列異常檢測模型。為更好地學(xué)習(xí)時間序列分布,本文使用LSTM網(wǎng)絡(luò)來構(gòu)造生成器和判別器以捕捉多變量時間序列的特征。生成器采用編碼-解碼結(jié)構(gòu),在模型訓(xùn)練時可以實(shí)現(xiàn)數(shù)據(jù)空間和隱空間的雙向映射。此外,在各網(wǎng)絡(luò)中引入多通道注意力機(jī)制,以捕捉多變量時序數(shù)據(jù)不同維度的重要性,且學(xué)習(xí)多變量時間序列在時間和特征維度上的復(fù)雜依賴關(guān)系。
多變量時間序列數(shù)據(jù)異常檢測旨在識別待測樣本是否符合一段時間內(nèi)數(shù)據(jù)的正態(tài)分布,將不符合要求的觀測結(jié)果視為異常[10]。相關(guān)研究已成功應(yīng)用GAN框架且實(shí)現(xiàn)異常檢測,并驗(yàn)證了利用隱空間來重建待測樣本進(jìn)行異常識別的有效性[4-7]。本文在已有工作基礎(chǔ)上,提出了基于GAN的多變量時間序列數(shù)據(jù)異常檢測模型,如圖1所示,整個網(wǎng)絡(luò)分為兩部分:一個生成器G和一個判別器D。其中,生成器G由一個編碼器GE和一個解碼器GD組成。異常檢測方法分為兩個階段:模型訓(xùn)練階段和異常檢測階段。
圖1 模型結(jié)構(gòu)
模型訓(xùn)練階段只使用正常樣本進(jìn)行參數(shù)優(yōu)化以學(xué)習(xí)正常數(shù)據(jù)的分布。首先,通過編碼器GE將經(jīng)過預(yù)處理的時序片段Xi映射到隱空間中,并輸出其低維特征Ζ。然后,解碼器GD將隱變量Ζ重構(gòu)回原始數(shù)據(jù)空間,并輸出重構(gòu)樣本最后,將重構(gòu)樣本和原始樣本Xi輸入判別器D來進(jìn)行正則化處理,對原始特征和重構(gòu)特征進(jìn)行判別。生成器G和判別器D通過交替優(yōu)化的方式來實(shí)現(xiàn)對抗博弈,最終生成可以近似表示真實(shí)數(shù)據(jù)分布的概率。異常檢測階段使用訓(xùn)練過的模型對測試樣本進(jìn)行異常檢測。測試樣本包含正常數(shù)據(jù)和異常數(shù)據(jù),其預(yù)處理方法跟訓(xùn)練階段相同。具體來說,首先將測試樣本輸入到模型中,然后使用模型輸出的異常分?jǐn)?shù),并根據(jù)預(yù)先設(shè)定的閾值判斷樣本是否異常。本文采用生成器重構(gòu)樣本與原樣本間的誤差和判別損失來共同定義異常分?jǐn)?shù)。由于模型只使用正常樣本進(jìn)行訓(xùn)練,故沒有學(xué)習(xí)到異常樣本的隱含特征和模式,因此在推理過程中,異常樣本和其重構(gòu)樣本間的誤差會非常大。當(dāng)測試樣本通過模型輸出的異常分?jǐn)?shù)超過閾值時,則可將其判斷為異常樣本,從而實(shí)現(xiàn)異常檢測。
多變量時間序列中不同時刻的數(shù)據(jù)之間具有時間相關(guān)性,而同一時刻的不同變量之間也具有空間相關(guān)性,充分利用數(shù)據(jù)間的時空相關(guān)性將更有利于提升異常檢測的準(zhǔn)確性,從而避免誤判。本文采用文獻(xiàn)[8]的多通道注意力機(jī)制,在編碼器、解碼器和判別器網(wǎng)絡(luò)中均加入一個Attention層(圖2),分別計(jì)算數(shù)據(jù)中時間和空間維度的重要性。
圖2 Attention層結(jié)構(gòu)
利用由RNN在過往時間序列中提取的特征,分別計(jì)算輸入數(shù)據(jù)時間和空間維度的重要性。時間維度的重要性權(quán)重αi可由公式(1)和公式(2)計(jì)算,有
同樣,空間維度的重要性權(quán)重βi可由公式(3)和公式(4),有
與文獻(xiàn)[7]類似,本文通過自編碼器來構(gòu)造生成器,其目標(biāo)是通過編碼和解碼的方式得到重構(gòu)樣本,即使用編碼器將輸入樣本映射到一個隱空間中,然后使用解碼器憑借隱空間以重建樣本序列。編碼器和解碼器均使用相同結(jié)構(gòu),由3個子網(wǎng)絡(luò)組成:Attention層、LSTM層和Linear層。LSTM通過一個特殊的存儲單元來學(xué)習(xí)數(shù)據(jù)的遠(yuǎn)程依賴關(guān)系,已廣泛應(yīng)用于學(xué)習(xí)時間序列的時間相關(guān)性[4]。同時,Attention層計(jì)算輸入時序片段的時間和空間維度的重要性權(quán)重,輸出對輸入進(jìn)行加權(quán)后的數(shù)據(jù);LSTM層捕捉由Attention層加權(quán)的數(shù)據(jù)特征之間的相關(guān)性和時間依賴性;Linear層對LSTM層輸出各時刻的每個特征向量進(jìn)行獨(dú)立映射。具體來說,給定時序片段Xi,編碼器GE輸出將Xi映射到隱空間變量Z∈Rw×L。Ζ是Xi的低維特征表示,L是隱變量的維度。給定隱變量Z,解碼器GD輸出,將Z映射回原始數(shù)據(jù)空間,而是Xi的重構(gòu)結(jié)果。
為了訓(xùn)練生成器,本文模型定義了3個損失函數(shù):對抗損失、判別損失和重構(gòu)損失。
生成器G需要捕捉輸入樣本的分布,生成盡可能服從真實(shí)數(shù)據(jù)分布的樣本。因此,對其優(yōu)化的目標(biāo)是希望其能夠生成盡量服從分布p(Xi)的真實(shí)樣本,使得判別器D將不再能區(qū)分樣本是來自于真實(shí)樣本分布p(Xi)還是來自于生成器G生成的樣本G(Xi)。對抗損失La的定義如
式中D(Xi)是判別器D輸出的概率,其表示輸入樣本Xi是真實(shí)樣本的概率。
在GAN中,生成器和判別器為使彼此的損失最小化而相互競爭,導(dǎo)致訓(xùn)練過程的穩(wěn)定性降低。本文采用特征匹配(Feature Matching)[11]損失,通過直接優(yōu)化訓(xùn)練數(shù)據(jù)與生成數(shù)據(jù)之間特征的平方差損失,使得GAN能夠?qū)W到更多的真實(shí)數(shù)據(jù)分布信息以實(shí)現(xiàn)模型訓(xùn)練穩(wěn)定性。判別損失Lf的定義如
式中f(Xi)是判別器D的LSTM 層輸出單元的值。
為使生成器G提供更好的序列重建能力,本文模型使用重構(gòu)損失來表示X和G(Xi)數(shù)據(jù)間的差異,定義為輸入Xi與生成器輸出的重構(gòu)樣本G(Xi)之間的L1距離。重構(gòu)損失Lr的定義如
在訓(xùn)練過程中,將以上3個損失函數(shù)加權(quán)求和,并利用加權(quán)求和后的聯(lián)合損失函數(shù)來訓(xùn)練模型。聯(lián)合損失函數(shù)LG定義如
式中α、β和γ是調(diào)節(jié)參數(shù),用于確定不同損失函數(shù)的權(quán)重。
本文利用對抗性訓(xùn)練學(xué)習(xí)給定樣本的數(shù)據(jù)分布,需要同時訓(xùn)練一個生成時間序列數(shù)據(jù)的生成器和一個學(xué)會區(qū)分生成的樣本與真實(shí)樣本的判別器。為了有效處理時間序列數(shù)據(jù),判別器D使用與編碼器類似的架構(gòu),其由4個子網(wǎng)絡(luò)組成:1個Attention層、1個LSTM層和2個Linear層。網(wǎng)絡(luò)的前三層起到與編碼器相同的作用,不同之處在于第三個Linear層輸出Rw×1向量,其特征方向被映射為1。最后的全連接層將輸入的特征向量在時間方向上映射為1,且考慮整個時間序列輸入的概率并輸出到判別器。具體來說,給定Xi或判別器D識別輸入是真實(shí)樣本還是由生成器重構(gòu)的樣本,即最大化fD(Xi)和fD(G(Xi))之間的差異,從而有效區(qū)分輸入是真實(shí)樣本或生成樣本,并給出輸入是真實(shí)樣本的概率。判別器損失函數(shù)LD定義如
為了實(shí)現(xiàn)異常檢測,本文采取文獻(xiàn)[4]的異常檢測策略,即使用生成器生成的樣本與輸入樣本的重構(gòu)損失,以及判別器的判別損失來共同判定待測樣本的異常情況。在給定待測樣本數(shù)據(jù)后,先將其輸入到已訓(xùn)練的GAN模型中并計(jì)算異常分?jǐn)?shù),若異常分?jǐn)?shù)超過指定閾值,則判定輸入樣本存在異常。對于測試樣本Xi,其異常分?jǐn)?shù)A(Xi)定義為
其中λ是權(quán)重調(diào)節(jié)參數(shù)。計(jì)算出所有測試樣本的異常分?jǐn)?shù)后,應(yīng)用公式(11)對異常分?jǐn)?shù)進(jìn)行歸一化,將異常分?jǐn)?shù)線性化為0到1的范圍。最終使用產(chǎn)生的異常分?jǐn)?shù)對測試樣本進(jìn)行評估,將得分超過閾值η的樣本判斷為異常樣本,未超過的判斷為正常樣本。
實(shí)驗(yàn)選取兩個公開數(shù)據(jù)集HAR[12](Heterogeneity Activity Recognition)和SWaT[13](Secure Water Treatment)進(jìn)行驗(yàn)證算法的性能。兩個數(shù)據(jù)集均為多維時間序列數(shù)據(jù),其中,HAR采集自可穿戴設(shè)備,SWaT采集自安全水處理仿真平臺。對兩個數(shù)據(jù)集分別進(jìn)行了歸一化,使其符合均值為0、標(biāo)準(zhǔn)差為1的高斯分布。所有數(shù)據(jù)集均被劃分成訓(xùn)練集和測試集,詳細(xì)信息如表1所示。實(shí)驗(yàn)選擇CNN-1D[14]、LSTM-VAE[15]、BeatGAN[9]和MAD-GAN[4]作為基線方法。
表1 異常檢測數(shù)據(jù)集描述
采用精確率[16](Precision)、召回率[16](Recall)和F1 分?jǐn)?shù)[14]來評估所有模型的異常檢測性能,具體計(jì)算公式如下:
式中TP表示本身是異常樣本,且被模型正確檢測為異常樣本的數(shù)量;FP表示本身是正常樣本,但被模型錯誤地檢測為異常樣本的數(shù)量;FN表示本身是異常樣本,但被模型錯誤地檢測為正常樣本的數(shù)量。精確率、召回率和F1分?jǐn)?shù)的值越高,則模型性能越好。
為了捕獲數(shù)據(jù)的相關(guān)性,本文采取文獻(xiàn)[17]的策略,通過滑動窗口機(jī)制將訓(xùn)練集與測試集的時間序列分別劃分為時序片段的集合,其中窗口長度為30,移動步長為10。將步長設(shè)為小于窗口長度是為了增加訓(xùn)練樣本數(shù)。實(shí)驗(yàn)中基線模型和本文模型的超參數(shù)配置如:CNN-1D 模型的編碼器包含3 個一維CNN 層,卷積核大小分別為k1=8,k2=6,k3=4,filter maps 分別為f1=64,f2=128,f3=256。在每個CNN層之后使用LReLU激活函數(shù)和批量歸一化計(jì)算。解碼器是編碼器的鏡像映射,是使用轉(zhuǎn)置卷積層取代卷積層。LSTM-VAE模型的編碼器和解碼器都包含兩個隱藏層單元個數(shù)為16的LSTM層,訓(xùn)練批處理(Batch Size)大小為32。BeatGAN模型的隱變量維度為10。編碼器、解碼器和判別器均由全連接層神經(jīng)網(wǎng)絡(luò)構(gòu)成,其中,編碼器的網(wǎng)絡(luò)層參數(shù)為256-128-32-10,解碼器為10-32-128-256-1530,判別器為256-128-32-1。使用Adam優(yōu)化器對模型進(jìn)行梯度更新,其學(xué)習(xí)率(Learning Rate)為0.000 1。訓(xùn)練批處理大小為64,總輪數(shù)(Epochs)為300。MAD-GAN 模型的隱變量維度為15。生成器為100 個單元。LSTM 的層數(shù)為3,單元數(shù)為5。判別器為100個單元和1層,且用LSTM構(gòu)建,全連接層為1個單元。生成器使用梯度下降優(yōu)化,學(xué)習(xí)率為0.1。判別器使用Adam優(yōu)化器,學(xué)習(xí)率為0.001。訓(xùn)練批處理大小為500,總輪數(shù)為100。本文模型的隱變量維度為32。每個中間層的單元數(shù)為128,LSTM層數(shù)為3。使用Adam優(yōu)化器,學(xué)習(xí)率為0.000 2。判別器使用Adam優(yōu)化器,學(xué)習(xí)率為0.000 2。訓(xùn)練批處理大小為100,總輪數(shù)為500。生成器損失函數(shù)的調(diào)節(jié)參數(shù)設(shè)為:α=1、β=0.1和γ=10。實(shí)驗(yàn)環(huán)境基于Windows 10操作系統(tǒng),并使用Pytorch框架來實(shí)現(xiàn)實(shí)驗(yàn)?zāi)P图八惴ā?shí)驗(yàn)平臺的硬件環(huán)境:GPU為GTX 760顯存,CPU為Intel i7 4790,內(nèi)存為16 GB,硬盤為1 TB。
在本文模型中,閾值η設(shè)置將直接影響模型檢測的準(zhǔn)確率。針對SWaT數(shù)據(jù)集,將閾值η以步長0.1進(jìn)行增量變化,通過實(shí)驗(yàn)觀察閾值選擇對所有評估指標(biāo)的影響,實(shí)驗(yàn)結(jié)果如圖3 所示??梢钥闯?,在SWaT 數(shù)據(jù)集中,精確率隨著閾值η的增加不斷上升,但F1分?jǐn)?shù)在η大于0.6之后開始呈下降趨勢,且召回率也明顯下降。
圖3 閾值η對模型性能的影響
使用四種異常檢測模型與本文模型進(jìn)行對比實(shí)驗(yàn),對所有方法都使用相同的窗口長度和移動步長選擇策略。為讓精確率和F1值都盡可能大,在每一個數(shù)據(jù)集上找到最優(yōu)F1分?jǐn)?shù)下的檢測閾值,使得其檢測結(jié)果在各評價指標(biāo)上均表現(xiàn)優(yōu)異,并報(bào)告對應(yīng)的精確率和召回率。表2對比了本文模型與各基線模型在兩個實(shí)驗(yàn)數(shù)據(jù)集上異常檢測的實(shí)驗(yàn)結(jié)果,可以看出,在實(shí)驗(yàn)條件相同的情況下,比較使用全連接層的CNN-1D和BeatGAN,以及使用LSTM層的LSTM-VAE和MAD-GAN,可以看出以對抗學(xué)習(xí)方式同時訓(xùn)練生成器和判別器的異常檢測模型明顯優(yōu)于非對抗訓(xùn)練的異常檢測模型,表明GAN在從數(shù)據(jù)集中捕獲更復(fù)雜的結(jié)構(gòu)和構(gòu)建更精細(xì)的多變量時間和空間相關(guān)性方面具有優(yōu)勢,同時也驗(yàn)證了LSTM層對時間序列數(shù)據(jù)具有更高的表示能力。與基線模型相比,本文提出的異常檢測模型在兩種數(shù)據(jù)集上的異常檢測性能均優(yōu)于其它基線模型。相較于MAD-GAN,對于HAR數(shù)據(jù)集而言,在精確率、召回率和F1分?jǐn)?shù)上分別提高了7.6%、11.8%和10.4%,對于SWaT 數(shù)據(jù)集而言,分別提高了0.8%、6.9%和5.2%。這是因?yàn)楸疚哪P筒粌H可以讓LSTM 層準(zhǔn)確捕捉多維時間序列的特征,還可以讓Attention層捕捉時序數(shù)據(jù)時間和空間維度的重要性。
表2 異常檢測的實(shí)驗(yàn)結(jié)果
本文提出了一種基于GAN的多變量時間序列無監(jiān)督異常檢測方法。該方法采用編碼器和解碼器來構(gòu)造生成器,實(shí)現(xiàn)了時間序列數(shù)據(jù)空間和網(wǎng)絡(luò)編碼隱變量空間的雙向映射,從而避免了異常檢測階段的優(yōu)化過程。此外,網(wǎng)絡(luò)所采用的注意力機(jī)制使模型能夠?qū)W⒂跁r序數(shù)據(jù)的重要特征。通過學(xué)習(xí)多變量時間序列的空間和時間關(guān)系并利用聯(lián)合優(yōu)化策略,有助于提升模型的異常檢測能力?;贖AR和SWaT數(shù)據(jù)集實(shí)驗(yàn)驗(yàn)證了本文模型的有效性,與其他類似方法相比,本文模型展示了更好的異常診斷能力。