【Dout】Web应用中季节性KPI的变分自动编码器无监督异常检测

Donut是一种无监督异常检测算法,利用变分自编码器(VAE)对具有季节性和局部变化的KPI进行建模。通过改进的ELBO、缺失数据注入和MCMC脉冲技术,Donut在检测异常时表现出色,尤其在没有或少量标签的情况下。文章提出了KDE解释,揭示了Donut如何通过学习正常模式来识别异常。Donut在实际应用中展示出良好的检测性能,特别是在无标签数据集上,其最佳F-score在0.75到0.9之间。研究还强调了在训练中同时利用异常和正常数据的重要性,以及对异常检测算法中缺失数据处理的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unsupervised Anomaly Detection via Variational Auto-Encoder for Seasonal KPIs in Web Applications在这里插入图片描述

摘要

为了确保业务不中断,大型互联网公司需要密切监控其Web应用程序的各种KPI(如页面浏览量、在线用户数量和订单数量),以准确检测异常情况并及时进行故障排除/缓解。

然而,对这些具有各种模式和数据质量的季节性KPI进行异常检测是一个巨大的挑战,尤其是在没有标签的情况下。在本文中,我们提出了Donut,这是一种基于V AE的无监督异常检测算法。由于我们的一些关键技术,Donut1大大优于最先进的有监督集成方法和基线V AE方法,其最佳F分数在0.75到0.9之间,适用于来自一家顶级互联网公司的研究KPI。我们为Donut提出了一种新的KDE重建解释,使其成为第一种具有坚实理论解释的基于V AE的异常检测算法。

CCS概念•计算方法→ 异常检测;•信息系统→ 交通分析;

1 简介

为了确保业务不中断,大型互联网公司需要密切监控其Web应用程序的各种KPI(关键性能指标),以准确检测异常情况并及时进行故障排除/缓解。KPI是时间序列数据,衡量页面视图、在线用户数量和订单数量等指标。在所有KPI中,最重要的是与业务相关的KPI(本文的重点),这些KPI受用户行为和日程的严重影响,因此大致具有定期(例如,每天和/或每周)发生的季节性模式。然而,对这些具有各种模式和数据质量的季节性KPI进行异常检测是一个巨大的挑战,尤其是在没有标签的情况下。

关于检测KPI异常,有大量文献[1、2、5–8、17、18、21、23–27、29、31、35、36、40、41]。如§2.2所述,现有异常检测算法存在算法选择/参数调整麻烦、严重依赖标签、性能不令人满意和/或缺乏理论基础等问题。

在本文中,我们提出了Donut,这是一种基于变分自动编码器(一种具有代表性的深度生成模型)的无监督异常检测算法,具有坚实的理论解释,该算法可以在完全没有标签的情况下工作,并且可以在可用时利用偶尔的标签。

本文的贡献总结如下。

•Donut、改进的ELBO和缺失数据注入(用于训练)以及MCMC脉冲(用于检测)中的三种技术使其能够大大优于最先进的监督和基于V AE的异常检测算法。对于一家顶级互联网公司的研究KPI,无监督Donut的最佳Fscore在0.75到0.9之间。

•在文献中,我们首次发现采用V AE(或一般生成模型)进行异常检测需要对正常数据和异常数据进行训练,这与一般直觉相反。

•我们为Donut提出了一种新的z空间KDE解释,使其成为第一种基于V AE的异常检测算法,与[2,36]不同,具有坚实的理论解释。这种解释可能有助于异常检测中其他深层生成模型的设计。我们发现了潜在z空间中的时间梯度效应,这很好地解释了Donut在检测季节性KPI异常方面的出色表现。

2 背景和问题

2.1 一般情况下的上下文和异常检测

在本文中,我们重点关注与业务相关的KPI。这些时间序列受到用户行为和日程的严重影响,因此大致具有定期(例如,每天和/或每周)发生的季节性模式。另一方面,每个重复周期的KPI曲线的形状并不完全相同,因为用户的行为可能会随时间而变化。我们在此将我们研究的KPI命名为“具有局部变化的季节性KPI”。这些KPI的示例如图1所示。另一种类型的局部变化是几天内的增加趋势,Holt-Winters[41]和时间序列分解[6]可以识别出这一点。除非正确处理这些局部变化,否则异常检测算法可能无法正常工作。

除了KPI形状的季节性模式和局部变化之外,这些KPI上还存在噪声,我们假设这些噪声在每个点上都是独立的零均值高斯噪声。高斯噪声的精确值是没有意义的,因此我们只关注这些噪声的统计,即噪声的方差。

我们现在可以将季节性KPI的“正常模式”形式化为两个组件的组合:
(1)具有局部变化的季节性模式,以及(2)高斯噪声的统计。

我们使用“异常”来表示不遵循正常模式的记录点(例如,突然的峰值和下降),而使用“不正常”来表示异常和缺失点。异常和缺失点示例见图1。由于KPI是定期监测的(例如,每分钟一次),因此缺失的点被记录为“空”(当监测系统没有接收到数据时),因此很容易识别。因此,我们专注于检测KPI的异常。
在这里插入图片描述

图1:我们论文中季节性KPI数据集的2.5天片段,异常为红色,缺失点(用零填充)为橙色。在每个数据集中,同一时间段在不同的日子里都有不同。

由于操作员需要处理异常情况以进行故障排除/缓解,因此一些异常情况被标记为轶事。注意,这种偶然的标签对异常的覆盖远远不是典型的监督学习算法所需要的。

KPI上的异常检测可以公式化为:对于任何时间t,给定历史观测值xt−t+1,xt,确定是否发生异常(由yt=1表示)。异常检测算法通常计算表示yt=1的确定性的实值分数,例如p(yt=1|xt−T+1,…,xt),而不是直接计算yt。然后,操作员可以通过选择阈值来影响是否声明异常,其中分数超过该阈值的数据点表示异常。

2.2 以前的工作

传统统计模型。多年来,已经提出了许多基于传统统计模型(例如[6、17、18、24、26、27、31、40、41],主要是时间序列模型)的异常检测器来计算异常分数。因为这些算法通常对适用的KPI有简单的假设,所以需要专家的努力来为给定的KPI选择合适的检测器,然后根据训练数据微调检测器的参数。根据[25],这些检测器的简单组合,如多数表决[8]和归一化[35],也没有太大帮助。

因此,这些检测器在实践中的应用有限。

监督的集合方法。为了避免传统统计异常检测器的算法/参数调整的麻烦,提出了监督集成方法EGADS[21]和Opplentice[25]。他们使用用户反馈作为标签并使用传统检测器输出的异常分数作为特征来训练异常分类器。EGADS和Opplentice都显示了很有希望的结果,但它们严重依赖于良好的标签(远远超过我们上下文中积累的轶事标签),这在大规模应用中通常是不可行的。此外,在检测过程中运行多个传统检测器来提取特征会带来大量的计算成本,这是一个实际问题。

无监督方法和深度生成模型。最近,采用无监督机器学习算法进行异常检测的趋势正在上升,例如,一类SVM[1,7],基于聚类的方法[9],如K-Means[28]和GMM[23],KDE[29],以及V AE[2]和VRNN[36]。其理念是关注正常模式而非异常:由于KPI通常由正常数据组成,因此即使没有标签,也可以很容易地训练模型。粗略地说,它们都首先识别原始或某些潜在特征空间中的“正常”区域,然后通过测量观测值与正常区域的“距离”来计算异常分数

沿着这个方向,我们对深度生成模型感兴趣,原因如下。首先,学习正常模式可以被视为学习训练数据的分布,这是生成模型的主题。第二,最近在使用深度学习技术(例如GAN[13]和深度贝叶斯网络[4,39])训练生成模型方面取得了巨大进展。后者是深度生成模型家族,采用图形[30]模型框架和变分技术[3],V AE[16,32]作为代表性工作。第三,尽管深度生成模型在异常检测方面有着巨大的前景,但现有的基于V AE的异常检测方法[2]不是针对KPI(时间序列)设计的,在我们的设置中表现不佳(见§4),并且没有理论基础支持其用于异常检测的深度生成模型的设计(见§5)。第四,在我们的实验中,简单地采用基于VRNN的更复杂的模型[36]显示出长的训练时间和较差的性能。第五,[2]假设只在干净数据上进行训练,这在我们的上下文中是不可行的,而[36]没有讨论这个问题。

2.3 问题陈述

总之,现有异常检测算法存在算法选择/参数调整麻烦、严重依赖标签、性能不令人满意和/或缺乏理论基础等问题。现有的方法要么是无监督的,要么是有监督的,但严重依赖于标签。然而,在我们的环境中,标签有时是可用的,尽管还远远不够完整,这应该得到某种程度的利用。

本文的问题陈述如下。我们的目标是基于具有坚实理论解释的深度生成模型的无监督异常检测算法,该算法可以利用偶尔可用的标签。因为V AE是深度贝叶斯网络的基本构建块,所以我们选择从VAE开始我们的工作。

2.4 变分自动编码器的背景

深度贝叶斯网络使用神经网络来表达变量之间的关系,使得它们不再局限于简单的分布族,因此可以容易地应用于复杂的数据。在训练和预测中经常采用变分推理技术[12],这是解决神经网络导出的分布的后验问题的有效方法。

VAE是一个深贝叶斯网络。它建立了两个随机变量之间的关系,隐变量 zzz 和 已知变量 xxx。为z选择一个先验,通常为多元单位高斯分布 N(0,I)N (0,I)N(0,I)。然后,从 pθ(x∣z)p_{\theta}{(x|z)}pθ(xz) 中进行采样得到 xxx ,这里的 pθ(x∣z)p_{\theta}{(x|z)}pθ(xz) 是从含有参数 θ\thetaθ 的神经网络中得到的。pθ(x∣z)p_{\theta}{(x|z)}pθ(xz) 的确切形态根据任务的需求而定。真实的后验概率 pθ(z∣x)p_{\theta}{(z|x)}pθ(zx) 是分析方法难以处理的,但是训练和预测的必要条件,因此,变分推理技术用于适应另一个神经网络,作为近似后验概率 qϕ(z∣x)q_{\phi}(z|x)qϕ(zx) 。后验通常被假设为 N(μϕ(x),σϕ2(x))N(\mu_{\phi}(x),\sigma^2_{\phi}(x))N(μϕ(x),σϕ2(x)),其中的 μϕ(x)\mu_{\phi}(x)μϕ(x)σϕ2(x)\sigma^2_{\phi}(x)σϕ2(x) 是从另一个神经网络得到。VAE 的结构 如图2 所示
在这里插入图片描述

图2:VAE的架构。z的先验被视为生成模型的一部分(实线),因此整个生成模型表示为pθ(x,z)=pθ(x|z)pθ(z)。近似后验线(虚线)表示为qϕ(z∣x)q_{\phi}(\mathbf{z}|\mathbf{x})qϕ(zx)

SGVB[16,32]是一种常与V AE一起使用的变分推理算法,其中通过最大化证据下限来联合训练近似后验和生成模型(ELBO,方程(1))。我们没有采用更先进的变分推理算法,因为SGVB已经可以工作了。
在这里插入图片描述
蒙特卡罗集成[10]通常采用近似期望公式(1), 作为公式(2),其中的 z(l),l=1...Lz^{(l)},l=1...Lz(l),l=1...L 是从 qϕ(z∣x)q_{\phi}(z|x)qϕ(zx) 中采样得到的。我们在整篇论文中都坚持使用这种方法。
在这里插入图片描述

3. ARCHITECTURE

Donut 算法的总体架构如 图3 所示,这三种关键技术分别是训练中的改进ELBO和缺失数据注入,检测中的MCMC注入。
在这里插入图片描述

3.1 Network Structure

如2.1节所述,本文研究的KPI假设为带有高斯噪声的时间序列。然而,VAE不是一个顺序模型,因此我们在KPI上应用纵向滑动窗口[34]:对于每一个数据点 xtx_txt,把 xt−w+1,...,xtx_{t-w+1},...,x_txtw+1,...,xt 作为VAE的 xxx 向量。这种滑动窗口最初被采用是因为它的简单性,但它实际上带来了一个重要而有益的结果,这将在5.1中讨论。

Donut 的整体网络结构如 图4 所示,其中双线条轮廓的组件(例如,滑动窗口 xxx,左下角的W尺寸)是我们的新设计,其余组件来自标准VAEs。先验概率 pθ(z)p_\theta{(z)}pθ(z) 符合正态分布 N(0,I)N(0,I)N(0,I)。 后验 xxx 和后验 zzz 为对角高斯分布:pθ(x∣z)=N(μx,σx2I)p_\theta({x|z}) = N(\mu_{x},\sigma_x^2I)pθ(xz)=N(μx,σx2I) ,并且 qϕ(z∣x)=N(μz,σz2I)q_\phi{(z|x)}=N(\mu_z,\sigma^2_zI)qϕ(zx)=N(μz,σz2I),其中的 μx\mu_xμxμz\mu_zμzσx\sigma_xσxσz\sigma_zσz 是对应的高斯分布中的均值和标准差。zzz 的维度为 KKK。通过分离的隐藏层 fϕ(x)f_\phi{(x)}fϕ(x)fθ(z)f_\theta{(z)}fθ(z),可以从 xxxzzz 中提取出隐含的特征。接着从隐含的特征中可以得到 xxxzzz 高斯分布的参数。均值可以从线性层中得到 μx=WμxTfθ(z)+bμz\mu_x = W_{\mu_x}^T f_\theta(z)+b_{\mu_z}μx=WμxTfθ(z)+bμz 并且 μz=WμzTfϕ(x)+bμz\mu_z = W_{\mu_{z}}^T f_\phi(x)+b_{\mu_{z}}μz=WμzTfϕ(x)+bμz 。标准差是源自soft-plus层,再加上一个非负比较小的数 ϵ\epsilonϵ : σx=SoftPlus[WσxTfθ(z)+bσx]+ϵ\sigma_x=SoftPlus[W_{\sigma_x}^Tf_\theta(z)+b_{\sigma_x}]+\epsilonσx=SoftPlus[WσxTfθ(z)+bσx]+ϵ 并且 σz=SoftPlus[WσzTfϕ(x)+bσz]+ϵ\sigma_z=SoftPlus[W_{\sigma_z}^Tf_\phi(x)+b_{\sigma_z}] + \epsilonσz=SoftPlus[WσzTfϕ(x)+bσz]+ϵ ,其中 SoftPlus[a]=log[exp(a)+1]SoftPlus[a] = log[exp(a)+1]SoftPlus[a]=log[exp(a)+1]。这里提到的所有的 W-s 和 b-s 都是对应的层的参数。注意当标量函数 f(x)f(x)f(x) 应用于向量 xxx 时,它意味着应用于每个分量。

