汪子璇,關(guān)東海,湯麗君,袁偉偉,燕雪峰
(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院/人工智能學(xué)院,南京 211106)
隨著信息時(shí)代的發(fā)展,各個(gè)領(lǐng)域的數(shù)據(jù)以時(shí)間序列的形式被采集,時(shí)序數(shù)據(jù)呈爆炸式增長(zhǎng),但是其中存在的異常數(shù)據(jù)可能發(fā)展為嚴(yán)重故障,所以對(duì)時(shí)序數(shù)據(jù)進(jìn)行異常檢測(cè)至關(guān)重要.如果能夠提前檢測(cè)出時(shí)間序列的異常,以便工作人員及時(shí)采取措施并解決潛在問(wèn)題,避免嚴(yán)重事態(tài)發(fā)生,減小損失.
根據(jù)實(shí)際應(yīng)用情況,異常數(shù)據(jù)很難收集和判定.目前同于時(shí)間序列異常檢測(cè)的方法主要包括隨機(jī)森林傳統(tǒng)的最近,深度學(xué)習(xí)展現(xiàn)出了強(qiáng)大的表示能力,已有的研究通常從有監(jiān)督、無(wú)監(jiān)督的角度出發(fā),使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)[1]、長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)[2]、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[3],深度神經(jīng)網(wǎng)絡(luò)DNN[4]等基本的神經(jīng)網(wǎng)絡(luò)在時(shí)間序列上進(jìn)行建模,實(shí)驗(yàn)取得了不錯(cuò)的結(jié)果.但綜合檢測(cè)指標(biāo)F1效果不佳.分析原因有以下幾點(diǎn):首先,樣本固有的不均衡性,異常樣本的占比非常低,不足以支撐模型訓(xùn)練學(xué)習(xí)異常數(shù)據(jù)分布,使得模型極易陷入過(guò)擬合,降低其泛化能力;其次,有監(jiān)督的方法過(guò)分依賴(lài)標(biāo)簽數(shù)據(jù),數(shù)據(jù)標(biāo)注是個(gè)問(wèn)題,人工標(biāo)注耗時(shí)耗力,無(wú)監(jiān)督的方法大多通過(guò)線(xiàn)性投影和變換建立的,不能處理時(shí)間序列隱藏的內(nèi)在相關(guān)性中的非線(xiàn)性;最后,它們進(jìn)行異常檢測(cè)的判定方法通常均需要設(shè)定閾值,然而最佳閾值的選定較為困難,不能使模型達(dá)到最優(yōu)狀態(tài).
近些年,自編碼器框架被提出,通過(guò)減小樣本重構(gòu)誤差和潛在向量間的距離來(lái)構(gòu)建深度學(xué)習(xí)模型,同時(shí)受文獻(xiàn)[5]中生成性對(duì)抗網(wǎng)絡(luò)(GAN)思想的啟發(fā),為了解決上述的問(wèn)題,基于半監(jiān)督的思想,使用長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)設(shè)計(jì)一種競(jìng)爭(zhēng)機(jī)制的自動(dòng)編碼器,避免了設(shè)定閾值的問(wèn)題,實(shí)現(xiàn)了時(shí)間序列的異常檢測(cè),該模型被稱(chēng)為L(zhǎng)SNC-AE(based on LSTM Semi-supervised method with Non-threshold Competive AutoEncoder,后續(xù)簡(jiǎn)稱(chēng)LSNC-AE模型).相較于已有的研究,該模型無(wú)需使用帶標(biāo)記的異常樣本進(jìn)行訓(xùn)練就可以得到較高的召回率Recall、準(zhǔn)確率Precision和均衡分?jǐn)?shù)F1.
論文有4個(gè)主要貢獻(xiàn):
1)在時(shí)間序列異常檢測(cè)中引入半監(jiān)督機(jī)器學(xué)習(xí)方法,同時(shí)利用標(biāo)簽數(shù)據(jù)和無(wú)標(biāo)簽數(shù)據(jù),學(xué)習(xí)過(guò)程無(wú)需人工干擾,也避免了數(shù)據(jù)集不均衡和模型泛化的問(wèn)題.
2)提出一種新的自編碼器結(jié)構(gòu),該編碼器有一個(gè)編碼器和兩個(gè)解碼器,兩個(gè)解碼器采用競(jìng)爭(zhēng)機(jī)制對(duì)未標(biāo)記數(shù)據(jù)進(jìn)行訓(xùn)練,通過(guò)比較損失值大小判定是否異常,該過(guò)程無(wú)需設(shè)定閾值.
3)在數(shù)據(jù)處理中引入了滑動(dòng)窗口的方法來(lái)豐富數(shù)據(jù)集,解決了異常樣本少的問(wèn)題.
4)針對(duì)上述提出的模型和方法,設(shè)計(jì)了多組對(duì)比實(shí)驗(yàn),文中提出的模型都表現(xiàn)出了比傳統(tǒng)方法更優(yōu)異的性能.
時(shí)間序列的異常檢測(cè)(Anomaly detection)是從序列中識(shí)別不正常的點(diǎn)或片段,典型的時(shí)間序列檢測(cè)示意圖如圖1所示.另外,有效的異常檢測(cè)廣泛地被應(yīng)用在多個(gè)領(lǐng)域,例如網(wǎng)絡(luò)安全檢測(cè)、天氣分析、大型工業(yè)設(shè)備維護(hù)等等,傳統(tǒng)的方法有基于規(guī)則處理[6],通過(guò)判斷行為是否和異常規(guī)則相似,但是它受限于專(zhuān)家知識(shí),規(guī)則庫(kù)可能不完善;基于統(tǒng)計(jì)學(xué)的方法[7]需要假設(shè)數(shù)據(jù)服從某種分布,然后利用數(shù)據(jù)進(jìn)行參數(shù)估計(jì),但對(duì)假設(shè)依賴(lài)比較嚴(yán)重.
圖1 含有異常點(diǎn)的時(shí)間序列示意圖Fig.1 Time series containing outliers
目前,對(duì)于時(shí)間序列的異常檢測(cè)在深度學(xué)習(xí)領(lǐng)域開(kāi)展了廣泛的工作,歸納如表1所示.從模型的結(jié)構(gòu)設(shè)計(jì)上,基于生成性對(duì)抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)的方法是近些年研究的熱點(diǎn)內(nèi)容,文獻(xiàn)[8]為捕獲數(shù)據(jù)中的時(shí)間相關(guān)性,將原始多元時(shí)間序列輸入轉(zhuǎn)換成具有圖像結(jié)構(gòu)的多通道相關(guān)矩陣,并設(shè)計(jì)帶有Attention機(jī)制的GAN網(wǎng)絡(luò)來(lái)建立時(shí)間依賴(lài)關(guān)系;文獻(xiàn)[9]中以L(fǎng)STM-RNN為基礎(chǔ)構(gòu)造GAN模型,在多個(gè)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),雖然能達(dá)到較高的召回率(Recall,R),但F1最高只有77%,有較高的誤報(bào)率.其次,就“三個(gè)臭皮匠頂個(gè)諸葛亮”的集成思想,文獻(xiàn)[10]首先提出獨(dú)立集成框架,包含多個(gè)具有不同網(wǎng)絡(luò)結(jié)構(gòu)的自編碼器,為進(jìn)一步實(shí)現(xiàn)所有的自動(dòng)編碼器都重建相同的原始時(shí)間序列,緊接著提出共享框架,讓不同的自編碼在訓(xùn)練階段能夠交互;再者,文獻(xiàn)[11]中先通過(guò)從未標(biāo)記數(shù)據(jù)中找出可靠的正常數(shù)據(jù)和潛在的異常數(shù)據(jù),再運(yùn)用三元組損失,使同類(lèi)樣本之間的距離盡可能縮小,不同類(lèi)樣本之間的距離盡可能放大從而實(shí)現(xiàn)檢測(cè);與此同時(shí),遷移學(xué)習(xí)和主動(dòng)學(xué)習(xí)相結(jié)合,文獻(xiàn)[12]中為實(shí)現(xiàn)跨時(shí)序數(shù)據(jù)集的異常檢測(cè),通過(guò)在現(xiàn)有的標(biāo)記數(shù)據(jù)集(源數(shù)據(jù)集)上訓(xùn)練一個(gè)異常檢測(cè)模型來(lái)檢測(cè)新的未標(biāo)記數(shù)據(jù)集(目標(biāo)數(shù)據(jù)集)中的異常,但是最需要注意的是遷移學(xué)習(xí)要求源域和目標(biāo)域有潛在的相似性,而不同數(shù)據(jù)集很難有較高的相似性.
表1 模型對(duì)比表Table 1 Modle compare
從異常檢測(cè)方法上,首先,通過(guò)設(shè)定閾值來(lái)實(shí)現(xiàn),如文獻(xiàn)[13]基于損失函數(shù)定義的異常分?jǐn)?shù),通過(guò)最優(yōu)化準(zhǔn)則來(lái)獲得閾值;文獻(xiàn)[14]對(duì)誤差做加權(quán)平均的平滑處理,并自定義公式根據(jù)平滑后的數(shù)據(jù)計(jì)算閾值;也有通過(guò)取重構(gòu)誤差的中值作為離群點(diǎn)的閾值;文獻(xiàn)[15]比較重構(gòu)誤差與通過(guò)分析發(fā)現(xiàn),在閾值的選擇和設(shè)定上很難找到最優(yōu)值,其次,通過(guò)自定義評(píng)判機(jī)制,將GAN網(wǎng)絡(luò)的鑒別和重構(gòu)誤差經(jīng)過(guò)公式結(jié)合作為異常標(biāo)準(zhǔn),最后,通過(guò)分類(lèi)的方式來(lái)實(shí)現(xiàn),將未標(biāo)記數(shù)據(jù)傳進(jìn)訓(xùn)練好的k個(gè)獨(dú)立模型當(dāng)中,并計(jì)算未標(biāo)記數(shù)據(jù)的不確定度并降序排列,從而正?;虍惓5母怕识M(jìn)行分類(lèi);文獻(xiàn)[16]將測(cè)試數(shù)據(jù)傳進(jìn)訓(xùn)練好的模型后,再通過(guò)softmax函數(shù),進(jìn)行分類(lèi)得到檢測(cè)結(jié)果.以上都需要對(duì)數(shù)據(jù)進(jìn)行較為復(fù)雜的迭代選擇,所以本文想要選擇無(wú)閾值且判定簡(jiǎn)單的方式來(lái)作為檢測(cè)準(zhǔn)則.
自編碼器網(wǎng)絡(luò)因?yàn)槠涮赜泄δ埽跁r(shí)序數(shù)據(jù)的異常檢測(cè)方面取得了一定的成果.文獻(xiàn)[17]提出了一個(gè)孤立點(diǎn)檢測(cè)框架,該框架包含了多個(gè)基于LSTM神經(jīng)網(wǎng)絡(luò)的自編碼器;文獻(xiàn)[18]構(gòu)造了具有“編碼-解碼-編碼”特殊結(jié)構(gòu)的自編碼器;文獻(xiàn)[19]提出卷積神經(jīng)網(wǎng)絡(luò)和遞歸自動(dòng)編碼器相結(jié)合的異常檢測(cè)模型,利用卷積層和池化層提取流量窗口的空間特征,這些方法在檢測(cè)效果上表現(xiàn)出較好的性能,但需要對(duì)數(shù)據(jù)進(jìn)行專(zhuān)業(yè)的特征選擇和特征構(gòu)建等復(fù)雜的預(yù)處理的過(guò)程.通過(guò)“編碼器—解碼器”的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)輸入數(shù)據(jù)壓縮再還原的方式,訓(xùn)練時(shí)盡量減小重構(gòu)樣本與原始樣本的重構(gòu)誤差,使模型學(xué)習(xí)原始樣本的分布,而在測(cè)試階段若重構(gòu)誤差大于設(shè)定的閾值則視為異常.
綜上相關(guān)研究工作,本文模型使用長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)設(shè)計(jì)了一種競(jìng)爭(zhēng)機(jī)制的自動(dòng)編碼器模型,將其應(yīng)用于時(shí)間序列數(shù)據(jù)的異常檢測(cè).
本章將對(duì)設(shè)計(jì)模型所涉及到的相關(guān)技術(shù)進(jìn)行介紹.其中,3.1節(jié)給出LSTM網(wǎng)絡(luò)的相關(guān)概念和網(wǎng)絡(luò)結(jié)構(gòu)介紹;3.2節(jié)對(duì)自編碼器的構(gòu)造功能等進(jìn)行介紹;3.3對(duì)本章進(jìn)行總結(jié).
LSTM(Long Short Term Memory)網(wǎng)絡(luò)是改進(jìn)的RNN神經(jīng)網(wǎng)絡(luò),為解決梯度消失和爆炸問(wèn)題而應(yīng)運(yùn)而生的,同時(shí)能夠更好地解決長(zhǎng)期依賴(lài)的問(wèn)題.本文的研究對(duì)象是時(shí)間序列數(shù)據(jù),時(shí)間點(diǎn)之間的關(guān)系非常重要,所以利用LSTM(Long Short Term Memory)網(wǎng)絡(luò)可捕捉長(zhǎng)距離時(shí)序數(shù)據(jù)之間關(guān)系的特點(diǎn),將其作為模型的基本網(wǎng)絡(luò)結(jié)構(gòu).
根據(jù)圖2可知,通過(guò)幾個(gè)門(mén)進(jìn)行控制,可完成一個(gè)神經(jīng)元的內(nèi)部處理,對(duì)過(guò)去長(zhǎng)期數(shù)據(jù)形成記憶.
圖2 LSTM模型的一個(gè)神經(jīng)元結(jié)構(gòu)Fig.2 LSTM model of a neuronal structure
LSTM網(wǎng)絡(luò)雖然較RNN網(wǎng)絡(luò)在性能上有一定的提升,但是在異常檢測(cè)的過(guò)程中,異常數(shù)據(jù)的發(fā)現(xiàn)需要其他輔助,因此本文在使用LSTM網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上引用自編碼器進(jìn)一步實(shí)現(xiàn)時(shí)間序列的異常檢測(cè).
為了進(jìn)一步提取時(shí)間序列數(shù)據(jù)的特征,在這里采用自編碼網(wǎng)絡(luò),可通過(guò)重構(gòu)后的時(shí)間序列與原始時(shí)間序列的誤差來(lái)判斷異常點(diǎn).以為神經(jīng)網(wǎng)絡(luò)要接受大量的輸入信息,輸入信息量可能達(dá)到上千萬(wàn),讓神經(jīng)網(wǎng)絡(luò)直接從上千萬(wàn)個(gè)信息源中學(xué)習(xí)是一件很吃力的工作.所以,將數(shù)據(jù)進(jìn)行壓縮,提取數(shù)據(jù)中最具有代表性的信息,縮減了輸入的信息量,再將縮減的中間數(shù)據(jù)放到神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)就能減小網(wǎng)絡(luò)的負(fù)擔(dān),加快學(xué)習(xí)速度.
自編碼器的結(jié)構(gòu)是由編碼器和解碼器構(gòu)成,主要包括編碼層、隱含層、輸出層.輸入的數(shù)據(jù)經(jīng)過(guò)編碼轉(zhuǎn)換為中間變量,接著又通過(guò)另外一個(gè)神經(jīng)網(wǎng)絡(luò)去解碼得到與輸入數(shù)據(jù)一樣的生成數(shù)據(jù),通過(guò)比較兩個(gè)數(shù)據(jù),通過(guò)最小化兩者的重誤差,進(jìn)而訓(xùn)練網(wǎng)絡(luò)的參數(shù),在該模型中,我們使用的就是3.1節(jié)提到的LSTM網(wǎng)絡(luò).
本章節(jié)主要對(duì)文章使用的兩個(gè)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行介紹,同時(shí),鑒于LSTM網(wǎng)絡(luò)可捕獲長(zhǎng)期數(shù)據(jù)的特征以及傳統(tǒng)檢測(cè)方法需提前設(shè)定閾值的局限,本文基于LSTM及自編碼器網(wǎng)絡(luò)設(shè)計(jì)一種無(wú)閾值的半監(jiān)督競(jìng)爭(zhēng)學(xué)習(xí)模型,具有一個(gè)編碼器,兩個(gè)解碼器的構(gòu)造,在第4章節(jié)會(huì)重點(diǎn)介紹異常檢測(cè)模型.
本章將對(duì)所涉及的模型進(jìn)行詳細(xì)的介紹.其中,4.1節(jié)給出一些基本定義,4.2節(jié)對(duì)數(shù)據(jù)處理進(jìn)行了詳細(xì)的描述,4.3節(jié)具體的介紹了模型結(jié)構(gòu),4.4是本章小結(jié).
異常樣本的定義:設(shè)在一個(gè)時(shí)間點(diǎn)t,該模型將在t時(shí)刻之前長(zhǎng)度為T(mén)w的數(shù)據(jù)(包含t時(shí)刻數(shù)據(jù)值)作為一個(gè)被檢測(cè)的樣本,如果在Tw的時(shí)間段中檢測(cè)出異常點(diǎn),則定義該樣本是異常樣本(正樣本),否則就是正常樣本(負(fù)樣本)
數(shù)據(jù)集描述:設(shè)有一個(gè)時(shí)序數(shù)據(jù)集D,其表示如下:
D={(X1,Y1),(X2,Y2),…,(XN,YN)}
(1)
含有N個(gè)樣本,Xi∈RTw表示一個(gè)時(shí)序數(shù)據(jù)的樣本,Tw表示樣本的長(zhǎng)度,Yi∈{(0,1)}是數(shù)據(jù)集D每個(gè)樣本的標(biāo)簽,Yi=1代表該樣本為正樣本,Yi=0代表該樣本為負(fù)樣本.這個(gè)大的數(shù)據(jù)集被訓(xùn)練和測(cè)試階段分成以下幾個(gè)小數(shù)據(jù)集,訓(xùn)練階段有兩個(gè)類(lèi)型的時(shí)序數(shù)據(jù)集:正常數(shù)據(jù)的訓(xùn)練集Dn,以及含有正常和異常數(shù)據(jù)的未標(biāo)記數(shù)據(jù)集Du,表示如下:
(2)
(3)
對(duì)于本文所提出的模型,數(shù)據(jù)處理是至關(guān)重要的一部分,數(shù)據(jù)處理分為3大部分,劃分?jǐn)?shù)據(jù)集、數(shù)據(jù)歸一化處理、滑動(dòng)窗口處理.
4.2.1 劃分?jǐn)?shù)據(jù)集
因?yàn)槟P捅旧淼奶攸c(diǎn),根據(jù)3.1節(jié)的數(shù)據(jù)集描述可知需要對(duì)數(shù)據(jù)集進(jìn)行多次處理,首先是數(shù)據(jù)集的劃分,需要將數(shù)據(jù)集D劃分成3個(gè)小的數(shù)據(jù)集,用于訓(xùn)練的兩個(gè)數(shù)據(jù)集Dn1、Du1,同時(shí)要使兩者大小的關(guān)系滿(mǎn)足‖Dn1‖=‖Du1‖,還有用于測(cè)試用的Dt1.
4.2.2 歸一化處理
由于雅虎數(shù)據(jù)集的特點(diǎn),收集到的每條數(shù)據(jù)的值分布區(qū)間大有不同,為了能夠在它們之間能夠更加公平地比較,同時(shí)更準(zhǔn)確分析異常樣本的分布特點(diǎn),需要對(duì)數(shù)據(jù)進(jìn)行歸一化處理,將所有的數(shù)據(jù)值控制在[0,1]范圍內(nèi),對(duì)于每條數(shù)據(jù)的每個(gè)點(diǎn)進(jìn)行如下的歸一化處理:
(4)
其中,x是某條序列中正在被歸一化處理的點(diǎn)的原始值,xmax,xmin分別是該條序列中最大和最小的值,x′是原始值x被歸一化后的值.并更新數(shù)據(jù)集得到兩個(gè)訓(xùn)練集Dn2、Du2和一個(gè)測(cè)試集Dt2.
4.2.3 滑動(dòng)窗口處理
由于異常數(shù)據(jù)的珍貴性,在訓(xùn)練過(guò)程中,會(huì)出現(xiàn)適合做訓(xùn)練集的數(shù)據(jù)太少,不足以支撐運(yùn)轉(zhuǎn)構(gòu)造模型,針對(duì)這一問(wèn)題,同時(shí)為了有效地從時(shí)序數(shù)據(jù)中學(xué)習(xí),使用滑動(dòng)窗口的方法對(duì)其進(jìn)行處理來(lái)豐富數(shù)據(jù)集,具體處理方式見(jiàn)圖3.
圖3 滑動(dòng)窗口用于富集化Fig.3 Sliding windows are used to enrich data sets
采用了窗口大小Tw和步長(zhǎng)Ts的滑動(dòng)窗口,將較長(zhǎng)的時(shí)間序列X分成一組子序列:
X={Xi,i=1,2,3,…,m}
(5)
(6)
本模型使用不同的Tw和Ts來(lái)捕獲時(shí)序的不同狀態(tài),最終選擇最佳Tw、Ts,在這里Tw={50×i,i=1,2,3,…,10},Ts={j,j=1,2,3,…,10}.經(jīng)過(guò)滑動(dòng)窗口處理后,得到最終的訓(xùn)練集Dn、Du和測(cè)試集Dt.
本章節(jié)將詳細(xì)介紹無(wú)閾值競(jìng)爭(zhēng)學(xué)習(xí)自編碼器,4.3.1節(jié)首先介紹了LSNC-AE的體系結(jié)構(gòu),4.3.2節(jié)引入目標(biāo)函數(shù),4.3.3節(jié)展示了如何優(yōu)化該模型,4.3.4是本章小結(jié).
4.3.1 模型結(jié)構(gòu)
提出的模型如圖4所示.主要由3個(gè)模塊組成:編碼器網(wǎng)絡(luò)Enc,正常數(shù)據(jù)解碼器網(wǎng)絡(luò)Dec1,異常數(shù)據(jù)解碼器網(wǎng)絡(luò)Dec2.其中,編碼器使用長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)提取時(shí)序樣本的特征,并且使用了Relu激活函數(shù)優(yōu)化中間層輸出的分布,從而來(lái)提高訓(xùn)練速率,兩個(gè)解碼器有相同的網(wǎng)絡(luò)結(jié)構(gòu)并且與編碼器呈對(duì)稱(chēng),但是獨(dú)立訓(xùn)練各網(wǎng)絡(luò)的參數(shù).
圖4 LSNC-AE模型結(jié)構(gòu)圖Fig.4 LSNC-AE model architecture
(7)
(8)
(9)
4.3.2 目標(biāo)函數(shù)及模型訓(xùn)練
訓(xùn)練過(guò)程目的是為得到一個(gè)編碼器兩個(gè)解碼器的相關(guān)參數(shù),最小化重構(gòu)樣本與原始樣本之間的重構(gòu)誤差來(lái)反向傳播更新網(wǎng)絡(luò)的參數(shù),使每個(gè)模塊達(dá)到性能最佳狀態(tài).訓(xùn)練過(guò)程中總的損失函數(shù)定義如下:
(10)
(11)
(12)
(13)
傳進(jìn)Dec2重構(gòu)后得到的損失函數(shù)Loss2定義如下:
(14)
(15)
在這里,為了能夠更大程度的區(qū)分正常樣本和異常樣本的分布,這幾個(gè)損失值均采用均方值作為重建誤差,它對(duì)異常更加敏感.
(16)
4.3.3 模型優(yōu)化
在確定目標(biāo)函數(shù)和訓(xùn)練過(guò)程之后,最重要是選擇對(duì)模型的優(yōu)化,其中,該模型采用了幾種不同的優(yōu)化器進(jìn)行比較,最后采用了Adam優(yōu)化器通過(guò)反向傳播進(jìn)行參數(shù)的優(yōu)化.具體優(yōu)化方式圖5所示.
優(yōu)化算法輸入:正常樣本Xn,未標(biāo)記樣本Xu,編碼器參數(shù)θE,正常解碼器的參數(shù)θDn,異常解碼器θDu初始化相關(guān)參數(shù)repeat選擇未標(biāo)記數(shù)據(jù)集Du和正常數(shù)據(jù)樣本集Dn,并且是使得這兩個(gè)用于訓(xùn)練的數(shù)據(jù)集大小|Du|=|Dn|/?前向傳播?/for 在正常數(shù)據(jù)集|Dn|中的每一個(gè)xni,do Loss0=‖xni - Dec1(Enc(xni))‖22/?由Dec1得到的重構(gòu)?/for 在未標(biāo)記數(shù)據(jù)集|Du|中的每一個(gè)xuj,do Loss1=‖xuj - Dec1(Enc(xuj))‖22/?由Dec1得到的重構(gòu)?/ Loss2=‖xuj - Dec2(Enc(xuj))‖22/?由Dec2得到的重構(gòu)?/ if Loss1 < Loss2 then: 將這個(gè)未標(biāo)記數(shù)據(jù)xuj分配給正常編碼器Dec1 else: 將這個(gè)未標(biāo)記數(shù)據(jù)xuj分配給異常編碼器Dec2end for使用Adam反向傳播優(yōu)化模型參數(shù)Loss0優(yōu)化參數(shù)θE,θDn,Loss2優(yōu)化參數(shù)θDuuntil 收斂
4.3.4 模型測(cè)試
測(cè)試階段,采用和訓(xùn)練階段雷同的方式,將所有的未標(biāo)記樣本分別傳進(jìn)訓(xùn)練好的正常解碼器Dec1和異常解碼器Dec2中,通過(guò)判斷損失值的大小來(lái)判定數(shù)據(jù)是否異常,此過(guò)程只需比較大小,無(wú)需定義閾值.
本章將對(duì)上述所設(shè)計(jì)的模型展開(kāi)詳細(xì)的實(shí)驗(yàn)分析.其中,5.1節(jié)介紹了使用的實(shí)驗(yàn)數(shù)據(jù)集,5.2節(jié)介紹了實(shí)驗(yàn)評(píng)判標(biāo)準(zhǔn),5.3節(jié)是具體的對(duì)比試驗(yàn).
本文使用的數(shù)據(jù)集是Yahoo Webscope S5數(shù)據(jù)集是一個(gè)用于時(shí)序異常檢測(cè)的公開(kāi)數(shù)據(jù)集,選取其中的A1Benchmark類(lèi)、A2Benchmark類(lèi)(后面簡(jiǎn)稱(chēng)A1、A2)以及KPI數(shù)據(jù)集來(lái)驗(yàn)證所涉及的模型.A1數(shù)據(jù)集是從實(shí)際網(wǎng)絡(luò)服務(wù)流量的測(cè)量值收集而來(lái),異常值是在前期是通過(guò)手動(dòng)標(biāo)記的,A2數(shù)據(jù)集是在A(yíng)1的基礎(chǔ)上進(jìn)行模擬合成的,所以?xún)蓚€(gè)數(shù)據(jù)集具有一定的通性,由于A(yíng)2數(shù)據(jù)集里面的異常值過(guò)少,無(wú)法訓(xùn)練該模型,但因?yàn)锳1和A2的通性,采用A1數(shù)據(jù)集訓(xùn)練好的模型來(lái)直接測(cè)試A2數(shù)據(jù)集即可.A1Benchmark有67個(gè)文件,共有94866個(gè)網(wǎng)絡(luò)流量值,但是只有1699個(gè)異常點(diǎn),考慮到本文設(shè)計(jì)的模型的特殊性,Dec2是從未標(biāo)記數(shù)據(jù)中判別很大可能是異常數(shù)據(jù)的樣本進(jìn)行訓(xùn)練,所以在前期的數(shù)據(jù)處理過(guò)程中,對(duì)未標(biāo)記樣本數(shù)據(jù)集做了篩選,按照每個(gè)文件異常值個(gè)數(shù)不低于40個(gè)來(lái)進(jìn)行篩選作為未標(biāo)記訓(xùn)練集Du的組成,使得后期在模型訓(xùn)練的時(shí)候模型具有一定的穩(wěn)健性,由表2所示的幾個(gè)文件組成.
表2 未標(biāo)記訓(xùn)練集Du異常值分布Table 2 Outlier distribution of unlabeled training set Du
為了進(jìn)一步驗(yàn)證本模型的普適性,又選擇了KPI數(shù)據(jù)集來(lái)證實(shí).KPI由AIOPS數(shù)據(jù)競(jìng)賽發(fā)布,它是從各種互聯(lián)網(wǎng)公司收集的異常標(biāo)簽,包括搜狗、騰訊、易趣等.
模型的新穎性要求正常樣本訓(xùn)練集Dn與未標(biāo)記樣本訓(xùn)練集Du集合大小相等,在確定好Du以后來(lái)確定Dn,由于A(yíng)1Benchmark有大量的正常數(shù)據(jù),所以Dn能夠很快得出,同時(shí)由于異常點(diǎn)的缺少,緊接著對(duì)在相關(guān)數(shù)據(jù)集進(jìn)行的上文4.2節(jié)的數(shù)據(jù)處理.KPI數(shù)據(jù)集數(shù)據(jù)量大且異常點(diǎn)多,在數(shù)據(jù)集的劃分比較好處理,同樣也需要進(jìn)行歸一化等數(shù)據(jù)處理,這幾個(gè)數(shù)據(jù)集在訓(xùn)練集和測(cè)試集的劃分,如表3所示.
表3 數(shù)據(jù)集劃分Table 3 Dataset partition
實(shí)驗(yàn)使用Python3.7作為編程語(yǔ)言,使用Tensorflow1.14版本作為神經(jīng)網(wǎng)絡(luò)框架,窗口大小設(shè)置為T(mén)w=400,并采用了小批量訓(xùn)練的方式,同時(shí)用Adam優(yōu)化器對(duì)模型進(jìn)行優(yōu)化,訓(xùn)練輪數(shù)根據(jù)比較實(shí)驗(yàn)結(jié)果,Yahoo訓(xùn)練時(shí)epoch=125,KPI訓(xùn)練時(shí)epoch=100.
本實(shí)驗(yàn)使用準(zhǔn)確率(Accuracy,Acc),精確度(Precision,Pre),召回率(Recall),均衡分?jǐn)?shù)(F1-Score,F(xiàn)1)作為異常檢測(cè)指標(biāo).
其中,Acc表示所有樣本中,所有判定結(jié)果與真實(shí)結(jié)果相匹配的占比,表示如下:
(17)
Pre表示在預(yù)測(cè)為異常的結(jié)果當(dāng)中,有多少是真的異常樣本,表示如下:
(18)
Recall表示在所有的異常樣本中有多少被真的檢測(cè)出來(lái)了,表示如下:
(19)
由于異常點(diǎn)分布的不均勻且稀少,會(huì)出現(xiàn)精確度和召回率在某些情況下可能是矛盾的,因此引入一個(gè)綜合評(píng)價(jià)指標(biāo)
F1分?jǐn)?shù)(F1-score),又稱(chēng)為平衡F分?jǐn)?shù),是精確率(Pre)和召回率(Recall)的調(diào)和平均數(shù),能夠更加公平地去評(píng)價(jià)實(shí)驗(yàn)結(jié)果,所以本文在以上兩個(gè)指標(biāo)的基礎(chǔ)上,更著重于觀(guān)察F1的實(shí)驗(yàn)結(jié)果,它的表示方式如下:
(20)
其中,TP(TruePositive)表示的是正樣本被判定為正樣本數(shù);TN(TrueNegative)表示負(fù)樣本被判定為負(fù)樣本數(shù),F(xiàn)P(FalsePositive)表示的是正樣本被判定為負(fù)樣本數(shù);FN(FalseNegative)表示的是負(fù)樣本被判定為正樣本數(shù).
針對(duì)本文目的是實(shí)驗(yàn)異常檢測(cè),異常往往會(huì)帶來(lái)嚴(yán)重的損失,所以在時(shí)間序列的異常檢測(cè)中更關(guān)注異常樣本的召回率(Recall,R)和綜合評(píng)價(jià)指標(biāo)F1分?jǐn)?shù)(F1-score),同時(shí)為了更全面的評(píng)價(jià)模型的性能,將準(zhǔn)確率(Accuracy,Acc)和精確度(Precision,Pre)作為輔助標(biāo)準(zhǔn).
在本文設(shè)計(jì)的異常檢測(cè)模型中,為突出模型創(chuàng)新點(diǎn)的意義,如滑動(dòng)窗口的有效性,無(wú)閾值設(shè)定的模型檢測(cè)的性能等,在本小節(jié)設(shè)計(jì)多組實(shí)驗(yàn)比對(duì)進(jìn)行驗(yàn)證.
在LSNC-AE檢測(cè)模型中,使用了滑動(dòng)窗口是一大亮點(diǎn),在豐富數(shù)據(jù)集的同時(shí)能夠幫助LSTM網(wǎng)絡(luò)捕獲時(shí)間依賴(lài)性,實(shí)驗(yàn)設(shè)計(jì)是否使用滑動(dòng)窗口的實(shí)驗(yàn)來(lái)評(píng)估滑動(dòng)窗口對(duì)時(shí)序異常檢測(cè)的效果.
圖6所示是不同指標(biāo)在3個(gè)數(shù)據(jù)集上的測(cè)試分?jǐn)?shù),通過(guò)實(shí)驗(yàn)柱狀圖,我們不難發(fā)現(xiàn),絕大多數(shù)情況啊下,有滑窗的模型性能強(qiáng)于無(wú)滑窗的模型性能,下面進(jìn)行具體分析:對(duì)于Yahoo的A1Benchmark、A2Benchmark兩個(gè)數(shù)據(jù)集,使用滑動(dòng)窗口后的3個(gè)指標(biāo)分?jǐn)?shù)均高于無(wú)窗口模型,能夠體現(xiàn)帶有滑窗的模型的檢測(cè)異常的性能得到較大幅度提高;但對(duì)于KPI數(shù)據(jù)集上,雖有滑窗的召回率Reccall和F1高于無(wú)滑窗的,但無(wú)滑窗的精確度高于有滑窗的精確度,這是因?yàn)閮蓚€(gè)數(shù)據(jù)集的特點(diǎn)引起的,KPI的異常點(diǎn)均以較長(zhǎng)的異常片段分布,比較集中,能夠直接比較好的找到異常值的特征,所以在無(wú)滑窗的情況下也能較好的訓(xùn)練模型,但Yahoo的異常點(diǎn)分布較為零散且異常片段段,滑動(dòng)窗口在豐富數(shù)據(jù)集的同時(shí)能夠幫助LSTM捕獲時(shí)間依賴(lài)性.
圖6 有無(wú)滑動(dòng)窗口對(duì)比實(shí)驗(yàn)Fig.6 Whether there is a sliding window contrast experiment
接下來(lái),為了進(jìn)一步驗(yàn)證獲得滑窗合適的大小,由于時(shí)間序列的特點(diǎn),不宜長(zhǎng)度太短,這樣自編碼器在編碼壓縮的過(guò)程中無(wú)法提取得到時(shí)間序列的重要特征,從而分析效果較差;同時(shí)也不能太長(zhǎng),經(jīng)分析,滑動(dòng)窗口的大小Tw控制在500范圍內(nèi)即可,以100為間隔進(jìn)行實(shí)驗(yàn)比對(duì).
經(jīng)圖7的實(shí)驗(yàn)結(jié)果表明,滑動(dòng)窗口Tw=400時(shí),該模型的各項(xiàng)性能指標(biāo)能夠獲得較好的檢測(cè)效果.
圖7 最佳窗口大小對(duì)比實(shí)驗(yàn)Fig.7 Optimal window size comparison experiment
同時(shí),該模型最大的創(chuàng)新在于使用兩個(gè)解碼器,相較于傳統(tǒng)的異常檢測(cè)方式,該模型避免了閾值的設(shè)定過(guò)程.最佳閾值的設(shè)定一直是大多數(shù)檢測(cè)實(shí)驗(yàn)的問(wèn)題,通常想要找到一個(gè)最佳閾值需要花費(fèi)大量的時(shí)間成本和人力成本,而本文使用兩個(gè)解碼器競(jìng)爭(zhēng)的方式進(jìn)行檢測(cè),通過(guò)兩個(gè)解碼器解碼出的結(jié)果進(jìn)行比較而判定是否異常.為了突出這種新穎的自編碼器的優(yōu)勢(shì),將其與兩種傳統(tǒng)的自編碼器進(jìn)行比較,它們均只有一個(gè)編碼器和一個(gè)解碼器,使用標(biāo)記的正常數(shù)據(jù)訓(xùn)練的自編碼器模型稱(chēng)之為Normal_AE,使用未標(biāo)記數(shù)據(jù)訓(xùn)練的自編碼器稱(chēng)之為Unlabel_AE,將其與新型自編碼器LSNC-AE進(jìn)行實(shí)驗(yàn)比對(duì),具體結(jié)果如表4所示.
表4 基于LSTM不同自編碼器對(duì)比實(shí)驗(yàn)Table 4 Comparative experiment of different autoencoders based on LSTM
經(jīng)實(shí)驗(yàn)對(duì)比分析可知,該模型同傳統(tǒng)的自編碼器模型相比,具有更好的檢測(cè)性能,對(duì)于3個(gè)數(shù)據(jù)集,LSNC-AE模型均能取得更高的召回率Recall和F1均衡分?jǐn)?shù),所以該模型基于傳統(tǒng)的自編碼器能夠取得更優(yōu)異的檢測(cè)性能.
同時(shí),為了進(jìn)一步證明該模型的的有效性,依舊使用這3個(gè)數(shù)據(jù)集進(jìn)行驗(yàn)證,將其與以下幾個(gè)典型的異常檢測(cè)方法進(jìn)行了比較,比較的算法是孤立森林IForest算法(Isolation Forest)、局部異常因子LOF算法(Local Outlier Factor,LOF)、單類(lèi)支持向量機(jī)(One Class SVM),實(shí)驗(yàn)結(jié)果如表5所示.
表5 LSNC-AE與其他3種典型算法的比較Table 5 Comparison of LSNC-AE and other three typical algorithms
從表5中的數(shù)據(jù)可以看出來(lái),IForest和One Class SVM算法在這3個(gè)數(shù)據(jù)集上的表現(xiàn)都較差,主要是由于這兩個(gè)算法受樣本不均衡的影響,LOF是一種基于密度的離群點(diǎn)檢測(cè)方法,能夠較好地分離正常與異常,但是該方法對(duì)數(shù)據(jù)的處理速度較慢,而論文提出來(lái)的LSNC-AE總是有表現(xiàn)更好的性能.
本文提出一種無(wú)閾值的半監(jiān)督競(jìng)爭(zhēng)學(xué)習(xí)模型用于時(shí)間序列的異常檢測(cè).該模型(LSNC-AE)使用長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)設(shè)計(jì)了一種競(jìng)爭(zhēng)機(jī)制的新型自動(dòng)編碼器.該模型使用LSTM作為最基本的網(wǎng)絡(luò),可學(xué)習(xí)長(zhǎng)期的時(shí)間依賴(lài)關(guān)系,同時(shí),該模型在自編碼器的基礎(chǔ)上進(jìn)行創(chuàng)新,可以很好的利用標(biāo)記數(shù)據(jù)和未標(biāo)記數(shù)據(jù).總之,與傳統(tǒng)的有監(jiān)督和無(wú)監(jiān)督的方法比,所涉及的模型在訓(xùn)練的時(shí)候能夠充分利用大量的已標(biāo)記的正常數(shù)據(jù)和含有異常樣本的無(wú)標(biāo)記數(shù)據(jù),同時(shí)檢測(cè)通過(guò)競(jìng)爭(zhēng)的方式進(jìn)行,不需要陷入最佳閾值選擇的困境.通過(guò)在KPI、Yahoo的多個(gè)數(shù)據(jù)集上與傳統(tǒng)方法及結(jié)構(gòu)類(lèi)似的方法做對(duì)比試驗(yàn),驗(yàn)證了該模型的性能,進(jìn)一步證明該模型具有較好的檢測(cè)效果.