哈尔滨工业大学学报  2024, Vol. 56 Issue (5): 1-11  DOI: 10.11918/202212029
0

引用本文 

胡智超, 余翔湛, 刘立坤, 张宇, 于海宁. 基于上下文生成对抗网络的时间序列异常检测方法[J]. 哈尔滨工业大学学报, 2024, 56(5): 1-11. DOI: 10.11918/202212029.
HU Zhichao, YU Xiangzhan, LIU Likun, ZHANG Yu, YU Haining. A time series anomaly detection method based on contextual generative adversarial network[J]. Journal of Harbin Institute of Technology, 2024, 56(5): 1-11. DOI: 10.11918/202212029.

基金项目

国家重点研发计划(2018YFB1800702)

作者简介

胡智超(1990—),男,博士研究生;
余翔湛(1973—),男,教授,博士生导师

通信作者

余翔湛,yxz@hit.edu.cn

文章历史

收稿日期: 2022-12-09
基于上下文生成对抗网络的时间序列异常检测方法
胡智超, 余翔湛, 刘立坤, 张宇, 于海宁     
哈尔滨工业大学 网络空间安全学院,哈尔滨 150001
摘要: 时间序列的异常检测是网络服务保障、数据安全检测、系统监控分析等应用中所依赖的一项关键技术。为解决在实际场景的时间序列异常检测中由于时间序列上下文的模糊性、数据分布的复杂性以及异常检测模型的不确定性所带来的异常检测结果的有效性、合理性、稳定性等不足的问题,本文提出了一种新的基于上下文生成对抗网络的时间序列异常检测方法AdcGAN。首先,通过处理历史数据,提取用于生成时序数据的条件上下文;然后,采用条件生成对抗网络的设计策略,使用条件上下文,构建上下文生成对抗网络,实现对任意时刻数据的条件分布预测,同时AdcGAN采用Dropout近似模型不确定性,使用概率分布代替点估计作为预测结果;接着,从观测的差异(用期望偏差表示)和模型的不确定性(用预测方差表示)两个方面来衡量异常;最后,提出基于数据统计信息的异常阈值自动设置方法,减少手动调节的参数量。实验结果表明,与同类基准算法进行对比,在NAB数据集中的47个真实时序数据上,本文提出的AdcGAN可以有效地检测出时序数据中的异常,在大多数评价指标上都优于其他基准方法,并且具有更好的稳定性。
关键词: 时间序列异常检测    生成对抗网络    模型不确定性    生成模型    深度学习    
A time series anomaly detection method based on contextual generative adversarial network
HU Zhichao, YU Xiangzhan, LIU Likun, ZHANG Yu, YU Haining     
School of Cyberspace Science, Harbin Institute of Technology, Harbin 150001, China
Abstract: Time series anomaly detection is a key technology relied upon in applications such as network service, data security, and system monitoring. In order to address the limitations of effectiveness, rationality and stability in anomaly detection results caused by the fuzziness of time series context, complexity of data distribution, and the uncertainty of anomaly detection models in practical scenarios, this paper proposes a new anomaly detection method (AdcGAN), based on contextual generative adversarial network. Firstly, AdcGAN extracts conditional context for generating time series data by processing historical data. Secondly, AdcGAN constructs a context generative adversarial network following conditional generative adversarial network strategy to achieve conditional distribution prediction of the data at any moment. Meanwhile, AdcGAN uses Dropout to approximate model uncertainty and replacing point estimates with probability distribution as prediction result. Then, anomalies are measured based on the differences in observations (represented by the expected deviations) and the uncertainty of the model (represented by prediction variances). Finally, an automatic method for setting anomaly thresholds based on statistical information of the time series data is proposed to reduce the number of manually adjusted parameters. Our experimental results on 47 real-time series data of the NAB dataset compared with baselines show that, compared to similar benchmark algorithms, the proposed AdcGAN method can effectively detect anomalies in time series data. It outperforms other benchmark methods in most evaluation metrics and achieves better stability.
Keywords: time series anomaly detection    GAN    model uncertainty    generative model    deep learning    

随着互联网技术的快速发展,社会生活的各个领域都逐步进入开放化、智能化、便利化的数字生态阶段。海量的时序数据不断的产生,从时间维度上反映了不同场景的状态变化,在数据监控分析中,该变化与服务稳定性、数据安全性、系统可靠性等密切相关。时间序列异常检测可以及时地检测出时序数据中的异常变化,从而发现异常事件,并通过及时地处置与修复,有效地减少损失与影响。因此是网络服务保障、数据安全检测、系统监控分析等应用中所依赖的一项关键技术,已经成为当前国内外时间序列研究中的热门课题[1-4]

