周小暉 王意潔 徐鴻祚 劉銘宇
(并行與分布處理國家重點實驗室(國防科技大學)長沙 410073)
(國防科技大學計算機學院 長沙 410073)
隨著云計算技術的不斷發(fā)展,越來越多的用戶利用云服務開展業(yè)務,并且隨著多云時代的到來,用戶更傾向于將應用和數據放在多個云平臺上進行管理而不是鎖定在一個云平臺上.然而目前不同云平臺提供的云服務之間并不相通,無法滿足用戶對于多云服務的需求.在云服務實體發(fā)展的趨勢下,云際計算作為一種新型云服務模式,能夠對多方云資源進行深度融合并統(tǒng)一提供云服務[1].然而目前云際計算技術尚處于發(fā)展階段,多云之間的數據異常復雜,如何構建可靠的云際計算環(huán)境成為當下一個重要的研究課題.云際智能運維作為維護云際計算環(huán)境的關鍵手段,目前正處于研究發(fā)展階段,它包括了故障分析、數據預測、異常檢測等諸多研究領域.其中多維時間序列異常檢測能夠對多云交互間的復雜時序數據進行檢測并對異常數據點產生告警,是云際智能運維的重要研究領域之一.異常檢測已經在眾多領域(圖像、音頻、時間序列等)得到了廣泛的研究[2],目的是挖掘出在同一數據集下那些和其他觀測值有很大偏差的觀測實例,這種偏差可能由很多因素引起,偏差的形式也各不相同.在過去,通過領域專家對各個監(jiān)測指標進行靜態(tài)閾值設置并對那些超出閾值的數據進行異常故障報告對于一個系統(tǒng)的容錯性和健壯性至關重要[3-4].但是隨著近年來云計算的不斷發(fā)展,時序運維數據呈現出爆炸式增長,數據規(guī)模和數據復雜程度都在不斷擴張,單靠人為地異常規(guī)則定義和異常報告并不足以完全對數據進行異常檢測,而且這一過程也會耗費大量人力成本[5-7].隨著大數據分析技術和深度學習技術的不斷發(fā)展,越來越多的研究人員開始嘗試用智能異常檢測取代人工異常檢測,許多針對時間序列的異常檢測算法不斷涌現,用以幫助專家處理越來越多的監(jiān)測數據[8-9].然而由于云系統(tǒng)的復雜性,不同指標之間存在關聯性(例如CPU 溫度和CPU 的吞吐量呈正相關),簡單對每個單維度時間序列進行單維時間序列異常檢測無法捕獲不同維度之間的關聯性.因此在復雜云系統(tǒng)中,相較于簡單的單維時間序列異常檢測,運維人員更傾向于使用多維時間序列異常檢測方法對系統(tǒng)的整體狀態(tài)進行檢測[10-12].
由于在云際智能運維場景下時序運維數據存在數據規(guī)模大、流動性強等特點,并且異常發(fā)生是小概率事件,因此想要獲取帶有異常標簽的數據極其困難并且十分耗費人力以及時間.相較于需要訓練集帶有標簽的有監(jiān)督異常檢測方法以及半監(jiān)督異常檢測方法,無監(jiān)督學習更加適用于多維時間序列異常檢測的應用場景[13-14].出于異常標簽難以獲取的實際情況,本文提出的是一種無監(jiān)督的異常檢測方法.在無監(jiān)督多維時間序列異常檢測領域,大致可以將異常檢測方法分為基于重構的異常檢測方法以及基于預測的異常檢測方法.基于重構的異常檢測方法是通過從正常時序數據中學習嵌入表示,對時序數據的正常模式進行重構,重構誤差越大表明越可能存在異常.然而現有的基于重構的異常檢測方法要么是缺乏對指標度量間的關系挖掘[10,15],要么是無法學習到時序數據的有效嵌入表示,對于時間序列數據的時間依賴性建模能力差[16-17].基于預測的異常檢測方法[18-19]是根據正常時序數據的歷史數據對當前時間點的指標進行預測,當預測的指標值和實際的指標值有較大偏差時就表明該時間點存在異常.但是在復雜的實際系統(tǒng)中,有些指標數據就是固有的不可預測[10],無法通過有效的方法對這些指標進行預測,因此采用預測誤差對多維時間序列進行異常檢測可能會產生較高的誤報率.
基于以上觀察,對于多維時間序列異常檢測,本文的核心思想是對多維時間序列的數據局部特征和數據全局特征進行建模,以更好地捕獲多維時間序列的正常模式,但這一思想面臨2 個主要挑戰(zhàn):首先,獨立學習數據局部特征和數據全局特征會使得特征融合變得困難,無法達到豐富特征信息的效果;其次,現實數據存在的潛在異??赡軙е履P痛嬖谶^擬合風險.為了解決這2 個挑戰(zhàn),本文提出的基于融合學習的無監(jiān)督多維時間序列異常檢測(fusion learning based unsupervised anomaly detection for multidimensional time series,FLAD)方法通過在時域卷積網絡中引入自注意力機制,在構建多維時間序列局部關聯性的同時更加關注全局特征,并且加入信息共享機制對數據局部特征和數據全局特征進行融合學習,從而構建更加豐富的重構信息,最后通過重構誤差檢測異常.并且由于多層信息交互式網絡結構的設計,特征信息間的不斷豐富融合增強了模型的魯棒性,有助于防止?jié)撛诋惓е碌哪P瓦^擬合.
本文的主要貢獻有3 個方面:
1)提出了一種無監(jiān)督多維時間序列異常檢測框架,通過挖掘正常多維時間序列信息的不同特征關聯,實現多維時間序列的有效異常檢測.
2)提出了一種基于融合學習的無監(jiān)督多維時間序列異常檢測方法FLAD,通過引入自注意力機制構建正常多維時間序列全局關聯和局部關聯,并設計信息融合模塊獲取有效的融合特征信息,基于重構誤差實現高效多維時間序列異常檢測.
3)在多個多維時間序列真實數據集上評估了FLAD 方法.對比實驗結果表明FLAD 獲得了平均最佳F1 分數0.938 3 和平均最佳精確率0.924 0,相較于最先進的方法分別提升了0.043 和0.0277.進一步地,通過消融實驗、靈敏度實驗分析以及時間損耗分析證明了提出的多維時間序列異常檢測結構設計的合理有效性并分析了時間序列窗口大小對異常檢測性能的影響.
現有的無監(jiān)督多維時間序列異常檢測方法大致可以分為2 類:基于重構的異常檢測方法和基于預測的異常檢測方法.
基于重構的多維時間序列異常檢測方法通過基于潛在變量重構原始輸入來訓練模型,學習整個時間序列的正常表示.Malhotra 等人[10]提出了一種基于長短期記憶網絡(long short-term memory,LSTM)[20]的編碼器-解碼器框架來學習正常時間序列的表示,該模型使用輸入序列作為訓練數據,并對每個輸入時間戳進行重構,將高重構誤差的時間戳作為異常時間點.Park 等人[11]提出了一種名為LSTM-VAE 的方法,該方法將LSTM 與變分自編碼器(variational autoencoders,VAE)[21]相結合,融合信號,重構期望分布.Zhang 等人[15]注意到多維時間序列數據中存在多級時間依賴性,并且時間數據中存在的嚴重噪聲會影響基于LSTM 的異常檢測模型的泛化性能,從而提出了多尺度卷積遞歸編碼器-解碼器(multi-scale convolutional recurrent encoder-decoder,MSCRED)將一個輸入序列窗口轉換成多尺度的歸一化矩陣,然后通過卷積編碼器和卷積LSTM 捕獲多維時間序列的正常模式.該方法能夠捕獲更復雜的多模態(tài)相關性和時間信息.DAGMM[18]將自編碼器和高斯混合模型進行結合,通過一個深度自編碼器獲取輸入的低維表示和重構誤差,并通過多層的遞歸神經網絡對多維時間序列進行建模.生成對抗網絡(generative adversarial network,GAN)[22]也被用于時序異常檢測,其中具有代表性的方法是MAD-GAN[16],該方法使用基于LSTM 的GAN 模型對時間序列分布進行建模,通過同時考慮整個變量集來捕捉變量之間潛在的相互作用,用于多維時間序列異常檢測.Su 等人[17]認為確定性方法可能會被不可預測的數據樣本所誤導,提出了一種用于多維時間序列異常檢測的隨機模型OmniAnomaly,通過學習多維時間序列的魯棒表示和平面歸一化流來捕捉數據背后的正常模式,并將低重建概率的模式視為異常.
基于預測的多維時間序列異常檢測方法訓練模型時,在無異常情況下預測訓練輸入后的值,并將真實值與預測值之間的距離作為異常評分[23].這類方法背后存在的假設為給定的正常數據通過預測分析是可重構的,如果存在時間觀測點是不可預測的,那么它很可能是一個異常值[24].將時間序列回歸方法作為預測模型是一類主流的方法,經典的異常檢測方法使用求和自回歸移動平均模型(autoregressive integrated moving average model,ARIMA)的變種來對時間序列進行建模和檢測異常行為[25].Rousseeuw 和Leroy[26]提出了一種基于自回歸的異常檢測方法,假設每個單獨的時間點實例只與其過去的幾個時間點實例線性相關,通過歷史時間點數據對未來時間點數據進行建模預測,但是用線性關系對時間依賴進行建模無法捕獲復雜的時間序列關系.在自回歸方法的基礎上,Bontemps 和Cao[27]采用具有長短時記憶單元的遞歸神經網絡(LSTM-RNN)對時間序列之間的非線性時間相關性進行建模.LSTM-NDT[9]是一個基于LSTM 的深度神經網絡模型,該模型使用輸入序列作為訓練數據,對每個輸入時間戳預測下一個時間戳的數據,并提出一種非參數動態(tài)錯誤閾值(non-parametric dynamic error thresholding,NDT)策略,利用誤差序列的滑動平均值設置異常閾值.Elsayed 等人[28]重新思考深度學習模型對于時間序列預測的必要性,提出了基于窗口的梯度提升回歸樹(gradient boosting regression tree,GBRT)方法,以窗口方式處理時間序列數據并基于分段子序列構建回歸模型.然而,基于自回歸的方法不能有效捕獲易變的時間序列的正常模式,因此在復雜多維時間序列中的異常檢測效果欠佳.Bai 等人[29]提出了將卷積運算用于時間維度的時域卷積網絡(temporal convolutional network,TCN),之后Garg 等人[30]將TCN 中的卷積操作替換為轉置卷積操作,提出了基于TCN 的自編碼器對多維時間序列進行重構.Deldari 等人[31]鑒于TCN 處理時間序列的優(yōu)越性,提出了以TCN 為特征提取網絡的對比預測編碼方法用于時間序列異常檢測.Gugulothu 等人[32]通過端到端學習框架,將非時間維度縮減技術和循環(huán)自編碼器結合起來進行時間序列建模.Deng和Hooi[33]基于圖神經網絡提出了圖偏差網絡(graph deviation network,GDN)模型用以學習數據模式之間的關系圖,并通過基于注意力機制的預測和偏差評分得到異常分數.
基于重構的異常檢測方法無法同時有效學習到指標度量間表示和時間依賴性,導致對于多維時序數據的重構不夠充分,重構誤差作為異常評分的效果不顯著.基于預測的異常檢測方法,由于復雜多維時間序列的不可預測性,導致其異常檢測誤報率偏高.本文針對上述問題設計了一種基于融合學習的多維時間序列異常檢測模型,通過在時域卷積網絡中引入自注意力機制,同時捕獲數據局部特征和數據全局特征,并構建信息融合模塊對2 種特征進行信息融合,以此捕獲更加充分的時序重構信息,實現更有效的多維時間序列異常檢測.
本文所討論的多維時間序列是等時間間隔采樣多維時間變量形成的長度為T的時間戳序列,X=(x1,x2,…,xT).每一個時間觀測點xt都是在時間戳t下獲取的多維數據,xt∈Rm,?t∈{1,2,…,T}.本文主要討論的是m≥2 的多維時間序列異常檢測問題,當m=1 時,問題就退化為單維時間序列異常檢測問題.多維時間序列異常檢測用于確定一個時間觀測點xt是否為異常,給定一個時間序列X,需要給出對應的異常標簽序列Y=(y1,y2,…,yT),yt∈{0,1},?t∈{1,2,…,T}.yt=0 表示時間戳t下的時間點為正常,yt=1 表示時間戳t下的時間點為異常.
為了提升模型的收斂速度以及精度,在多維時間序列異常檢測模型訓練之前需要對多維時間數據進行歸一化處理:
其中min(X)和max(X)分別表示多維時間序列X中最小和最大的向量,ε是為了避免分母為0 而設置的一個很小的常向量.由于時間序列的時間關聯性,即不同時間點之間存在時間依賴,考慮到時間觀測點xt和歷史時間點的依賴關系,構建一個長度為N的時間窗口:
對于t<N的時間觀測點xt,由于沒有足夠的歷史時間點數據,無法構建長度為N的時間窗口.為了避免短時序窗口對模型序列正常模式重構的影響,對于t<N的時間觀測點xt,由于沒有足夠的信息判斷其異常程度,將其視為正常時間點.因此給定一個多維時間序列X,從t=N開始進行時間窗口的構建,將其轉換為一個滑動窗口序列W=(wN,wN+1,…,wT).對于模型的訓練,并不是直接將X作為模型輸入,而是將多維時間序列X轉化為W作為模型輸入.這使得模型對于時間觀測點xt的異常檢測并不是只關注xt本身,而是結合xt歷史時間依賴信息對時間點xt的異常情況進行評分.
具體來說,并不是直接對于輸入的一個wt就給出一個對應于時間觀測點xt的異常標簽yt,而是首先通過模型得到一個xt對應的異常分數st,在模型訓練階段通過時間窗口的異常分數得到一個異常閾值S,當st≥S時,相對應的異常標簽yt=1,否則yt=0.獲取異常分數的方法是模型通過時域卷積網絡以及自注意力模塊,并通過模型融合信息機制分別獲得多維時間序列的重構表示C1以及C2,利用C1以及C2和原始時間窗口w的差值獲得異常分數.
FLAD 是一個基于融合學習的無監(jiān)督多維時間序列異常檢測模型,整個模型是由多層的融合編碼器(fusion encoder)以及單 層的融 合解碼 器(fusion decoder)組成,模型整體框架如圖1 所示.具體地,首先將時間滑動窗口w作為模型的2 個相同輸入和,對于融合編碼器而言分別存在2 個輸入和2 個輸出,通過融合編碼器的時域卷積模塊以及自注意力模塊分別捕獲多維時間序列在局部性上以及全局性上的數據依賴,并采用十字繡單元[34]進行提取特征的融合豐富.多層融合編碼器的堆疊有利于學習到更深層次的潛在時間序列關聯性.假定存在L層的融合編碼器,輸入長度為N的時間序列窗口w∈RN×m,對于第l層的計算過程以及模型初始輸入可以方程形式化為:
其中Q,K,V∈RN×dmodel,分別代表自注意力計算中的查詢、鍵值以及值,是由自注意力模塊的輸入Z2和3 個線性變換矩陣WQ,WK,WV進行線性變換得到的.WQ,WK,WV∈Rdmodel×dmodel分別是Q,K,V的參數矩陣.M∈RN×N,代表自注意力矩陣.softmax函數對自注意力矩陣的每一行進行歸一化處理,使得自注意力矩陣的每一行都是一個和為1 的離散分布.TemporalBlock函數代表時域卷積操作,通過2 層的膨脹因果卷積操作獲取更大的感受野,并采用殘差塊的結構設計防止時域卷積運算過程中產生梯度消失,具有更好的泛化能力.和I2分別是時域卷積在添加自注意力矩陣信息后和自注意力模塊處理后的隱層表示.時域卷積網絡相較于傳統(tǒng)的循環(huán)神經網絡(recurrent neural network,RNN)而言,可以捕獲更長的時間序列依賴信息.但從本質上來看時域卷積網絡依舊是卷積神經網絡的變種,雖然膨脹卷積的引入可以擴大時間序列的感受野,但是相較于transformer[35]可以捕獲任意長度時間序列信息的特性,時域卷積網絡在全局時序信息的獲取上仍然還有不足.相較于時域卷積網絡更加專注于局部信息和維度間信息獲取,自注意力模塊可以學習到時間序列的遠程依賴性,但是局部信息獲取的能力較差.鑒于時域卷積網絡和自注意力模塊2 個模塊對于多維時間序列信息的捕獲各有側重,在獲取這2 個模塊處理的隱層信息后,通過添加一個信息融合模塊,使得學習到的2 個不同側重的隱層表示可以進一步融合產生更加豐富的信息表示.十字繡單元是一種多任務學習的共享表示方法[35],可以有效地將2 個模塊學習到的不同信息進行共享豐富.通過在信息融合模塊中引入十字繡單元,使得多層的信息融合模塊可以對每一層的隱層特征進行充分地學習融合.并且由于十字繡單元通過線性變換對信息進行交互,在訓練階段反向傳播時不會產生過大的時間開銷.
Fig.1 The overall architecture of fusion learning model圖1 融合學習模型整體框架
Fig.2 Fusion encoder圖2 融合編碼器
融合解碼器由2 個解碼部分分別對第L層融合編碼器最后輸出的2 個隱層特征進行解碼.第1 個解碼部分為反時域卷積層,通過采用轉置卷積替換時域卷積殘差塊中的膨脹因果卷積實現;第2 個解碼部分由單層的前饋神經網絡層以及函數sigmoid組成.
模型損失函數采用重構誤差損失,以此來最小化模型原始輸入時間序列和重構數據間的誤差,提高模型學習到多維時間序列正常模式的能力.在模型訓練階段,融合學習模型對于多維時間序列輸入w的重構表示分別是C1和C2,模型損失函數為
其中 α+β=1,α 和 β為可以設置的超參數.在模型測試階段,通過模型獲取輸入w的重構表示C1和C2,同樣通過式(13)計算異常評分,異常評分越高表明該時間點越異常.
本節(jié)在4 個現實數據集上將FLAD 方法與7 種異常檢測方法進行對比,對比結果分析驗證了FLAD方法異常檢測性能的優(yōu)越性.并進一步從消融分析、靈敏度分析以及時間損耗分析3 個角度分析論證融合學習異常檢測方法的有效性.
本實驗是基于Pytorch 框架進行模型構建的,均在Ubuntu18.04 環(huán)境下進行.實驗平臺的主要硬件參數為Intel Core i9-10920X CPU,64 GB 內 存,GPU GNVIDIA TITIAN RTX,6 GB 顯存.
本實驗使用的數據集中包括了一個云際運維數據集ASD,FLAD 方法在該數據集上的異常檢測性能大幅提升表明了該方法在云際智能運維異常檢測中的優(yōu)越性.除此以外,本文還選取了3 個傳感器數據集,在這3 個數據集上的實驗結果體現了FLAD 方法的泛化能力.下面介紹這4 個實驗數據集:
1)ASD 云際運維數據集[36].該數據集收集自某大型互聯網公司,一共包含了12 個實體,每個實體都描述了一個服務器的狀態(tài);包括了45 天的多維時間序列數據以及19 個指標用以描述服務器的狀態(tài)(包括CPU 相關指標、內存相關指標、網絡指標等).數據集的觀測結果為等間隔5min.前30 天數據作為訓練集,后15 天數據用于測試集.測試集中的異常已經由系統(tǒng)操作員根據事件報告和領域知識進行標記,數據集中的異常大致可分為時間異常、度間異常和度間時間異常3 種類型.
2)MSL 數據集[9].該數據集是由NASA 的火星探測漫游者本身的傳感器和執(zhí)行器數據組合而成,包含27 個多維時間序列數據,每個多維時間序列數據由55 個維度的傳感器信息組成,數據集中的異??煞譃辄c異常和上下文異常.
3)SMAP 數據集[9].該數據集和MSL 數據集相似,是由NASA 的火星探測漫游者使用的土壤樣本和遙感信息組成的數據集.數據集包含55 個多維時間序列數據,每個多維時間序列數據由25 個維度的傳感器信息組成,數據集中的異??煞譃辄c異常和上下文異常.
4)MIT-BIH 心電圖數據集[37].該數據集包含了位于波士頓的貝斯以色列醫(yī)院的48 個患者的心電圖記錄.該數據集通過隨機異常分數[38]進行了篩選,留下了命名為113,123,202,203,209,210,220 的記錄.
實驗所用到的這4 個數據集統(tǒng)計如表1 所示.
Table 1 Dataset Statistics表1 數據集統(tǒng)計信息
本文使用精確率(precision,P)、召回率(recall,R)、F1 分數、平均精確率(average precision,AP)以及AUC(area under curve)共5 個指標來評估模型性能.
TP表示正確檢測為異常的異常,FP表示錯誤檢測為異常的正常,TN表示正確識別為正常的正常,FN表示錯誤識別為正常的異常.AP和AUC分別通過計算PR(precision-recall)曲線下的面積和ROC(receiver operating characteristic)曲線下的面積得到.
計算AP的PR 曲線如圖3 所示,表示的是精確率P和召回率R的關系,橫坐標為召回率R,反映了異常檢測器對實際異常的覆蓋能力,縱坐標為精確率P,反映了異常檢測器檢測異常的準確程度.依次改變置信度為0~100%,得到多組召回率和精確率組成的坐標,將坐標相連得到PR 曲線.
Fig.3 PR curve graph圖3 PR 曲線圖
計算AUC的ROC 曲線如圖4 所示,表示的是假陽性率(false positive rate,FPR)和真陽性率(召回率)的關系,橫坐標為假陽性率,縱坐標為真陽性率(召回率).依次改變置信度為0~100%,得到多組假陽性率和真陽性率組成的坐標,將坐標相連得到ROC 曲線.FPR表示檢測為異常但實際為正常的實例在所有正常實例中的比例,計算公式為:
Fig.4 ROC curve graph圖4 ROC 曲線圖
本實驗為每一個觀測時間點計算一個異常分數,異常分數越大說明該觀測時間點越異常.在實際的應用場景中,異常點一般都是連續(xù)出現,形成一個連續(xù)的異常段.因此只要求模型在異常段內檢測出異常點,而并不要求模型將異常段內的所有點都檢測為異常是合理的.所以實驗采用了一種點調整策略[39]來提高異常檢測器的性能,該策略已經在很多工作上[3,8,18,36]被證明是有效的.具體來說,如果一個真實異常時間段內的任意一個觀測時間點被檢測為異常,就認定該異常時間段檢測正確,而對于真實異常時間段以外的檢測仍按照常規(guī)處理.本文實驗采用點調整策略進行指標的計算.
本文將所提FLAD 方法與2 種經典的多維時間序列異常檢測方法以及5 種目前最先進的深度多維時間序列異常檢測方法進行對比,驗證FLAD 方法的有效性.
1)iForest[40].孤立森 林(isolation forest,iForest)是一個基于集合的高效異常檢測方法,該方法將分布稀疏且遠離高密度群體的點作為異常點.iForest 隨機選取一個超平面切割數據空間,每一次切割都會生成2 個子空間,將這個操作一直循環(huán)下去直到每一個子空間都只有一個數據點.相較于稀疏分布遠離密集點的數據集合,那些高密度群體需要經過更多次的子空間切割才會停止.通過不斷反復地從頭隨機切割,平均切割結果對于切割次數小于閾值的數據集合檢測為異常.iForest 具有線性時間復雜度,適合大規(guī)模數據的異常檢測,但是由于每次切割都是隨機選擇1 個維度,導致隨機森林構建完依舊存在大量的維度信息沒有利用的情況,這使得該方法不適用于高維度的時間序列異常檢測.
2)COPOD[41].COPOD 是一種基于copula 的異常檢測方法,copula 是一種概率統(tǒng)計函數,可以構建多維度間的相關性,對多個指標間的依賴關系進行建模.COPOD 從偏離均值的尾端概率判斷異常的思想出發(fā),通過經驗累積分布估計所有維度聯合分布的尾端概率.該異常檢測方法檢測速度快,對于維度異常具有一定的可解釋性,然而經驗累積分布構建過于簡單,對于時間依賴的建模效果欠佳.
3)DAGMM[18].DAGMM 是一個基于自編碼器和高斯混合模型的深度無監(jiān)督學習模型,通過一個深度自編碼器獲取輸入的低維表示和重構誤差,并通過多層的遞歸神經網絡對多維時間序列進行建模.之后通過重構誤差和高斯混合函數似然函數對模型進行優(yōu)化,2 種網絡的解耦訓練讓整個模型更加具有魯棒性.然而,這樣的循環(huán)優(yōu)化導致模型訓練速度慢,并且對于度量間的依賴關系捕獲有所欠缺.
4)TCN AE[30].TCN AE 是一個基于TCN 的自編碼器.TCN 通過引入膨脹因果卷積,能夠跨時間步對時間序列進行特征提取,相較于LSTM 傳統(tǒng)的時間序列建模更有優(yōu)勢.通過將原始TCN 作為編碼器,然后對TCN的殘差塊進行堆疊,并將TCN 殘差塊中的膨脹因果卷積替換為轉置膨脹因果卷積,構建解碼器,基于重構誤差檢測異常.該模型擅長提取數據局部特征以及度量間的特征,由于卷積操作導致感受野受限,對于全局數據關聯性的捕獲不足.
5)LSTM AE[10].LSTM AE 是一個基于LSTM 的自編碼器.LSTM 是一種特殊的RNN,相較于RNN,LSTM 能夠處理更長的序列數據.由于LSTM 的設計適合處理時序數據,LSTM AE 能夠學習到豐富的時間依賴,基于重構誤差對多維時間序列進行異常評分.但是同樣由于LSTM 結構設計的缺陷,在同一時間只能對單個時間數據進行處理,導致模型訓練速度慢,計算成本高.
6)OmniAnomaly[17].OmniAnomaly 是一種隨機遞歸神經網絡,利用隨機變量連接、平面歸一化流等關鍵技術,通過學習多元時間序列的魯棒表示來獲取其正常模式,通過特征表示來重構輸入數據,并利用重構概率來確定異常.該方法創(chuàng)新地將門控循環(huán)單元(gated recurrent unit,GRU)和VAE[21]進行結合,模型同時考慮了多維時間序列的時間依賴性和隨機性.
7)GDN[33].GDN 是一種基于圖神經網絡的多維時間序列異常檢測方法,它學習數據模式之間的關系圖,并通過基于注意力機制的預測和偏差評分得到異常分數.通過圖神經網絡對維度間依賴關系圖進行構建,能夠有效學習到維度間依賴,并且對于維度間的偏差異常有較好的可解釋性,是一個優(yōu)異的多維時間序列異常檢測深度模型.
在本實驗中,FLAD 方法包含了3 層編碼層和單層的解碼層,每一個隱層通道數都是64,滑動時間窗口大小設置為100,關于時間窗口大小對于模型異常檢測性能的影響將在3.7 節(jié)進行詳細的分析.在模型訓練階段,設置樣本批量訓練大小為128,采用早停策略在100 個迭代輪次內訓練,采用初始學習率為0.000 15 的ADAM 優(yōu)化器對模型進行優(yōu)化.將優(yōu)化函數 式(12)中的共 享參數 α11,α12,α21,α22分別設置為0.8,0.2,0.2,0.8.將式(13)中目標函數的分配權重 α和β分別設為0.5 和0.5.實驗中,應用了數據集的原始劃分得到訓練集和測試集,挑選訓練集中的25%作為實驗驗證集,將訓練集剩余部分作為實驗訓練集.為了進一步確保實驗的可信性以及穩(wěn)定性,本實驗對每個數據集都進行5 次重復實驗,最終實驗結果取5 次重復實驗結果的平均值.
7 種多維時間序列異常檢測方法在4 個多維時間序列數據集上的對比實驗結果如表2 所示.對FLAD 在4 個數據集上的4 個F1 分數以及AP取平均,其平均F1 分數為0.9383,平均AP為0.9254,優(yōu)于征更加豐富的FLAD 方法能夠檢測出絕大部分ASD數據集上的異常,在各個性能指標上都超出對比算法很多,證明在復雜云際運維異常數據集上,FLAD方法具備捕獲到更加豐富特征的能力.相較于ASD數據集的復雜異常,MSL 和SMAP 數據集的異常分布以及異常形式較為簡單,大部分異常檢測方法都能夠取得較好的F1 分數.FLAD 在MSL 和SMAP 兩個數據集上的F1 分數相較于對比算法中的最優(yōu)F1分數分別提高了0.0208 和0.0119,證明在短時間序列數據上FLAD 依舊可以有效融合局部數據信息和全局數據信息,對于細微的異常檢測更加敏感.在MITBIH 數據集上,對于這種有明顯周期性的FLAD 和GDN 都表現出了優(yōu)越的異常檢測性能,FLAD 在F1分數上略高于GDN 的F1 分數.綜上,本文提出的FLAD能夠更加有效學習多維時間序列的時間依賴和維度間依賴,在數據局部性上和數據全局性能夠構建更加豐富的特征表示,彌補了之前的多維時間序列異常檢測方法無法同時捕獲多層次信息依賴的缺陷.所有對比算法.在MSL 數據集上,COPOD 方法有最高的召回率(1.000 0);在SMAP 數據集上,GDN 方法有最高的召回率(1.000 0);在MIT-BIH 數據集上,GDN 方法有最高的精確率(0.873 5)以及最高的AP值(0.8499).除此以外,FLAD 在4 個數據集上的其余性能指標都優(yōu)于目前最流行的多維時間序列異常檢測方法,證明FLAD 的融合學習方法幫助模型學習到了更好的時間依賴和度量間依賴以及數據局部和數據全局特征.具體來說,FLAD 在ASD 數據集上的F1 分數相較于對比算法中的最優(yōu)F1 分數提高了0.0882.iForest,COPOD,DAGMM,TCN AE,LSTM AE主要對時間依賴進行建模,對局部數據時間依賴更加敏感.OmniAnomaly 更加關注度量間異常,GDN 通過圖神經網絡對度量間的依賴有很好的構建,但是OmniAnomaly 和GDN 兩種方法對于時間上的依賴關系關注度都不夠.而ASD 數據集是一個復雜云際運維數據集,異常類型包括時間異常、度量間異常以及度間時間異常.因此通過信息融合機制構建信息特
Table 2 Anomaly Detection Comparison Results表2 異常檢測對比結果
為了進一步驗證本文設計的各個模塊機制的合理性和有效性,本節(jié)在全部實驗數據集上進行FLAD模型的消融實驗.4 種模型結構分別為:據局部上更加豐富有效的特征.引入了自注意力機制的FLAD w/o CU 模型相較于普通并行學習的FLAD w/o ALL 模型,在全部實驗數據集的平均F1 分數上提高了0.0077,證明自注意力機制的引入有助于模型更加關注全局信息,但是缺乏信息融合模塊導致模型無法充分學習全局信息,導致模型的提升效果一般.本文原始的FLAD 模型相較于只保留了信息融合模塊的FLAD w/o SA 模型在所有實驗數據集的平均F1 分數以及平均AP上分別提升了0.0156 和0.0098;相較于只保留了自注意力機制的FLAD w/o CU 模型在所有實驗數據集的平均F1 分數以及平均AP上分別提升了0.1105 和0.1107;相較于FLAD w/o ALL 模型在所有實驗數據集的平均F1 分數以及平均AP上分別提升了0.1182 和0.1267.消融實驗結果分析證明,融合學習模塊和自注意力機制的結合使得模型能夠同時捕獲多維時間序列在局部性和全局性上的信息依賴,從而表現出更好的異常檢測性能.
1)FLAD 模型.本文提出的原始模型,使用采用自注意力機制并添加信息融合模塊的編碼部分.
2)FLAD w/o(without)SA 模型.在FLAD 原始模型中的編碼部分去除了自注意力機制,依舊保留了信息融合模塊.
3)FLAD w/o(without)CU 模 型.在FLAD 原始模型中的編碼部分去除了信息融合模塊,依舊保留了自注意力機制.
4)FLAD w/o(without)ALL 模型.在FLAD 原始模型中的編碼部分同時去除了信息融合模塊以及自注意力機制,此時FLAD 模型退化為2 個并行運算的子模型,特征之間沒有任何的信息融合.
以上4 種模型在全部實驗數據集上的P、R、F1 分數、AP以及AUC這5 個性能指標上的實驗結果如表3 所示.加入了信息融合模塊的FLAD w/o SA 模型相較于普通并行學習的FLAD w/o ALL 模型,在所有實驗數據集的平均F1 分數上提高了0.1026,證明信息融合模塊的引入有助于模型學習到數據全局和數
Table 3 Ablation Study表3 消融實驗
考慮到時間序列窗口大小對FLAD 模型以及3個消融模型的異常檢測性能可能產生的影響,本文還在F1 分數、AP以及AUC三個性能指標上進行了靈敏度分析,實驗結果如圖5 所示.各個模型的異常檢測性能一開始隨著窗口的增大而提升,這是因為當時間序列窗口過小時,輸入時間序列無法很好表征局部的上下文信息.但是當時間序列窗口過大時,細微的局部異常更加容易隱藏在大量的正常時間點之中,反而使得異常檢測效果下降.當時間序列窗口大小為100 時FLAD 模型在各個性能指標上都表現最優(yōu)異,因此在本實驗中采用大小為100 的時間序列窗口.
Fig.5 Variation of F1,AP and AUC with window size圖5 F1,AP 以及AUC 隨窗口大小的變化
Fig.6 Graph of time loss圖6 時間損耗圖
為了進一步探究FLAD 在智能運維場景中的可用性,本文對FLAD 和對比方法中的主流深度學習方法在ASD 數據集下單輪訓練測試的訓練時間和推理時間進行了評估,實驗結果如圖6 所示.從單輪訓練時間損耗來看,本文提出的FLAD 高于GDN 以及TCN AE,低于LSTM AE.從智能運維實際應用的場景出發(fā),例如在線實時異常檢測,推理時間的損耗更加影響異常檢測方法實際的應用.在單輪推理時間損耗上,FLAD 低 于GDN 以 及LSTM AE,略高于TCN AE.時間損耗實驗表明相較于之前的主流深度學習方法,FLAD 在異常檢測性能上有大幅提升的同時,并沒有因為網絡結構的復雜化而導致時間損耗過大.而這也得益于信息融合模塊采用線性變換的方式對數據進行交互,在訓練推理過程中并沒有引入復雜的數據運算.由此可見,本文提出的FLAD 方法具有很強的可用性.
多維時間序列的異常檢測是云際智能運維的重要任務.本文提出了一種基于融合學習的無監(jiān)督多維時間序列異常檢測方法FLAD,該方法使用模型設計的時域卷積模塊和自注意力模塊對多維時間序列的數據局部依賴性和數據全局依賴性同時進行建模,并通過十字繡單元的信息共享機制對特征信息進行融合.FLAD 在4 個多維時間序列數據集上的異常檢測性能優(yōu)于目前最先進的異常檢測方法,證明了本文多層融合自編碼器結構、自注意力機制以及信息融合模塊的設計在學習豐富的正常數據信息從而利用重構誤差進行多維時間序列異常檢測的有效性.
在未來的工作中,我們打算進一步調整信息融合模塊的網絡結構,考慮多維時間序列在更多特征空間中的關聯性,通過將更多層次的特征信息進行融合以達到更好的多維時間序列異常檢測效果.
作者貢獻聲明:周小暉提出主要研究思路,完成實驗并撰寫論文;王意潔提出實驗方案和指導意見,修改和審核論文;徐鴻祚協(xié)助完成部分實驗,提出論文修改思路;劉銘宇指導論文寫作,參與論文修訂.