南京大学学报(自然科学), 2021, 57(6): 1042-1052 doi: 10.13232/j.cnki.jnju.2021.06.013

基于无监督对抗学习的时间序列异常检测

邵世宽1,2, 张宏钧1,2, 肖钦锋1,2, 王晶1,2,4, 刘晓辉,3,4, 林友芳1,2,4

1.北京交通大学计算机与信息技术学院,北京,100044

2.交通数据分析与挖掘北京市重点实验室,北京交通大学,北京,100044

3.中国民航信息网络股份有限公司,北京,100010

4.民航旅客服务智能化应用技术重点实验室,北京,100010

Time series anomaly detection based on unsupervised adversarial learning

Shao Shikuan1,2, Zhang Hongjun1,2, Xiao Qinfeng1,2, Wang Jing1,2,4, Liu Xiaohui,3,4, Lin Youfang1,2,4

1.School of Computer and Information Technology,Beijing Jiaotong University,Beijing,100044,China

2.Beijing Key Laboratory of Traffic Data Analysis and Mining,Beijing Jiaotong University,Beijing,100044,China

3.TravelSky Technology Limited,Beijing,100010,China

4.CAAC Key Laboratory of Intelligent Passenger Service of Civil Aviation,Beijing,100010,China

通讯作者: E⁃mail: xhliu@travelsky.com

收稿日期: 2021-09-06   网络出版日期: 2021-12-03

基金资助: 中国民航信息网络股份有限公司和民航旅客服务智能化应用技术重点实验室基金

Received: 2021-09-06   Online: 2021-12-03

摘要

时间序列异常检测是类别不均衡问题,异常现象少有发生,所以获取异常标签的成本高昂,因此基于无监督学习的时间序列异常检测方法更具有实用价值.然而,现有的时间序列异常检测方法存在三个缺陷:难以对复杂的时间序列进行建模、缺乏合理的缺失值处理机制和无法利用先验知识(例如少量的有标签异常).为了解决以上问题,提出一种基于生成对抗神经网络和自编码器的无监督时间序列异常检测模型SALAD (Stochastic Adversarial Learned Anomaly Detection).在原始空间结合生成对抗网络和自编码器网络并充分利用判别损失和绝对损失来完成数据重构;在隐空间中,为了使学习自编码器中的隐变量更紧凑地表示原始数据分布,引入生成对抗网络来约束隐变量的收敛,使其更接近先验分布;在训练过程中引入数据补全方法是一种更合理的缺失值处理机制;提出对比重构损失使SALAD能充分利用少量的有标签异常数据.在数据集上进行大量实验,结果表明,在完全无监督和使用部分异常标签的情形下,提出的模型的F1分数和现有的基线方法相比有明显的提升.

关键词: 时间序列 ; 异常检测 ; 自编码器 ; 生成对抗神经网络 ; 无监督学习

Abstract

Time series anomaly detection aims to detect anomalies from normal values giving observed time series. However,existing methods are difficult to model sophisticated time series since they are either non⁃stochastic or require explicit data posterior distribution. Also,those methods are in lack of mechanisms to handle missing values and to leverage prior knowledge (such as occasionally available labels). To address the above issues,this paper introduces SALAD (Stochastic Adversarial Learned Anomaly Detection),a novel unsupervised anomaly detection model based on generative adversarial networks for time series. In the original space,the generative adversarial network and the auto⁃encoder network are combined,and the discriminant loss and absolute loss are fully utilized to accomplish data reconstruction. In the hidden space,in order to learn a more compact stochastic representation of the distribution of the hidden variables in the auto⁃encoder to the original data,and the generative adversarial network is also introduced to constrain the convergence of the hidden variables so that they are closer to the prior distribution. The introduced data⁃imputation method introduced in the training process is a more reasonable mechanism for handling missing values. The proposed contrast reconstruction loss enables SALAD to make full use of the small amount of labeled anomalous data. Through extensive experimental results on the dataset of this paper,it is shown that the F1 scores of the model in this paper are significantly improved over the existing baseline methods in both the cases of completely unsupervised and using partial anomaly labels.

Keywords: time series ; anomaly detection ; auto⁃encoder ; generative adversarial neural network ; unsupervised learning