由于异常标签的缺乏,时间序列的异常检测通常被视为一个无监督的机器学习任务[5-6]。传统的方法主要有基于统计模型(如ARIMA、GARCH)[7-8]、基于聚类(如K-Means、EM、SVM)[9-12]、基于相似性度量[13]、基于降维(如PCA)[14]等方法。然而随着时序数据复杂性的增加,传统方法逐渐难以满足异常检测的性能要求。所以,越来越多的深度学习方法被应用到时间序列的异常检测研究中,包括:基于预测的方法(如LSTM、MLP)[15-16]、基于重构的方法(如全连接自动编码器Dense AE、稀疏自动编码器Sparse AE)[17-20]等。这些方法着重从不同的角度量化了正常数据与异常数据之间的差异,被广泛使用。由于生成对抗网络(generative adversarial network,GAN)在数据生成类任务中取得了十分不错的效果[21-22],部分研究人员引入GAN来提升正常数据预测或重构的有效性,从而提高异常检测效果,比如:TadGAN[23]、MAD-GAN[24]、TAnoGAN[25]等。还有一些研究人员探索了如何通过结合其他学习方式来提升异常检测效果,其中以迁移学习为主。基于迁移学习的异常检测方法[26]使用数据迁移和特征迁移来增强异常检测效果。在提高时序建模效果的同时,研究者还探索了多维时间序列的异常检测方法,通过对多维时间序列间的关系分析增强时序异常检测的效果[27-28]

然而,时间序列的异常检测是特别具有挑战性的,原因有二:1)在复杂的时间序列上,数据在时间维度上有着模糊的时间上下文以及复杂的数据分布,现有的异常检测方法并不能很好捕捉这种时间上下文以及对时间序列的真实分布进行建模,因此在异常检测的性能上还存在较大的提升空间;2)大多数的深度学习方法通过预测或者重构损失来衡量异常程度,这些方法仅考虑观测数据和预测数据的差异性,并没有考虑到模型本身引入的不确定性,因此异常检测结果的合理性和稳定性还需要提升。

本文提出了一种基于上下文生成对抗网络的异常检测方法(anomaly detection based on context generative adversarial network, AdcGAN),用于复杂时间序列数据的异常检测,见图 1

图 1 AdcGAN框架的概述 Fig. 1 Overview of AdcGAN framework

针对以上问题,本文提出的网络设计如下:首先,通过数据上下文处理,将时序数据转换成条件上下文的形式。然后, 提出了上下文生成对抗网络,通过扩展GAN学习指定上下文条件下的时间序列数据分布,为了减少深度学习模型不确定性带来的影响,该方法增加Dropout网络层对其进行模拟,从而学习时序数据的条件生成分布。以输出的概率分布代替点估计,增加了模型预测的可信度和鲁棒性。最后,提出基于数据统计信息的自动阈值方法为不同时间序列设置异常阈值,避免了过多地手动调参。在真实的监控数据集上测试,实验结果表明该方案对于时间序列具有良好的异常检测效果,并且增强了异常检测的鲁棒性。

1 数据上下文处理

T={t1, t2, …, tN}是有序的时刻集合,长度为NX是目标随机变量,表示在时刻集合T上观测得到的时序数据,记为

$ X_n=\left\{x_1, x_2, \cdots, x_n, \cdots\right\} \quad 1 \leqslant n \leqslant N $ (1)

该序列的长度为N。对于任何时刻t,其真实值与之前的t-1时刻有关。时间序列上的异常检测问题,要求学习这样一个函数fXY,其中Y∈{0, 1}。输入是时间序列Xn,输出是序列中每个项目的异常标签。Yt=1表示时刻t是异常的,否则t是正常的。此外,函数gYW,以异常检测结果作为输入,并根据异常窗口大小找到异常区间。如果区间内的所有时刻都被标记为异常,那么该时间区间就是异常的。

通常,在时序的处理中,将对过去的依赖简化为过去一段时间来简化问题,记w是简化过去时刻依赖性的固定窗口大小。则目标函数为

$ \begin{aligned} f\left(x_t\right) \Leftrightarrow & f\left(x_t \mid x_1, x_2, \cdots, x_{t-1}\right) \simeq \\ & f\left(x_t \mid x_{t-w}, x_{t-w+1}, \cdots, x_{t-1}\right) \end{aligned} $ (2)

对于一个时间序列中的任何时刻t,它都依赖于之前的t-1时刻。这种无限长的依赖关系给序列建模带来了困难。在本文中,采用序列数据建模中的一般处理方法,使用固定的时间窗口w来约束依赖关系。约束w表示用过去的w时刻代替对以前t-1时刻的依赖。称xtw~xt-1xt的预测上下文,即生成条件,表示为c。在训练和检测阶段,第一步是提取序列数据的上下文条件。本文使用过去的w窗口数据作为时刻t的生成条件,在时间序列上有唯一的观测值对应。此外,为了捕捉序列的长期趋势并减少平滑序列中的噪声影响,在时序处理时使用步长,根据步长对序列进行间隔处理。步长一般取值大于1,在AdcGAN中设置步长为3。

通过上述对数据上下文的处理,为每一个时刻提取依赖上下文作为数据的生成条件。上下文由过去w个时刻决定。这样,将时间序列数据转化为“条件与观测值”的组合对,用于模型的训练和异常检测。

2 上下文生成对抗网络

本节通过生成对抗网络GAN学习时间序列数据的分布,然后结合Dropout模拟模型不确定性,从而获得每个时刻数据的条件分布。

