序列異常檢測

tankII發表於2021-09-09

序列在現實世界中是非常常見的一種資料形式,即在時間維度上感測器採集的資料流。我們最常見的序列資料像語音,自然語言,影片等訊號,它們的共同點就是有很強的上下文。一般而言,任何高階有效的模型在處理這種資料時都會考慮這種上下文關係,充分挖掘潛藏的時空相關性,以對資料進行建模,比如。而異常呢,一般在不同場景中有不同的定義,比如一個心臟跳動的訊號,在平穩中突然跳動。那麼這個跳動就是異常,任何高階的系統都會捕捉到異常並報警。無論是哪種異常,在計算機的世界裡,無非就是在特徵維度張成的空間中,根據相應的度量形式尋找遠離簇的孤立點。其實,異常檢測在現實世界中有著廣泛的應用,並在各領域扮演著重要的角色,比如網路入侵,欺詐檢測,影片監控等。
本文主要討論在序列資料中如何建立有效的非監督模型去發現異常。非監督的框架在現實世界中更加有效,因為資料的標籤很難有效得到。總之,這類問題有3個挑戰:

  • 噪聲:任何系統都存在噪聲,當然噪聲有不同的表現形式。正因為噪聲的存在,使得某些正常資料看似異常,給該類問題帶來挑戰。

  • 時間相干性:由於存在很強的上下文關係,因此異常檢測會面臨相關性挑戰。另外,序列資料一般會隨著時間不斷演變進化;更有甚者,異常/正常也會隨著時間演變。比如,心臟跳動訊號,平穩中出現跳動,跳動中突然平穩。

  • 資料維度:比如在影片監控中,我們面臨的資料是高維的。設計的模型一方面能應對這種高維資料,一方面得有時間複雜度的把控。

下面介紹3篇文獻,學習他們的建模方法。其中,一篇基於傳統的類似,另兩篇基於比較火的RNN和LSTM模型。
第一篇文獻是國內中山大學在視覺領域-前景檢測方面的研究成果,。總的來說,提出的方法最核心的思想即是在一個定義的隱空間中考慮時間相干性;並提出了模型在線上檢測中的更新機制。我們具體看一下建模過程:
V={v1,v2,⋯,vn}V={v1,v2,,vn}表示在nn個連續幀中相同位置處的資料,其中vi∈RmviRm表示在第ii幀的當前位置處提取的特徵向量。該特徵向量是在以該位置為中心的小立方體(比如3×3×53×3×5pixels)中提取類似於local ternary patterns (LTP)的特徵。在這個特徵向量空間中,作者採用了一組正交基C∈Rm×dCRm×d來表示其中的點,並刻畫序列資料的一致性:

vi=Czi+wivi=Czi+wi


其中zizi為係數,wiwi為誤差項。在係數層這個隱空間中,作者採用了矩陣A∈Rd×dARd×d來表徵資料的動態性,並刻畫序列資料的時間相干性:

zi+1=Azi+nizi+1=Azi+ni


最終的問題形式化為:

minC,A,Z12n∑i=1n∥vi−Czi∥22+∥zi−Azi−1∥22minC,A,Z12ni=1nviCzi22+ziAzi122


因此,解決這類問題的一個嚴峻挑戰-時間相干性,就轉化為了在觀測資料下,求解資料一致性矩陣CC和時間相干性矩陣AA。該問題的求解採用交替最佳化的策略,ZZ和 (C,AC,A)。比如在當前資料VnVn下,求解CnCn:

Cn=argminCn|Vn−Cn[z1,⋯,zn]|Cn=argminCn|VnCn[z1,,zn]|


上述問題可透過對VnVn的奇異值分解求解。對於AnAn:

An=argminAn|[z2,⋯,zn]−Cn[z1,⋯,zn−1]|An=argminAn|[z2,,zn]Cn[z1,,zn1]|


檢測部分:當有新的資料vn+1vn+1時,即可透過Cn,An,ZnCn,An,Zn求解重構誤差判斷其是否是異常。並更新模型,比如更新AA:

[zn−l+2,⋯,zn+1]=An+1[zn−l+1,⋯,zn][znl+2,,zn+1]=An+1[znl+1,,zn]


ll表示最近觀測的樣本數,即span of observations。


第二篇文獻為TIP2017年上的文章。這個工作與上一個工作有著異曲同工之妙,同樣是在隱層空間中考慮時間相關性;上一篇用矩陣AA來線性刻畫,那麼這篇文章這是用迴圈神經網路來非線性刻畫。模型的層級結構如下:
圖片描述
透過上圖可知,該模型包含兩部分:去噪自動編碼器(DAE)和迴圈神經網路(RNN)。其中DAE主要用來提取特徵,捕捉正常資料和異常資料間最本質的區別;RNN則充分利用上下文,並使學習器應對時間維度上的演變更加穩健。
h層為自動編碼器的隱層,這裡不做詳細介紹。下面我們主要看RNN,與標準的迴圈神經網路不同,作者簡化了其形式,即當前狀態僅取決於上一個狀態:

u(t)=σ(Wuuu(t−1)+buu)u(t)=σ(Wuuu(t1)+buu)


在各狀態間同樣權值共享。那麼u^(t)u^(t)呢:

u^(t)=σ(Whuu^(t−1)+bhu)u^(t)=σ(Whuu^(t1)+bhu)


最終的損失函式:

L=12∑t=1T(u(t)−u^(t))2L=12t=1T(u(t)u^(t))2


上述即為模型的整個圖結構(graph)。訓練過程如下:
首先,單獨訓練DAE,學習引數Wvh,bvhWvh,bvh,得到h層的輸出;
然後,根據損失函式,學習引數Whu,bhu,Wuu,buuWhu,bhu,Wuu,buu
最終,fine-tune,透過損失函式,學習所有引數。
在測試階段,只需根據DAE的重構誤差來判斷是否異常。


第三篇文獻為ICCV2015年上的文章Unsupervised Extraction of Video Highlights Via Robust Recurrent Auto-encoders。這個工作與上一個工作類似,同樣是在隱層空間中考慮時間相關性;用LSTM而不是迴圈神經網路來非線性刻畫。模型的層級結構如下:
圖片描述
上圖中(a)為影片幀序列,在一段時間內用3D CNN提取特徵;紅色虛線上是自動編碼器,而在自動編碼器的隱層(d)用LSTM刻畫時間維度上的相干性。異常是否的判斷同樣考慮重構誤差。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1795/viewspace-2801188/,如需轉載,請註明出處,否則將追究法律責任。

相關文章