?

基于注意力變分自編碼器的時序異常檢測算法

2024-03-20 09:17陳述團
設備管理與維修 2024年4期
關鍵詞:變分編碼器注意力

陳述團

(諸城市交通運輸局,山東濰坊 262200)

0 引言

時間序列異常檢測廣泛應用于各類設備的不同場景中,包括但不限于異常交通流量檢測、工業設備狀態監測、金融欺詐檢測、異常流量檢測、各類故障診斷以及汽車的日常監測和維護,隨著多元高頻傳感器的快速發展,不同的應用系統在運行過程中能夠收集大規模的時間序列數據[1],因此,有效發現系統中的異常模式對于確保安全性并避免經濟損失至關重要。

然而,從大量且復雜的多元時間序列數據中發現異常具有一定挑戰性。首先,需要確定異常的模式。異常也稱為離群值,這意味著根據情況觀察到的異常模式可能是不尋常、不規則、不一致或有缺陷的。此外,典型情況通常很復雜,難以定義什么是不尋?;蛞馔?。例如,風力渦輪機在不同天氣情況下以不同的模式運行,不同的運行模式并不一定代表其發生了某種異常。不僅如此,隨著多元高頻傳感器的全天候運行,海量監測數據中的異常模式通常是罕見的,這大大增加了標注異常標簽的成本。

現有基于時間序列的異常檢測方法主要集中于統計方法、傳統機器學習方法和基于深度學習的方法[2],其中機器學習方法,特別是基于深度學習的方法,因其強大的數據建模能力而取得了巨大成功。然而,大多數監督和半監督方法無法處理有限的標記數據,特別是動態異常,即訓練數據集中從未觀察到的新異常。因此,本文提出一種基于變分自編碼器的無監督時序異常檢測算法,該算法采用重建的思想來學習模型并重建出正常樣本,當已訓練好的模型無法重建某實例時,該實例則被視為異常。

1 算法理論

1.1 自動編碼器

AE(Auto-Encoder,自動編碼器)是一種基于無監督的數據維度壓縮和數據特征表達方法,在大部分應用場景中其網絡結構是通過神經網絡實現的。網絡模型由編碼器和解碼器網絡組成,編碼器網絡學習輸入的潛在表示并對輸入數據進行特征壓縮。解碼器的輸出目標為重建編碼器的輸入,通過輸入和重建之間的差異來確定重建誤差。自動編碼器有多種類型,但基本上遵循相同的構建模式,即在訓練過程中自動編碼器將重建誤差最小化為目標函數。

AE 通常用于數據生成,作為生成式模型,其解碼器可以基于人工分配的壓縮表示來生成輸出。

1.2 變分自動編碼器

VAE(Variational Auto-Encoders,變分自動編碼器)是基于貝葉斯推斷的自動編碼器變體,其結構如圖1 所示,其中Decoder 為解碼器部分、Encoder 為編碼器部分。

圖1 變分自動編碼器結構

它能夠對p(z)的底層分布進行建模,并通過引入一組潛在的變量z 來生成新數據。這個過程可以表達為:

由于z 是連續域,導致積分難以求解。相反,可以將單個點的邊際對數似然表示為:

其中,DKL是先驗pθ(z)與p(x|z)的變分近似qφ(z|x)的KL 散度;Lvae是根據Jensen 不等式得到的變分下界,φ與θ分別表示編碼器與解碼器的參數。

VAE 通過最大化對數似然的下界Lvae來優化參數φ與θ:

其中,第一項通過最小化近似后驗與潛在變量先驗之間的KL 散度來規范潛在變量z;第二項是通過最大化對數似然來重建x。

1.3 自注意力機制

Transformer 的提出給自然語言處理領域帶來革命性進展,引領了一系列語言模型的發展,其中核心部分為多頭自注意力機制,這使得模型在建模長序列時表現出非凡的效果。自注意力機制作為Transformer 中的核心構建模塊,能通過一定的方式建模計算序列中不同位點之間的關聯度,從而并行的得到序列位點之間的關聯關系,在準確率與計算效率方面明顯優于RNN與LSTM 等模型計算方式。

