序列异常检测
序列在現實世界中是非常常見的一種數據形式,即在時間維度上傳感器采集的數據流。我們最常見的序列數據像語音,自然語言,視頻等信號,它們的共同點就是有很強的上下文。一般而言,任何高級有效的模型在處理這種數據時都會考慮這種上下文關系,充分挖掘潛藏的時空相關性,以對數據進行建模,比如混合動態紋理模型。而異常呢,一般在不同場景中有不同的定義,比如一個心臟跳動的信號,在平穩中突然跳動。那么這個跳動就是異常,任何高級的系統都會捕捉到異常并報警。無論是哪種異常,在計算機的世界里,無非就是在特征維度張成的空間中,根據相應的度量形式尋找遠離簇的孤立點。其實,異常檢測在現實世界中有著廣泛的應用,并在各領域扮演著重要的角色,比如網絡入侵,欺詐檢測,視頻監控等。
本文主要討論在序列數據中如何建立有效的非監督模型去發現異常。非監督的框架在現實世界中更加有效,因為數據的標簽很難有效得到。總之,這類問題有3個挑戰:
- 噪聲:任何系統都存在噪聲,當然噪聲有不同的表現形式。正因為噪聲的存在,使得某些正常數據看似異常,給該類問題帶來挑戰。
- 時間相干性:由于存在很強的上下文關系,因此異常檢測會面臨相關性挑戰。另外,序列數據一般會隨著時間不斷演變進化;更有甚者,異常/正常也會隨著時間演變。比如,心臟跳動信號,平穩中出現跳動,跳動中突然平穩。
- 數據維度:比如在視頻監控中,我們面臨的數據是高維的。設計的模型一方面能應對這種高維數據,一方面得有時間復雜度的把控。
下面介紹3篇文獻,學習他們的建模方法。其中,一篇基于傳統的類似混合動態紋理模型,另兩篇基于比較火的RNN和LSTM模型。
第一篇文獻是國內中山大學在視覺領域-前景檢測方面的研究成果,Complex background subtraction by pursuing dynamic spatio-temporal models。總的來說,提出的方法最核心的思想即是在一個定義的隱空間中考慮時間相干性;并提出了模型在在線檢測中的更新機制。我們具體看一下建模過程:
V={v1,v2,?,vn}V={v1,v2,?,vn}表示在nn個連續幀中相同位置處的數據,其中vi∈Rmvi∈Rm表示在第ii幀的當前位置處提取的特征向量。該特征向量是在以該位置為中心的小立方體(比如3×3×53×3×5 pixels)中提取類似于local ternary patterns (LTP)的特征。在這個特征向量空間中,作者采用了一組正交基C∈Rm×dC∈Rm×d來表示其中的點,并刻畫序列數據的一致性:
其中 zizi為系數, wiwi為誤差項。在系數層這個隱空間中,作者采用了矩陣 A∈Rd×dA∈Rd×d來表征數據的動態性,并刻畫序列數據的時間相干性:
zi+1=Azi+nizi+1=Azi+ni
最終的問題形式化為:
minC,A,Z12n∑i=1n∥vi?Czi∥22+∥zi?Azi?1∥22minC,A,Z12n∑i=1n‖vi?Czi‖22+‖zi?Azi?1‖22
因此,解決這類問題的一個嚴峻挑戰-時間相干性,就轉化為了在觀測數據下,求解數據一致性矩陣 CC和時間相干性矩陣AA。該問題的求解采用交替優化的策略, ZZ 和 (C,AC,A)。比如在當前數據 VnVn下,求解 CnCn:
Cn=argminCn|Vn?Cn[z1,?,zn]|Cn=argminCn|Vn?Cn[z1,?,zn]|
上述問題可通過對 VnVn的奇異值分解求解。對于 AnAn:
An=argminAn|[z2,?,zn]?Cn[z1,?,zn?1]|An=argminAn|[z2,?,zn]?Cn[z1,?,zn?1]|
檢測部分:當有新的數據 vn+1vn+1時,即可通過 Cn,An,ZnCn,An,Zn求解重構誤差判斷其是否是異常。并更新模型,比如更新 AA:
[zn?l+2,?,zn+1]=An+1[zn?l+1,?,zn][zn?l+2,?,zn+1]=An+1[zn?l+1,?,zn]
ll表示最近觀測的樣本數,即span of observations。
第二篇文獻為TIP2017年上的文章Unsupervised Sequential Outlier Detection With Deep Architectures。這個工作與上一個工作有著異曲同工之妙,同樣是在隱層空間中考慮時間相關性;上一篇用矩陣AA來線性刻畫,那么這篇文章這是用循環神經網絡來非線性刻畫。模型的層級結構如下:
通過上圖可知,該模型包含兩部分:去噪自動編碼器(DAE)和循環神經網絡(RNN)。其中DAE主要用來提取特征,捕捉正常數據和異常數據間最本質的區別;RNN則充分利用上下文,并使學習器應對時間維度上的演變更加穩健。
h層為自動編碼器的隱層,這里不做詳細介紹。下面我們主要看RNN,與標準的循環神經網絡不同,作者簡化了其形式,即當前狀態僅取決于上一個狀態:
u(t)=σ(Wuuu(t?1)+buu)u(t)=σ(Wuuu(t?1)+buu)
在各狀態間同樣權值共享。那么
u^(t)u^(t)呢:
u^(t)=σ(Whuu^(t?1)+bhu)u^(t)=σ(Whuu^(t?1)+bhu)
最終的損失函數:
L=12∑t=1T(u(t)?u^(t))2L=12∑t=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刻畫時間維度上的相干性。異常是否的判斷同樣考慮重構誤差。
總結
- 上一篇: 201804计算机网络原理自考,计算机网
- 下一篇: C语言开平方与求幂次