2.1 基于GAN的数据分布学习

生成模型是学习真实数据分布的一种有效方法。GAN是训练生成模型的常用方法之一。它由2个对抗性模型组成:生成器模型G和判别器模型D。生成器G捕捉真实数据分布,判别器D估计样本来自训练数据(真实数据)而不是G(假数据)的概率。

生成器的目标是学习一个分布,从该分布中生成的数据可以迷惑判别器。为了在数据x上学习一个生成器分布pg,生成器建立了一个从先验噪声分布pz(z)到数据空间G(z; θg)的映射函数。判别器的目标是最大限度地区分真实数据和虚假数据。判别器D(x; θd)输出一个标量,代表x是真的概率。当x~pdata(x)时,它期望输出1;当x~pg(x)时,它期望输出0。

GD是同时训练的,目标是调整G的参数以最小化log(1-D(G(z))),调整D的参数以最大化log(D(x))

$ \mathscr{L}=\min \limits_G \max \limits_D V(D, G) $ (3)

损失函数$\mathscr{L}$等于

$ \begin{aligned} \mathscr{L}= & \boldsymbol{E}_{x-p_{\text {data }}(x)}[\log D(x)]+ \\ & \boldsymbol{E}_{z-p_z(z)}[\log (1-D(G(z)))] \end{aligned} $ (4)

GAN对GD的实现没有要求,它可以是一个任意的非线性映射函数,如多层感知机。这为扩展GAN提供了的灵活性。对于时间序列的预测,需要在给定的条件下产生预测值。因为原始的GAN过于自由,训练会很容易失去方向,从而导致不稳定又效果差。而条件GAN就是在原来的GAN模型中加入一些先验条件,使得GAN变得更加的可控制。具体来说,可以在生成模型G和判别模型D中同时加入条件约束来引导数据的生成过程。条件可以是任何补充的信息,如类标签、其他模态的数据等。然后这样的做法应用也很多,比如图像标注、利用文本生成图片等等。

本文提出了上下文GAN,它是一种设计用于时间序列的条件GAN[29]。在上下文GAN中,生成器和判别器都以一些额外的上下文信息作为条件。使用预测上下文c作为条件,通过输入c作为额外的输入条件。AdcGAN中生成器和判别器的结构见图 2

图 2 生成器和判别器的结构 Fig. 2 Architecture of generator and discriminator

其中,图 2左侧是条件生成器G,它使用随机噪声样本生成符合给定条件的数据;图 2右侧是条件判别器D,它判断数据是否来自真实数据分布并输出概率。使用向量连接操作来混合上下文和噪声、生成条件和观测值。生成条件c的大小取决于条件窗口大小的超参数w。AdcGAN中的2个条件对抗模型:生成器G和判别器D。具体说明如下。

1) 生成器:由LSTM和包含Dropout的全连接层构成。它使用一个序列数据作为条件,并使用LSTM提取得到上下文向量 c′。噪声z采用高斯分布,即z~N(μ, σ2)。从噪声分布中随机采样得到噪声向量,通过用c′整合噪声向量z形成新的输入。生成器的输出是由多个全连接层产生的,被称为假数据。优化时,生成器需要使得生成的数据可以迷惑判别器,最大化将生成数据判别为真实数据的概率。

2) 判别器:由LSTM和全连接层构成。输入为给定条件下的观测值:(a)如果观测值是生成器产生的,即x′t+1=G(z|c),则对应的分类标签为0。判别器的期望输出为0,即p(x=real)=0,优化时判别器需要最小化这个概率;(b)如果观测值来源于时间序列的观测,对应的分类标签为1,此时判别器的期望输出为1,即p(x=real)=1,优化时判别器需要最大化这个概率。

对抗性训练框架允许在如何组成上下文隐向量的设计上有相当大的灵活性。在生成器G中,将先验输入噪声pz(z)和c合并为联合隐向量表示。而在判别器G中,使用xc作为输入和判别函数。相比GAN,AdcGAN的目标函数将被更新为

$ \begin{aligned} \mathscr{L}= & \boldsymbol{E}_{x-\mathrm{P}_{\text {datata }}(x)}[\log D(x \mid c)]+ \\ & \boldsymbol{E}_{z-\mathrm{P}_z(z)}[\log (1-D(G(z \mid c)))] \end{aligned} $ (5)

在AdcGAN的训练阶段,输入是上下文条件和对应生成数据的组合CX,批次大小m,每次迭代判别器的训练次数k。输出是生成器G和判别器D。训练过程中,生成器G和判别器D以对抗的方式训练,直至收敛。在每个循环迭代中,先训练D,然后再训练G。具体算法实现流程如下:

Step 1    初始化生成器模型G和判别器模型D

Step 2    执行迭代训练:在迭代次数内,重复执行Step3~Step9,进行生成器和判别器的训练;

Step 3    首先执行判别器的训练:在训练次数k次内,重复执行Step4~Step7,不断更新判别器;

Step 4    从噪声先验分布pg(z)中采样m个噪声样本{z1, …, zm};

