基於概率建模的多維時間序列的異常檢測


 

摘要:亞馬遜提出的deepar算法基於seq2seq模型對單維時間序列進行建模、預測,基於預測結果對時間序列中的異常點進行識別,但這種方法不適用於多維度的時間序列建模。在利用IoT+AI對現實世界中的物理設備進行異常檢測的過程中,一個設備的運轉/健康狀態往往是由一系列指標共同決定的,指標之間並非相互獨立的關系。本文吸收deepar算法的概率建模思想,以電機設備為例,提出一個對多維度指標進行異常檢測的神經網絡算法。

主要原理:

1、使用編碼器將多維度時間序列編碼為一個語義向量,編碼器可以是一個LSTM網絡或者卷積網絡;

2、解碼器(一個MLP)對該向量進行解碼,將其映射為兩個參數,分別是:當前時刻多維指標的均值向量和協方差矩陣,這兩個參數表征了一個多維高斯分布;

3、概率層攝取高斯分布的參數,計算當前時刻設備狀態的概率密度的負對數,通常認為異常狀態所對應的概率密度值應遠小於正常狀態,因此通過為該輸出設置閾值,即可用於異常檢測;

4、訓練過程,只需最小化模型輸出即可;

通過輸出多維高斯分布的均值向量和協方差矩陣對設備狀態的概率密度進行刻畫,面臨的一個數學問題是,協方差矩陣必須為對稱正定矩陣,如果直接通過MLP將語義向量映射為一個方陣,則無法滿足對稱正定約束,也無法訓練。

解決這個問題的方法為cholesky分解,對稱正定矩陣總是可以分解為一個對角線元素全為正的上/下三角矩陣及其轉置的乘積,反之也成立。

因此,我們在解碼器層,不直接輸出協方差矩陣,而是輸出precision矩陣(協方差矩陣的逆)的cholesky分解,並保證cholesky分解的對角線元素大於0即可(softplus),進一步可計算得到precision矩陣。

我們仍然使用一個MLP(cov_net)將輸入映射為一個方陣,但是只用其上三角部分,並對對角線部分作softplus轉換,保證其非負性,作為precision矩陣的cholesky分解。

在概率層,協方差矩陣行列式的計算,可直接使用cholesky分解的對角線乘積的平方即可。

然后,在概率層計算真實數據的負對數似然。

最后模型的優化,只需最小化模型輸出即可,通過自定義以下損失函數,訓練時將truth設置為0即可達到優化的目的。

與deepar算法的比較:

1、deepar針對單維度時間序列進行建模,本算法針對多維序列進行建模;

2、deepar是一個seq2seq模型,本算法也是encoder-decoder架構,但是只對單點進行建模;

3、deepar輸出時間序列的預測值,本算法輸出的是數據的負對數似然,即本算法將deepar中概率計算過程從loss拿到了概率層;

4、異常檢測方式:deepar使用ancestral sampling重復多次采樣,通過計算采樣值的上下百分位數作為異常檢測的邊界,這樣的方法存在兩個問題:誤差累積和計算量大;針對多維數據,無法采用這樣的方式,因為多維空間要比一維空間稀疏得多,要想用一系列采樣值來表征一個多維分布,樣本量必須充分大,這在計算上是不可行的,因此本算法采用單步預測方式,避免了采樣帶來的問題。

5、deepar向前預測時間序列的未來值,本算法在給定序列值的前提下計算其“合理性”;

6、deepar要求序列未來時刻的協變量是必須是可預知的,本算法無此要求。

 

以下為將本算法應用於實時電機異常檢測的整體過程。

總體流程:

 

 

詳細過程:

原理:

本文提出一種基於編碼器、解碼器、概率層的三層神經網絡結構,對電機的狀態進行條件概率建模:

其中,Z代表要建模的目標變量,X代表協變量,下標代表時刻。

主要步驟如下:

  1. 對實時電機狀態數據流進行特征提取,如三相電流和、day of week、hour of day等;
  2. 特征提取后,對電機狀態數據流進行緩存,獲得長度為k的電機狀態時序數據,時序數據中既包含了電機的當前時刻狀態,也包含了電機的歷史狀態數據;
  3. 將電機狀態時序數據划分為目標變量序列Zt-k: t和協變量序列Xt-k: t。目標變量指要對其進行建模的變量,表征了電機的健康狀態,可以包括電機溫度、電機震動、鏈條震動、三相電流等;協變量表示電機當前所處的工作模式等非指示電機健康狀態的變量,可以包括R位置值、day of week、hour of day等;
  4. 將序列數據轉換為待預測的目標數據Zt和上下文序列數據{Zt-k: t-1,  Xt-k+1: t};
  5. 編碼器基於一維卷積神經網絡,將待檢測的當前時刻電機狀態的上下文序列數據{Zt-k: t-1, Xt-k: t}編碼為一個一維向量Encoded;
  6. 解碼器包含兩個全連接神經網絡,分別負責將編碼器的輸出Encoded解碼為一個概率分布的位置參數和形狀參數,對本文而言,使用多維高斯分布對電機狀態進行建模,解碼器的輸出為多維高斯分布的均值向量miu和協方差矩陣covariance;
  7. 概率層以解碼器的輸出作為概率分布參數,建立當前時刻電機狀態的多維高斯概率分布Gaussian;
  8. 計算電機當前時刻目標變量實際值的概率密度的負對數P;
  9. 概率層輸出的概率密度P和閾值T比較,超出閾值則判定為異常,否則判定為正常;

原理框圖如下,其中各個變量的含義為:

X:協變量

Z:目標變量,也即要進行概率建模的變量

t:當前時刻

k:序列長度

Encoded:對序列的編碼

miu:高斯分布的均值向量

covariance:高斯分布的協方差矩陣

Gaussian:高斯分布表示的概率層

P:目標變量概率密度的負對數

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM