遲百峰
(北京交通大學計算機與信息技術(shù)學院,北京 100044)
時間序列是隨時間變化的一組實值數(shù)據(jù),時間序列異常檢測廣泛運用在工業(yè)、環(huán)境、網(wǎng)絡(luò)和醫(yī)療等領(lǐng)域,研究學者設(shè)計異常檢測方案發(fā)掘時間序列中不符合歷史發(fā)展趨勢的數(shù)據(jù)模式,進一步預(yù)測可能發(fā)生的潛在危險事件[1]。例如網(wǎng)絡(luò)入侵檢測可發(fā)現(xiàn)人為操作的惡意活動[2],醫(yī)療異常檢測可輔助醫(yī)生對各種疾病進行診斷[3],等。多元時間序列異常檢測通過識別異常輔助專業(yè)人員工作、避免重大事故發(fā)生等。為了更好地檢測出時間序列這一特殊數(shù)據(jù)形式中的異常,大量基于規(guī)則、統(tǒng)計、距離、密度的傳統(tǒng)方法被提出,在不同應(yīng)用場景下也取得了一定的效果,但這些方法難以適應(yīng)大規(guī)模量級的數(shù)據(jù),也不能較好地捕捉數(shù)據(jù)間的時序關(guān)系,導致異常檢測的性能和準確率有所下降。
近幾年,基于深度學習的異常檢測方案受到了廣泛的關(guān)注。深度神經(jīng)網(wǎng)絡(luò)能處理復雜數(shù)據(jù),循環(huán)神經(jīng)網(wǎng)絡(luò)特別適用于序列數(shù)據(jù),能進一步捕捉數(shù)據(jù)之間的時間依賴關(guān)系。卷積神經(jīng)網(wǎng)絡(luò)能捕捉數(shù)據(jù)間的局部空間特征。深度自編碼器是一種廣泛用于數(shù)據(jù)壓縮的技術(shù),由編碼器和解碼器兩部分組成。不同于傳統(tǒng)主成分分析法(principle component analysis,PCA)[4],編碼器對數(shù)據(jù)進行降維、降噪處理,解碼器重建原始數(shù)據(jù)樣本[5]。使用CNN 和LSTM 搭建的DAE 在將多元高維時間序列數(shù)據(jù)映射到特征子空間時,考慮到數(shù)據(jù)之間的順序關(guān)系和局部相關(guān)性,有助于在全局或局部區(qū)域識別某點數(shù)據(jù)是否為異常值。
本文核心工作是將卷積神經(jīng)網(wǎng)絡(luò)和長短時記憶網(wǎng)絡(luò)融合搭建自編碼器,既能得到數(shù)據(jù)的隱層空間表示,還可以捕捉數(shù)據(jù)間的一些局部特性和時間依賴關(guān)系。在隱層空間使用傳統(tǒng)分類器檢測識別異常樣本。
異常檢測的發(fā)展歷史悠久,其異常定義通常是指明顯偏離其他樣本觀測值的數(shù)據(jù)[6]。在時間序列領(lǐng)域中異常通常包括點異常、上下文異常和子序列異常三種類型[7]。點異常指的是時間序列中某時間戳的數(shù)據(jù)明顯不同于其他數(shù)據(jù)。上下文異常類似于點異常,只不過上下文異常是屬于一種局部異常,在時間序列中表示該時間戳的數(shù)據(jù)明顯區(qū)別于前后鄰域時間的數(shù)據(jù)變化。子序列異常指的是時間序列中某片段為異常。
針對于以上不同的異常類型,經(jīng)典的兩類解決方案為基于統(tǒng)計學和基于傳統(tǒng)機器學習異常檢測方法。其中基于統(tǒng)計學的方法是較早替代專家人工設(shè)定規(guī)則的時間異常檢測方法。針對時間序列這一數(shù)據(jù)類型,使用回歸模型對時間序列歷史趨勢進行建模,學習其內(nèi)在的演變規(guī)律或模式,對未來值進行預(yù)測。當實際值與回歸模型產(chǎn)生的預(yù)期值出現(xiàn)顯著偏差時,該數(shù)據(jù)將被標記為異常樣本。常見的方法有自回歸模型(autoregressive model,AR)、自回歸移動平均模型(autoregressive moving average model,ARMA)、差分整合移動平均自回歸模型(autoregressive integrated moving average model,ARIMA)[8]。回歸模型的方法解釋性強、運行效率高,在金融等領(lǐng)域也有廣泛的應(yīng)用,但難以準確設(shè)定衡量差異性的閾值,也無法遷移到多維非線性時間序列異常檢測任務(wù)場景中。
基于傳統(tǒng)機器學習的方法不同于基于統(tǒng)計學的方法,傳統(tǒng)機器學習方法可以在不關(guān)注數(shù)據(jù)底層特定分布的情況完成時間序列異常檢測任務(wù)。如局部離群因子(local outlier factor,LOF)通過密度估計方式搜索最近鄰,將位于稀疏區(qū)域的數(shù)據(jù)標記為異常[9]。后來Oehmcke 等人將LOF 擴展應(yīng)用到時間序列數(shù)據(jù)[10],Tang 等人提出基于連接的離群因子(connective-based outliers factor,COF)改進密度估計的計算方式[11]。孤立森林(isolation forest,iForest)方法使用隨機超平面切割數(shù)據(jù)空間,分布密度稀疏的異常樣本或離群點更容易被切分到一個子空間中[12,13]。單類支持向量機(One-Class SVM,OC-SVM)并不依靠密度劃分尋找異常,而是改進支持向量機(SVM)利用分類技術(shù)在類極度不平衡的時間序列數(shù)據(jù)上進行異常檢測[14]。本質(zhì)上將二分類轉(zhuǎn)化成單分類,只要數(shù)據(jù)不屬于正常類,就將其標記為異常樣本[15]。
相比于上文所介紹的兩大經(jīng)典方案,隨著深度神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,深度學習異常檢測方案已經(jīng)在離群點檢測上取得了顯著性效果[16]。比如循環(huán)神經(jīng)網(wǎng)絡(luò)(RNNs)可有效捕捉時間序列數(shù)據(jù)的特征,其經(jīng)典模型長時間記憶網(wǎng)絡(luò)(LSTM)和門控遞歸單元(GRU)通過內(nèi)部獨特結(jié)構(gòu)存儲、遺忘或傳遞時間信息,通過反饋連接建立前后時間值的關(guān)聯(lián)。在時間序列異常檢測中,LSTM序列模型預(yù)測未來時間序列趨勢,如果不符合LSTM捕捉到的上下文發(fā)展規(guī)律可當異常樣本處理,并已經(jīng)證明與傳統(tǒng)方法相比算法性能顯著提高[17]。卷積神經(jīng)網(wǎng)絡(luò)(CNN)能從復雜的高維數(shù)據(jù)中提取局部特征,可作為特征提取器用于序列數(shù)據(jù)或圖像數(shù)據(jù)的離群點檢測[18]。深度自編碼器通過重構(gòu)輸入數(shù)據(jù)學習一個恒等變換函數(shù),當自編碼器使用正常數(shù)據(jù)作為輸入進行模型訓練時,僅能夠?qū)φ颖具M行恒等變換,無法重建的異常樣本會因高殘差被標記為離群值[19]。此外,結(jié)合自編碼器的編碼器編碼能力和傳統(tǒng)分類器分類能力,將異常檢測問題轉(zhuǎn)化為有監(jiān)督的分類問題也取得了很好的進展[20]。
本文采用混合深度學習異常檢測思路,在數(shù)據(jù)預(yù)處理的基礎(chǔ)上,第一步將深度自編碼器的編碼器作為特征提取器,第二步將易區(qū)分的編碼數(shù)據(jù)送入傳統(tǒng)分類器中進行異常檢測,實際結(jié)果表明該結(jié)合方案具有很強的魯棒性[21-22]。
本文提出的混合深度學習異常檢測方法分三大階段,分別是數(shù)據(jù)預(yù)處理、模型搭建、預(yù)訓練模型中的編碼器先對數(shù)據(jù)進行編碼,然后送入傳統(tǒng)分類器進行異常檢測,本章節(jié)依次對三個階段展開論述。
時間序列的尺度選擇、缺失值處理或噪聲污染處理嚴重影響異常檢測的準確性。本文采用滑動窗口技術(shù)和二次下采樣技術(shù)對原始正常數(shù)據(jù)進行處理,有助于深度自編碼器在此基礎(chǔ)上學習到更加明顯的區(qū)分特征,具體操作如下,總體過程如圖1所示。
(3)二次下采樣技術(shù)處理滑動窗口序列。下采樣技術(shù)廣泛運用在視覺圖像領(lǐng)域,通過對圖像進行下采樣,可使得圖像符合顯示區(qū)域的大小或生成對應(yīng)圖像的縮略圖。將其遷移到時間序列領(lǐng)域上對數(shù)據(jù)進行采樣縮減,使得深度自編碼器訓練速度更快并一定程度避免過擬合情況的發(fā)生。下采樣技術(shù)還能充分考慮數(shù)據(jù)的分布不均衡等問題,以相對較少的樣本考慮全體數(shù)據(jù)的特性。首先第一次下采樣使用在滑動窗口技術(shù)處理后的序列集合上,即對滑窗產(chǎn)生的各個窗口進行下采樣,假設(shè)采樣的個數(shù)為k,那么Wsample=[wstart,…,wend],其中k=wend-wstart。進而在對Wsample內(nèi)的數(shù)據(jù)進行第二次下采樣,這樣可以考慮到不同時刻不同時間段和不同時間間隔的情況。
本文使用的主要模型為深度自編碼器,主要內(nèi)部網(wǎng)絡(luò)結(jié)構(gòu)包括卷積神經(jīng)網(wǎng)絡(luò)(CNN)和長短時記憶(LSTM)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)(CNN)通常用于計算機視覺中的目標檢測、圖像分類等任務(wù)[23-25],但時間序列數(shù)據(jù)在形式上類似于圖像數(shù)據(jù),可更好地關(guān)注數(shù)據(jù)的局部特征。長短時記憶網(wǎng)絡(luò)(LSTM)通過內(nèi)部結(jié)構(gòu)引入基于上下文的加權(quán)自循環(huán)機制,可自動判定過去信息是否遺忘或向后傳遞[26-27],被廣泛用于自然語言處理、語音識別和時間序列各種任務(wù)中[26-28]。
深度自編碼器有機地統(tǒng)一CNN 和LSTM 兩種經(jīng)典神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),對時間序列數(shù)據(jù)既捕捉局部特征,也考慮前后時間依賴程度。其中編碼器部分可對數(shù)據(jù)樣本進行隱層特征的表示學習,解碼器部分通過重構(gòu)原始樣本約束其隱變量學習的程度,重構(gòu)誤差越小表示自編碼器對數(shù)據(jù)樣本重建能力越好,那么自編碼器重建異常樣本則會產(chǎn)生一個較差的效果從而發(fā)現(xiàn)異常。
深度自編碼器通編碼部分為將原始數(shù)據(jù)映射到隱層特征空間,相當于對原始數(shù)據(jù)進行一種潛在空間的表示學習[29]。解碼部分則試圖將原始數(shù)據(jù)的新表示還原成原始數(shù)據(jù)。一般使用均方誤差(mean square error,MSE)衡量原始輸入和重建輸入差異度,即重構(gòu)效果。數(shù)學表達如下:
公式(1)代表自編碼器對原始數(shù)據(jù)的編碼過程,本質(zhì)上是一個映射函數(shù)f用隱變量z來表示原始數(shù)據(jù)x。公式(2)代表自編碼器對隱變量z的解碼過程,本質(zhì)上也是一個映射函數(shù)g將隱變量z還原成原始數(shù)據(jù)x^。公式(3)就是使用均方誤差MSE盡可能的降低原始數(shù)據(jù)與重建數(shù)據(jù)的差異性。
本文所采用的模型架構(gòu)如圖2 所示,預(yù)處理數(shù)據(jù)作為輸入依次經(jīng)使用Relu 激活的卷積層、帶有正則操作的最大池化層、使用Relu 激活的全連接層以及兩次LSTM 層獲得最終輸出,具體代碼流程見算法1:訓練CNN+LSTM自編碼器。
圖2 模型架構(gòu)
算法1:訓練CNN+LSTM自編碼器
模型預(yù)訓練過程使用僅包含正常樣本的數(shù)據(jù)集,這樣深度自編碼器可以對正常樣本的時間序列有較好的重建能力,對異常樣本則無法進行重建或重建效果很差。異常檢測階段主要使用預(yù)訓練好的自編碼器的編碼器對數(shù)據(jù)進行編碼,在潛在空間對數(shù)據(jù)進行隱層表示,異常樣本將明顯遠離正常樣本的所在范圍。傳統(tǒng)分類器(如SVM 等)就可以明確地劃分出決策邊界,從而精準地發(fā)現(xiàn)異常點和正常點,具體過程如圖3所示。
圖3 異常檢測過程
異常檢測過程重要的環(huán)節(jié)為數(shù)據(jù)編碼表示、訓練傳統(tǒng)分類器、使用傳統(tǒng)分類器在測試集上進行標簽類別預(yù)測。使用二進制表示輸出結(jié)果,即1表示該樣本為異常,0表示該樣本為正常。具體代碼流程見算法2。
算法2:異常檢測過程
本文在Mammography、Satimage-2、Campaign三個數(shù)據(jù)集上進行了廣泛的實驗,與單純使用傳統(tǒng)分類器、普通全連接網(wǎng)絡(luò)搭建的自編碼器結(jié)合傳統(tǒng)分類器的方法對比,評價本文所提出的使用CNN 和LSTM 搭建的深度自編碼器與傳統(tǒng)分類器結(jié)合的異常檢測效果。此外,還與經(jīng)典的異常檢測方法進行比較,如局部異常因子(Local Outlier Factor,LOF)[9]、一類支持向量機(One Class SVM,OCSVM)[14]、孤立森林(Isolation Forest,IForest)[12]以及先進的 Copula-Based Outlier Detection(COPOD)[30]。實驗結(jié)果表明本文提出的方法異常檢測效果普遍更佳。
本文在3 個數(shù)據(jù)集上進行了實驗,分別來自O(shè)DDS 異常檢測數(shù)據(jù)庫的Mammography、Satimage-2 數(shù)據(jù)集,和來自于UCI 機器學習數(shù)據(jù)庫的Campaign數(shù)據(jù)集,基本信息如表1所示。
表1 數(shù)據(jù)集介紹
(1)Mammography 數(shù)據(jù)集最初是Aleksandar Lazarevic 提供的乳腺攝影,記錄乳腺是否存在鈣化的情況。在異常檢測任務(wù)中,將鈣化情況視為異常樣本(標記為1),其他全部情況視為正常樣本(標記為0)。
(2)Satimage-2 數(shù)據(jù)集由陸地衛(wèi)星(statlog)記錄采集并最初用于多分類任務(wù),在異常檢測任務(wù)中,對原始數(shù)據(jù)集的第2 類別下采樣出71 個異常樣本(標記為1),其他所有類別視為正常樣本(標記為0)。
(3)Campaign 數(shù)據(jù)集記錄的是葡萄牙某銀行機構(gòu)的一次營銷活動情況,在異常檢測任務(wù)中,用戶在本次活動中成功訂閱該機構(gòu)產(chǎn)品視為異常(標記為1),反之視為正常(標記為0)。
本文主要參數(shù)為數(shù)據(jù)預(yù)處理中使用的滑窗及兩次采樣大小,和CNN+LSTM-AE 模型中的卷積核、神經(jīng)單元數(shù)等,具體信息如表2所示。
表2 實驗參數(shù)
本文評價標準采用F1 Score,原因是異常檢測問題本質(zhì)上是一個類極度不平衡情況下的分類問題,使用F1 Score 可以兼顧檢測的精確率和召回率,能客觀地表明模型的健壯程度。
與普通全連接層搭建的自編碼器結(jié)合傳統(tǒng)分類器、原始傳統(tǒng)分類器進行對比,可以發(fā)現(xiàn)使用CNN+LSTM 對原始數(shù)據(jù)編碼后再結(jié)合傳統(tǒng)分類器,在這三個數(shù)據(jù)集上均表現(xiàn)出良好的效果,實驗結(jié)果如表3 所示。Mammography 數(shù)據(jù)集上效果尤為顯著,F(xiàn)1 Score均有明顯提高。在Satimage-2數(shù)據(jù)集上,本文提出的方法略優(yōu)于使用普通全連接層的編碼后結(jié)合傳統(tǒng)分類器,并且F1 Score 接近滿分趨勢。Campaign 數(shù)據(jù)集樣本量偏大,異常分布極不均衡,本文提出的方法雖優(yōu)于其他兩種方案,但F1 Score 均在0.9 以下??偟膩碚f,CNN+LSTM-AE 方法在小數(shù)據(jù)集上可保持較高的F1 Score,對于大數(shù)據(jù)集只能小幅度提升F1 Score,并不能像其他數(shù)據(jù)集達到接近F1 Score=1的結(jié)果。
表3 實驗結(jié)果
與經(jīng)典的異常檢測方法進行對比,如局部異常因子(local outlier factor,LOF)、一類支持向量機(one class SVM,OCSVM)、孤立森林(isolation forest,IForest),本文提出的方法依舊領(lǐng)先于其他三種方法,實驗結(jié)果如表4 所示。原因很簡單,三種經(jīng)典方法均無法有效捕捉序列相關(guān)性等局部特征,F(xiàn)1 Score 僅能保持在0.5 左右,而本文提出的CNN+LSTM 作為數(shù)據(jù)的預(yù)編碼結(jié)合傳統(tǒng)分類器有效克服經(jīng)典方法的缺點,可取得F1 Score 平均保持在0.9左右顯著效果。
表4 實驗結(jié)果
基于概率累計函數(shù)設(shè)計的快速異常檢測方法COPOD 的異常檢測效果特別快,實際應(yīng)用場景廣泛,但主要問題與上面三種經(jīng)典方法一樣,無法考慮到數(shù)據(jù)之間的局部信息或順序信息導致檢測效果不佳。本文提出的方法與COPOD比較的實驗結(jié)果如表5所示。
表5 實驗結(jié)果
根據(jù)廣泛的實驗結(jié)果分析可知,本文提出的混合方法可有效提高異常檢測的效果,F(xiàn)1 Score均能保持一個較高的程度。此外僅使用普通的全連接層搭建自編碼器結(jié)合傳統(tǒng)分類器都能取得比較好的性能,間接證明先使用神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進行編碼,提取內(nèi)在更具區(qū)分性的特征,再進行異常檢測的思路行之有效。不過本方案也存在比較明顯的問題是先對深度自編碼器進行預(yù)訓練得到強大的編碼器,再進行異常檢測不屬于端到端模型,導致兩部分可能均陷入局部最優(yōu)解,無法動態(tài)權(quán)衡兩部分得到一個全局最優(yōu)解,所以在大數(shù)據(jù)集Campaign 上的F1 Score 始終無法與其他數(shù)據(jù)集相媲美。
本文提出了一種深度混合多元時間序列異常檢測的方法,使用CNN 和LSTM 搭建深度自編碼器,目的是學習到數(shù)據(jù)有效的隱層表示,基于這種隱層表示結(jié)合傳統(tǒng)分類器高效快速地檢測識別異常樣本。該方案也進一步表明CNN 和LSTM 的組合確實能較為充分地考慮數(shù)據(jù)之間的時間依賴關(guān)系,經(jīng)編碼器編碼得到的隱層特征表示在潛在空間的區(qū)分邊界更加容易確定。在今后的工作中,將考慮設(shè)計原始混合模型為端到端模型并加入注意力機制,提升在任何大小、任何形式數(shù)據(jù)集上的異常檢測性能,同時考慮時間序列不同維度之間的影響程度,進一步提升本文方法在結(jié)構(gòu)復雜的實際應(yīng)用場景下的魯棒性、高效性。