馬浩軒 楊笑千 廖真 崔宸 張力丹
(中國核動(dòng)力研究設(shè)計(jì)院信網(wǎng)中心,四川 成都 610213)
時(shí)間序列數(shù)據(jù),是將同一統(tǒng)計(jì)索引的一系列數(shù)字,按發(fā)生時(shí)間進(jìn)行排序從而生成的數(shù)列。異常檢測(cè),就是通過建立模型,檢測(cè)數(shù)據(jù)中的離群點(diǎn)(又稱不一致點(diǎn)、污點(diǎn))[1]。異常檢測(cè)的應(yīng)用場(chǎng)景極為廣泛,目前在金融、工業(yè)、軍事、機(jī)器人,物聯(lián)網(wǎng)等多個(gè)領(lǐng)域,針對(duì)時(shí)序數(shù)據(jù)的異常檢測(cè)對(duì)系統(tǒng)的穩(wěn)定性有極其重要的地位與意義[2]。
傳統(tǒng)的時(shí)間序列數(shù)據(jù)異常檢測(cè)方法通常聚焦在一維場(chǎng)景下,Hawkins 等人利用三次指數(shù)平滑法來實(shí)現(xiàn)的異常檢測(cè)利用歷史數(shù)據(jù)中的不同特征來推測(cè)當(dāng)前數(shù)據(jù)值在商業(yè)領(lǐng)域十分有效[3]。Denkena 等人提出了針對(duì)時(shí)序數(shù)據(jù)異常檢測(cè)的Skyline 項(xiàng)目包含了一組簡單的檢測(cè)器和一個(gè)投票方案,以輸出最終的異常評(píng)分,在監(jiān)測(cè)高流量網(wǎng)站的實(shí)時(shí)異常方面卓有成效[4]。
神經(jīng)網(wǎng)絡(luò)模型在時(shí)間序列數(shù)據(jù)異常檢測(cè)方面具有一定優(yōu)勢(shì),是對(duì)于時(shí)間序列數(shù)據(jù)訓(xùn)練最常見的算法模型之一[5]。近年來,長短期記憶網(wǎng)絡(luò)(LSTM),LSTM 長短期記憶網(wǎng)絡(luò)因其在處理時(shí)序數(shù)據(jù)方面的優(yōu)勢(shì)而受到了廣泛的關(guān)注,同時(shí)LSTM 改進(jìn)了RNN 無法處理長距離關(guān)聯(lián)性的缺點(diǎn),因此有許多學(xué)者提出了基于LSTM 的異常檢測(cè)算法[6-7]。Numenta 公司提出了基于RNN 的層級(jí)實(shí)時(shí)記憶HTM 算法,并提出公開數(shù)據(jù)集NAB,在NAB 數(shù)據(jù)集上驗(yàn)證了HTM 算法的性能[8]。
對(duì)于時(shí)間序列來說,t 時(shí)刻的數(shù)值對(duì)于t-1 時(shí)刻有很強(qiáng)的依賴性。針對(duì)最近時(shí)間窗口內(nèi)的數(shù)據(jù)遵循某種趨勢(shì)的現(xiàn)象,可以使用曲線來匹配數(shù)據(jù)的變化趨勢(shì),當(dāng)新數(shù)據(jù)打破趨勢(shì),曲線不平滑時(shí),該點(diǎn)可以判定為一個(gè)疑似異常點(diǎn)。
現(xiàn)在比較常用曲線擬合方法有線性回歸、moving average等[9]。本文介紹EWMA 來擬合曲線,EWMA 的遞推公式是:
其中,a 是一個(gè)0-1 間的小數(shù),稱為平滑因子,有時(shí)將EWMA(1)取值為先驗(yàn)數(shù)據(jù)的均值。a 越小時(shí)EWMA(1)的取值對(duì)結(jié)果的準(zhǔn)確性影響越大。
很多監(jiān)測(cè)項(xiàng)目都存在周期性,其中最為常見的周期為一天??紤]到監(jiān)測(cè)項(xiàng)的周期性,可以選擇監(jiān)測(cè)項(xiàng)最近n 天的數(shù)據(jù)。這樣可以得到檢測(cè)項(xiàng)在不同周期的n 個(gè)數(shù)據(jù)進(jìn)行參考,記為xi,其中i=1,2,3,…,14。
首先考慮靜態(tài)閾值法判斷輸入是否異常(驟增驟減)。如果輸入小于最近n 天內(nèi)的最小值乘以閾值,則可以認(rèn)為該點(diǎn)是不一致點(diǎn)(驟減);此外,如果大于過去n 天的最大值乘以閾值,則可以認(rèn)為該點(diǎn)是不一致點(diǎn)(驟增)。
基于同期數(shù)據(jù)的檢測(cè)算法是靜態(tài)閾值的取值,目前常用的方法是根據(jù)先驗(yàn)知識(shí)得出,實(shí)際中如何給maxthreshold(最大閾值)和minthreshold(最小閾值)賦值是一個(gè)值得研究的課題,一種常見的思路是取先驗(yàn)數(shù)據(jù)的均值。
基于同期振幅的檢測(cè)方法是利用兩個(gè)趨勢(shì)圖“長得差不多”的特點(diǎn)?如圖1 所示。
圖1 某流量示意圖
我們還可以針對(duì)時(shí)序數(shù)據(jù)最近時(shí)間窗口(T)內(nèi)的數(shù)據(jù),利用它們遵循特定趨勢(shì)的事實(shí)來進(jìn)行異常檢測(cè)[10]。我們將T 設(shè)置為14,取監(jiān)測(cè)項(xiàng)(nowvalue)和14 個(gè)(記為i 點(diǎn))先驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,如果結(jié)果滿足設(shè)置的條件,將計(jì)數(shù)加1,如果計(jì)數(shù)超過設(shè)置的countnum,可以判斷這個(gè)監(jiān)測(cè)項(xiàng)存在異常。
上面的公式涉及到thresshold(動(dòng)態(tài)閾值)和countmum兩個(gè)參數(shù),countmum可以根據(jù)需求進(jìn)行設(shè)置,比如對(duì)異常比較敏感,可以設(shè)置countmum小一些;而如果對(duì)異常不敏感,可以將countmum設(shè)置的大一些。業(yè)界關(guān)于threshold 設(shè)置的方法有很多,公式(5)一種比較常用的閾值設(shè)置方法。
基于Ensemble 的檢測(cè)算法是利用全部數(shù)據(jù)建立特定的數(shù)據(jù)結(jié)構(gòu),進(jìn)而檢測(cè)異常數(shù)據(jù)的算法,使用最廣泛的是建立二叉樹的iForest 算法[11]。
iForest 是由iTree 構(gòu)建而成的,首先介紹一下iTree。iTree是使用隨機(jī)二叉樹來進(jìn)行構(gòu)建,葉子節(jié)點(diǎn)沒有子節(jié)點(diǎn),其他節(jié)點(diǎn)有左右兩個(gè)子節(jié)點(diǎn)。對(duì)于給定的數(shù)據(jù)集D,數(shù)據(jù)集中的所有的特征都是連續(xù)變量,iTree 的構(gòu)造如下:
輸入:全部數(shù)據(jù)集輸出:iTree在數(shù)據(jù)集D 中隨機(jī)選擇一個(gè)特征A;隨機(jī)選擇特征A 的一個(gè)可能取值value;根據(jù)特征A 以及值value 將數(shù)據(jù)集D 分為兩個(gè)子集,將特征A 的值小于value 的樣本歸入左子節(jié)點(diǎn),余下部分歸入右子節(jié)點(diǎn);遞歸構(gòu)造左右子樹直至滿足以下的條件:a. 傳入的數(shù)據(jù)集只有一條記錄或多條相同記錄;b. 樹的高度達(dá)到了限定高度。End
當(dāng)前用于異常檢測(cè)的神經(jīng)網(wǎng)絡(luò)算法有很多,其中比較常見的有卷積神經(jīng)網(wǎng)絡(luò)(CNN)算法、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)算法、深度神經(jīng)網(wǎng)絡(luò)(DNN)算法等,本文主要介紹長短期記憶網(wǎng)絡(luò)算法。
如圖2 所示,時(shí)間為t 的LSTM 網(wǎng)絡(luò)有三個(gè)輸入[15]:xt表示t 時(shí)間的輸入值、h(t-1)表示t-1 時(shí)間的輸出值、c(t-1)則為t-1時(shí)間網(wǎng)絡(luò)單元的狀態(tài);同時(shí)它也存在兩個(gè)輸出:ht表示t 時(shí)間的輸出、ct為t 時(shí)間單元的狀態(tài)。
圖2 LSTM 示意圖
如圖3 所示,LSTM 使用了三個(gè)開關(guān)作為長期記憶信息的控制器:
圖3 LSTM“門”開關(guān)
遺忘門(forget gate):負(fù)責(zé)控制繼續(xù)保存長期狀態(tài)c,它決定了上一時(shí)刻的單元狀態(tài)c(t-1)有多少保留到當(dāng)前時(shí)刻c(t)。
輸入門(input gate):負(fù)責(zé)控制把即時(shí)狀態(tài)輸入到長期狀態(tài)c,它決定了當(dāng)前時(shí)刻網(wǎng)絡(luò)的輸入x(t)有多少保存到單元狀態(tài)c(t)。
輸出門(output gate): 負(fù)責(zé)控制是否把長期狀態(tài)c 作為當(dāng)前的LSTM 的輸出, 它決定了單元狀態(tài)c(t)有多少輸出到LSTM 的當(dāng)前輸出值h(t)。
遺忘門的計(jì)算如公式(6)所示:
其中,遺忘門Wf表示神經(jīng)網(wǎng)絡(luò)的權(quán)重,使用[h(t-1),xt]向量將t-1 時(shí)間的狀態(tài)和t 時(shí)間的輸入拼接起來,然后利用偏置項(xiàng)bf遺忘不相關(guān)的信息,σ 是激活函數(shù)。
數(shù)據(jù)挖掘是從大量異構(gòu)數(shù)據(jù)中挖掘未知潛在信息和知識(shí)的過程,大數(shù)據(jù)的基本特征是數(shù)據(jù)規(guī)模大、數(shù)據(jù)多樣性。海量復(fù)雜的數(shù)據(jù)中可能會(huì)存在一些數(shù)據(jù)對(duì)象,這些數(shù)據(jù)對(duì)象與普通數(shù)據(jù)的期望行為模式并不一致,被稱為異常值或者離群點(diǎn)。
隨著數(shù)據(jù)規(guī)模和數(shù)據(jù)多樣性的不斷增大,數(shù)據(jù)中異常值(或離群點(diǎn))個(gè)數(shù)也會(huì)不斷地增加,合理有效地處理和應(yīng)用這些異常值對(duì)大數(shù)據(jù)挖掘具有重要的意義[13]。針對(duì)大數(shù)據(jù)中異常值或者離群點(diǎn)的識(shí)別和挖掘稱為異常檢測(cè)。雖然數(shù)據(jù)中的異常值是不尋常的,但是如果考慮的數(shù)據(jù)量多達(dá)數(shù)十億時(shí),可能性為“千分之一”的異常值也可能是百萬級(jí),在大數(shù)據(jù)挖掘過程中這些異常值是不能忽視的。因此,異常值檢測(cè)在大數(shù)據(jù)挖掘中,有著至關(guān)重要的作用。
工業(yè)互聯(lián)網(wǎng)平臺(tái)結(jié)合大規(guī)模數(shù)據(jù)采集和分析,實(shí)時(shí)準(zhǔn)確高效地處理數(shù)據(jù),助力制造業(yè)發(fā)展新征程[14]。工業(yè)互聯(lián)網(wǎng)不僅給工業(yè)控制系統(tǒng)帶來了便利,也帶來了一系列的安全問題。各種形式的入侵和攻擊層出不窮。開發(fā)符合行業(yè)需求的安全體系是保障工業(yè)互聯(lián)網(wǎng)平臺(tái)正常運(yùn)行的前提。各種網(wǎng)絡(luò)入侵技術(shù)的發(fā)展對(duì)工業(yè)互聯(lián)網(wǎng)平臺(tái)構(gòu)成了嚴(yán)重威脅。工業(yè)控制系統(tǒng)中的現(xiàn)場(chǎng)設(shè)備、控制系統(tǒng)和網(wǎng)絡(luò)設(shè)備存在受到攻擊的風(fēng)險(xiǎn)。這些設(shè)備的異常可能會(huì)對(duì)行業(yè)造成嚴(yán)重后果。估計(jì)的經(jīng)濟(jì)損失會(huì)影響生產(chǎn)的發(fā)展,甚至?xí)<叭藗兊纳?yīng)對(duì)各種網(wǎng)絡(luò)攻擊已成為保障國家關(guān)鍵基礎(chǔ)設(shè)施安全的重大課題。
異常檢測(cè)效果的優(yōu)劣是諸多場(chǎng)景安全交互的核心。尤其在工業(yè)應(yīng)用中,如果能準(zhǔn)確的發(fā)現(xiàn)系統(tǒng)中出現(xiàn)的異常,特別是能夠在異常發(fā)生的短時(shí)間內(nèi)檢測(cè)并報(bào)告異常,并根據(jù)已有的異常數(shù)據(jù)對(duì)異常進(jìn)行分析,推斷出異常出現(xiàn)的位置及原因,并給予初步的建議解決方案,這將對(duì)系統(tǒng)狀態(tài)的穩(wěn)定起到巨大的作用。