vlambda博客
学习文章列表

AAAI AIOps案例:无监督多指标异常检测及诊断


简    介

本文介绍一篇来自 AAAI 19 的时间序列异常检测工作:A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis in Multivariate Time Series Data这篇工作延续了使用正常数据对 AutoEncoder 进行训练,使 AutoEncoder 拟合正常数据特征,而后使用未知数据数据通过 AutoEncoder 后的重建误差大小区分异常数据和正常数据的思路,提出了一种使用 Conv-LSTM 结构的新方法,称为 MSCRED。与之前工作相比,MSCRED 有两处创新点: 首先, 通过计算多元时间序列两两之间的协方差将多元时间序列数据转换为多分辨率特征矩阵,再将特征矩阵作为 AutoEncoder 结构的输入。其次,在网络结构方面,它综合使用了卷积层、LSTM 层和注意力机制构造 Encoder;使用图像分割中常规的手段,在 Decoder 中将 Encoder 输出的特征图与上一级输出级联后再进行解卷积以逐级重建特征图,以此增加网络的拟合能力。在一份人工数据和一份从真实发电站场景上采集得到的数据上,MSCRED 都表现出了优于基线模型的准确率。



背景
真实世界运行的系统,例如发电厂、可穿戴设备等产生的时间序列数据的规模正在急剧增长,从这些为监控系统运行情况而采集的数据中推断出特定时刻系统的异常是对系统进行及时的维护和修复所必须的。例如,如果能从发电厂传感器输出数据中及时发现设备故障,就有可能避免断电引发的危险和损失。但是,简单的故障告警往往不足以解决现实世界中复杂的问题。第一,我们需要细粒度的警告,通过根因分析定位具体哪一条或哪几天时间序列数据中包含异常,以方便维护人员介入后能高效地对系统进行检测和修复;第二,我们需要区分不同严重程度的异常,对于程度较轻,有可能通过系统自动修复的异常和程度较重,需要维护人员立刻介入的异常,如果使用完全相同的警告,就有可能对维护人员造成不必要的负担,造成资源的浪费。
这篇文章假设异常的严重程度与异常的持续时间相关,即假定严重的异常总是对系统造成更长时间的影响。在如图所示的一组数据中, 红圈圈出的 A1 和 A2 都是异常数据,由于 A2 的持续时间长于 A1,A2 是严重程度更高的异常。

AAAI AIOps案例:无监督多指标异常检测及诊断


由于标注数据的成本高昂,通常很难获取大规模的已标注数据。如何使用大量无标注的数据,实现对异常的检测和诊断,使算法能在定位异常的同时输出关于异常根因和严重程度的信息,就是本文要研究的问题。
相关工作

多元时间序列的异常检测是一个快速发展的领域。在深度学习方法得到广泛应用之前,传统的异常检测方法可以分为三类:
  • 基于某种距离度量计算样本间距离,例如 kNN。

  • 基于无监督聚类。

  • 估计正常样本分布的概率密度,例如 One-Class SVM。

由于聚类通常也是通过计算样本间的某种距离度量来完成的,第一类思路和第二类思路的区别只是在对未知数据进行推断时是否需要保留训练样本,使用聚类方法的话,保留的是训练得到的模型参数。DCN 延续了这两类思路,通过结合 AutoEncoder 和 k-means 来同时获得高质量的降维和低维聚类结果,换言之,它通过训练神经网络得到用于聚类的距离度量。而 DAGMM 则延续了第三类思路,通过结合 AutoEncoder 和 GMM 模型,来同时获得高质量的降维和低维分布概率密度。
对时间序列中的时序关系进行建模也是一个经典的问题,传统方法包括自回归滑动平均模型 (ARMA) 等。深度学习领域中则通常使用 LSTM 神经网络层来对捕捉时间序列中的时序依赖关系。
挑战
  • 多元时间序列中同时包含时序依赖和特征间的相互关系,因此将适用于非时序数据的算法直接用于时序数据很有可能会因为不能提取时序信息而失效。

  • 实际应用中的多元时间序列通常会含有噪声,噪声会影响时序预测模型的泛化能力,例如自回归滑动平均模型(ARMA) 和 LSTM 自动编解码器等,从而使其检测精度下降。

  • 真实应用场景对于细粒度的异常结果有实际的需求,细粒度则包含根因分析和严重程度判断两个方面,现有的根因方法,如 RCA 等,对于噪声敏感,因此不能解决这一问题。

模型框架

预处理

与之前工作不同的是,本文并没有直接将时序数据送入模型中,而是首先构造特征矩阵。对于长度为 T,包含 n 个特征的时间序列数据,在每一个时间点 t (t < T), 取长度为 ω 的数据段,对 n 个特征两两计算内积,得到大小为 n*n 的特征矩阵。这反映了在 t 时刻观察到的过去 ω  时间范围内的系统状态。对于数据中的每个时间点都进行相似的计算,我们就把大小为  t*n  的时间序列转换为了大小为 t*n*n 的特征矩阵,使用公式写出

AAAI AIOps案例:无监督多指标异常检测及诊断