對于流經模型的序列數據,其輸入進行自注意力計算前的數據可以表示為X,通過3 個線性嵌入可以生成3 個權重矩陣,這3 個權重矩陣都是可學習的,表示為Wq、Wk、Wv,由輸入序列通過這3 個權重矩陣可以得到查詢向量q、鍵向量k、值向量v 所對應的矩陣Q、K、V,表示為:

通過Q 矩陣與K 矩陣相乘并流經softmax 處理后,可以得到序列間的相似度得分,最終通過與V 矩陣進行加權得到最終的注意力輸出。整個過程可以表示為:

其中dk是k 矩陣的維度。為了從多尺度學習到不同潛在空間中更加豐富的特征,在自注意力機制的基礎上又引入了多頭自注意力的計算方式,即在p 個頭上進行并行化計算,對于輸入需要使用p 個q、k、v 矩陣對其進行映射,最終輸出的MSA(Multi-head Self-Attention,多頭自注意力)是學習每個頭的權重并應用并行點積注意力后得到的結果。

2 基于變分自編碼器的異常檢測算法

2.1 模型算法

根據上述算法理論,使用自動編碼器結構能夠訓練得到一個學習了正常序列模式的算法模型,該模型在對異常序列進行重建時會表現出較大的重建損失,而變分自編碼器在自動編碼器的基礎上能夠對序列進行更好的建模,因此可以作為異常檢測算法的基礎模型。

依托于注意力機制對序列的建模能力,本文提出了一種注意力變分自動編碼器的時間序列異常檢測模型,在使用卷積神經網絡提取較長序列特征后,采用注意力機制在低維度進行全序列的關聯度建模。通過這種模式能夠較好地捕捉序列之間的依存關系,能提高整個變分自動編碼器特征提取與重建的性能。