Step 5    从数据生成分布pdata(c, x)中采样m个样本{(c1, x1), …, (cm, xm)};

Step 6    使用m个噪声样本生成假数据{G(z1|c1), …, G(zm|cm)};

Step 7    更新判别器:$\nabla \theta_d \frac{1}{m} \sum\limits_{i=1}^m\left[\log D\left(x_i \mid c_i\right)+\log \left(1-D\left(G\left(z_i \mid c_i\right)\right)\right)\right]$

Step 8    然后执行生成器的训练:从噪声先验分布pg(z)中重新采样m个噪声样本{z1, …, zm};

Step 9    更新生成器:$\nabla \theta_d \frac{1}{m} \sum\limits_{i=1}^m \log \left(1-D\left(G\left(z_i\right)\right.\left.\left.c_i\right)\right)\right)$

Step 10    完成迭代训练后,返回G, D

对于任意时刻t,过去w个时刻组成了生成条件c,是生成器和判别器的主要输入。通过噪声分布z的随机采样,生成器G可以生成假数据x′t。真实的观测值xt为判别器D提供了正例样本,与生成器产生的负样本一起构成了GAN的训练集。通过生成器和判别器的不断对抗训练,最终生成器学习到了时间序列数据的近似生成分布。

2.2 考虑不确定性的条件分布

预测模型的不确定性是一个需要解决的重要问题。通常,贝叶斯概率理论为我们提供了有数学基础的工具来推理模型的不确定性,但这些工具通常会有较高的计算成本,并对非贝叶斯模型产生较大的破坏性。研究表明,在不改变模型或优化的情况下,可以将深度学习工具转化为贝叶斯模型[30]。在神经网络中使用Dropout(及其变体)可以被解释为概率模型的贝叶斯近似:高斯过程(Gaussian process, GP)。因此,可以在不增加计算复杂性或减低测试准确性的情况下,在深度学习模型中表示不确定性。

在预测分布时,生成器网络G的Dropout将保持开启,通过重复M次实验,对给定条件的预测结果进行采样。通过计算样本均值和方差对整体均值和方差进行估计,其中时间t的均值为

$ \mu_t \simeq \frac{1}{M} \sum\limits_{i=1}^M x_i=\frac{1}{M} \sum\limits_{i=1}^M G\left(z_i \mid c_i\right) $ (6)

基于平均值,时间t的方差可以通过以下方式估计:

$ \sigma_t^2 \simeq \frac{1}{M} \sum\limits_{i=1}^M\left(G\left(z_i \mid c_i\right)-\frac{1}{M} \sum\limits_{j=1}^M G\left(z_j \mid c_j\right)\right)^2 $ (7)

时间t的预测结果是一个以ct为已知条件的条件概率分布,可以认为它近似地服从高斯分布,描述为p(xt|ct)~N(μt, σt2)。

3 时序异常检测

一个数据集的真实数据分布是可学习的基于这样的前提假设:用于训练的时间序列中无异常点,都是正常数据,或者异常的数量在一定的比例之下,并没有对正常的分布产生过大的改变。这种情况下,模型可以学习到有效的数据分布,并可以通过阈值来区分异常点和非异常点。因此,在基于预测的异常检测方案中,异常大小取决于2个因素:一是观测值与估计值的偏离程度,二是预测模型对真实值估计的不确定性。因此在进行时序异常检测时,首先进行时序数据的条件数据分布预测,然后进行异常评分,再输出异常结果。

3.1 时序数据的分布预测

一个关于时间序列的概率预测例子如图 3所示。对于每个时刻t,下限和上限被设定为μt±3*σt,中间的下限和中间的上限被设置为:μt±2*σt。其中:

图 3 AdcGAN对时间序列进行概率预测 Fig. 3 Probabilistic prediction of AdcGAN on time series

1) 图 3(a)中,时刻1950~2150之间的正常区域A,最大的σ是0.119 9;

2) 图 3(b)中,时刻3600~3800之间的警告区域B,最大的σ是0.410 5;

3) 图 3(c)中,时刻4950~5150之间是警告区域C,最大的σ是0.296 3。

4) 图 3(d)中,时间序列的平均σ为0.108 1。

从图中可以明显看出,对于区域BC这2个警告区域,很有可能是异常点所在的区间,因为其中的数据具有明显的上升和下降变化。而且,警告区域的方差和波动边界都明显高于正常区A。方差和边界说明了模型对该区域进行预测时的不确定性,同时也反映了这一段时间区域的分布与整个时间序列的真实分布之间的差异。

在给定的生成条件下,使用生成器估计任意时刻的真实值分布。在异常评分阶段,生成器G将运行M次,从数据生成分布中采样。因此,可以根据这些样本计算出p(xt|c)。

3.2 基于预测的异常检测

通过评价观测值与真实值的估计之间的差异程度以及模型对预测结果的不确定程度对时刻t的异常进行打分。对于任意的时刻t,根据公式和可以计算得到它的预测分布,因此它的观测值与真实值的偏离程度可以表示为期望E(xtXt)。t时刻的异常得分定义如下:

