陳述團(tuán)
(諸城市交通運(yùn)輸局,山東濰坊 262200)
時(shí)間序列異常檢測(cè)廣泛應(yīng)用于各類(lèi)設(shè)備的不同場(chǎng)景中,包括但不限于異常交通流量檢測(cè)、工業(yè)設(shè)備狀態(tài)監(jiān)測(cè)、金融欺詐檢測(cè)、異常流量檢測(cè)、各類(lèi)故障診斷以及汽車(chē)的日常監(jiān)測(cè)和維護(hù),隨著多元高頻傳感器的快速發(fā)展,不同的應(yīng)用系統(tǒng)在運(yùn)行過(guò)程中能夠收集大規(guī)模的時(shí)間序列數(shù)據(jù)[1],因此,有效發(fā)現(xiàn)系統(tǒng)中的異常模式對(duì)于確保安全性并避免經(jīng)濟(jì)損失至關(guān)重要。
然而,從大量且復(fù)雜的多元時(shí)間序列數(shù)據(jù)中發(fā)現(xiàn)異常具有一定挑戰(zhàn)性。首先,需要確定異常的模式。異常也稱(chēng)為離群值,這意味著根據(jù)情況觀察到的異常模式可能是不尋常、不規(guī)則、不一致或有缺陷的。此外,典型情況通常很復(fù)雜,難以定義什么是不尋?;蛞馔狻@?,風(fēng)力渦輪機(jī)在不同天氣情況下以不同的模式運(yùn)行,不同的運(yùn)行模式并不一定代表其發(fā)生了某種異常。不僅如此,隨著多元高頻傳感器的全天候運(yùn)行,海量監(jiān)測(cè)數(shù)據(jù)中的異常模式通常是罕見(jiàn)的,這大大增加了標(biāo)注異常標(biāo)簽的成本。
現(xiàn)有基于時(shí)間序列的異常檢測(cè)方法主要集中于統(tǒng)計(jì)方法、傳統(tǒng)機(jī)器學(xué)習(xí)方法和基于深度學(xué)習(xí)的方法[2],其中機(jī)器學(xué)習(xí)方法,特別是基于深度學(xué)習(xí)的方法,因其強(qiáng)大的數(shù)據(jù)建模能力而取得了巨大成功。然而,大多數(shù)監(jiān)督和半監(jiān)督方法無(wú)法處理有限的標(biāo)記數(shù)據(jù),特別是動(dòng)態(tài)異常,即訓(xùn)練數(shù)據(jù)集中從未觀察到的新異常。因此,本文提出一種基于變分自編碼器的無(wú)監(jiān)督時(shí)序異常檢測(cè)算法,該算法采用重建的思想來(lái)學(xué)習(xí)模型并重建出正常樣本,當(dāng)已訓(xùn)練好的模型無(wú)法重建某實(shí)例時(shí),該實(shí)例則被視為異常。
AE(Auto-Encoder,自動(dòng)編碼器)是一種基于無(wú)監(jiān)督的數(shù)據(jù)維度壓縮和數(shù)據(jù)特征表達(dá)方法,在大部分應(yīng)用場(chǎng)景中其網(wǎng)絡(luò)結(jié)構(gòu)是通過(guò)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的。網(wǎng)絡(luò)模型由編碼器和解碼器網(wǎng)絡(luò)組成,編碼器網(wǎng)絡(luò)學(xué)習(xí)輸入的潛在表示并對(duì)輸入數(shù)據(jù)進(jìn)行特征壓縮。解碼器的輸出目標(biāo)為重建編碼器的輸入,通過(guò)輸入和重建之間的差異來(lái)確定重建誤差。自動(dòng)編碼器有多種類(lèi)型,但基本上遵循相同的構(gòu)建模式,即在訓(xùn)練過(guò)程中自動(dòng)編碼器將重建誤差最小化為目標(biāo)函數(shù)。
AE 通常用于數(shù)據(jù)生成,作為生成式模型,其解碼器可以基于人工分配的壓縮表示來(lái)生成輸出。
VAE(Variational Auto-Encoders,變分自動(dòng)編碼器)是基于貝葉斯推斷的自動(dòng)編碼器變體,其結(jié)構(gòu)如圖1 所示,其中Decoder 為解碼器部分、Encoder 為編碼器部分。
圖1 變分自動(dòng)編碼器結(jié)構(gòu)
它能夠?qū)(z)的底層分布進(jìn)行建模,并通過(guò)引入一組潛在的變量z 來(lái)生成新數(shù)據(jù)。這個(gè)過(guò)程可以表達(dá)為:
由于z 是連續(xù)域,導(dǎo)致積分難以求解。相反,可以將單個(gè)點(diǎn)的邊際對(duì)數(shù)似然表示為:
其中,DKL是先驗(yàn)pθ(z)與p(x|z)的變分近似qφ(z|x)的KL 散度;Lvae是根據(jù)Jensen 不等式得到的變分下界,φ與θ分別表示編碼器與解碼器的參數(shù)。
VAE 通過(guò)最大化對(duì)數(shù)似然的下界Lvae來(lái)優(yōu)化參數(shù)φ與θ:
其中,第一項(xiàng)通過(guò)最小化近似后驗(yàn)與潛在變量先驗(yàn)之間的KL 散度來(lái)規(guī)范潛在變量z;第二項(xiàng)是通過(guò)最大化對(duì)數(shù)似然來(lái)重建x。
Transformer 的提出給自然語(yǔ)言處理領(lǐng)域帶來(lái)革命性進(jìn)展,引領(lǐng)了一系列語(yǔ)言模型的發(fā)展,其中核心部分為多頭自注意力機(jī)制,這使得模型在建模長(zhǎng)序列時(shí)表現(xiàn)出非凡的效果。自注意力機(jī)制作為T(mén)ransformer 中的核心構(gòu)建模塊,能通過(guò)一定的方式建模計(jì)算序列中不同位點(diǎn)之間的關(guān)聯(lián)度,從而并行的得到序列位點(diǎn)之間的關(guān)聯(lián)關(guān)系,在準(zhǔn)確率與計(jì)算效率方面明顯優(yōu)于RNN與LSTM 等模型計(jì)算方式。
對(duì)于流經(jīng)模型的序列數(shù)據(jù),其輸入進(jìn)行自注意力計(jì)算前的數(shù)據(jù)可以表示為X,通過(guò)3 個(gè)線(xiàn)性嵌入可以生成3 個(gè)權(quán)重矩陣,這3 個(gè)權(quán)重矩陣都是可學(xué)習(xí)的,表示為Wq、Wk、Wv,由輸入序列通過(guò)這3 個(gè)權(quán)重矩陣可以得到查詢(xún)向量q、鍵向量k、值向量v 所對(duì)應(yīng)的矩陣Q、K、V,表示為:
通過(guò)Q 矩陣與K 矩陣相乘并流經(jīng)softmax 處理后,可以得到序列間的相似度得分,最終通過(guò)與V 矩陣進(jìn)行加權(quán)得到最終的注意力輸出。整個(gè)過(guò)程可以表示為:
其中dk是k 矩陣的維度。為了從多尺度學(xué)習(xí)到不同潛在空間中更加豐富的特征,在自注意力機(jī)制的基礎(chǔ)上又引入了多頭自注意力的計(jì)算方式,即在p 個(gè)頭上進(jìn)行并行化計(jì)算,對(duì)于輸入需要使用p 個(gè)q、k、v 矩陣對(duì)其進(jìn)行映射,最終輸出的MSA(Multi-head Self-Attention,多頭自注意力)是學(xué)習(xí)每個(gè)頭的權(quán)重并應(yīng)用并行點(diǎn)積注意力后得到的結(jié)果。
根據(jù)上述算法理論,使用自動(dòng)編碼器結(jié)構(gòu)能夠訓(xùn)練得到一個(gè)學(xué)習(xí)了正常序列模式的算法模型,該模型在對(duì)異常序列進(jìn)行重建時(shí)會(huì)表現(xiàn)出較大的重建損失,而變分自編碼器在自動(dòng)編碼器的基礎(chǔ)上能夠?qū)π蛄羞M(jìn)行更好的建模,因此可以作為異常檢測(cè)算法的基礎(chǔ)模型。
依托于注意力機(jī)制對(duì)序列的建模能力,本文提出了一種注意力變分自動(dòng)編碼器的時(shí)間序列異常檢測(cè)模型,在使用卷積神經(jīng)網(wǎng)絡(luò)提取較長(zhǎng)序列特征后,采用注意力機(jī)制在低維度進(jìn)行全序列的關(guān)聯(lián)度建模。通過(guò)這種模式能夠較好地捕捉序列之間的依存關(guān)系,能提高整個(gè)變分自動(dòng)編碼器特征提取與重建的性能。
本文采用10 層CNN(Convolutional Neural Networks,卷積神經(jīng)網(wǎng)絡(luò))與4 層注意力機(jī)制層來(lái)構(gòu)建網(wǎng)絡(luò)模型,其中編碼器與解碼器各對(duì)應(yīng)7 層(圖2)。注意力變分自編碼器模型的輸入層接受經(jīng)過(guò)預(yù)處理后的時(shí)間序列數(shù)據(jù),其可接受的數(shù)據(jù)量占5000 個(gè)位點(diǎn),輸入模型前轉(zhuǎn)換為1*1*5000*batch size(批量大?。┑膹埩扛袷?,批量大小表示一次性傳播到網(wǎng)絡(luò)中的樣本數(shù),兩次注意力層能一次性建模的位點(diǎn)數(shù)分別為832、276,稀疏表示(或瓶頸層)的設(shè)計(jì)大小為1*90*27,卷積層采用一維(1D)卷積,并配合有批處理歸一化和激活層,激活層采用tanh 激活函數(shù)用于在模型訓(xùn)練中引入非線(xiàn)性,模型的解碼器部分(Decoder)是編碼器(Encoder)的逆對(duì)稱(chēng),其中模型的卷積層采用(3,3)、(5,5)、(7,7)和(9,9)四種不同大小的濾波器進(jìn)行上采樣和下采樣。環(huán)境中進(jìn)行訓(xùn)練,訓(xùn)練過(guò)程包括3 個(gè)階段:第一階段,將輸入信號(hào)(1*1*5000*batch size)被轉(zhuǎn)發(fā)到模型中進(jìn)行重建,其中批量大小為100;第二階段,涉及基于均方誤差(MSE)和Kullback-Leibler(KL)散度損失找到輸入和輸出之間的差異;第三階段及最后階段涉及網(wǎng)絡(luò)模型的優(yōu)化,通過(guò)反向傳播來(lái)傳遞損失并改變網(wǎng)絡(luò)的權(quán)重以減少損失的大小。該模型使用Adam 優(yōu)化器進(jìn)行訓(xùn)練,dropout 設(shè)為0.5,每個(gè)epoch 的學(xué)習(xí)率為0.001。
圖2 基于注意力變分自編碼器的網(wǎng)絡(luò)模型
使用變分自動(dòng)編碼器進(jìn)行時(shí)間序列的異常檢測(cè),主要分為3 步驟。
(1)第一步是構(gòu)建好網(wǎng)絡(luò)模型。該網(wǎng)絡(luò)模型是基于本文提出的、基于注意力變分自動(dòng)編碼器的時(shí)序異常檢測(cè)算法。
(2)第二步是將訓(xùn)練集的數(shù)據(jù)按照原數(shù)據(jù)量的80%、20%進(jìn)行劃分。其中,占比為80%的數(shù)據(jù)集單純用于模型訓(xùn)練,這部分?jǐn)?shù)據(jù)被輸送到網(wǎng)絡(luò)模型中進(jìn)行訓(xùn)練來(lái)確保網(wǎng)絡(luò)模型隨著迭代次數(shù)的增加而優(yōu)化,隨著模型的訓(xùn)練,重建損失也相應(yīng)的減小;占比為20%的數(shù)據(jù)用來(lái)評(píng)估已訓(xùn)練后的模型來(lái)確定異常閾值,在模型訓(xùn)練之后,將來(lái)自隔離的正常狀態(tài)的20%數(shù)據(jù)輸入模型,并計(jì)算重建損失從而確定異常數(shù)據(jù)閾值。閾值是根據(jù)計(jì)算的重建損失分布計(jì)算的,它是平均值和3 個(gè)標(biāo)準(zhǔn)偏差的總和,表示為:
(3)第三步則是進(jìn)行模型的測(cè)試。這一步是將帶有標(biāo)簽的數(shù)據(jù)傳遞給模型并比較重建損失,重建損失低于計(jì)算閾值的信號(hào)被標(biāo)記為正常狀態(tài),否則為異常狀態(tài),從而計(jì)算模型檢測(cè)異常的準(zhǔn)確率。
簡(jiǎn)單來(lái)說(shuō),該方法背后的原理是模型學(xué)習(xí)了它經(jīng)過(guò)訓(xùn)練和熟悉的數(shù)據(jù)的分布,并且無(wú)法重建任何其他不熟悉的分布。基于變分自編碼器的異常檢測(cè)算法流程流程如圖3 所示。
圖3 基于變分自編碼器的異常檢測(cè)算法流程
本實(shí)驗(yàn)采用一套服務(wù)器監(jiān)測(cè)數(shù)據(jù)集,它是一個(gè)記錄了服務(wù)器5 周監(jiān)測(cè)時(shí)長(zhǎng)的數(shù)據(jù)集。該數(shù)據(jù)集包含3組實(shí)體,自28 臺(tái)不同機(jī)器的數(shù)據(jù)組成,并提供標(biāo)簽來(lái)表明某個(gè)點(diǎn)是否異常以及每個(gè)異常的維度。整個(gè)數(shù)據(jù)集的異常率占比4.1%,其中訓(xùn)練集的時(shí)序步長(zhǎng)為708 400 個(gè)時(shí)間步,測(cè)試集的步長(zhǎng)為708 420 個(gè)時(shí)間步。
本實(shí)驗(yàn)的硬件條件為,CPU 為AMD EPYC 7302 CPU@2 GHz、GPU 為NVIDIA GeForce RTX 3090 GPU、64G RAM,實(shí)現(xiàn)的模型基于Pytorch、CUDA 11.2、Python 3.8 環(huán)境完成。對(duì)于異常檢測(cè)的評(píng)價(jià)指標(biāo)設(shè)定為精確率(Precision)、召回率(Recall)和F1 值(F1-score),計(jì)算方式可以表示為:
其中,TP 表示真正例、FP 表示假正例、FN 表示假反例,F(xiàn)1 是綜合考慮了精確率和召回率,調(diào)和二者的平均值。
在本實(shí)驗(yàn)的數(shù)據(jù)集上,將基于注意力變分自編碼器的無(wú)監(jiān)督時(shí)間序列異常檢測(cè)算法與現(xiàn)有的方法進(jìn)行對(duì)比,這些模型包括密度估計(jì)模型LOF[3]、基于子序列的聚類(lèi)模型OCSVM[3]、基于孤立森林算法的IForest[5]、變化點(diǎn)檢測(cè)和時(shí)間序列分割方法U-Time[6]以及基于自回歸重建的模型VAR[7],實(shí)驗(yàn)結(jié)果如表1 所示。
表1 異常檢測(cè)實(shí)驗(yàn)對(duì)比結(jié)果
實(shí)驗(yàn)結(jié)果表明,本文方法在Precision、Recall 和F1-score 這3 個(gè)指標(biāo)方面比現(xiàn)有方法均有提升。其中,對(duì)于基于傳統(tǒng)統(tǒng)計(jì)學(xué)及無(wú)監(jiān)督聚類(lèi)的3 種方法LOF、OCSVM、IForest 方法有大幅性能提升,這也得益于深度學(xué)習(xí)強(qiáng)特征提取的優(yōu)勢(shì);與時(shí)間序列分割的方法UTime 相比也有較大提升,這也驗(yàn)證無(wú)監(jiān)督學(xué)習(xí)方法在少標(biāo)簽學(xué)習(xí)的過(guò)程中具有較強(qiáng)的優(yōu)勢(shì);本模型也與VAR 進(jìn)行了對(duì)比,在Recall 與F1-score 上有明顯提升。這也驗(yàn)證了本方法在模型設(shè)計(jì)方面的先進(jìn)性。
針對(duì)各種應(yīng)用場(chǎng)景中高通量多源異構(gòu)時(shí)間序列的產(chǎn)生,現(xiàn)有的方法很難在無(wú)異常標(biāo)簽或少量異常標(biāo)簽的狀態(tài)下對(duì)異常情況進(jìn)行準(zhǔn)確識(shí)別,本文提出了一種無(wú)監(jiān)督異常序列檢測(cè)方法,即基于注意力變分自編碼器的時(shí)序異常檢測(cè)算法,通過(guò)對(duì)正常序列重建的方法確定異常閾值?;谶@種思路設(shè)計(jì)了一套異常檢測(cè)流程,與現(xiàn)有的基于非重建的方法相比,其在準(zhǔn)確度、召回率和F1 得分3 個(gè)方面的性能明顯提升。此外,通過(guò)在模型中引入自注意力機(jī)制,加強(qiáng)了對(duì)序列的特征關(guān)聯(lián)度計(jì)算,增強(qiáng)了模型對(duì)序列的特征提取以及序列重建能力,其較現(xiàn)有的3 種評(píng)估方法也有不同程度的提升,證明了本文方法的有效性。