王宇鵬 朱詩兵 李長青
(航天工程大學 北京 101416)
異常檢測是大數據挖掘研究中的重要組成部分,其在工業領域的應用非常廣泛。時間序列的異常檢測是異常檢測的一個重要分支,可以應用在金融領域、工業檢測、醫療診斷、網絡入侵檢測等方面[1]。對時序數據進行分析檢測的工業級應用有Netflix的RPCA、Yahoo的EGADS和Twitter的Skyline。此外,相關技術有Lin等[2]提出的SAX、基于模型的檢測方法ARIMA[3]、卡爾曼濾波[4]、基于循環神經網絡的LSTM[5-6]和GRU[7]等。基于計算神經科學,Hawkins等[8]提出一種模擬腦皮質功能的層級時間記憶(Hierarchical Temporal Memory,HTM)模型,并將其應用于對時序數據進行異常檢測。
基于HTM的時序數據異常檢測模型可以實時在線檢測,對噪聲數據包容性很強,可以不斷適應時序數據的變化,從而更加準確地識別異常數據?;谶@些特點,HTM檢測模型可以應用在航天器的故障預測與健康管理(Prognostic and Health Management,PHM)領域,并且比常用的閾值檢測能更有效地發現航天器遙測數據中隱含的設備問題。
在HTM異常檢測模型的研究中,發現該檢測模型在處理時序數據時,對數值的異常上升較為敏感,識別度較高,但對數值的異常下降卻檢測欠佳。此外,該模型還存在較高的誤警,輸出的異常數值較多,當實時處理多維的時序數據時,輸出異常告警信息不夠清楚直觀,無法實現有效的告警。本文針對HTM模型異常檢測存在的問題,通過引入滑動窗口和分布,對HTM輸出的異常數據進行處理,較好地解決了該模型對時序數值下降異常不敏感的問題,并且優化了對時間序列異常進行檢測告警的性能。
分層時間記憶(HTM)是一種基于神經網絡的機器學習技術,通過模仿新大腦皮層的結構和算法特性來實現信息處理。哺乳動物的視覺、聽覺、觸覺、運動、語言和計劃都是由新大腦皮質完成的,并且這些不同的智能功能全是由新大腦皮層通過一套高度統一的神經回路實現的,而HTM是模仿新大腦皮層及其機能而發展出來的一套理論框架,該框架模型包括層級結構、稀疏離散表征、腦皮質學習算法、空間數據池以及時間數據池等[9]。HTM模型主要是通過輸入的數據流進行訓練的,它可以被理解為一個神經網絡。HTM模型模擬的是一層皮層,該皮層由一組小型柱組成,每個小型柱包含多個神經元。每個神經元主要由細胞體、近體端樹突、末端樹突、突觸和神經元輸出組成,如圖1所示。
基于HTM網絡模型不斷學習和模擬輸入的時空特性,Ahmad等[10]通過對HTM輸出進行了擴展計算,將HTM模型應用于異常檢測?;贖TM的異常檢測模型如圖2所示。
Step1HTM輸入輸出。輸入的數據被饋送到HTM神經模型中,通過編碼器用以0和1為基本單位的稀疏分布式進行表達。然后在稀疏空間池進行匯集,得到表示當前輸入的稀疏二進制矢量a(x),t-1時刻的a(xt-1)經過序列存儲器的學習預測,以另一稀疏矢量π(xt-1)形式輸出預測,同時直接輸出t時刻的a(xt)。即xt之前的序列,以稀疏分布式表示并進行編碼,HTM模型通過學習這些表示,以稀疏向量的形式對未來進行預測。
Step2計算預測偏差。a(xt)是當前輸入xt的稀疏編碼,π(xt-1)表示HTM網絡模型對a(xt)的預測。a(xt)、π(xt-1)的維數等于HTM網絡中的列數(通常使用2 048作為標準值)。設定St為預測誤差,St值等于與a(xt)和π(xt-1)之間的共同比特數成反比的標量值,其中|a(xt)|是標量范數,即a(xt)中1位的總數。
(1)
式中:如果當前a(xt)與預測完全匹配,則誤差St為0;如果a(xt)和π(xt-1)兩個向量正交,則誤差St為1。