$ A_t=\sigma_t^* \frac{\left|E\left(x_t-X_t\right)\right|}{\boldsymbol{D}}=\sigma_t^* \frac{\left|x_t-\mu_t\right|}{\boldsymbol{D}} $ (8)

其中, A是所有时间序列的异常得分,σ是预测方差,D 是从训练数据中得到的时间序列的值边界。对时序进行异常检测时,输入是上下文条件与数据组合 C, X ,以及数据生成器G。输出是异常得分列表 A 。具体算法实现流程如下:

Step 1    记待检测时间序列的长度n,使用C的长度进行初始化;

Step 2    初始化异常得分列表 A ,所有时刻异常初始得分为0;

Step 3    对于时间序列中的每个时刻i,重复执行Step4~Step10更新其异常得分;

Step 4    获取第i项的数据及其生成上下文:(c, x)←(C [i], X [i]);

Step 5    从噪声分布pz(z)中采样z

Step 6    创建空的生成结果集合:$\boldsymbol{x}^{\mathrm{g}} \longleftarrow \varnothing$

Step 7    重复执行M次生成器得到给定条件下的生成分布:x gx gG (z|x)

Step 8    针对生成结果集合,根据公式(6)计算xg的预测均值μ

Step 9    针对生成结果集合,根据公式(7)计算xg的预测方差σ

Step 10    计算第i项的异常得分:Aiσ*|xμ|/ D

Step 11    完成所有时刻的异常评分,返回 A

Ap作为时间序列Xn的异常标签。考虑到异常阈值τ,如果 Atτ,那么Atp=1表示时间t是一个异常值。通常情况下,τ取决于专家的经验或模型的性能。本文设计了一个自动阈值方法:记μA 的平均值,σA 的标准差,那么阈值可以是τstd=μ+2*σ或者τp=percentile(A, 99.9),见式(9):

$ \tau= \begin{cases}\tau_{\mathrm{p}} & \text { if } \tau_{\text {std }}>\max (\boldsymbol{A}) \\ \max \left(\tau_{\mathrm{p}}, \tau_{\text {std }}\right) & \text { else }\end{cases} $ (9)

给定异常窗口大小W,如果一个时间点在异常点扩展的时间跨度内,则该时间点被视为异常点[31]。这种处理鼓励异常的早期发现,以及惩罚异常的延时发现。通过异常点的评分和异常窗口策略,AdcGAN最终输出所有的异常点和异常区间检测结果。

4 实验结果

使用本文提出的AdcGAN方法,针对多样化的时序数据进行异常检测,通过与基准方法的对比分析,验证了所提方法的有效性。

4.1 数据集说明

本文在NAB数据集[31]上进行实验评估。NAB由一系列真实采集和人工合成的时间序列组成,带有异常点和异常区间的标注。本文选择了所有的真实类别数据用于实验,一共5种类别,共计47个数据序列,321 206个数据点和31 077个异常点。真实数据来源于多种实际场景:

1) 云监控(AWSCloudWatch):AWS服务器的CPU占用率、网络流量以及硬盘读写等指标;

2) 广告(AdExchange):点击指标包括每千次展示费用和每千次点击费用;

3) 多源(KnownCause):多种已知异常原因的时序数据,包括云主机监控、工业传感器和出租车搭乘数据等;

4) 交通量(Traffic):由特定传感器上报的道路交通信息的实时监控,包括道路占用率、车辆速度和旅行时间等;

5) 推特(Tweets):每隔5 min统计的大型上市公司话题次数。

每个数据序列文件包含有2个字段: 时间戳和监控数值,监控数值均是一维数值。一组数据样例见表 1,数据来源于亚马逊云主机的监控,监控数值为主机的CPU占用率。

表 1 NAB时序数据样例(ec2_cpu_utilization_5f5533) Tab. 1 Example of NAB time series data(ec2_cpu_utilization_5f5533)

每个序列的数据文件在异常标签文件中对应有异常的记录,该字段记录了该数据序列中所有异常区间的起始和终止时间戳。本文以无监督的方式训练所有模型,仅在评估检测性能时使用异常标签信息。

数据集中不同类型数据的基本信息汇总见表 2。对于每个数据集,为了了解异常识别的难易程度以及数据集统计特征对异常识别结果的影响,分别统计了超过2个标准差及3个标准差的数据所占比例,分别记为2σ和3σ

表 2 数据集NAB的统计信息 Tab. 2 Summary of each dataset in NAB
4.2 实验设置

本文选择了9种方法作为基准进行比较:LOF[32]、OCSVM[33]、IF[34]、RRCF[35]、MLP[15]、LSTM[36]、DenseAE[19]、TAnoGAN[25]和GMM[37]。本节的实验环境是基于Python 3.9.7、pytorch 1.8.0和cuda 11.1构建。对于每种检测方法,有以下训练设置:

1) 使用时间序列数据的80%的作为训练数据集,另外20%作为验证数据集。

2) 时间序列的依赖窗口大小设定为w=19,表示使用过去19个时刻预测未来时刻。对于使用小窗口作为输入的检测方法,窗口大小为w+1=20。

