《异常检测——从经典算法到深度学习》12 对于复杂 KPI 基于VAE对抗训练的非监督异常检测
Posted smile-yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《异常检测——从经典算法到深度学习》12 对于复杂 KPI 基于VAE对抗训练的非监督异常检测相关的知识,希望对你有一定的参考价值。
《异常检测——从经典算法到深度学习》
- 0 概论
- 1 基于隔离森林的异常检测算法
- 2 基于LOF的异常检测算法
- 3 基于One-Class SVM的异常检测算法
- 4 基于高斯概率密度异常检测算法
- 5 Opprentice——异常检测经典算法最终篇
- 6 基于重构概率的 VAE 异常检测
- 7 基于条件VAE异常检测
- 8 Donut: 基于 VAE 的 Web 应用周期性 KPI 无监督异常检测
- 9 异常检测资料汇总(持续更新&抛砖引玉)
- 10 基于条件 VAE 的鲁棒无监督KPI异常检测
- 11 针对大量出现的KPI流快速部署异常检测模型
- 12 对复杂 KPI 基于VAE对抗训练的非监督异常检测
相关:
12 对于复杂 KPI 基于VAE对抗训练的非监督异常检测
2019 Unsupervised Anomaly Detection for Intricate KPIs via Adversarial Training of VAE
下载地址
一直在纠结有没有必要这么这么地翻译一遍,是否有意义,是否真的有人会读。所以从这篇论文开始,去除了一些套话,尽可能更加突出重点。
Abstract
为了保证互联网应用服务的可靠性,我们需要实时地密切监测 KPIs,并必须及时发现 KPIs 中隐藏的异常。尽管对于周期性光滑的业务级别的 KPIs (例如每分钟的交易次数) 的异常检测在文献中已经被合理地解决了,但是机器级别的 复杂的 KPIs(例如一个被检测的服务每秒的 I/O 请求数)很少研究。这些复杂的 KPIs 既普遍又重要,但是它们呈现的是非高斯分布、很难建模的数据分布。本文中,我们提出了一个基于局部分析的贝叶斯网络的对抗性训练方法,这种方法具有坚实的理论证明。基于这个方法,我们提出了第一个针对于复杂的 KPIs的高性能无监督异常检测算法 Buzz。在来自一家全球互联网公司的数据中它的 最优 F-score 范围在0.92到0.99之间,显著优于基于最先进VAE的无监督方法(无对抗性训练)和最先进的有监督方法。
I. Introduction
略去前面一部分与 Abstract 基本重合的部分
图 1 展示了几个这类的 KPI,Opprentice[3](最先进的监督方法)和Donut [4] (一种基于变分自动编码器(VAE)的先进无监督方法)性能不佳,将在第5节展示。
Buzz 有几个关键idea。首先,为了使不可分割的 KPI 模型易于处理,我们采用了度量理论中常用的分析方法。具体而言,我们将数据空间切分为若干个子空间(隔离的)。其次,在计算距离时,我们使用了生成分布和经验分布之间的Wasserstein距离[6],这在 WGAN[6] 中已经被证明是分布空间中的一个稳健(robust)度量。
第三,我们提供理论推导,提出了一种训练目标的基本形式,然后将我们的模型转化为贝叶斯网络。特别是,Buzz 通过对抗训练,从本质上优化了 VAE 中变分的最低证据界(ELBO) 似然。第四,我们使用 VAE 作为生成模型来生成样本,并使用另外一种神经网络作为判别模型来识别生成的样本和真实样本。第五,为了保证对抗训练稳定,我们调整了梯度惩罚技术[7],一种从 WGAN[6] 的基本训练的改进技术。最后,异常检测是采用变分推断来完成的。
Buzz 的 contribution 总体如下:
- Buzz 是针对于复杂 KPIs 的第一个通过深度生成模型无监督异常检测算法。在全球顶级公司的数据中,Buzz 的最优 F-score 在 0.92 到 0.99 之间,显著优于现有方法。
- Buzz 提出的训练方法是第一种基于分区的VAE对抗性训练方法理论推导与实验分析相结合。
- 基于分区分析,我们提出了一种基于 Wasserstein 距离的 Buzz 训练目标的初始形式,并给出了将该模型转化为贝叶斯网络的理论推导。在贝叶斯网络和最优运输理论之间架起桥梁是一种新的思路。
2. Background
A. KPI Anomaly Detection
一个 KPI 是一个时间序列,可以标记为: X = { x 1 , x 2 , . . . , x T } X=\\{x_1,x_2,...,x_T\\} X={x1,x2,...,xT},其中 x t x_t xt 是指对应 t t t 时刻的值, t ∈ { 1 , 2 , . . , T } t\\in\\{1,2,..,T\\} t∈{1,2,..,T}。
基于 KPI 的异常检测即给定最近的 W W W 个数据点,来判定 x t x_t xt 是不是异常。如果是异常的话, α t = 1 \\alpha_t=1 αt=1。异常检测算法通常计算条件概率, P ( α t = 1 ∣ X t − W + 1 , . . . , x t ) P(\\alpha_t=1|X_{t-W+1},...,x_t) P(αt=1∣Xt−W+1,...,xt),而不是直接给定 α t \\alpha_t αt 的值。因此,基本上任何 KPI 异常检测苏阿帆需要对条件概率进行一些建模。
B. Intricate KPIs
本文中,我们注重对复杂 KPIs 的异常检测。 KPIs 大概分为两类:周期性光滑 KPIs 和 复杂 KPIs。前者一般是基于服务/业务层的分析(比如每分钟的交易数目)。我们可以粗略地假设这些 KPI 具有对角多元高斯噪声(diagonal multivariate Gaussian noises)。为了捕捉突发流量(例如,典型的数据库流量)引起的微拥塞,经常复杂 KPIs 进行细粒度监控。我们可以粗略地假设复杂 KPIs 中的噪声不是对角多元高斯噪声。
图1 展示了一些复杂 KPIs 例子。可以看到,复杂的 KPIs 是复杂的,在短时间尺度上剧烈抖动,但在全球范围内似乎有一些模式。此外,不同的复杂 KPIs 可以具有不同的全局和局部模式。因此,精确定义复杂的 KPIs 或列举不同类型的复杂 KPIs 具有挑战性。因此,设计一个框架并测试所有复杂的 KPIs 是很难的。因此,在本文中,我们将重点放在复杂的关键绩效指标,我们反击,并在实践中很重要。更具体地说,我们从一家具有手动异常标签的大型互联网公司获得 11 个维护良好的复杂 KPIs,图1 显示了其中的一部分。它们代表了一系列重要、实用和复杂的 KPIs。与我们合作的操作人员证实,解决这些复杂的 KPIs 异常检测问题具有迫切的现实意义。
C. Previous Anomaly Detection Approaches
多年来,人们提出了许多基于传统统计模型的异常检测器,如 [8] 等人 [9]-[14],但算法选择和参数调整需要在每个 KPI 的基础上进行,它们无法在复杂的 KPIs 中捕获复杂的数据分布。
最近的方法使用了有监督集成学习和上述检测器作为特征,如 EGADS[15] 和 Opprentice [3],并在平滑 KPI 上显示了有希望的结果。但是,它们的标记开销太大,并且它们的特征(来自传统统计模型)不适合复杂的 KPI。
无监督异常检测方法,如 [16]-[20] 学习获取正常数据模式并推导条件概率 P ( α t = 1 ∣ x t − w + 1 , x t − W + 2 , . . . , x t ) P(\\alpha_t=1|x_{t-w+1}, x_{t-W+2},...,x_{t}) P(αt=1∣xt−w+1,xt−W+2,...,xt),通过假设异常,例如异常的可能性可以忽略不计。Donut [4] 是最先进的无监督异常检测方法。它以VAE [21]、[22] 为基础,对周期性平滑 KPI 表现出高性能、并且具有扎实的理论分析。但由于 Donut 假设为对角多元高斯噪声,因此它在复杂的 KPI 上表现不佳,如 图9 所示。
D. Variational Auto-Encoder
VAE [21],[22] 是一个深度贝叶斯网络,它对两个随机变量 x x x 和 z z z 之间的关系进行建模。 p ( x ) p(x) p(x) 称为经验分布, p ( z ) p(z) p(z) 称为先验分布,通常为多元标准高斯分布 N ( 0 , I ) \\mathcal{N}(0,I) N(0,I)。 条件分布 p θ ( x ∣ z ) p_\\theta(x|z) pθ(x∣z) 的形式是根据任务的特定要求来选择。然后, p θ ( x ) = E p ( z ) [ p θ ( x ∣ z ) ] p_\\theta(x)=\\mathbb{E}_{p(z)}[p_{\\theta}(x|z)] pθ(x)=Ep(z)[pθ(x∣z)] 可以看作是一种核密度估计(kernel density estimation)。 q ϕ ( z ∣ x ) q_\\phi(z|x) qϕ(z∣x) 是对计算困难的真实后验 p θ ( z ∣ x ) p_\\theta(z|x) pθ(z∣x) 的后验似然。 q ϕ ( z ∣ x ) q_\\phi(z|x) qϕ(z∣x) 可以通过神经网络,利用 SGVB 算法,通过对最大化 证据下界(ELBO)的似然估计进行拟合。
VAE 的训练目标,记作
L
v
a
e
\\mathcal{L}_{vae}
Lvae,即
E
p
(
x
)
[
log
p
θ
(
x
)
]
\\mathbb{E}_{p(x)}[\\log_{p_\\theta}(x)]
Ep(x)[logpθ(x)] 的 ELBO。
L
v
a
e
=
E
p
(
x
)
[
E
q
ϕ
(
z
∣
x
)
[
log
p
θ
(
x
∣
z
)
]
−
K
L
[
q
ϕ
(
z
∣
x
)
∣
∣
p
θ
(
z
)
]
]
\\mathcal{L}_{vae}=\\mathbb{E}_{p(x)}[\\mathbb{E}_{q_\\phi(z|x)}[\\log {p_\\theta(x|z)}]-KL[\\ q_\\phi(z|x)\\ ||\\ p_\\theta(z)]]
Lvae=Ep(x)[Eqϕ(z∣x)[logpθ(x∣z)]−KL[ qϕ(z∣x) ∣∣ pθ(z)]]
Donut [4] 修改了 ELBO 的一部分,以避免训练中异常的影响,并在周期性平滑 KPI 上取得了较高的性能。但是,Donut 在复杂的 KPI 上工作得不好 —— 我们对 Donut 进行了多次训练,发现 Donut 的性能很低,不稳定,而且没有经过良好的训练(将在第5节中显示)。我们推测,由于神经网络表达能力和训练方法的限制,很难在复杂的经验分布 p ( x ) p(x) p(x) 上进行训练,并且训练样本有限,如 图8 所示。
E. Adversarial Training
文献中已经提出了一系列对抗性训练方法,如 GAN [23]、WGAN [6]、AAE [24]、WAE [25] 和 GAN-OT [26]。在对抗训练中,生成器模型试图生成样本来欺骗鉴别器模型,鉴别器试图区分生成的样本和真实样本。在对抗训练中,发生器和鉴别器的能力都有很大的提高。在图像分类、图像生成、语音识别等领域,对抗训练在复杂的经验分布上取得了很好的效果。
有几项关于 VAE 和高级训练相结合的研究,如 [27],与我们的结构看起来是相似的,但我们的理论证明表明它们在本质上是完全不同的。AAE[24] 提出了一种基于先验分布 p ( z ) p(z) p(z) 的对抗性训练方法,具有较高的性能和可靠的证明。受此启发,本文提出了一种复杂经验分布 p ( x ) p(x) p(x) 的VAE对抗训练方法。在此基础上,提出了一种基于深层生成模型的复杂 KPI 异常检测算法。
3. Architecture
在本节中,我们将介绍我们的动机和提出的异常检测框架 Buzz ,包括预处理阶段、训练目标和相应的算法、神经网络结构以及检测方法。总体架构如 图2 所示。
A. Motivation
Buzz 有两个主要观点:Wasserstein 距离和与测量理论的分离(Partitioning from measure theory.)。
在计算距离时,我们使用了生成分布和经验分布之间的Wasserstein距离[6](以下称为分布距离),WGAN[6]表明,在测量概率分布之间的距离时,该距离是稳健的。
Partitioning 是测度论中一种强大且常用的分布分析方法[28],[29]。其基本思想本质上类似于微积分中的一种常见技术:在计算一个复杂函数的积分时,通常把它的积分域分成若干个分区,然后计算每个分区上的积分,然后求其平均值。同样地,我们将具有复杂经验分布的空间 X \\mathcal{X} X 划分为几个分区,直观地说,在每个足够小的分区上计算分布距离可能比在整个空间上更容易。
每个分区上的分布距离是通过对抗训练计算出来的,全局距离是所有分区上分布距离的期望值,如 图3 所示。
巧合的是,我们注意到,当每个分区越来越小时,全局距离接近 VAE 的一个特殊变量的 ELBO 中的重构项,其后验分布是指数分布(an exponential distribution)。分区(Potition)在分区从整体到点的变化过程中起着连接 WGAN 和 VAE 的损失的作用。它启发了我们对抗性的VAE训练方法。
我们将对这一动机进行理论推导,并在第4节中给出一个近似的训练目标。 在本节中,我们将首先演示它在实践中是如何工作的。
B. Preprocessing
实际应用中的 KPIs 是复杂的时间序列数据。有时监视器不会捕获某个值并将其设置为 NaN,称为缺失值。有时,在一段时间内,价值观的规模都非常大。这些值会给训练和检测带来困难,因此需要对数据进行预处理。
首先,我们将缺失的值设置为零,然后分割数据将 KPI 分为训练集和测试集。其次,我们计算训练集中的均值 μ \\mu μ 和标准差 σ \\sigma σ 。第三,我们对数据进行标准化,即将每个数值 x x x 设为 ( x − μ ) σ {{(x-\\mu)}\\over{\\sigma}} σ(x−μ) 。第四,我们将标准值截断在 [−10, 10] 之间。
我们的模型的输入是来自标准化 KPI 的滑动窗口,每个窗口是 W W W长的时间序列段,其中 W W W是一个称为窗口大小的超参数。在时间 t t t 结束的窗口表示为 x ( t ) x^{(t)} x(t) 窗口 {异常检测——从经典算法到深度学习》14 对于流数据基于 RRCF 的异常检测
异常检测——从经典算法到深度学习》14 对于流数据基于 RRCF 的异常检测
异常检测——从经典算法到深度学习》14 对于流数据基于 RRCF 的异常检测
《异常检测——从经典算法到深度学习》16 基于VAE和LOF的无监督KPI异常检测算法