(2)
(3)
然后,計算最近預測誤差的短期平均值,并將閾值應用于高斯尾部概率(Q函數),再確定是否異常。將似然異常定義為Q函數[11]的補充:
(4)
(5)
式中:W′是短期移動平均線的窗口,遠小于計算預測誤差分布的持續時間W。基于自定義的參數(通常設為10-5),將Lt用于報告t時刻的異常,預報條件如下:
Lt≥1-
(6)
本文針對HTM異常檢測模型的似然異常進行改進,經過研究發現,該處理方法過濾噪聲能力較弱,當時序數據發生異常下降時,對原始數據處理的效果不夠理想,檢測不出異常,且對HTM異常檢測模型初期學習過程中的誤報沒有進行有效處理。針對以上問題,通過引入滑動窗口和分布進行濾值處理,優化異常告警值。
滑動窗口算法主要是對輸入的數據進行實時更新處理的算法,將一定時間段的數據依次放于一個長度固定的時間窗口內,然后對該段數據進行處理。隨著新的數據輸入,依次剔除時間靠前的數據,隨著時間的變化,窗口中包含的永遠是最新的數據,提高了模型的時效性和自適應性[12-13]。
由于LSTM、GRU等方法都需要對完整的時序數據進行處理分析,才能標注出異常,不具有實時檢測的能力,所以HTM模型和深度學習模型相比,其最大的優點是不用進行監督學習就可以實時在線進行檢測,引入滑動窗口可以保留該模型的實時特點。
本文在HTM異常檢測模型的基礎上,引入滑動窗口算法,結合不同時間序列的特點,設置相應的時間窗口,對模型產生的數據進行處理,降低模型對時間序列中異常告警的重復值,消除了前期的各類誤報,提高了該算法的準確性和有效性。
具體步驟如下:
Step1根據時間序列的周期性特點,選取長度為m的時間窗口。
Step2將進入滑動窗口的新值xm與該窗口內其余所有值xi進行比較。
Step3如果該新值異常權重越高,即xm>xi,i∈(1,m-1),說明該值更能反映當前數據的異常,返回該值xm。
Step4如果該時間點的異常值低于前值,即xm≤xi,i∈(1,m-1),說明該時間點的異常特征不夠明顯,返回0值。
Step5移動滑動窗口,繼續處理新進入窗口的時間,直到處理完最后一組數據。
之所以選用滑動窗口篩選異常權重大的值,是因為HTM模型在比較時間序列的相似性時,會給出一系列的差異數據,當這些數據過多時,會對檢測結果造成干擾,通過保留有效的異常值,有助于簡化模型結果的可視化顯示。因為當處理數據量龐大的多維時間序列時,結果顯示得越簡單越好。
β分布為伯努利分布和二項式分布的共軛先驗分布的密度函數,是定義在[0,1]區間上的連續概率分布族,它有兩個形狀參數α和β,其概率密度函數如下:
(7)
β分布可以理解為表示概率的概率分布,可以根據參數α和β的不同,構造不同的概率分布[14]。
通過對HTM模型在時間窗口得到的預測偏差進行分析,然后通過設定合適參數α和β,β分布就可以有效地表示該預測偏差的統計分布。
異常檢測模型的意義在于能夠盡可能多發現時序數據中異常數據,進行告警,所以選取合適的閾值尤為重要。閾值過大,不能有效地濾除較多的無用信息,產生的誤警過多;閾值過小,則可能會濾掉一些有用的異常序列數據。結合異常檢測模型在同類時序異常數據獲得的誤差值,進行數理統計分析,發現有效的異常值稀少,因此,本文將閾值定為5×10-4,滿足式(8)獲得的異常值Bt,即為所得到的異常。
B(x|α,β)≥1-
(8)
改進模型如圖3所示,改進方法的步驟如下:

圖3 HTM異常檢測改進模型
Step1將實時數據流輸入HTM異常檢測模型,經過處理后,得到兩個實際參數和預測參數a(xt)和π(xt-1),并計算得出預測偏差St。
Step2將得到的St依次放入滑動窗口,將最新的值與窗口內的前值進行比較,如果新值異常值權重更大,則輸出該值,否則,返回0值。
Step3根據先驗知識,確定合適α和β,然后構建適用于該時間序列檢測模型的β分布,通過閾值篩選保留權重大的異常值。
為驗證本文提出的算法,采用UCI提供的北京PM2.5數據集,通過對該數據集進行清洗處理,僅使用2014年的全年溫度變化作為測試數據,溫度刻度具體到小時,共計8 760個數據點。該數據類似地模擬人造衛星繞地球一圈的電池溫度傳感器每秒得到的數據(中軌2 000公里的衛星約9 000個單位)。在64位CENTOS7操作系統下,利用Python 2.7編程環境,搭建HTM異常檢測模型,對該數據進行處理。
根據氣溫真實變化的特點,基于常識定義出兩類異常:上升異常和下降異常,各類異常分別為3個,共計6個異常點。
上升異常:溫度變化突然,上升幅度較大,超過了前面一定范圍的最高溫度。
下降異常:溫度變化突然,下降幅度較大,超過了前面一定范圍的最低溫度。
在時序數據異常檢測中,假陽性率FPR(False Positive Ratio)和假陰性率FNR(False Negative Ratio)常常用來檢測算法的有效性[15]。
FPR是異常數據被錯誤檢測為正常數據的比率:
(9)
式中:FN是被誤認為是異常的正常數據的數量;TP+FN是正常數據的總數。
FNR是正確數據被錯誤檢測為異常數據的比率:
(10)
式中:FP是被誤認為是正常的異常數據的數量;FP+TN是異常數據的總數。
FPR和FNR越小,說明該模型性能越好。
通過實驗得到圖4的異常檢測結果。第一行是全年的溫度數據,第二行是HTM模型直接輸出的預測偏差St,第三行是原檢測模型的輸出似然異常Lt,第四行是本文模型輸出的異常值Bt。

圖4 異常檢測結果
原模型中,將異常閾值設定為0.5,除去檢測模型前期的異常告警,給出了11個異常標注,其中3個判定正確,3個異常未識別出來,誤判8個。本文模型將異常閾值設定為0,給出了9個異常標注(其中2個相鄰很近),其中5個判定正確,1個異常未識別出來(用三角形標注的),誤判4個。根據以上實驗數據,本文模型的FPR和FNR優于原模型。
HTM異常檢測模型在檢測各類時序數據過程中存在的一個通病是對異常下降的情況無法給出有效的告警異常Lt,這些異常值往往是有效檢測值的一半。盡管異常持續時間較長,但一直位于告警閾值之下,從而導致該異常下降發生漏報。本文通過對HTM模型輸出的預測偏差進行優化后,可以濾掉過量的上升異常告警,保留了異常下降,使其可以有效地反映出時間序列的異常狀態。此外,通過滑動窗口處理,將前期異常告警全部濾除,大大地減少了誤警次數。
本文通過引入滑動窗口和分布,對HTM異常檢測模型進行優化,實現了對異常下降情況的有效識別判斷,也消除了該模型在前期學習過程中出現的誤警,使改進后的實時檢測模型在性能上有一定的提高,但仍然存在對部分異常判斷不準的情況。為了實現性能比較,實驗選取氣溫的高低幅度變化作為異常標準,這與航天器上電池組溫度變化相近似。但是,對不同時序數據的異常定義,還沒有一個公認的判定標準,比如在相同時間內,溫度持續波動過大或過小是否也應該判定為異常,這也是在對時間序列進行數據挖掘中,仍需解決的問題。下一步將針對上述的問題,結合實際數值和預測偏側,繼續優化該模型,使該模型能夠更準確、更全面地處理時序數據中的異常情況。