3) 为了将输入序列转换成适当的格式:向量或条件观测对,在训练阶段将步长设置为3,在检测阶段设置为1。

4.3 AdcGAN的异常检测结果

为了说明AdcGAN的检测结果,对一个有3个异常区间的时间序列进行了异常检测,其结果见图 4。待检测时间序列源自亚马逊数据中心的一台服务器的监控数据,该数据持续记录CPU使用情况,直至完全系统故障而结束,故障由AWS API服务器的记录故障导致的。共有3个已知的异常区间。

图 4 AdcGAN异常检测样例 Fig. 4 An example of anomaly detection using AdcGAN

通过将预测的均值与实际时间序列数据进行比较,共有5个检测到的异常点和3个异常区间,与3个真实的异常区间相对应。警告点的异常得分接近于阈值τ,也值得关注。

4.4 性能比较

使用4个标准评价指标F1-Score(F1)、召回率Recall(R)、精确度Precision(P)、准确度Accuracy(Acc)作为异常检测的评价指标。与基准方法的比较结果见表 3图 5,其中平均值MEAN代表了每种方法在整个NAB数据集上的平均表现。

表 3 AdcGAN与基准方法的比较 Tab. 3 Comparison of AdcGAN and baselines
图 5 AdcGAN与基准方法的异常检测性能 Fig. 5 Performance of AdcGAN and baseline methods

由于异常检测的特殊性,数据中正常类别的比例要远远高于异常类别。然而,由于异常的重要性,异常数据的识别比正常数据具有更高的价值,所以F1、精确度和召回率通常比准确率更重要。从异常检测的结果中,可以看出:

1) 整体性能方面:在整个数据集上,AdcGAN在大多数评价指标上优于其他方法。它取得了最高的F1(0.662)、召回率(0.814)和精确度(0.620),与第二优的方法相比,分别提高了12.4%的F1、8.4%的召回率和4.3%的精确度。所有方法的准确率都很接近,GMM是最优的(0.889),AdcGAN也取得了接近的准确率(0.878)。

2) 稳定性方面:对于每个类别,AdcGAN都是性能最优的或者接近最优。在5个类别的数据集上,以F1为例,取得了4项第一,1项第二。同时,其F1波动是最小的,说明了AdcGAN取得较好效果的同时,也保持了很好的稳定性。

3) 时间上下文处理方面:同为基于预测的方法,由于检测对象是时间序列,LSTM取得了比MLP更好的结果,说明对时间上下文的处理可以有效提升时间序列的建模效果。而在AdcGAN的上下文生成对抗网络中,同时使用了LSTM和MLP作为基础组件处理序列数据和模型输出,分别提升了12.4%和14.1%的F1,说明了上下文生成对抗网络的设计对于时间序列数据分布的学习是有效的。

4) 与重构模型对比:AdcGAN与DenseAE都是生成式模型,前者利用数据生成进行预测,后者利用数据生成来评估重构损失。从结果上看,使用条件GAN的预测数据分布并捕捉模型不确定性的AdcGAN,相较于DenseAE在各项指标上表现更优,其中F1提升0.207,召回率提升0.356,精准度提升0.07,准确率提升0.01,说明了在本文的场景下GAN的数据生成方法是更优的。

5) 与其他GAN方法对比:相较于TAnoGAN,AdcGAN的优势明显,提升了20.1%的F1、21.8%的召回率、23.3%的精准度以及4.8%的准确率。在TAnoGAN里学习的是一段窗口数据的生成分布,在其异常评价时还需通过梯度下降的方法求解生成向量,因此在异常检测的效率上比较繁琐,AdcGAN的上下文生成设计使得其在效率和性能上都有提升。

从实验结果的对比分析中可以知道,基于GAN的AdcGAN可以有效地进行时间序列上的异常检测。虽然在整体上表现最佳,但是在一些分类数据上表现并非最佳,说明还存在改进的空间。现在对异常检测性能的影响因素做一些讨论:

1) 数据分布:不同类型数据的数据分布具有差异性,这对模型的合理架构、类型提出了不同的要求,通用模型是困难的。AdcGAN由于采用了对抗生成的思想,在不同类型的数据上均取得不错的性能的同时波动最小,说明有着很好的稳定性。

2) 数据特征:模型性能与时间序列数据集的值分布也有一定关系,对不同数据的异常占比以及Nσ进行统计分析,结果见图 6

图 6 数据集统计特征和AdcGAN的F1关系 Fig. 6 Relation between statistics of datasets and F1 of AdcGAN

从图中可以看出,随着异常占比或超出Nσ的比例增多,AdcGAN的性能降低。这是由于大部分的时序异常中的异常值、异常行为、异常模式都包含了异常值或者由异常值引起。因此,异常或Nσ占比的增多破坏了真实分布的可学习性。