PDF (892KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

邵世宽, 张宏钧, 肖钦锋, 王晶, 刘晓辉, 林友芳. 基于无监督对抗学习的时间序列异常检测. 南京大学学报(自然科学)[J], 2021, 57(6): 1042-1052 doi:10.13232/j.cnki.jnju.2021.06.013

Shao Shikuan, Zhang Hongjun, Xiao Qinfeng, Wang Jing, Liu Xiaohui, Lin Youfang. Time series anomaly detection based on unsupervised adversarial learning. Journal of nanjing University[J], 2021, 57(6): 1042-1052 doi:10.13232/j.cnki.jnju.2021.06.013

时间序列异常检测有广泛的应用场景,例如网络服务运维、工业生产设备监测和人体心率检测.在这些场景中,作为一种反映系统运行状态的指标,时间序列的异常往往反映系统的异常,网络服务故障、工业生产设备缺陷或人体心律不齐和其他系统异常的检测都可以通过时间序列异常的检测来实现,因此,开发实现自动的时间序列异常检测算法有重要的实际意义.时间序列异常检测的模型可以分为有监督模型和无监督模型.由于现实的异常检测数据存在严重的长尾分布,异常样本稀少、标注困难、异常类型多样等问题限制了有监督模型的检测效果.本文重点研究基于无监督模型的时间序列异常检测算法.在基于无监督模型的时间序列异常检测算法中,常见的做法是使用正常数据训练模型,使模型学习正常数据的数据分布,然后根据测试数据与正常数据分布之间的偏差来判定异常与否.然而,现有的无监督模型存在三个问题:

复杂的时间序列:现实中除了简单的周期性时间序列,还有大量的复杂时间序列数据,存在复杂的数据分布和非高斯噪声,导致许多建模能力不足的无监督模型检测异常的效果不佳.

缺失值的处理:在时间序列数据中常有数据缺失的现象,以往的做法通常是使用线性插值等简单的插值方法补全数据再用于无监督模型的训练.然而,使用简单插值方法补全的数据用于复杂的无监督模型建模,会对模型建模正常数据分布产生负面的影响.

忽视先验知识:实际场景中有时会获得少量的有标签数据,然而现有的模型大多忽视这部分数据.虽然M⁃ELBO1考虑使用已有的有标签正常数据,但有标签的异常数据却被直接忽视,没有得到充分利用.

为了解决以上三个问题,提出基于自编码器和生成对抗神经网络的无监督时间序列异常检测模型SALAD (Stochastic Adversarial Learned Anomaly Detection).本研究的主要贡献如下:

(1)提出时间序列异常检测模型SALAD,结合自编码器和生成对抗神经网络可以有效地对复杂的时间序列数据进行建模.在自编码器中,隐变量往往表示原始空间在隐空间中的随机变量(Stochastic)表示,通过使用对抗网络对隐变量施加约束,能更加紧凑地在隐空间中表示原始空间的数据分布.

(2)提出缺失值处理方法InT (Imputation in Training),能够随着模型训练的进行使用模型不断增强的生成能力对缺失值进行填充,使生成的数据更接近原始数据分布.

(3)提出对比重构损失,使SALAD能充分利用先验知识来提升异常检测的性能.

(4)在真实数据集上进行了大量实验,结果表明,SALAD的检测效果比其他基线方法更好.

1 相关工作

在异常检测领域2,由于数据存在严重长尾分布问题且数据标签难以获取,基于无监督模型的异常检测方法越来越成为研究的热点.得益于深度学习的发展,研究者们提出了许多性能良好的基于深度生成模型的无监督异常检测算法.

1.1 基于自编码器及其变种的异常检测

Kieu et al3和Zhang et al4提出基于自编码器的异常检测模型,在正常数据上训练时使用重构误差作为损失函数;在测试阶段,重构误差作为异常分数超过设定的阈值,则判定为异常数据.虽然它们是无监督的方法,但是自编码器的结构过于简单,缺少对自编码器隐变量的正则化,导致这些方法难以对复杂的时间序列中复杂的数据分布和大量的非高斯噪声进行建模.变分自编码器(Variational Auto⁃Encoders,VAEs)在自编码器的基础上,对隐变量增加了约束,并加入隐变量的随机采样过程,使基于变分自编码器的异常检测模型对复杂的数据分布和噪声更加鲁棒.An and Cho5首先将变分自编码器用作异常检测,Xu et al1将变分自编码器应用到时间序列异常检测.虽然这些基于变分自编码器的模型提升了对复杂数据分布和噪声的建模能力,然而,变分自编码器容易生成模糊的样本.

1.2 基于生成对抗神经网络的异常检测

与变分自编码器相比,使用对抗训练的生成对抗神经网络生成的样本细节更加清晰.Zenati et al6提出基于生成对抗神经网络的图像异常检测模型.Li et al7提出基于生成对抗神经网络的时间序列异常检测模型,但在检测异常阶段需要经过多次迭代才能得到相应的输入样本对应的隐空间变量,造成额外的计算开销和时间消耗.Zhou et al8结合自编码器和生成对抗神经网络提出针对时间序列的异常检测模型,但这个模型不仅要求数据有周期时间序列,还要在每个周期的固定位置采样.这些限制导致模型的实用性不强,没有充分发挥生成对抗神经网络对复杂数据分布的建模能力.

与以上模型相比,本文提出的SALAD结合自编码器和生成对抗神经网络,进一步发挥自编码器和生成对抗神经网络对复杂数据分布的建模能力,且在检测阶段不需要额外多次迭代以获得隐变量.

2 方案设计

2.1 问题定义

定义x=x1,x2,,xTT,其中,x表示单变量时间序列,T为序列的长度,将x划分成长度为W的时间窗口xt-W+1:t,时间序列异常检测的任务就变成通过整个时间窗口中变量x的变化情况来判断在t时刻的异常是否发生的条件概率pytxt-W+1:t.

2.2 基本思路

本文的时序异常检测方法使用重构的思想,利用正常样本重构误差小、异常样本重构误差大的区别来检测异常9-10,并引入对抗学习的思想,让自编码器在训练阶段,编码器和解码器的输出能够更好地拟合相应的空间.主要流程如下:训练阶段,训练一个编码器e将训练的正常样本映射到隐空间,随后训练一个解码器d将编码出的隐变量解码回样本空间.接下来在训练过程中通过一个判别器D区分原始正常样本和重构之后的样本,并在隐空间中也引入一个判别器C,期望编码器编码到隐空间的隐变量能够服从一个特定分布(如高斯分布),这样可以让编码器的编码过程更具有目标性,隐变量的表示更紧凑.训练完成后,自编码器能够比较完整地将正常样本进行重构,并能将样本编码到一个特定分布.最后,在异常检测阶段,一个异常样本通过编码器编码正常服从高斯分布的正常隐变量,随后解码器将这一正常隐变量映射回正常空间,所以这一原始的异常样本和其重构样本之间的重构误差会非常大.

传统的对抗自编码器(Adversarial Auto⁃Encoders,AAEs)会在隐空间中通过对抗训练过程施加一个先验分布11并且输出样本会使用一个重构损失来进行训练,而本研究将判别损失和重构损失结合起来进行训练.在训练过程中,传统对抗自编码器AAEs中由解码器产生的重构损失导致重构的样本过于平滑,对下游任务会产生非常不利的影响.和Pidhorskyi et al12类似,本文通过原始空间判别器在解码器的输出上引入一个对抗正则化项来减少平滑并增加重构之后的细节信息,不同的是,本文使用解码器重构之后的样本作为原始空间判别器的输入,而不是将这一隐变量的先验分布产生的重构样本输入原始空间判别器.

变分自编码器(VAEs)13是具有代表性的生成模型,由于其良好的重构性能,被广泛应用于时序异常检测.和VAEs不同,基于对抗训练的编码器在思想和训练过程中有以下三点改进.首先,传统VAEs很难捕获复杂的数据分布,因为基于隐空间分布的后验重构pxz需要具体的设计.此外,VAEs和一般的自编码器有同样的缺陷:重构的样本趋于平滑并且损失了大量的细节信息.最后,本文模型和VAEs相比,在对抗训练过程中,判别器期望编码器编码出的隐变量能更贴近预定义的先验分布,解码器解码的重构样本能更加还原出原始样本.

2.3 总体框架

本文算法的整体框架如图1所示,流程包含三个阶段:数据预处理、模型训练、异常检测.整个框架的输入数据表示为x,在数据的预处理阶段,x被输入预处理模块,包含三个预处理步骤:数据标准化、缺失值填充、滑动窗口处理.在数据标准化中将输入的时序数据放缩为值在-1到1范围的时间序列;一般的时序数据或多或少都存在某一时刻数据缺失的情况,在预处理阶段将相应的缺失值填充为0;最后使用滑窗大小为W的滑动窗口将填充之后长度为T的时序数据划分成一个大小为(T-W+1)×W的矩阵,如式(1)所示:

X=x1x2xWx2x3xW+1xT-WxT-W+1xT-W+1xT-W+2xT-1xT

其中,X的每一行都作为一个样本输入后续模型.

图1

图1   模型的整体框架

Fig.1   The overall workflow of our algorithm


数据预处理之后,将预处理完的时序数据输入训练模块来学习序列的正常模式,SALAD模型包含四个部分:编码器e、解码器d、原始空间判别器𝒟、隐空间判别器𝒞.首先提出一种全新的缺失值处理方法InT (Imputation in Training),在每一轮的网络迭代训练过程中,使用当前的网络对缺失值进行预测,使用预测值对缺失进行相应的填补,填补完成后继续进行网络训练.编码器将输入的序列编码成隐变量输入解码器,解码器将输入的隐变量重新解码回原始空间.为了使自编码重构过程能够利用可使用的标签信息{14】,引入一个全新的损失函数——对比重构损失(ConRec),能够根据标签的比率灵活调整重构参数.同时,为了确保编码器与解码器的重构能够更加稳健,引入原始空间判别器来判别重构样本和原始样本,期望解码器尽可能地解码原始空间中的数据.此外,引入隐空间判别器来判别先验数据分布和编码器编码出的隐变量,确保编码出的隐变量能够尽可能地服从预定义的先验分布,使模型在建模复杂时序时表现出更好的性能.由此,缺失值填补和网络训练交替进行,使缺失值的填补更加可信.

在异常检测阶段,一个经过预处理的样本被传递给异常检测模块来分别计算重构损失和判别损失,组合这两个损失可以获得一个异常分数,这个测试样本的异常分数如果高于某一预设阈值,则该样本被判别为异常样本.网络架构、训练策略和异常检测流程的细节将在下文具体展开.

3 模 型

3.1 网络结构

模型的结构如图2所示.首先,经过预处理的滑窗序列通过编码器e编码到低维隐空间中,表示为ẑ;随后,解码器d将编码出的隐变量ẑ重构回原始空间,并输出x̂.如前所述,在隐空间中通过一个隐空间判别器施加约束,让编码出的隐变量尽可能接近一个先验分布,如高斯分布.此外,重构之后的样本x̂同时通过重构损失和原始空间判别器来进行正则化处理.本文的编码器和解码器网络都是通过一维卷积层和全连接层来实现的,原始空间判别器和隐空间判别器通过全连接层的堆叠形成.

图2

图2   模型结构图

Fig.1   The network architecture of our proposed model


3.2 模型训练

定义好网络的结构后,下一步就是模型的训练,所以首先要定义模型的损失函数.目标损失函数包含两部分:原始空间正则化损失和隐空间正则化损失.

3.2.1 原始空间正则化损失

对于原始空间正则化项,传统的重构损失函数是将原始样本和重构之后的样本取范数,如式(2)所示:

recx=dex-x1

传统的重构损失无法利用少量的标签信息,而本文提出对比重构损失函数,在函数中增加对于异常标签样本的特定损失部分.对于训练过程中的正常样本,和传统重构损失的思想类似,也是尽可能地减小原始样本和重构样本之间的差异.而对于异常样本,则异常点与正常点之间的差异很大,异常点应该在重构之后尽可能地远离原始的异常点.受Hadsell et al15的启发,将损失函数分成两项来分别处理正常样本和异常样本,对比重构(ConRec)的损失函数定义如下:

cond,e=𝔼x~pdatax,y~py1-yrecx+ymax0,m-recx

其中,y是样本x的标签,m是一个阈值,用来控制使异常样本远离正常样本的程度.

在原始空间的正则化项中加入对抗损失:

datad,𝒟,X,Z=𝔼x~pdataxlg𝒟x+𝔼z~pzxlg1-𝒟dz

用来在训练过程中使编码器和解码器重构之后的样本尽可能地还原出原始的正常样本.其中,判别器𝒟试着最大化判别损失,而编码器和解码器试着最小化判别损失,二者构成对抗训练.

3.2.2 隐空间正则化损失

同样地,为了使编码出的隐变量在隐空间中尽可能紧凑地服从一个预定义的先验分布,在隐空间判别器中也引入对抗损失,如式(5)所示:

latente,𝒞,X,Z=𝔼z~pZzlg𝒞z+𝔼x~pdataxlg1-𝒞ex

其中,z是从一个预定义的先验分布(如标准正态分布)采样得到的样本,在对抗训练过程中隐空间判别器𝒞的目标是尽可能地判别出编码器e编码出的隐变量样本表示和从先验分布中采样的样本.

3.2.3 总体目标函数

定义网络的结构后,下一步就要开始进行模型的训练,所以首先定义模型的损失函数.目标损失函数包含两部分:原始空间正则化损失和隐空间正则化损失.

三个损失函数组成最终的目标损失函数,如式(6)所示:

fulld,e,𝒟,𝒞=datad,𝒟,X,Z+λcond,e+latente,𝒞,X,Z

其中,λ是一个用来适应重构损失的超参数,模型的网络通过对抗学习最小化式(6)来达到优化目标,最终得到最优的编码器和解码器网络,如式(7)所示:

d*,e*=argmind,emax𝒟,𝒞fulld,e,𝒟,𝒞

3.2.4 训练过程中缺失值处理

如果只在数据预处理阶段填充缺失值,会因为缺失值的不准确影响后续训练阶段的效果.为了动态地处理缺失值,提出InT动态缺失值填充方法,SALAD模型可以在训练过程中一直迭代进行缺失值的填充,填充方式如式(8)所示:

x'=1-missx+missdexepochcurrentepochtotal

其中,epochcurrent表示当前训练过程的迭代轮次,epochtotal表示训练总的迭代轮次,miss表示当前位置x的值是否缺少.训练一开始,epochcurrentepochtotal的值比较小,填充的值相应的也比较小.对应训练初始阶段,编码器和解码器没有很好地训练,填充的值置信度较低;随着训练的进行,模型越发稳健,填充值的置信度也随之升高.

整个模型的训练使用Adam优化器,训练过程如算法1所示.

算法1

SALADX

1.初始化参数θe,θd,θ𝒟,θ𝒞

2.for 迭代轮次 epochs do

3. 从数据集中采样一个小批量x1,x2,,xN

4. 根据式(8),对输入时序进行缺失值处理

5. 生成ẑ=exx̂=dẑ

6. for 判别器迭代轮次 do

7. 根据式(4),计算dataw.r.t.θ𝒟

8. θ𝒟θ𝒟+ηθ𝒟data

9. 根据式(5),计算latentw.r.t.θ𝒞

10. θ𝒞θ𝒞+ηθ𝒞latent

11. end for

12. 根据式(4),计算dataw.r.t.θd and θe

13. θeθe+ηθedata,θdθd+ηθddata

14. 根据式(5),计算latentw.r.t.θe

15. θeθe+ηθelatent

3.3 异常检测

本文框架的最后一个模块是异常检测模块,在模型训练完成之后将测试样本输入模型,计算相应的异常分数并判断是否异常.SALAD模型无法获得待测样本的具体分布,无法计算待测样本的似然来判断是否异常,而是使用重构误差和判别误差相结合的方式来得到异常分数,其中重构损失自编码器重构输入样本之后用来测量输入样本和重构样本之间的距离,因为训练自编码器是用来重构正常模式的,所以如果有一个样本异常,则重构出的样本和原始样本之间的距离会非常大.判别损失可以由原始空间判别器直接得到,所以总体的异常分数𝒮定义如下:

𝒮=x-x̂1+α𝒟x̂

其中,α是用来控制异常分数中判别损失的权重超参数.得到𝒮就可以设置一个阈值φ,当异常分数超过φ时便判断为异常,否则判断为正常,如式(10)所示:

𝒜x,φ=0,𝒮<φ1,𝒮φ

4 实 验

4.1 数据集与基线方法

用于模型评估的数据集来自AIPOS竞赛第一阶段的KPI(Key Performance Indicator)数据(http:∥iops.ai/competition detail/?competition id=5&flag=1)和来自Yahoo Lab的用于时序异常检测的基准数据集,其中KPI数据集包含多条KPI曲线,是从多个互联网公司收集的带有完全标注的时序异常检测数据集.选择其中四条KPI用于本文的模型评估,分别将其表示为A,B,C,D.四个数据集的图像如图3所示,相关信息如表1所示.Yahoo数据集包含四组带有全标注的时序数据集,分别为一组真实生产流量数据集A1和其他三组合成数据集A2/A3/A4,数据采样间隔为1 h.为了验证本文模型在实际场景下建模数据分布的能力,用A1验证模型的异常检测性能,将其标识为E,数据集E含有67条实际流量序列,不包含数据缺失值.分别为每一条序列训练一个模型,得到相应的评价指标,最后进行汇总,得到整个数据集的最终评价指标.某些序列由于本身不含异常点,评价指标F1就失去了评价意义,所以在最终汇总时对其进行剔除.

图3

图3   本文所用时间序列数据(红色标注异常,黄色标注缺失)

Fig.3   Visualization of KPI datasets in this study (anomalies in red color and missing points (filled with zeros) in yellow)


表1   数据集相关信息

Table 1  Basic information of the datasets

数据集ABCD
点总数1756824024229536117568
缺失点02334836920
缺失率0%9.72%1.25%0%
异常点32099811367209
异常率1.82%4.15%0.46%1.19%

新窗口打开| 下载CSV


用于评估本文模型的七个基线方法:

IF16:传统的机器学习的异常检测方法.

AEs17:传统的基于自编码器的异常检测方法.

VAEs13:传统的基于变分自编码器的异常检测方法.

AAEs11:基于传统对抗训练的自编码器方法.

Donut1:基于变分自编码器的单变量时序异常检测方法.

MAD⁃GAN7:基于对抗训练的多变量时序异常检测方法.

Beat⁃GAN8:基于对抗训练的心跳异常检测方法.

4.2 评价指标

本文使用的评价指标是基于F1 score定义的.实际应用中,传统的F1 score基于点对点的方式逐点评估,但对于运维人员这种评估方式不准确.经常遇到的一种情况是成段连续的异常点,在这种情况下点对点的F1 score的评估方式很低效.另一种评估方式是在这段连续的异常点上,如果在一定的延迟下检测出任何一个异常点,则整段序列都判断为异常.这种改进的F1 score评估方式由Xu et al1提出并被广泛应用,本文也使用这种评价设置方式.

具体地,对于一段连续的异常点设置一个阈值k,如果这一段上任何一个点被检测为异常,并且检测到的这个点的延迟不超过k,则这一段的所有点都被判别为异常,具体评估方式如图4所示.

图4

图4   评价指标可视化

Fig.4   Illustration of the strategy of the adjusted metrics


图4中第一行表示两段连续的异常点,分别用红色框标识,第二行表示模型的实际预测结果.假设评估的阈值k=2,在蓝色框中检测到的异常点的延迟为1,小于设置的阈值,所以整段蓝色框中的点都判断为异常点;黄色框中检测到异常点的延迟为3,大于设置的阈值,所以这一整段都判断为正常点.最终调整之后的异常检测结果显示在第三行中,基于第三行的结果可以得到相应的F1 score.根据前人的实践经验和自己的实验,发现阈值k=7时实验效果最佳.

4.3 实验设置

模型框架的超参数是根据经验选择的.选择滑动窗口W的大小为128,因为128是2的倍数,在后面的卷积网络中使用起来会非常方便.设置隐空间的维度K=16.最佳的异常阈值φ通过在实验中进行最佳阈值搜索得到.ConRec损失函数的两个参数分别设置为λ=1m=1.模型训练过程中批量大小设为256,训练150个轮次.优化过程中使用Adam优化器分别对应两个学习率,在编码器和解码器中设置为10-3,在两个判别器中设置为10-4.优化迭代使用动态学习率策略,每经过10个轮次,学习率衰减为原来的0.75.为了防止过拟合,在网络中使用L2正则化,正则化系数设置为2.5×10-5.

编码器的隐藏层包含一系列卷积组合:一个带有四个卷积核的一维卷积层、一个batch⁃norm层和一个LeakyReLU激活函数.除了隐藏层,编码器还使用全连接层作为网络的输出.与编码器对应,解码器是编码器的对称实现,所有的卷积层都对应替换为反卷积层,全连接层被放置在解码器的开头,将低维的隐变量映射到高维的向量表示.原始空间判别器和隐空间判别器都被简化实现为带有LeakyReLU激活函数的全连接层.

为了在有标签和无标签的情形下评估SALAD的模型效果,在每个数据集中使用三个标签设置,分别是0%,10%和100%的标签.对于0%的标签,在数据集中忽略所有数据的标签信息;对于10%的标签,使用下采样使训练数据只包含10%的标签信息而忽略其他标签.

对于其他的基线方法,训练过程中窗口大小、迭代轮次、批量大小和优化器都采用和SALAD相同的实验设置,并且在异常检测阶段的异常阈值也采用最佳阈值搜索来得到.需要注意的是,IF无需训练,可以直接在测试集上验证IF的模型效果.

4.4 总体评价效果

首先,为了验证本文模型在完全无监督情况下建模复杂时序的能力,在本文模型和所有基线方法上进行实验,实验结果的F1 score如表2所示,表中黑体字表示性能最优.与基线方法相比,SALAD在各种情形下都取得了不错的效果,在全部五个数据集上的F1 score均超过了其他基线方法.其中,B,C数据集包含大量缺失值,说明SALAD在训练数据大量缺失的情况下仍能取得不错的效果,证明其缺失处理模块的有效性;A,D数据集含有明显的周期和噪声特性,SALAD在这两个数据集上的表现证明模型在建模不同数据分布上和抗噪声干扰上的能力;在数据集E上的实验结果则验证了SALAD在公共数据集上强大的建模能力.

表2   本文的SALAD和基线方法在五个数据集上完全无监督情况下的F1 score

Table 2  F1 score of SALAD and baseline models over five datasets with complete unsupervised settings

模型ABCDE
SALAD0.78180.93730.56110.62500.8094
IF0.61670.06900.27180.12500.4564
AEs0.17530.08230.18250.06780.6117
VAEs0.15810.05520.48020.08800.5613
AAEs0.30700.36000.53870.27450.3268
MAD⁃GAN0.31360.23910.32380.14040.7467
Beat⁃GAN0.16790.34170.15380.24400.6268
Donut0.76740.46680.53330.60000.7182

新窗口打开| 下载CSV


此外,为了验证SALAD利用先验知识的能力,和同样具有标签处理能力的Donut方法在训练集上设置0%,10%,100%的标签比率进行实验对比,实验结果如表3所示,表中黑体字表示性能最优.在不完全标签(10%)的情况下,可以看到SALAD和Donut的实验效果都随着标签的增加而得到改善,SALAD在A,B,D三个数据集上的实验效果超过了Donut,而在实验效果一般的数据集C上的F1 score比Donut也仅仅低0.05.最后,在完全监督的情况下,SALAD也取得了比Donut更好的实验结果,SALAD的F1 score分别在数据集A,C,D上超出Donut 0.04,0.06和0.11,在数据集B上的F1 score两者接近.在含有部分标签和全部标签的情况下,SALAD的性能均超过Donut,证明了标签处理模块以及ConRec损失函数的有效性.从模型的总体实验结果可以发现,随着可利用标签数量的增加,SALAD模型的实验效果基本都在提升,但也有少量不正常的现象,例如在数据集B,C中标签数量增加为10%(半监督情况)时的模型效果比无监督时的模型效果稍差,在数据集A,D中,完全有监督时的实验效果与半监督时的实验效果相比有所下降.通过分析发现,这可能是由于模型在优化训练过程中,无标签的异常数据引起训练的不稳定,所以模型跳出了局部最优解,得到了更好的实验效果,同样的情况也发生在了Donut1模型中.

表3   本文SALAD和Donut在四个KPI数据集上的F1 score

Table 3  F1 score of SALAD and Donut over four datasets

ABCD
模型0%10%100%0%10%100%0%10%100%0%10%100%
Donut0.76740.78050.80000.46680.27360.98820.53330.59500.54050.60000.60000.6000
Ours0.78180.85330.84110.93730.85530.97870.56110.54240.60640.62500.96560.7143

新窗口打开| 下载CSV


可以看出,SALAD在五个数据集上的实验取得了不错的效果,性能基本超过所有基线方法,下面对比分析SALAD与基线方法的实验表现.

IF16孤立森林是经典无监督机器学习算法,假设异常点分布于数据稀疏的区域,无需训练,采用切割的方法可直接将异常点孤立出来.从实验结果看,IF在B,C,D数据集上的表现很差,因为数据集B,C包含大量的缺失值,而数据集D上的异常点分布在复杂的周期型数据上,IF无法应对这些复杂的数据场景.而SALAD通过引入对抗训练和缺失值处理模块,在这些复杂数据上的建模能力大大增强,取得了比IF更好的实验效果.

AEs17和VAEs13都是基于自编码器的深度网络,通过一个编码器和一个解码器完成对数据的重构,进而根据重构误差的大小来进行异常检测.VAEs是著名的基于变分推断的深度生成模型,与普通AEs相比,在隐空间中引入数据分布的概念,通过训练使编码得到的隐变量能够尽可能地服从某一分布.在实验评估阶段使用原始AEs和VAEs进行训练,在测试阶段使用重构损失来检测异常,SALAD在五个数据上的实验结果均超过了AEs和VAEs.而AEs和VAEs在复杂KPI数据集上的实验效果很不理想,这一方面是因为缺少缺失值处理模块,另一方面,由于在编码和解码阶段不施加额外约束,面对复杂数据时很难捕获有效的数据分布,进而导致异常检测的性能明显低于SALAD.

AAEs11是使用对抗训练的自编码器算法,实验中使用AAEs在训练阶段建模正常模式,在测试阶段使用重构误差来判断异常.可以看到,由于在自编码器中引入了对抗约束,AAEs在四个复杂KPI数据集上的实验结果均超过普通AEs和VAEs,说明对抗约束使AAEs具有建模复杂数据分布的能力.同样作为对抗模型,SALAD的实验效果在五个数据集上都超过了AAEs.尽管AAEs在隐变量上引入正则化项来避免过拟合,AAEs与SALAD相比在建模复杂数据上的能力仍有差距,这是因为基于点对点的重构损失使模型趋于输出更平滑的重构样本.所以,隐空间鉴别器和缺失值处理模块的引入使SALAD具有更强的建模能力.

Donut1是一种基于VAE的时序异常检测方法,它使用专门设计的方法,包括M⁃ELBO、缺失数据注入和MCMC (Markov Chain Monte Carlo)缺失值填充方法,可以处理包含缺失值和异常值的时序数据集.对于低缺失率和低异常率的情况(数据集C),SALAD的实验效果和Donut比较接近,因为这两种方法都有处理缺失值和异常值的具体方法.但是,当数据集中的缺失值和异常值比较多(数据集B)并应用了无监督的实验设置时,SALAD的实验效果就大大超过Donut,说明SALAD在面对完全无监督的情况下,建模复杂时序的能力比Donut效果更好.此外,当有少量标签可用时,SALAD在数据集A和D上获得了比Donut更显著的提升.在数据集E上的实验结果证明SALAD在无监督实验设置下,建模一般时序数据的能力超过了Donut.

MAD⁃GAN7和Beat⁃GAN8是近年来有名的基于GAN (Generative Adversarial Networks)网络的异常检测方法,MAD⁃GAN是多变量数据集上的异常检测方法,Beat⁃GAN是心跳异常检测的方法.由于这两个方法的实验设置和模型框架是不同的,无法直接应用于本文的单变量数据集,所以通过调整模型结构和异常检测设置将这两个模型应用到本文的数据集上.除模型结构外,其他实验设置均与其他实验相同.从实验结果可以看到,MAD⁃GAN和Beat⁃GAN在所有数据集上的模型性能均低于SALAD,并且在A,B,C,D四个复杂KPI数据集上的实验结果低于AAEs.一方面,MAD⁃GAN的模型设计主要考虑多变量数据集,无法在单变量上发挥出模型应有的性能;另一方面,Beat⁃GAN在心跳异常检测数据集上的实验设置更多考虑整段的异常心跳,模型在单点的KPI异常检测上的性能差强人意.而SALAD专门设计了针对复杂时序的缺失值处理模块,并通过隐空间对抗网络的引入,在建模复杂时序上更具优势.

4.5 消融实验

本节评估本文提出的两个方法对模型性能的影响:对比重构损失(ConRes)和InT缺失值处理.使用四个KPI数据集进行相应的实验,将不包含这两个方法的SALAD模型标识为原始模型,其他方法组合及实验结果如图5所示(原始模型SALAD、仅使用对比重构损失的SALAD、仅使用InT缺失值处理的SALAD、使用对比重构损失和InT缺失值处理的SALAD).

图5

图5   消融实验

Fig.5   F1⁃scores of SALAD and its variants


训练缺失值填补(InT Imputation)是设计用来在模型训练过程中填补缺失值的方法.生成对抗网络(Generative Adversarial Nets,GANs)已经展示了强大的时序缺失值填补能力18,在不完整的时序上进行训练,GANs通过其生成能力能够最终输出完整且符合实际的时间序列.MCMC填补方法1在评估阶段进行缺失值的填补,而本文InT方法是在训练阶段通过模型的生成能力对缺失数据进行填补,通过不断迭代训练,模型的数据生成能力趋向稳定,能够生成和原始空间分布相同的数据对缺失值进行填补,为后续SALAD捕获原始空间数据分布和隐空间数据分布奠定基础.本文使用的数据集B和C都含有大量缺失,从最终的实验结果中分析发现:数据集B的缺失无法对SALAD的原始模型造成影响,原始模型在数据集B上通过迭代训练已经可以取得相当高的实验结果,导致InT模块的引入对于实验结果的提升并不明显;但数据集C中大量的数据缺失导致原始模型的泛化能力大大下降,无法捕获真实的数据分布,引入的InT模块通过对缺失值的迭代填充,使实验结果有了显著的提升,证明缺失值处理模块在包含大量缺失值的数据集上的有效性.

对比重构(ConRec)损失的设计是用来利用可获得的有标签异常.在训练数据中,对于可获得的异常点,传统重构方法无法有效利用异常点来捕获正常数据分布,而直接剔除数据中的异常点1也不是一种明智的方法.假设异常点和正常点之间的数据分布具有明显差异,这种差异可以通过最大化异常点和正常点之间的距离进行实现,将这种差异15与重构损失之间进行融合形成新的对比重构损失(ConRec).SALAD通过在训练阶段引入对比重构损失,有效利用异常样本中的信息,拉大异常数据分布与正常数据分布之间的距离.四个KPI数据集中,数据集A,B,D含有比数据集C更多的异常数据,通过分析实验结果发现,在数据集A,B,D中,SALAD的原始模型通过引入ConRec损失取得比InT方法更显著的效果,这与ConRec能有效利用训练数据中的大量异常点密切相关,验证了ConRec利用异常标签信息的能力.此外,由于数据集C只含有极少量的异常数据,在训练过程中对异常数据不敏感,而在异常数据上施加的损失权重破坏了模型对正常数据分布的捕获能力,导致了模型性能的下降.通过上述实验表明,对比重构损失能够在大部分数据集上实现对异常标签信息的有效利用,能够拉大异常数据分布与正常数据分布之间的距离,实现原始模型性能的提升,验证了其有效性.

5 结 论

本文提出一种全新的基于自编码器的时序异常检测方法SALAD,引入对抗学习的思想,在对比重构(ConRec)损失函数和InT缺失值处理方法这两种关键技术的加持下,SALAD能够应对时序异常检测的三个挑战:处理复杂数据分布、解决时序缺失值以及有效利用先验信息.通过大量的实验和推导,充分证明了本文方法的有效性,在公开数据集上的实验证明SALAD比其他基线方法具有更好的异常检测性能.

参考文献

Xu H WChen W XZhao N Wet al.

Unsupervised anomaly detection via variational auto⁃encoder for seasonal kpis in web applications

Proceedings of 2018 World Wide Web Conference. Lyon,FranceInternational World Wide Web Conferences Steering Committee2018187-196.

[本文引用: 8]

Braei MWagner S.

Anomaly detection in univariate time⁃series:A survey on the state⁃of⁃the⁃art

2020,arXiv:.

[本文引用: 1]

Kieu TYang BGuo C Jet al.

Outlier detection for time series with recurrent autoencoder ensembles

Proceedings of the 28th International Joint Conference on Artificial Intelligence. Macao,ChinaAAAI20192725-2732.

[本文引用: 1]

Zhang C XSong D JChen Y Cet al.

A deep neural network for unsupervised anomaly detection and diagnosis in multivariate time series data

Proceedings of the AAAI Conference on Artificial Intelligence201933(1):1409-1416.

[本文引用: 1]

An JCho S.

Variational autoencoder based anomaly detection using reconstruction probability

Special Lecture on IE,2015(2):1-18.

[本文引用: 1]

Zenati HRomain MFoo C Set al.

Adversarially learned anomaly detection

2018 IEEE International Conference on Data Mining. SingaporeIEEE2018727-736.

[本文引用: 1]

Li DChen D CJin B Het al.

MAD⁃GAN:Multivariate anomaly detection for time series data with generative adversarial networks

The 28th International Conference on Artificial Neural Networks. Munich,GermanySpringer2019703-716.

[本文引用: 3]

Zhou BLiu S HHooi Bet al.

BeatGAN:Anomalous rhythm detection using adversarially generated time series

Proceedings of the 28th International Joint Conference on Artificial Intelligence. Macao,ChinaAAAI20194433-4439.

[本文引用: 3]

Ruff LVandermeulen R AGörnitz Net al.

Deep one⁃class classification

Proceedings of the 35th International Conference on Machine Learning. Stockholm,SwedenPMLR20184393-4402.

[本文引用: 1]

Ruff LVandermeulen R AGörnitz Net al.

Deep semi⁃supervised anomaly detection

International Conference on Learning Representations.Addis Ababa,EthiopiaOpenReview.net,https:∥openreview.net/forum?id=HkgH0TEYwH2020.

[本文引用: 1]

Makhzani AShlens JJaitly Net al.

Adversarial autoencoders

2016,arXiv:.

[本文引用: 3]

Pidhorskyi SAlmohsen RAdjeroh D Aet al.

Generative probabilistic novelty detection with adversarial autoencoders

2018,arXiv:.

[本文引用: 1]

Kingma D PWelling M.

Auto⁃encoding variational bayes

2014,arXiv:.

[本文引用: 3]

Pang G SShen C Hvan den Hengel A.

Deep anomaly detection with deviation networks

2019,arXiv:.

Hadsell RChopra SLeCun Y.

Dimensionality reduction by learning an invariant mapping

2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. New York,NY,USAIEEE20061735-1742.

[本文引用: 2]

Liu F TTing K MZhou Z H.

Isolation⁃based anomaly detection

ACM Transactions on Knowledge Discovery from Data,20126(1):1-39.

[本文引用: 2]

Rumelhart D EHinton G EWilliams R J. Learning internal representations by error propagation. Cambridge,MA,USAMIT Press1986318-362.

[本文引用: 2]

Luo Y HZhang YCai X Ret al.

E2GAN:End⁃to⁃end generative adversarial network for multivariate time series imputation

Proceedings of the 28th International Joint Conference on Artificial Intelligence. Macao,ChinaAAAI20193094-3100.

[本文引用: 1]

/