本文采用10 層CNN(Convolutional Neural Networks,卷積神經網絡)與4 層注意力機制層來構建網絡模型,其中編碼器與解碼器各對應7 層(圖2)。注意力變分自編碼器模型的輸入層接受經過預處理后的時間序列數據,其可接受的數據量占5000 個位點,輸入模型前轉換為1*1*5000*batch size(批量大?。┑膹埩扛袷?,批量大小表示一次性傳播到網絡中的樣本數,兩次注意力層能一次性建模的位點數分別為832、276,稀疏表示(或瓶頸層)的設計大小為1*90*27,卷積層采用一維(1D)卷積,并配合有批處理歸一化和激活層,激活層采用tanh 激活函數用于在模型訓練中引入非線性,模型的解碼器部分(Decoder)是編碼器(Encoder)的逆對稱,其中模型的卷積層采用(3,3)、(5,5)、(7,7)和(9,9)四種不同大小的濾波器進行上采樣和下采樣。環境中進行訓練,訓練過程包括3 個階段:第一階段,將輸入信號(1*1*5000*batch size)被轉發到模型中進行重建,其中批量大小為100;第二階段,涉及基于均方誤差(MSE)和Kullback-Leibler(KL)散度損失找到輸入和輸出之間的差異;第三階段及最后階段涉及網絡模型的優化,通過反向傳播來傳遞損失并改變網絡的權重以減少損失的大小。該模型使用Adam 優化器進行訓練,dropout 設為0.5,每個epoch 的學習率為0.001。

圖2 基于注意力變分自編碼器的網絡模型

2.2 異常檢測流程

使用變分自動編碼器進行時間序列的異常檢測,主要分為3 步驟。

(1)第一步是構建好網絡模型。該網絡模型是基于本文提出的、基于注意力變分自動編碼器的時序異常檢測算法。

(2)第二步是將訓練集的數據按照原數據量的80%、20%進行劃分。其中,占比為80%的數據集單純用于模型訓練,這部分數據被輸送到網絡模型中進行訓練來確保網絡模型隨著迭代次數的增加而優化,隨著模型的訓練,重建損失也相應的減??;占比為20%的數據用來評估已訓練后的模型來確定異常閾值,在模型訓練之后,將來自隔離的正常狀態的20%數據輸入模型,并計算重建損失從而確定異常數據閾值。閾值是根據計算的重建損失分布計算的,它是平均值和3 個標準偏差的總和,表示為:

(3)第三步則是進行模型的測試。這一步是將帶有標簽的數據傳遞給模型并比較重建損失,重建損失低于計算閾值的信號被標記為正常狀態,否則為異常狀態,從而計算模型檢測異常的準確率。

簡單來說,該方法背后的原理是模型學習了它經過訓練和熟悉的數據的分布,并且無法重建任何其他不熟悉的分布?;谧兎肿跃幋a器的異常檢測算法流程流程如圖3 所示。

圖3 基于變分自編碼器的異常檢測算法流程

3 實驗分析

本實驗采用一套服務器監測數據集,它是一個記錄了服務器5 周監測時長的數據集。該數據集包含3組實體,自28 臺不同機器的數據組成,并提供標簽來表明某個點是否異常以及每個異常的維度。整個數據集的異常率占比4.1%,其中訓練集的時序步長為708 400 個時間步,測試集的步長為708 420 個時間步。

本實驗的硬件條件為,CPU 為AMD EPYC 7302 CPU@2 GHz、GPU 為NVIDIA GeForce RTX 3090 GPU、64G RAM,實現的模型基于Pytorch、CUDA 11.2、Python 3.8 環境完成。對于異常檢測的評價指標設定為精確率(Precision)、召回率(Recall)和F1 值(F1-score),計算方式可以表示為:

其中,TP 表示真正例、FP 表示假正例、FN 表示假反例,F1 是綜合考慮了精確率和召回率,調和二者的平均值。

在本實驗的數據集上,將基于注意力變分自編碼器的無監督時間序列異常檢測算法與現有的方法進行對比,這些模型包括密度估計模型LOF[3]、基于子序列的聚類模型OCSVM[3]、基于孤立森林算法的IForest[5]、變化點檢測和時間序列分割方法U-Time[6]以及基于自回歸重建的模型VAR[7],實驗結果如表1 所示。

表1 異常檢測實驗對比結果

實驗結果表明,本文方法在Precision、Recall 和F1-score 這3 個指標方面比現有方法均有提升。其中,對于基于傳統統計學及無監督聚類的3 種方法LOF、OCSVM、IForest 方法有大幅性能提升,這也得益于深度學習強特征提取的優勢;與時間序列分割的方法UTime 相比也有較大提升,這也驗證無監督學習方法在少標簽學習的過程中具有較強的優勢;本模型也與VAR 進行了對比,在Recall 與F1-score 上有明顯提升。這也驗證了本方法在模型設計方面的先進性。

4 結束語

針對各種應用場景中高通量多源異構時間序列的產生,現有的方法很難在無異常標簽或少量異常標簽的狀態下對異常情況進行準確識別,本文提出了一種無監督異常序列檢測方法,即基于注意力變分自編碼器的時序異常檢測算法,通過對正常序列重建的方法確定異常閾值?;谶@種思路設計了一套異常檢測流程,與現有的基于非重建的方法相比,其在準確度、召回率和F1 得分3 個方面的性能明顯提升。此外,通過在模型中引入自注意力機制,加強了對序列的特征關聯度計算,增強了模型對序列的特征提取以及序列重建能力,其較現有的3 種評估方法也有不同程度的提升,證明了本文方法的有效性。

猜你喜歡
變分編碼器注意力
讓注意力“飛”回來
逆擬變分不等式問題的相關研究
求解變分不等式的一種雙投影算法
基于FPGA的同步機軸角編碼器
關于一個約束變分問題的注記
“揚眼”APP:讓注意力“變現”
基于PRBS檢測的8B/IOB編碼器設計
一個擾動變分不等式的可解性
A Beautiful Way Of Looking At Things
JESD204B接口協議中的8B10B編碼器設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合