其中 AAAI AIOps案例:无监督多指标异常检测及诊断 表示第  i  个特征在 时刻的取值。 如果对 ω 取不同的值,就可以 得到包含不同时间长度信息的特征 矩阵,将这些特征矩阵作为同一张图不同的通道堆叠在一起,就可以得到包含不同时间尺度信息的特征图。
这种特征图构造方法有三个优点。
  • 首先,如果不同特征上的噪声是彼此无关的,相关计算可以消除这些噪声的影响,这可以消除一部分与感兴趣的系统状态无关的噪声,例如传感器的测量误差等。

  • 第二,可以通过观察特征图上各个位置的重建误差分布便捷地对产生异常的特征进行定位,如果单个特征中出现异常,那么其在特征图上对应的一行和一列很可能会出现很大的重建误差。

  • 第三,可以通过比较不同时间尺度特征矩阵的重建误差推断误差的严重程度,如果短时间尺度的特征矩阵重建误差较大,而长时间尺度的特征矩阵的重建误差并不显著,那么就可以认为这是一次持续时间较短的异常。

当然,这种构造方法的潜在问题则是增大了输入数据的规模,从而增加了模型的计算量。

网络框架

算法使用如图所示的结构进行降维和重建。Encoder 和 Decoder 分为彼此对称的多级。在 Encoder 的每一级中,模型首先让原始特征图或上一级输入经过一层卷积,而后将输出结果通过 Conv-LSTM 层,最后使用注意力机制从 Conv-LSTM 各步的隐藏层状态中获取当级输出特征。在 Decoder 的每一级,首先将 Decoder 上一级的输出特征和 Encoder 对应一级的输出特征级联,再经过一层反卷积得到输出。逐级重建得到原始特征图,并使用特征图重建误差的 2 范数作为训练的目标函数。


AAAI AIOps案例:无监督多指标异常检测及诊断


通过卷积层,模型试图捕捉时序数据中各特征间的关系,通过 Conv-LSTM 层,模型试图进一步捕捉数据中时序相关的关系。Decoder 使用 Encoder 中每一级提取的特征而不是仅依靠最后一级的特征的做法,与物体分割领域的做法是相似的,这使得模型能综合利用不同尺度的信息对数据进行重建。


实验结果

本文将 MSCRED 和多个基线模型进行了比较。分别使用了一个手工生成的数据集和一个从发电厂传感器中采集的数据进行实验。两个数据集的相关参数可见于下图。


AAAI AIOps案例:无监督多指标异常检测及诊断


用于比较的基线模型包括:
  • OC-SVM(Manevitz and Yousef 2001): 作为分类模型的代表,通过学习一个决策函数判断样本属于正常类的似然来进行异常检测。

  • DAGMM(Zong et al. 2018): 作为密度估计模型的代表,通过拟合正常数据分布,并计算样本概率密度进行异常检测。

  • ARMA(Hamilton 1994): 作为传统时序数据预测模型的代表,通过使用当前数据预测未来数据,通过误差来进行异常检测。

  • LSTM-ED(Cho et al. 2014): 作为深度学习方法进行时序数据预测的模型的代表,思路与 ARMA 类似。在 Decoder 的 LSTM 结构中,重建是通过显式使用历史数据对当前数据进行预测完成的。

实验结果显示 MSCRED 相比于基线模型显著地提升了预测准确率, 在两个实验数据集上,MSCRED 分别提升了 23.8% 和 15.5% 的 F-1 分数。


AAAI AIOps案例:无监督多指标异常检测及诊断


同时,本文还通过实验说明了构造特征矩阵的方法可以有效地对异常进行细粒度分类。下图是在两个数据集上使用由不同时间长度的特征矩阵构造得到的重建误差作为异常判据的效果。简单来说,使用较短时间长度构造的特征矩阵的重建误差作为判据能很好地检验出各种持续时间长度的误差;而使用较长时间长度构造的时间矩阵则对持续时间短的异常不敏感。比较各层特征矩阵的重建误差就可以获得异常的持续时间,本文认为这也是异常严重程度的度量。

AAAI AIOps案例:无监督多指标异常检测及诊断


同时,通过特征矩阵中重建误差的分布,也可以定位异常特征,如图所示,出现明显重建误差的行和列对应的就是出现异常的特征。


AAAI AIOps案例:无监督多指标异常检测及诊断


如下图所示,本文也通过实验研究了噪声对异常检测算法的影响,通过在人工生成数据中调整噪声强度,本文证实 MSCRED 相较于 ARMA 和 LSTM-ED,对于噪声有更高的鲁棒性,在数据中噪声强度比较大的情况下,仍能相对更好地对数据中的时序关系进行捕捉。



实验证实,构造特征矩阵的方法不但能提供更高质量的正常数据特征,从而获得更精准的异常检测结果,也能根据重建误差在矩阵中的分布获得更细粒度的异常检测结果,同时能够消除部分噪声对算法性能的干扰。
总结
本文使用层叠的多时间尺度特征矩阵来刻画多元时间序列的特征,通过 Conv-LSTM 结构的 AutoEncoder 来学习正常多元时间序列中的特征间关系和时序关系。通过特征矩阵的重建误差矩阵的二范数和重建误差分布,本文分别实现了粗粒度的异常判别和细粒度的异常诊断。实验说明,这种算法相比已有的算法,可以取得更精确的异常检测和更细粒度的异常诊断结果,同时对于噪声有更强的鲁棒性。

论文题目:deep neural network for unsupervised anomaly detection and diagnosis in multivariate time series data
 




智能运维前沿

介绍世界范围内智能运维的前沿进展

推动智能运维算法在实践中落地和普世化

长按二维码,关注我们