之所以用这种方式得到 σx\sigma_xσxσz\sigma_zσz,而不是像其他人那样通过一个线性层得到 log σxlog \ \sigma_xlog σxlog σzlog\ \sigma_zlog σz,是因为我们关注的 KPIs 局部变化较小,导致 σx\sigma_xσxσz\sigma_zσz 可能近乎于 0,因而 log σxlog\ \sigma_xlog σxlog σzlog\ \sigma_zlog σz 无边界。这将在计算高斯分布中变量的概率时造成严重的数值问题。因此选择使用 soft-plus 和 ϵ\epsilonϵ 技巧来避免出现这种问题。

我们有意选择全连接层作为隐藏层的结构,使得整个建筑相当简单。这是因为我们的目标是开发一个基于VAE的异常检测算法,具有坚实的理论解释,一个简单的网络结构肯定会使它更容易分析复杂的“变分自动编码器”的内部行为。
在这里插入图片描述

图4:甜甜圈的网络结构。灰色节点是随机变量,白色节点是层。双线突出了我们在普通VAE上的特殊设计。

3.2 Training

训练是直接通过优化ELBO (公式(1))与SGVB[16]算法。由于[16]报告在使用SGVB算法训练 VAE 时,一个样本已经足够计算ELBO,所以我们在训练时让采样数 L = 1。我们还应用了SGVB所要求的重新参数化技巧:专用的随机变量 ξ\xiξ,并不是从 zzz ~ N(μz,σz2I)N(\mu_z, \sigma_z^2I)N(μz,σz2I) ,而是从 ξ\xiξ ~ N(0,I)N(0,I)N(0,I) 进行采样,这样我们就可以重写 zzz ,即 z(ξ)=μz+ξ⋅σzz(\xi) = \mu_z+\xi\cdot \sigma_zz(ξ)=μz+ξσz 。基于 ξ\xiξ 的采样与参数 ϕ\phiϕ 是相互独立的,所以 VAE 就和一般的神经网络一样在训练过程中可以应用随机梯度下降。xxx 的窗口在每个批次前随机洗牌,有利于随机梯度下降。在每一个小批中都要取足够多的 xxx ,这对于稳定训练至关重要,因为抽样引入了额外的随机性。

如2.2节所述,基于 VAE 的异常检测是通过学习正常模式进行的,因此我们需要尽可能避免学习异常模式。注意,训练中的“异常”被标记为异常,并且给定的KPI不能有任何标签,在这种情况下,异常检测成为无监督的。