3) 异常阈值:阈值并不会影响异常的评分,但是会决定异常点和异常区间的标记。图 4中的预警点是一个典型的例子,它是否是异常点取决于更多的先验知识。在不同的场景下,什么程度的偏差被认定为异常,这是一个领域的问题,与专家知识更相关。本文提出的自动阈值方法是一种基于数据统计信息的合理方式,在具体应用中可以结合专家知识进行调整。

作为一种基于预测的异常检测方法,AdcGAN的应用场景不局限于异常检测,还可以用于时间序列的预测。每个时间点的输出是一个概率分布,而不是一个单一的值,这使得结果更适用于需要决策的场景。异常检测结果可以从两个方面来解释:真实数据与预测值之差的期望值表示观察中的数据误差,而预测分布的方差意味着模型本身对给定条件数据进行预测的不确定性。本文提出的AdcGAN将这两者结合起来,对异常的判断更加合理,为后续的异常解释提供了依据。

5 结论

1) 在将时序数据转换为条件上下文的基础上,构建了上下文生成对抗网络,利用GAN和Dropout结合的方法,减少了模型不确定性的影响,并输出了任意时刻时序数据的条件分布。

2) 根据时序数据的条件分布,从观测数据偏差和模型预测不确定性2个方面评价数据的异常程度,增加了异常检测结果的可信度和鲁棒性,根据数据统计信息为不同的时间序列自动设置异常阈值,最终完成每个时刻的异常检测。

3) 通过实验验证,本文提出的AdcGAN方法有效提升了针对时间序列数据的异常检测效果,在整体性能上要明显优于其它基准算法,与第二好的方法相比,分别提高了12.4%的F1、8.4%的召回率和4.3%的精确度,并且在不同类别的数据上,具有最小的F1波动,保持了很好的稳定性。

