Deep Learning for Time Series Anomaly Detection: A Survey(2024.10) 阅读笔记
Introduction
1960s 就有异常检测的概念了。近年来,时间序列异常检测(TSAD)受到越来越多的关注,因为在城市管理、入侵检测、医疗风险和自然灾害等多个领域的适用性越来越高。
近年来的survey只有:Deep learning for anomaly detection in time-series data: Review, analysis, and guidelines.(2021)但是最近又新出了很多模型。
本文的 contributions,因为太久没有综述了,所以每个部分都是 contributions:
- 分类:基于预测、基于重构、基于表示、基于混合方法。
- 还可以继续细分,根据所采用的不同神经网络架构。
- 跟踪了2024.10之前的 TSAD 的最新技术
- benchmark 和 dataset 的更新
- 讨论了异常发生的基本原理。
- 评估指标和可解释性。
Background
时序数据
- 单变量时序 univariate time series (UTS) dim=1
- 多变量时序 multivariate time series (MTS) dim=2
时序分解
Yadolah Dodge. 2008. Time Series. Springer New York, New York, NY, 536–539.
时序可以分为4个分量:
- Secular trend:代表了数据随时间的一般模式。
- Seasonal variations:季节性总是以固定频率出现。
- Cyclical fluctuations:除去以上两种的周期信息,人为因素造成的。
- Irregular variations:除去以上三种的不规则信息。
每个分量都可能偏离正常行为。
时序异常
异常:观测点偏离了一般分布。
异常类型
UTS 的 异常:
- 点异常:全局的、上下文的
- 段异常:季节性、趋势性、形状
- global 异常:模型输出值与实际点值之间的差异大于阈值。
∣xt−x^t∣>threshold|x_t-\hat{x}_t|>threshold∣xt−x^t∣>threshold - Contextual 异常:与相邻时间点的偏差为上下文偏差。它们偏离了其邻居的值。
threshold ≈λ × var(Xt−w:t)threshold~\approx\lambda~\times~\mathrm{var}(X_{t-w:t})threshold ≈λ × var(Xt−w:t) - Seasonal 异常:实际季节性和模型输出值之间的差距。
disss(S,S^)>thresholddiss_s(S,\hat{S})>thresholddisss(S,S^)>threshold - Trend 异常:导致数据永久移动到其平均值的事件,并产生趋势性的转变。
disst(T,T^)>thresholddiss_t(T,\hat{T})>thresholddisst(T,T^)>threshold - Shapelet 异常:独特的时间序列子序列模式。
dissc(C,C^)>thresholddiss_c(C,\hat{C})>thresholddissc(C,C^)>threshold
MTS 的异常也和 UTS 异常的分类类似。除此之外,MTS 还需要考虑多个维度之间的相互依赖关系,可以是线性的或非线性的。如果这些相关性被打破,MTS 将表现出广泛的异常行为。
- 度量间异常:变量之间相关性被打破
max∀j,k∈D,j≠kdisscorr(Corr(Xj,Xk),Corr(Xt+δtj:t+w+δtjj,Xt+δtk:t+w+δtkk))>threshold\max_{\forall j,k\in D,j\neq k}\operatorname{diss}_{{\mathrm{corr}}}\left(\operatorname{Corr}\left(X^{j},X^{k}\right),\operatorname{Corr}\left(X_{{t+\delta t_{j}:t+w+\delta t_{j}}}^{j},X_{{t+\delta t_{k}:t+w+\delta t_{k}}}^{k}\right)\right)>\mathrm{threshold}∀j,k∈D,j=kmaxdisscorr(Corr(Xj,Xk),Corr(Xt+δtj:t+w+δtjj,Xt+δtk:t+w+δtkk))>threshold
j和k代表不同的维度,corr算相关度,w是时间窗口, δtj\delta t_{j}δtj 和 δtk\delta t_{k}δtk 是移动的长度。
方法
分为三类:基于预测的、基于重构的和基于表示的。
学习方案:
训练数据往往有非常少量的异常被标记。因此,大多数模型都试图学习正常数据的表示或特征。
有四种学习方案:无监督、监督、半监督和自监督。
- 监督学习:学习基于训练集中的所有标签的异常和正常数据之间的边界。
- 无监督学习:不使用标签,不区分训练和测试数据集。难以评估模型好坏。
- 半监督学习:数据集仅由标记正常数据组成的情况,定义正确模式,并将偏差检测为异常。
- 自监督学习:模型从输入数据生成自己的监督信号,而不需要显式标签。
训练集 | 测试集 | 备注 | |
---|---|---|---|
监督 | 数据有y/n标签 | 数据有y/n标签 | |
无监督 | 数据无标签 | 无标签 | 不区分训练集,测试集 |
半监督 | 只有y标签的数据 | ||
自监督 | 数据无标签 | 根据输入自己生成监督信号 |
模型的输入:一般用一个时间窗口内的时序数据作为输入,包含历史信息。滑动窗口。
模型的输出:某个时间点/子序列,是/否异常。(二分类问题)
模型一般分为:学习模块,异常评分模块。也可以端到端的训练学习异常分数。
异常评分模块:需要建立阈值。建立这些阈值的常用方法包括非参数动态阈值 (NDT) 和峰值重叠阈值 (POT),这有助于将分数转换为最终标签。
异常分数:由 loss function 来定义,而基于预测/重构/表征的模型,loss function 不一样。
基于重构的模型的异常分数用的是重构概率,基于预测的用的是预测误差。
基于预测的方法
使用模型学习邻近点/窗口,预测未来的点/子序列。将预测值和实际值之间的差距进行比较。
- RNN
- LSTM
- LSTM-AD
- DeepLSTM
- LSTM-PRED
- GRU
Ergen 和 Kozat 在无监督框架中提出了基于 LSTM 的异常检测算法,以及半监督和完全监督的框架。为了检测异常,它使用由 One Class-SVM (OC-SVM) 和支持向量数据描述 (SVDD) 算法实现的评分函数。在这个框架中,LSTM 和 OC-SVM(或 SVDD)架构参数使用明确定义的目标函数联合训练,利用两种联合优化方法。
评价:传统的单类分类器是为固定维度数据开发的,难以捕获时间序列数据中的时间依赖性。
最近的一个名为THOC的模型通过使用包含多层扩张RNN[27]和分层SVDD[165]的复杂网络来解决这个问题。
-
CNN
-
TCN 使用扩展卷积来适应时间序列数据。
TimesNet [181] 是用于综合时间序列分析的通用深度学习模型。它将一维时间序列数据转换为二维张量,有效捕获复杂的时间模式。TimesBlock 的模块化结构,它结合了参数高效的初始块 -
GNN
近年来,研究人员提出了从MTS中提取空间信息,形成图结构,将TSAD转换为使用gnn基于这些图检测异常的问题。 -
HTM
-
Transformer
基于重构的方法
基于重构的模型可以提供更准确的异常检测,因为它们可以访问当前的时间序列数据。
但是缺点是有检测延迟。适用于需要高精度但是对延迟不敏感的场景。
AntoEncoder
- 自动编码器 (AE)
encoder+decoder
encoder 将输入转换为低维表示,decoder 从这个表示中重建输入。
Zt−w:t=Enc(Xt−w:t,ϕ),X^t−w:t=Dec(Zt−w:t,θ)Z_{t-w:t}=Enc\left(X_{t-w:t},\phi\right),\quad\hat{X}_{t-w:t}=Dec\left(Z_{t-w:t},\theta\right)Zt−w:t=Enc(Xt−w:t,ϕ),X^t−w:t=Dec(Zt−w:t,θ)
训练目标是:最小化重构误差。
(ϕ∗,θ∗)=argminϕ,θErr(Xt−w:t,Dec(Enc(Xt−w:t,ϕ),θ))(\phi^*,\theta^*)=\arg\min_{\phi,\theta}\mathrm{Err}\left(X_{t-w:t},Dec\left(Enc\left(X_{t-w:t},\phi\right),\theta\right)\right)(ϕ∗,θ∗)=argϕ,θminErr(Xt−w:t,Dec(Enc(Xt−w:t,ϕ),θ))
为了改善表征,提出了一些技术: - Sparse Autoencoder (SAE)
- Denoising Autoencoder (DAE)
- Convolutional Autoencoder (CAE)
异常分数anomaly score由重构误差定义:ASw=∣∣Xt−w:t−Dec(Enc(Xt−w:t,ϕ),θ)∣∣2AS_w=||X_{t-w:t}-Dec(Enc(X_{t-w:t},\phi),\theta)||^2ASw=∣∣Xt−w:t−Dec(Enc(Xt−w:t,ϕ),θ)∣∣2
DAGMM(Deep Autoencoding Gaussian Mixture Model)在潜在空间之前使用高斯混合估计 MTS 输入样本的概率。
USAD (Unsupervised Anomaly Detection) 使用对抗训练的AEs来放大MTS中的重构误差,区分异常,促进快速学习。
CAE (convolutional autoencoder) ,卷积序列到序列自动编码器以高并行性捕获时间依赖性。具有卷积层和注意力的门控线性单元 (GLU) 捕获局部模式,识别周期性等重复子序列。
Variational Autoencoder
VAE是将AE和 平均场变分贝叶斯 结合的。
和AE的区别在于:
- VAE是将时序编码成分布;
- AE是将时序编码成一个低维的点。
VAE与AE整体结构类似,不同的地方在于:
AE的Encoder直接输出code,
VAE的Encoder输出的是若干个正态分布的均值(μ1,μ2,...,μn)(μ_1,μ_2,...,μ_n)(μ1,μ2,...,μn)和标准差(σ1,σ2...σn)(σ_1,σ_2...σ_n)(σ1,σ2...σn),然后从每个正态分布N(μ1,σ21),N(μ2,σ22)...N(μn,σn2)N(μ_1,σ_2^1),N(μ_2,σ_2^2)...N(μ_n,σ_n^2)N(μ1,σ21),N(μ2,σ22)...N(μn,σn2)采样得到编码code(Z1,Z2...Zn)(Z_1,Z_2...Z_n)(Z1,Z2...Zn),再将code送入Decoder进行解码。
KL散度:通过使用正则化训练,避免了过拟合并确保潜在空间适合生成过程。
loss=∣∣Xt−w+1:t−g(Zt−w+1:t)∣∣2+KL(N(μx,σx),N(0,1))loss=||X_{t-w+1:t}-g(Z_{t-w+1:t})||^2+KL(N(\mu_x,\sigma_x), N(0,1))loss=∣∣Xt−w+1:t−g(Zt−w+1:t)∣∣2+KL(N(μx,σx),N(0,1))
- LSTM-VAE
- InterFusion hierarchical Variational Autoencoder (HVAE)
GAN
Transformer
- Anomaly Transformer
- TranAD
- Dual-TF 利用时间和频率信息检测时间序列数据异常的框架。
基于表示的方法
学习输入时间序列的丰富表示,然后可用于异常检测,预测,分类等下游任务。
对潜在空间中的学习表示进行异常检测。而不是原始序列。
Transformers
TS2Vec
CNN
- TF-C (Time-Frequency Consistency)
- DCdetector
- CARLA
- DACAD
多种方法组合
使用联合目标函数,可以同时优化这些组合模型。
dataset
- MTS:MSL、SMAP、SMD、SWaT、PSM和WADI。
- UTS:Yahoo、KPI、NAB和UCR。