人们可能会试图用综合生成的值来替换训练数据中的标记异常(如果有的话)和缺失点(已知的)。之前的一些工作已经提出了弥补缺失数据的方法,例如[37],但是很难产生足够符合“正常模式”的数据。更重要的是,用另一种算法生成的数据来训练生成模型是非常荒谬的,因为生成模型的一个主要应用就是生成数据。使用任何比VAE弱的算法估计的数据都有可能降低性能。因此我们不采用缺失的数据归责之前训练 VAE,相反,我们选择简单的填补缺失点为0(在图3中的数据准备步骤),然后修改 ELBO 排除异常和缺失的贡献点(显示为修改ELBO(简称M-ELBO以后)的训练步骤 图3 所示。

更具体地说,我们将公式(1)中的标准 ELBO 修改为 公式 (3) 中的。αw\alpha_wαw 为指示符,αw=1\alpha_w = 1αw=1 表明 xwx_wxw 不是异常,也不是缺失值;其他情况 α\alphaα = 0。β。 \betaβ 被定义为 (∑w=1Wαw)/W(\sum_{w=1}^{W}\alpha_w)/W(w=1Wαw)/W。注意,当训练数据中没有标记异常时,公式(3) 仍然成立。通过 αw\alpha_wαw 去除标记为异常或缺失值的 pθ(xw∣z)p_\theta{(x_w|z)}pθ(xwz) 的影响,然后缩放因子 β\betaβ 根据 xxx 中正常点所占的比重缩小 pθ(z)p_\theta{(z)}pθ(z) 的贡献。该改造序列能够正确地重建 xxx 内的正常点,即使 xxx 内的某些点不正常。 改进后的方法训练 Donut,使其很好地重构正确的数据 xxx ,即是 xxx 中含有某些异常数据。我们不缩小 qϕ(z∣x)q_\phi{(z|x)}qϕ(zx) 的影响,因为考虑到后面两点。与 pθ(z)p_\theta{(z)}pθ(z) 不同,pθ(z)p_\theta{(z)}pθ(z) 是生成网络的一部分(即 “正常模式” 的模型),qϕ(z∣x)q_\phi{(z|x)}qϕ(zx) 只是描述了 xxxzzz 的映射,不需要考虑正常数据与否。因此,缩小 qϕ(z∣x)q_\phi{(z|x)}qϕ(zx) 的影响没有什么必要了。另一个原因在于 Eqϕ(z∣x)[−log qϕ(z∣x)]\mathbb{E}{q{\phi}(z|x)}[-log\ q_\phi(z|x)]Eqϕ(zx)[log qϕ(zx)]qϕ(z∣x)q_{\phi}({z|x})qϕ(zx) 准确的熵。这个熵项实际上在训练中还有其他作用(将在5.3节中讨论),因此最好保持不动。
在这里插入图片描述
除了公式(3)之外,另一种处理异常和缺点的方法是在训练数据中排除所有包含这些点的窗口。这种方法不如M-ELBO。我们将在§4.5中演示这两种方法的性能。

此外,我们还在训练中引入了缺失数据注入:我们将正常点的模拟比随机设为零,就好像它们是缺失点一样。缺失点越多,当给定异常 xxx 时,训练Donut重建正态点的次数越多,增强了M-ELBO的效果。这种注入是在每个epoch之前完成的,并且一旦epoch结束,点被恢复。缺失的数据注入如 图3 中的训练步骤所示

3.3 Detection

不同于仅为一个目的而设计的判别模型(例如,分类器仅为计算分类概率而设计 p(y∣x)p(y|x)p(yx) ),VAE这样的生成模型可以产生各种输出。在异常检测范围内,观察窗口 xxx 的可能性,比如VAE的 pθ(x)p_\theta{(x)}pθ(x),是很重要的输出,因为我们想看一个给定值 xxx 是如何遵循正常模式的。可以采用蒙特卡罗方法计算 xxx 的概率密度,pθ(x)=Ep(θ)[pθ(x∣z)]p_\theta{(x)}=E_{p(\theta)}[p_\theta{(x|z)}]pθ(x)=Ep(θ)[pθ(xz)] 。尽管理论上有很好的解释,但在实践中对先验进行抽样效果并不是很好,如§4所示。

人们可以寻求用变分后验 qϕ(z∣x)q_\phi{(z|x)}qϕ(zx) 得到有用的输出,而不是对前验进行抽样。一个选择是去计算 Eqϕ(z∣x)[log pθ(x∣z)]\mathbb{E}_{q_\phi{(z|x)}}[log\ p_\theta(x|z)]Eqϕ(zx)[log pθ(xz)] 。尽管与 pθ(x)p_\theta(x)pθ(x) 相似,但它实际上不是一个明确定义的概率密度。另一个选择是取计算 Eqϕ(z∣x)[log pθ(x∣z)]\mathbb{E}_{q_\phi(z|x)}[log\ p_\theta(x|z)]Eqϕ(zx)[log pθ(xz)],文献[2] 中采用了这种方法,取名为 “重构概率”。这两个选择非常相似。由于异常检测只涉及异常分数的排序,而不涉及异常分数的准确值,因此我们采用文献[2] 的方法。作为替换,公式1中的 ELBO可能也被用于最大化 log pθ(x)log\ p_\theta(x)log pθ(x),如同文献[36]。然而,ELBO中多出的项 Eqϕ[log pθ(z)−log qϕ(z∣x)]\mathbb{E}_{q_\phi}[log\ p_\theta(z)-log\ q_\phi(z|x)]Eqϕ[log pθ(z)log qϕ(zx)] 使得其内部机制很难理解。由于[36]中的实验不支持该方案的优越性,所以我们选择不使用它。

在检测过程中,测试窗口x中的异常和缺失点会给映射的z带来偏差,进而使重构概率不准确,这将在§5.2中讨论。由于缺失点总是已知的(称为“null”),我们有机会消除由于缺失值而引起的偏差。我们选择采用[32]提出的基于 MCMC 和训练好的 VAE 的缺失数据填充技术。同时,在检测前,我们不知道异常的确切位置,因此 MCMC 不能用于异常数据。

更具体地说,测试数据 xxx 被分为观测值与缺失值两部分,比如 (xo,xmx_o,x_mxo,xm) 。zzz 样本是从 qϕ(z∣xo,xm)q_\phi{(z|x_o,x_m)}qϕ(zxo,xm) 中获取,然后从 pθ(xo,xm∣z)p_\theta(x_o,x_m|z)pθ(xo,xmz) 中获得重构数据 (xo′,xm′)(x'_o,x'_m)(xo,xm)(xo,xm)(x_o,x_m)(xo,xm) 然后被 (xo,xm′)(x_o,x'_m)(xo,xm) 所替换,观测数据点将被修复并且缺失的数据点被赋予新值。这个过程重复 MMM 次后,最终的(xo,xm′)(x_o,x'_m)(xo,xm) 用于计算重构概率。在整个过程中,其中的 xm′x'_mxm 将会不断接近于正常数值。当给定的 MMM 足够大时,偏差可以被减小,并且我们可以获得更加精准的重构概率。MCMC 方法如 图5 所示,检测步骤如 图3 所示。
在这里插入图片描述

图5:MCMC中一次迭代的图解。将x分解为(xo,xm),然后固定xo,将xm替换为重建样本中的x′m,以得到新的x′。

MCMC 后,取 zzzLLL 个样本,通过蒙特卡罗积分计算重构概率。值得一提的是,尽管我们可以计算 xxx 的每个窗口中每个点的重构概率,我们只计算最后数据点的分数(比如, 当观测 xx−T+1,...,xtx_{x-T+1},...,x_txxT+1,...,xt时,只计算 xtx_txt 的分数)。因为我们希望在检测过程中尽快对异常做出反应。在后面的文本中,我们仍然会使用矢量表示法,以对应于 VAE 的架构。虽然可以通过延迟决策和考虑不同时间同一点的更多分数来提高检测性能,但我们将其留作以后的工作。

4 EVALUATION

4.1 Datasets

我们从一家大型互联网公司获得18个维护良好的业务KPI(时间跨度足够培训和评估)。所有KPI在两次观察之间的间隔为1分钟。

根据 图6,我们选择了3个数据集,分别为 A,B,C\mathcal{A,B,C}A,B,C,这样我们可以对Donut进行不同级别的噪声评价。
在这里插入图片描述

图6:通过在每个数据集放置高斯核绘制的数据集的1N∑t=2N∣xt−xt−1∣\frac{1}{N}\sum_{t=2}^N|x_t-x_{t-1}|N1t=2Nxtxt1的CDF。预先将xt的值标准化为零均值和单位方差。三角形表示A、B和C,而圆形表示其他。根据CDF,A、B和C具有相对较小、中等和较大的噪声

我们将每个数据集分为训练集、验证集和测试集,分别为49%、21%和30%。数据集 A、B、C\mathcal{A、B、C}ABC 的图见 图1,统计量见 表1。这家互联网公司的运营商在这三个数据集中标注了所有的异常。为了进行评估,我们可以考虑我们已经掌握了这三个数据集中所有异常的真实情况。在这里插入图片描述

4.2 Performance Metrics

在我们的计算中,我们完全忽略了所有缺失点(“null”)的算法的输出,因为它们很容易识别。

本文评估的所有算法都为每个点计算一个异常值。可以选择一个阈值来进行决策:如果某个点的得分大于阈值,就应该触发警报。这样,异常检测类似于分类问题,我们可以计算每个阈值对应的精度和召回率。在给定所有可能的阈值的情况下,我们可以进一步计算AUC,即召回的平均精度;或者f分,它是精确度和回忆度的调和平均值,给定一个特定的阈值。我们也可以枚举所有的阈值,获得所有的F-score,并使用最好的F-score作为度量。最好的f分表示一个模型在一个特定测试集上可能的最佳性能,给定一个最佳的全局阈值。在实践中,最好的f值主要与AUC一致,除了轻微的差异(见 图8 )。我们喜欢最好的AUC的f值,因为它应该是更重要的是有一个优秀的f值在某个阈值比刚才高但不那么优秀的F-scores大多数阈值。

在实际应用中,人工操作符通常不关心点度量。如果延迟时间不太长,算法可以对连续异常段中的任何点触发警报。一些异常检测的度量标准已经被提出来适应这种偏好,例如[22],但是大多数没有被广泛接受,可能是因为它们太复杂了。我们使用一种简单的策略:如果ground truth异常段中的任何一点都可以通过选择的阈值检测到,我们就说该段被正确检测到,并且该段中的所有点都被视为可以通过该阈值检测到。同时,异常段外的点按常规处理。然后计算精度、召回率、AUC、F-score和best F-score。这种方法如 图7 所示。
在这里插入图片描述

图7:修改度量的策略说明。第一行是带有10个连续点和两个异常段的真值,在阴影正方形中突出显示。检测器分数显示在第二行。第三行显示阈值为0.5的逐点检测器结果。第四行显示调整后的检测器结果。我们将得到精度0.6,召回0.5。从第三行开始,第一段的警报延迟为1个间隔(1分钟)。

除了精度度量外,我们还计算每个检测片段的警报延迟,这对操作人员也很重要。对于一个true positive 的段,警报延迟是段中的第一个点和第一个检测点之间的时间差。

4.3 Experiment Setup

我们设置窗的大小 WWW 为 120,总共跨越了两个小时。WWW 的选择受限于两个因素。一方面,WWW 太小可能导致模型无法捕获模式,因为模型只能通过窗口中的信息来识别正常的模式(见5.1节)。另一方面,WWW 太大可能会增加过拟合的风险,因为我们坚持使用没有权重的全连接层,因此模型参数的数目与 WWW 成比例。对于数据集 B,C\mathcal{B,C}B,C ,我们设置隐藏层维度 KKK = 3,因为 3维空间容易可视化便于分析,而且根据经验 kkk = 3 效果很好。对于数据集 A\mathcal{A}A 我们发现 KKK = 3 太小,所以增加为 8。这些 KKK 的选择在测试集中表现也很好,如 图10 所示。隐藏层 qϕ(z∣x)q_\phi{(z|x)}qϕ(zx)pθ(x∣z)p_\theta{(x|z)}pθ(xz) 都使用了两个 ReLU 层,每一个使用了100个单元,这让变分网络与生成网络的大小相同。我们没有对隐藏网络的结构进行详尽的搜索。

其他超参数也是根据经验选择的。标准层中的 ϵ=10−4\epsilon=10^{-4}ϵ=104,注入率 λ=0.01\lambda=0.01λ=0.01 ,为MCMC迭代计数M=10M = 10M=10,蒙特卡洛积分中的采样数目L=1024L=1024L=1024 ,训练时每个批次大小为 256, 训练250 次。使用了 Adam 优化器[15],学习率为 10−310^{-3}103。每10次训练,我们将学习率下降0.75。我们将 L2L2L2 正则化应用于隐藏层,系数为 10−310^{-3}103。我们按照标准裁剪梯度,限制为10.0。

为了评估没有标签的 Donut ,我们忽略了所有的标签。对于偶然标签的情况,我们对训练和验证集的异常标签进行下采样,使其包含10%的标记异常。请注意,缺失的数据点不会被下采样。我们继续随机抛出异常段,概率与每个段的长度成正比,直到达到所需的下采样速率。我们使用这种方法,而不是随机抛出单个异常点,因为 KPI 是时间序列,每个异常点都可能泄漏其相邻点的信息,从而导致高估的性能。这样的下采样做了10次,这使我们能够做10个独立的,重复的实验。总体而言,对于每个数据集,我们有三个版本:0%标签、10%标签和100%标签。

4.4 Overall Performance

我们测量了 Donut 图8 中的AUC、最佳分数和对应于最佳分数的平均警报延迟,并与三种选定的算法进行了比较。
在这里插入图片描述

图8:AUC、最佳F分数和最佳F分数对应的平均警报延迟。A、 B和C是三个数据集。“0%”、“10%”和“100%”是培训中保留的标签比例。注意,当存在0%的异常标签时,Oppentice没有结果。每个条顶部的黑棒是10次重复实验的偏差。

Opprentice [25] 是一个使用随机森林分类器的集成监督框架。在与我们的数据集相似的数据集上,据报道,Opprentice始终显著优于基于传统统计模型的14个异常检测器(例如,[6,17,18,24,26,27,31,40,41]),这些检测器共有133个超参数枚举配置。因此,在我们对 Donut 的评估中,Opprentice不仅是来自非深度学习领域的最先进的竞争算法,也是与这些传统异常检测器的经验性能“上限”进行比较的代理。

VAE baseline [2] 中的基于VAE的异常检测不是处理序列数据的,因此我们通过以下方式配置 VAE。首先,VAE baseline 的网络结构与 Donut 相同,如 图4 所示。其次,图3 中的所有技术中,仅使用数据准备步骤中的那些技术。第三,如[2]所建议的,我们从训练数据中排除所有包含标记异常或缺失点的窗口。

Donut-Prior 假设生成模型学习得到 p(x)p(x)p(x),然而在 VAE 中, p(x)p(x)p(x) 被定义为 Epθ(z)[pθ(x∣z)]\mathbb{E}{p_\theta{(z)}}[p_\theta(x|z)]Epθ(z)[pθ(xz)],我们也可以计算重构概率的先验副本,比如说 Epθ(z)[log pθ(x∣z)]\mathbb{E}{p_\theta(z)}[log\ p_\theta(x|z)]Epθ(z)[log pθ(xz)]。我们只需要一个先验的基线,所以我们可以通过朴素蒙特卡罗方法计算先验期望,不用更先进的技术去优化结果。

Donut 最优 F-score 值比较让人满意,在0.75到0.9之间,比 Opperentice 的所有情况都要好。事实上,在标签不完整时,Opperent 最优F-score 在数据集 A\mathcal{A}A 与数据集 B\mathcal{B}B 中大大下降,只有在 C\mathcal{C}C 数据集中保持可接受的结果。C\mathcal{C}C 中的异常数目比 A,B\mathcal{A,B}A,B 要多得多,只要 10% 的数据就足够用于训练了。Donut 在无监督场景中表现出色,并且可以看到如果将标签也一起投入模型时,Donut 通常效果更佳好。然而,Donut 有一个不寻常的问题:投入100% 的数据进行训练时比投入 10 %的数据效果要稍微差一些,这包括最优 F-score 和 数据集B,C\mathcal{B,C}B,C 的 AUC。这可能是一个最优化问题,没有标签的异常可能会导致训练结果不稳定,并偶然地使模型不再处于次优均衡状态(见5.4)。当 K\mathcal{K}K 从3增加到8时, 这种现象似乎有所缓解。幸运的是,它并不严重,所以我们建议尽可能在 Donut 中使用标签。

Donut 在数据集 A\mathcal{A}AB\mathcal{B}B 中的表现远远超过了 VAE-baseline,然而它在数据集 C\mathcal{C}C 中效果并没有这么好的效果。事实上,Donut 的优点在 A\mathcal{A}A 中表现最佳,B\mathcal{B}B 中表现中等,C\mathcal{C}C 中变现最差。这是由以下原因造成的。VAE 对正常数据进行建模。结果,实际上,重构概率希望 xxx 中大部分数据为正常数据(见5.1节)。然而,因为 xxx 是 KPIs 的滑动窗口,我们需要对每一个数据点进行打分,而 xxx 中不可以避免的含有一些异常数据点。这使得 VAE baseline 忍受力更强。相反的是,本文提出的方法是提高 Donut 即便在同一个窗口中前面存在异常的情况下,也能生成可靠的输出的能力。与此同时,当 KPIs 曲线平滑时,具有相同等量级的异常中可能出现更加异常的数据。假设 A\mathcal{A}A 是最平滑的,B\mathcal{B}B 次之,C\mathcal{C}C 最差,前面三种不同的表现就不足为奇了。

最后,Donut-Prior 的最优 F-score 比重构概率差得多,尤其是在 zzz 的维度更加大时。然而,值得注意的是,只有在确定情况下,重构概率的后验期望表现较好(见5.2节)。幸运的是,这个问题对 Donut 影响不大。在使用的时候本来就不需要过于关注重构概率。

Donut,Opprentice 和 VAE-baseline 在所有数据集的平均延迟都可以接受,然后 Donut-Prior 并非如此。与此同时,Donut 的最优 F-score 值都比其他方法好得多。总而言之,Donut 可以在不增加报警延迟的情况下表现最好,因此 Donut 对操作人员来说是可行的。

4.5 Effects of Donut Techniques

我们在本文中提出了三种技术:(1)M-ELBO(公式 3)(2)缺失数据注入(3)MCMC imputation. 在图10中(错误!这里指的是图9,论文弄错了),我们展现了 Donut 与这些技术可行的四种组合的 最优 F-score 值,并添加了 VAE-baseline 作为对比。这些技术与KDE解释密切相关,将在§5.2中进一步讨论。
在这里插入图片描述

图9:(1)V AE基线的最佳F评分,(2)带MELBO的甜甜圈,(3)M-ELBO+缺失数据注入,(4)M-ELBO+MCMC,以及(5)M-ELBO+MCMC和注入。仅M-ELBO就贡献了大部分改进。

M-ELBO 对 VAE-baseline 的大部分改善作了贡献。它通过训练 Donut 来适应 xxx 中可能的异常点,并在这种情况下产生期望的输出。虽然我们期望 M-ELBO 能够发挥作用,但我们并没有期望它能发挥这么好的作用。总之,虽然对于生成模型来说这是很自然的,但是仅仅使用正常数据来训练 VAE 进行异常检测并不是一个好的做法(§5.2)。据我们所知,M-ELBO 及其重要性在以前的工作中从未提到过,因此是我们的一项重大贡献。

Missing data injection (缺失的数据注入)是为了提高 M-ELBO 的效果而设计的,实际上也可以看作数据优化的一种方法。事实上,如果我们在训练时同时注入缺失数据和综合生成的异常数据,那效果将会更好。然而,生成与真实异常数据足够相似的数据比较困难,这应该是一个大主题,超出了本文的涉及范围。因此,我们只是注入缺失的点。缺失数据的注入对最优F-score的提高不是很明显,并且当 B,C\mathcal{B,C}B,C 无标注时,效果只比只使用 M-ELBO 差一点点。这可能是因为注入给训练带来了额外的随机性,因此它需要更大的训练周期,与M-ELBO的情况相比。我们不确定在采用注入时要运行多少个epoch,为了得到一个客观的比较,因此我们在所有情况下都使用相同的epoch,而保持结果不变。我们仍然建议使用缺失数据注入,即使要花费更大的训练周期,因为它预计有很大的工作机会。

MCMC imputation 也被设计用来帮助 Donut 处理异常点。虽然只是在一些情况下 Donut 通过使用 MCMC 让 F-score 值得到了很大的优化,但是它绝对不会降低检测结果。根据文献[32],这应该是预期的结果。 因此,我们建议在检测中始终采用 MCMC。

总之,我们建议使用所有的三种技术Donut。这种配置的结果如 图9(错误!论文的本意是指图10) 所示。
在这里插入图片描述

图10:在10次重复实验中,具有不同K值的无监督甜甜圈的最佳F评分。

4.6 Impact of K

zzz 的维数 KKK 起重要作用。过小的 KKK 可能会导致拟合不足或次优平衡(见§5.4)。另一方面,KKK 太大可能会导致重建概率找不到好的后验(见§5.1)。在完全无监督的情况下,很难选择一个好的 KKK,因此我们将其留作以后的工作。

在图10中,我们给出了无监督 Donut 测试集在不同 KKK 下的平均最优 F-score。这并不能帮助我们选择最好的 KKK (因为我们不能使用测试测试来选择 KKK),但是可以证明我们的经验选择 8,3,3 是相当好的。最优 F-score 对应的 KKK 值,对于数据集 A\mathcal{A}A K=5K=5K=5,对于B\mathcal{B}B K=4K=4K=4,对于 C\mathcal{C}C K=3K=3K=3。换句话说,达到最优 F-score 的 KKK 值可能相当小。另一方面,当 KKK 增加到21时,最优 F-score 没有明显下降。这给予我们一个很大的空间以经验为主选择合适的 KKK。最后,我们发现对于平滑的KPIs,似乎需要更加大的 KKK 。这样的现象并不全是本文研究的,我们把这作为未来的任务。如 图10 所示,对于与 A,B,C\mathcal{A,B,C}A,B,C 相似的 KPIs,我们建议在5到10的范围内对 KKK 根据经验进行选择。

5 ANALYSIS

5.1 KDE Interpretation

尽管重构概率 Eqϕz∣x[log pθ(x∣z)]\mathbb{E}{q_\phi{z|x}}[log\ p_\theta(x|z)]Eqϕzx[log pθ(xz)] 已经在文献 [2,36] 中应用,但是它到底如何运作的,目前还不清楚。一些人把它看做 Eqϕz∣x[log pθ(x∣z)]\mathbb{E}{q_\phi{z|x}}[log\ p_\theta(x|z)]Eqϕzx[log pθ(xz)] 的一个变种,但是 Eqϕz∣x[log pθ(x∣z)]=∫pθ(x∣z)qϕ(z∣x),dz\mathbb{E}_{q_\phi{z|x}}[log\ p_\theta(x|z)]= \int p_\theta(x|z)q_\phi(z|x), dzEqϕzx[log pθ(xz)]=pθ(xz)qϕ(zx),dz 这不是一个明确的概率2^22(一般来说,通过使用一个可能存在异常的 xxx 来计算后 qϕ(z∣x)q_\phi{(z|x)}qϕ(zx)pθ(x∣z)p_\theta{(x|z)}pθ(xz) 的期望值,它不应该给出有用的信息)。因此与文献[2,3]都不能用概率架构来解释。因此我们为重构概率和整体的 Donut 算法提出了 KDE(kernel density estimation,核密度估算)解释。

如 图11 所示,后验 qϕ(z∣x)q_\phi{(z|x)}qϕ(zx) 对于正常 xxx 呈现时间梯度。xxx 在连续时间的多个窗口(简称为 xxx 的邻接)被映射到邻近的 qϕ(z∣x)q_\phi(z|x)qϕ(zx) ,大部分带有少许的差异 σz\sigma_zσz (见 图12)。因此,qϕ(z∣x)q_\phi(z|x)qϕ(zx) 组织在平稳过渡,导致 zzz 样品表现出颜色梯度。我们称这种结构为 “时间梯度”。本文中的 KPIs 大体上是平滑的,所以相邻的 xxx 很相似。时间梯度的根本原因在 qϕ(z∣x)q_\phi(z|x)qϕ(zx)xxx 的形状的转变(而不是时间上的转变),因为 Donut 用到的是 xxx 的形状,而不是时间序列信息。时间梯度有利于Donut对不可见数据的泛化:如果在两个训练后验点之间有一个后验 qϕ(z∣x)q_\phi(z|x)qϕ(zx) ,它将是定义明确的的,避免了荒谬的检测输出。
在这里插入图片描述

图11:数据集B的z布局,其中(a)Donut,(B)未经训练的V AE,(c)使用E[log⁡pθ(z)]+H[z∣x]\mathbb{E}\left[\log p_{\theta}(\mathbf{z})\right]+\mathrm{H}\left[\mathbf{z}|\mathbf{x}\right]E[logpθ(z)]+H[zx]作为损失进行了VAE训练。通过从qϕ(z∣x)q_{\phi}(\mathbf{z}|\mathbf{x})qϕ(zx)中采样z绘制数字,对应于从测试集随机选择的正常x。K被选择为2,因此x轴和y轴是z样本的两个维度。我们绘制了z个样本,而不是qϕ(z∣x)q_{\phi}(\mathbf{z}|\mathbf{x})qϕ(zx)µzµ_zµz,因为我们希望在图中考虑σzσ_zσz的影响。z样本的颜色表示其一天中的时间。

对于部分异常 x3x^3x3 ,Donut 通过降维能够识别其中的正常部分 x~\widetilde{x}x ,并且使 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 约等于 qϕ(z∣x~)q_\phi(z|\widetilde{x})qϕ(zx)。这一结果是由以下原因造成的。Donut 是通过对训练样本中有最好效果的正常数据进行重构来进行训练的。然后维度下降导致 Donut 只能从 xxx 中捕捉少量信息。结果,只是 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 的整体形状进行了 Encoder ,异常信息在这个过程中可能被丢弃。然后,如果 xxx 非常异常,Donut 可能不能重构任何正常的 x~\widetilde{x}x ,以至于 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 可能定义不明确。

部分异常 xxxqϕ(z∣x)q_\phi(z|x)qϕ(zx)qϕ(z∣x~)q_\phi(z|\widetilde{x})qϕ(zx) 相似这一事实给 Donut 的重建概率带来了特殊的意义。因为在训练时,M-ELBO 由正常部分被最大化,log⁡pθ(x∣z)\log p_\theta(x|z)logpθ(xz) 对于 zzz ~ qϕ(z∣x~)q_\phi(z|\widetilde{x})qϕ(zx) 应该得分很高因为 xxxx~\widetilde{x}x 相似,反之亦然。也就是说,每个 pθ(x∣z)p_\theta(x|z)pθ(xz) 可能用作密度估算器,表示 xxx 与 正常部分 x~\widetilde{x}x 匹配程度。然后后验期望通过对每个 zzz 的权重,把所有的 log⁡pθ(x∣z)\log p_\theta(x|z)logpθ(xz) 都加起来。这个过程与核密度估算非常类似[11,14]。因此我们提出了 KDE 解释:Donut 中的重构概率 Eqϕ(z∣x)[log⁡pθ(x∣z)]\mathbb{E}_{q_\phi(z|x)}[\log p_\theta(x|z)]Eqϕ(zx)[logpθ(xz)] 可能被看作带权重的核密度估算,其中 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 作为权重,$\log p_\theta(x|z) $ 作为核4^44 ( 权重 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 是指在蒙特卡罗积分中通过抽样的隐式应用 )。

图12 是关于 KDE 解释的说明。如 图13 所示,我们也可以对所有数据集的三维隐藏空间进行可视化。从KDE的解释来看,我们怀疑先前的预期不会很好地工作,无论采用什么技术来改善结果:在先验上采样应该获得所有x模式的核,隐式地混淆了对特定 xxx 的密度估计。
在这里插入图片描述

图12:KDE解释说明。对于可能存在异常的给定x,Donut试图识别它遵循的是什么样的正常模式,编码为qϕ(z∣x)q_\phi(z|x)qϕ(zx)。中间图中的黑色椭圆表示qϕ(z∣x)q_\phi(z|x)qϕ(zx)3−σz3-σ_z3σz区域。然后从qϕ(z∣x)q_\phi(z|x)qϕ(zx)中提取z的L个样本,表示为中间图中的十字。每个z与密度估计器核logpθ(x∣z)logp_θ(x|z)logpθ(xz)相关联。右边两个图中的蓝色曲线是每个内核的µxµ_xµx,而周围的条纹是σxσ_xσx。最后,从每个核计算logpθ(x∣z)logp_θ(x|z)logpθ(xz)的值,并将其进一步平均作为重建概率。

5.2 Find Good Posteriors for Abnormal x

Donut 可以识别部分异常 xxx 中的正常部分,并且找到一个合适的后验用于估算 xxx 符合正常数据的程度如何。我们现在分析 Donut 中的技术如何提高这种寻找好臀部的能力。

在训练过程中,M-ELBO 强制 Donut 在异常窗口内正确重建正常点。因此,它被明确地训练去寻找好的后验。如 图9 所示,这是 M-ELBO 起到了至关重要的作用的主要原因。通过综合性地生成缺失数据点,缺失数据注入增强了 M-ELBO 的效果。另一方面,MCMC imputation 没有改变训练过程。而是如 图14 所示,通过迭代式地达到更好的后验来优化检测效果。
在这里插入图片描述

图14:MCMC可视化。选择了一个法线x,其后验qϕ(z∣x)q_\phi(z|x)qϕ(zx)绘制在右侧:十字表示µxµ_xµx,椭圆表示其3−σx3-σ_x3σx区域。我们将15%的x点随机设置为缺失,以获得异常x′x′x。我们用10次迭代在x′上运行MCMC。首先,z样本远离qϕ(z∣x)q_\phi(z|x)qϕ(zx)。之后,z个样本快速接近qϕ(z∣x)q_\phi(z|x)qϕ(zx),并在仅3次迭代后开始围绕qϕ(z∣x)q_\phi(z|x)qϕ(zx)移动。
尽管采用了这些技术,如果存在很多异常的话,Donut 可能依然不能找到合适的后验。在我们的方案中,KPIs 是每分钟都有一个检测点的时间序列数据。对于长期异常,在我们的上下文中,拥有正确的检测分数并在最初几分钟发出警报就足够了5^55(实际上,通常会过滤掉随后的和持续的警报)。 当分值达到阈值时,操作人员可以立即采取行动,并且简单忽略后面的错误分数。然后,KDE 解释可以帮助我们清楚重构概率的界限,从而合适地应用。

5.3 Causes of Time Gradient

本节中,我们讨论出现时间梯度效果的原因。为了简化此讨论,我们假设训练 xxx 时全部都是正常数据,因此 ,M-ELBO 此时等于原始的 ELBO。接着 M-ELBO 可以被分别为三部分,如 公式4 (为了简化符号,我们省略了一些下标)。
在这里插入图片描述

第1步需要从 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 中的采样 zzz 具有很高的重构 xxx 的可能性。结果,qϕ(z∣x)q_\phi(z|x)qϕ(zx) 对不同形状的 xxx 进行分离。第2步导致 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 集中与 N(0,I)\mathcal{N}(0,I)N(0,I) 。第3步,qϕ(z∣x)q_\phi(z|x)qϕ(zx) 的熵,使 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 尽可能地扩展。回调第2步为 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 的扩展设置一个限制空间(见 图11c 组合第2步和第3步的效果)。考虑到第一项,如果两个不同的 xxx 相互到达 qϕ(z∣x)q_\phi(z|x)qϕ(zx) ,该扩展就会停止。为了让每一个qϕ(z∣x)q_\phi(z|x)qϕ(zx) 在训练时都汇集到最大的空间(比如说这三个步骤达到了平衡)。相似的 xxx 将会越来越相互接近,使得 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 扩展更大,含有重叠边界。因为连续的 xxx 与周期性的 KPIs 相似(反之亦然),如果这种平衡能够实现的话,时间梯度就成了自然而然的结果。

接着我们讨论如何达到这种平衡。SGVB 算法让 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 在训练时对不相似 xxx 分离,如 图15 所示。更加不相似的两个 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 分得更远。如 图11b 所示,因为我们随机初始化变分网络,在训练刚开始时处处混合着 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 。此时,每个 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 都与其他qϕ(z∣x)q_\phi(z|x)qϕ(zx) 因为 xxx 是 KPIs 的滑动窗口,接着我们讨论如何达到这种平衡。

SGVB 算法让 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 在训练时对不相似 xxx 分离,如 图15 所示。更加不相似的两个 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 分得更远。如 图11b 所示,因为我们随机初始化变分网络,在训练刚开始时处处混合着 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 。此时,每个 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 都与其他 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 分隔。因为 xxx 是 KPIs 的滑动窗口,任何一对距离较远的 xxx 通常会更不相似,因此彼此之间会相隔更远。这些让 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 有了一个初始布局。

在这里插入图片描述

图15:假设μz(1)\boldsymbol{\mu}_{\mathbf{z}^{(1)}}μz(1)μz(2)\boldsymbol{\mu}_{\mathbf{z}^{(2)}}μz(2)是与训练数据x(1)x^{(1)}x(1)x(2)x^{(2)}x(2)相对应的$$的平均值,周围的圆圈表示σZ(1)\boldsymbol{\sigma}_{\mathbf{Z}^{(1)}}σZ(1)σZ(2)\boldsymbol{\sigma}_{\mathbf{Z}^{(2)}}σZ(2)。当这两个分布在训练过程中意外“重叠”时,来自qϕ(z∣x(1))q_{\phi}(\mathbf{z}|\mathbf{x}^{(1)})qϕ(zx(1))的样本z(1)可能太接近σZ(2)\boldsymbol{\sigma}_{\mathbf{Z}^{(2)}}σZ(2),因此重建的分布将接近pθ(x∣z(2))p_{\theta}(\mathbf{x}|\mathbf{z}^{(2)})pθ(xz(2)),其中z(2)z^{(2)}z(2) for x(2)x^{(2)}x(2)。如果x(1)\mathbf{x}^{(1)}x(1) and x(2)\mathbf{x}^{(2)}x(2)不同,则损耗中的log⁡pθ(x(1)∣z(2))\operatorname{log}p_{\theta}(\mathbf{x}^{(1)}|\mathbf{z}^{(2)})logpθ(x(1)z(2))将有效地推动μz(1)\boldsymbol{\mu}_{\mathbf{z}^{(1)}}μz(1)远离μz(2)\boldsymbol{\mu}_{\mathbf{z}^{(2)}}μz(2)

当训练开始后,时间梯度得到了调整,逐步形成,如 图16a 所示。训练动态也表明学习速率退火技术是非常重要的,因为它可以逐渐稳定布局。

在这里插入图片描述

图16:训练期间数据集B的z空间的演变。我们从验证集对正常x进行采样,并相应地绘制z样本。(a)最终F得分为0.871,而(b)收敛到次优平衡,最终F得分0.826。我们在(a)中绘制了步骤4300,因为这是一个非常重要的转折点,绿色点刚刚开始远离紫色点。

令人惊讶的是,在M-ELBO中我们找不到任何一项能把 qϕ(z∣x)q_\phi(z|x)qϕ(zx) 中的类似的 xxx 直接聚集到一起。时间梯度很可能主要是由扩展(H[z|h])压缩E[log⁡pθ(z)]\mathbb{E}[\log p_\theta(z)]E[logpθ(z)],聚集E[log⁡pθ(x∣z)]\mathbb{E}[\log p_\theta(x|z)]E[logpθ(xz)] 和动态训练(随机初始化和 SGVB) 而引起的。这可能会引发一些问题,从而导致次优的分布,正如我们将在 5.4节中看到的。

5.4 Sub-Optimal Equilibrium

qϕ(z∣x)q_\phi(z|x)qϕ(zx) 有时候可能聚合成一个次优的平衡。图 16b 展示了这样的问题,紫色的点在前100步之后意外地通过了绿色的点。紫色的点将绿色的点推向两边,导致绿色的点在大约5000步的时候完全被切断。随着训练的进行,绿点将被进一步推高,这样模型就锁定在这个次最优平衡点上,永远不会逃脱。

图 17 绘制了 图16b 的训练和验证损失图。显然,当绿点被分割成两半后,模型很快就开始过拟合。这种糟糕的 zzz 布局打破了时间梯度,遵循绿色模式的测试 xxx可能会意外地映射到绿色两半之间的某个地方,并被识别为紫色。根据 KDE 的解释,这肯定会降低检测性能。
在这里插入图片描述

当存在未标记异常时,训练会变得不稳定,从而使模型意外地脱离次最优平衡点,进而达到更好的平衡点。在训练过程中通过早期停车,最终选择遇到的最佳平衡。这解释了为什么有时完整的标签对性能没有好处。K越大,这种影响可能就越不明显,因为规格越大, qϕ(z∣x)q_\phi(z|x)qϕ(zx) 扩展更加自由,减少糟糕布局的机会。当次最优平衡不是一个至关重要的问题时,训练的收敛性就变得更加重要,而拥有更多的标签无疑有助于训练的稳定。总而言之,在Donut中使用异常标签可能有利于性能,只要 KKK 足够大。

6. DISCUSSION

6.1 Broader Implications

Reconstruction. Donut 的降维去掉了异常点的信息。这意味着异常 xxxzzz 可能与正常的 zzz 难以区分,因此不能直接用于检测异常。因此,重建是 Donut 的一个重要步骤。我们相信这一结论在其他涉及降维的算法中也是正确的。例如,基于PCA的异常检测性能[19,20,33] 对主要成分的数据敏感。我们怀疑,使用这些组件的重建样本(就像在 Donut 中做的那样) 可以消除这种敏感性。

KDE interpretation 是 Donut 的心脏。我们猜想这一解释也有助于其他深层生成异常检测模型的设计。同时,本文设计了M-ELBO、缺失数据注入和MCMC等技术,以增强密度估计步骤所需要的根据异常x发现良好后验点的能力。这些技术也很容易适用于其他深层生成模型。

The time gradient effect 能发生在更一般类型的季节性或周期性序列中,而不仅仅是周期性KPI。相似的 xxx 被隐射到相邻的 qϕ(z∣x)q_\phi(z|x)qϕ(zx),因此,除了异常检测(例如,从大型数据库检索相似曲线)之外,Donut 或其变体可能在处理序列相似性的任务中可能有用。

6.2 Future Work

正如4.6节中提到的,我们将选择 KKK 的任务留作将来的工作。zzz 的拓扑结构可能是解决这个问题的关键,正如我们已经看到的次最优平衡点如何影响性能一样(见§5.4)。此外,我们怀疑在K较大的情况下,次最优平衡点可能不太可能发生,尽管我们可能仍需要更多的实验和分析来证明这一点。

我们没有讨论如何选择正确的检测阈值。这也是一个相当困难的问题,特别是在无监督的情况下。一些工作(如[21])已被提出,以选择合适的阈值,这可能适用于Donut。

可以采用更复杂的架构来扩展 Donut 。例如,序列到序列RNN架构[38]可以用来取代 Donut 中的全连接层,以便处理更大的窗口,并更好地处理点之间的相关性。

7. CONCLUSION

本文针对季节性 KPI 具有局部变化的情况,提出了一种基于 VAE 的无监督异常检测算法 Donut。新技术使 Donut 大大超过先进的监督和基于V的异常检测算法。在研究的 KPI 中, Donut 的最佳f值范围在0.75到0.90之间。

Donut 的优异性能是通过KDE解释的理论分析和时间梯度效应的新发现来解释的。我们的实验和理论分析暗示了更广泛的影响:基于降维的异常检测需要使用重构;用生成模型进行异常检测需要同时训练正常数据和异常数据。

8. ACKNOWLEDGEMENTS

国家自然科学基金面上项目(No. 61472214, No. 61472210)和阿里巴巴创新研究(AIR)资助。我们也要感谢朱军教授和他的博士。史佳欣同学进行了有益且有建设性的讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值