参考文献
[1]
SOLDANI J, BROGI A. Anomaly detection and failure root cause analysis in (micro) service-based cloud applications: a survey[J]. ACM Computing Surveys, 2022, 55(3): 1.
[2]
CUI Lei, QU Youyang, XIE Gang, et al. Security and privacy-enhanced federated learning for anomaly detection in IoT infrastructures[J]. IEEE Transactions on Industrial Informatics, 2021, 18(5): 3492.
[3]
丁小欧, 于晟健, 王沐贤, 等. 基于相关性分析的工业时序数据异常检测[J]. 软件学报, 2020, 31(3): 726.
DING Xiaoou, YU Shengjian, WANG Muxian, et al. Abnormal detection of industrial time series data based on correlation analysis[J]. Journal of Software Science, 2020, 31(3): 726.
[4]
FERRAG M A, MAGLARAS L, MOSCHOYIANNIS S, et al. Deep learning for cyber security intrusion detection: approaches, datasets, and comparative study[J]. Journal of Information Security and Applications, 2020, 50: 1.
[5]
YAN Xudong, ZHANG Huaidong, XU Xuemao, et al. Learning semantic context from normal samples for unsupervised anomaly detection[C]//Proceedings of the AAAI Conference on Artificial Intelligence. Palo Alto: AAAI Press, 2021, 35(4): 3110
[6]
ERGEN T, KOZAT S S. Unsupervised anomaly detection with LSTM neural networks[J]. IEEE Transactions on Neural Networks and Learning Systems, 2019, 31(8): 3127.
[7]
WELLS M. Applied econometric time series[J]. Journal of the American Statistical Association, 1995, 90(431): 1135.
[8]
ZENG Jia, ZHANG Lei, SHI Gaotao, et al. An ARIMA based real-time monitoring and warning algorithm for the anomaly detection[C]//2017 IEEE 23rd International Conference on Parallel and Distributed Systems (ICPADS). Shenzhen: IEEE, 2017: 469
[9]
ESTER M, KRIEGEL H P, SANDER J, et al. A density-based algorithm for discovering clusters in large spatial databases with noise[C]//Proceedings of 2nd International Conference Knowledge Discovery and Data Mining. Palo Alto: AAAI Press, 1996, 96(34): 226
[10]
KEOGH E, CHAKRABARTI K, PAZZANI M, et al. Locally adaptive dimensionality reduction for indexing large time series databases[C]//Proceedings of the 2001 ACM SIGMOD International Conference on Management of Data. New York: ACM, 2001, 30(2): 151
[11]
KISI O, PARMAR K S. Application of least square support vector machine and multivariate adaptive regression spline models in long term prediction of river water pollution[J]. Journal of Hydrology, 2016, 534: 104. DOI:10.1016/j.jhydrol.2015.12.014
[12]
SCHÖLKOPF B, WILLIAMSON R, A SMOLA, et al. Support vector method for novelty detection[J]. Advances in Neural Information Processing Systems, 1999, 12: 1.
[13]
CHANDOLA V, MITHAL V, KUMAR V. Comparative evaluation of anomaly detection techniques for sequence data[C]//2008 Eighth IEEE International Conference on Data Mining. Pisa: IEEE, 2008: 743
[14]
SERPEN G, AGHAEI E. Host-based misuse intrusion detection using PCA feature extraction and kNN classification algorithms[J]. Intelligent Data Analysis, 2018, 22(5): 1101. DOI:10.3233/IDA-173493
[15]
FARZAD A, GULLIVER T A. Log message anomaly detection with fuzzy C-means and MLP[J]. Applied Intelligence, 2022, 1.
[16]
WU Di, JIANG Zhongkai, XIE Xiaofeng, et al. LSTM learning with Bayesian and Gaussian processing for anomaly detection in industrial IoT[J]. IEEE Transactions on Industrial Informatics, 2019, 16(8): 5244.
[17]
GAO Honghao, QIU Binyang, DURAN BARROSO R J, et al. TSMAE: A novel anomaly detection approach for internet of things time series data using memory-augmented autoencoder[J]. IEEE Transactions on Network Science and Engineering, 2022, 1.
[18]
BORGHESI A, BARTOLINI A, LOMBARDI M, et al. Anomaly detection using autoencoders in high performance computing systems[C]//Proceedings of the AAAI Conference on Artificial Intelligence. Palo Alto: AAAI Press, 2019, 33(1): 9428
[19]
THILL M, KONEN W, WANG H, et al. Temporal convolutional autoencoder for unsupervised anomaly detection in time series[J]. Applied Soft Computing, 2021, 112: 1.
[20]
陈磊, 秦凯, 郝矿荣. 基于集成LSTM-AE的时间序列异常检测方法[J]. 华中科技大学学报(自然科学版), 2021, 49(11): 35.
CHEN Lei, QIN Kai, HAO Kuangrong. A time series anomaly detection method based on integrated LSTM-AE[J]. Journal of Huazhong University of Science and Technology (Natural Science Edition), 2021, 49(11): 35.
[21]
HAN Xu, CHEN Xiaohui, LIU Lipin. GAN ensemble for anomaly detection[C]//Proceedings of the AAAI Conference on Artificial Intelligence. Palo Alto: AAAI Press, 2021, 35(5): 4090
[22]
KLIGER M, FLEISHMAN S. Novelty detection with GAN[Z]. arXiv: 1802. 10560, 2018: 1
[23]
GEIGER A, LIU Dongyu, ALNEGHEIMISH S, et al. TadGAN: time series anomaly detection using generative adversarial networks[C]//2020 IEEE International Conference on Big Data (Big Data). Atlanta: IEEE, 2020: 33
[24]
LI Dan, CHEN Dacheng, JIN Baihong, et al. MAD-GAN: multivariate anomaly detection for time series data with generative Adversarial Networks[C]//International Conference on Artificial Neural Networks. Munich: Springer International Publishing, 2019: 703
[25]
BASHAR M A, NAYAK R. TAnoGAN: time series anomaly detection with generative adversarial networks[C]//2020 IEEE Symposium Series on Computational Intelligence. Canberra: IEEE, 2020: 1778
[26]
MICHAU G, FINK O. Unsupervised transfer learning for anomaly detection: application to complementary operating condition transfer[J]. Knowledge-Based Systems, 2021, 216: 1.
[27]
ZHAO Hang, WANG Yujing, DUAN Juanyong, et al. Multivariate time-series anomaly detection via graph attention network[C]//2020 IEEE International Conference on Data Mining (ICDM). Sorrento: IEEE, 2020: 841
[28]
SU Ya, ZHAO Youjian, NIU Chenhao, et al. Robust anomaly detection for multivariate time series through stochastic recurrent neural network[C]//Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. New York: ACM, 2019: 2828
[29]
MIRZA M, OSINDERO S. Conditional generative adversarial nets[Z]. arXiv: 1411. 1784, 2014: 1
[30]
GAL Y, GHAHRAMANI Z. Dropout as a bayesian approximation: representing model uncertainty in deep learning[C]//Proceedings of the 33rd International Conference on Machine Learning. New York: JMLR, 2016: 1050
[31]
AHMAD S, LAVIN A, PURDY S, et al. Unsupervised real-time anomaly detection for streaming data[J]. Neurocomputing, 2017, 262: 134.
[32]
BREUNIG M M, KRIEGEL H P, NG R T, et al. LOF: Identifying density-based local outliers[C]//Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data. New York: ACM, 2000: 93
[33]
Ma J, PERKINS S. Time-series novelty detection using one-class support vector machines[C]//Proceedings of the International Joint Conference on Neural Networks. Portland: IEEE, 2003, 3: 1741
[34]
LIU F T, TING Kaiming, ZHOU Zhihua. Isolation forest[C]//2008 Eighth IEEE International Conference on Data Mining. Pisa: IEEE, 2008: 413
[35]
GUHA S, MISHRA N, ROY G, et al. Robust random cut forest based anomaly detection on streams[C]//Proceedings of the 33rd International Conference on Machine Learning. New York: JMLR, 2016: 2712
[36]
HOCHREITER S, SCHMIDHUBER J. Long short-term memory[J]. Neural Computation, 1997, 9(8): 1735.
[37]
BLANCO R, MALAGóN P, BRIONGOS S, et al. Anomaly detection using gaussian mixture probability model to implement intrusion detection system[C]//International Conference on Hybrid Artificial Intelligence Systems. León: Springer International Publishing, 2019: 648