《异常检测——从经典算法到深度学习》18 USAD:多元时间序列的无监督异常检测
USAD: UnSupervised Anomaly Detection on Multivariate Time Series.pdf
USAD代码
一、USAD异常检测
1. problrm formulation
该段内容主要解释了单变量和多变量时间序列,以及无监督异常检测问题中的一些基本概念。以下是具体解释:
-
单变量与多变量时间序列:
- 单变量时间序列(Univariate Time Series)是由数据点组成的序列 T = { x 1 , … , x T } T=\{x_1,\dots,x_T\} T={x1,…,xT},其中每个数据点 x t x_t xt是在特定时间 t t t上测量的某个过程的观测值。单变量时间序列在每个时间点仅记录一个变量。
- 多变量时间序列(Multivariate Time Series)在每个时间点记录多个变量。将多变量时间序列表示为 T = { x 1 , … , x T } T=\{x_1,\dots,x_T\} T={x1,…,xT},其中 x ∈ R m x\in\mathbb{R}^m x∈Rm,表示在每个时间点存在 m m m个变量。单变量时间序列可以视为多变量时间序列的特殊情况,即当 m = 1 m=1 m=1时的多变量时间序列。
-
无监督异常检测问题:
- 假设我们得到时间序列 T T T作为训练输入,这些数据被认为是“正常”的。异常检测的任务是识别一个未知观测值 x ^ t \hat{x}_t x^t(其中 t > T t>T t>T)是否与已知的正常数据 T T T存在显著差异。假设 T T T中仅包含正常数据点。
- 异常检测的具体操作是,通过“异常分数”来衡量未知样本 x ^ t \hat{x}_t x^t与正常集 T T T的差异程度。将该异常分数与某个阈值进行比较,以确定是否将 x ^ t \hat{x}_t x^t标记为异常。
-
时间窗口的定义:
- 为了建模当前时间点与先前时间点之间的依赖关系,定义了一个长度为 K K K的时间窗口 W t W_t Wt,其包含了从时间点 t − K + 1 t-K+1 t−K+1到 t t t的观测值,即 W t = { x t − K + 1 , … , x t − 1 , x t } W_t=\{x_{t-K+1},\dots,x_{t-1},x_t\} Wt={xt−K+1,…,xt−1,xt}。
- 可以将原始时间序列 T T T转换为窗口序列 W = { W 1 , … , W T } W=\{W_1,\dots,W_T\} W={W1,…,WT}作为训练输入。
-
异常检测的目标:
- 该异常检测问题的目标是,给定一个新的未知窗口 W ^ t \hat{W}_t W^t(其中 t > T t>T t>T),根据窗口的异常分数为其分配一个标签 y t y_t yt,表示该时间 t t t是否检测到异常( y t = 1 y_t=1 yt=1)或未检测到异常( y t = 0 y_t=0 yt=0)。
- 为了简化表达,通常用 W W W表示一个训练窗口,用 W ^ \hat{W} W^表示一个未知窗口。
总体而言,这段内容主要是介绍时间序列异常检测的基本概念,包括如何定义异常、使用时间窗口来建模时间序列的依赖关系,以及如何利用无监督学习方法来检测未来时间点的异常。
2. Unsupervised Anomaly Detection
该段内容详细介绍了无监督异常检测的两种主要方法:基于自编码器(Autoencoder, AE)的方法和基于生成对抗网络(Generative Adversarial Network, GAN)的方法。以下是逐步解析:
1. 自编码器(Autoencoder, AE)
-
定义和结构:
自编码器是一种无监督的人工神经网络,由编码器 E E E和解码器 D D D组成。编码器 E E E接收输入数据 X X X并将其映射到一组潜在变量 Z Z Z上,解码器 D D D则将这些潜在变量 Z Z Z重新映射回输入空间,得到重构的结果 R R R。 -
训练目标:
自编码器的训练目标是最小化重构误差,即输入向量 X X X和重构结果 R R R之间的差异。重构误差公式如下:
L A E = ∥ X − A E ( X ) ∥ 2 L_{AE} = \|X - AE(X)\|_2 LAE=∥X−AE(X)∥2
其中,
A E ( X ) = D ( Z ) , Z = E ( X ) AE(X) = D(Z), \quad Z = E(X) AE(X)=D(Z),Z=E(X)
∥ ⋅ ∥ 2 \| \cdot \|_2 ∥⋅∥2表示L2范数(欧几里得距离)。 -
异常检测原理:
自编码器在异常检测中使用重构误差作为异常分数。如果某个数据点的重构误差较大,则被视为异常。在训练过程中,自编码器仅使用正常数据,因此在推理(测试)阶段,自编码器能很好地重构正常数据,但对异常数据则重构效果较差,从而导致较大的重构误差。 -
局限性:
如果异常与正常数据的差异很小,即异常数据与正常数据非常接近,重构误差可能会很小,从而无法检测出异常。这是因为自编码器试图尽可能接近地重构输入数据。因此,为了解决这个问题,自编码器在进行良好的重构之前,应该具备识别输入数据是否包含异常的能力。
2. 生成对抗网络(Generative Adversarial Network, GAN)
-
定义和结构:
生成对抗网络是一种无监督的人工神经网络,基于两个网络之间的最小化-最大化对抗游戏。这两个网络为生成器 G G G和判别器 D D D,它们同时训练。- 生成器 G G G:目标是生成逼真的数据,使得判别器无法区分真假数据。
- 判别器 D D D:目标是区分真实数据和生成器生成的数据。
-
训练目标:
生成器 G G G的训练目标是最大化判别器 D D D的错误概率(即使得 D D D尽可能地判断错误),而判别器 D D D的训练目标是最小化其分类错误率。 -
异常检测原理:
与基于自编码器的异常检测类似,GAN在训练时也只使用正常数据。在训练完成后,判别器可以用作异常检测器。如果输入数据不同于训练数据分布,则判别器会将其视为来自生成器的数据并将其分类为“假”,即视为异常。 -
局限性:
GAN的训练并不总是容易,因为训练过程中可能会出现模式崩溃(mode collapse)和不收敛(non-convergence)的问题,这通常归因于生成器和判别器之间的不平衡。
USAD(UnSupervised Anomaly Detection)方法是一种基于自编码器(Autoencoder, AE)架构的无监督异常检测方法,使用了双阶段对抗训练框架。以下是对其结构和训练过程的详细解释:
3. USAD的基本架构与设计动机
USAD将AE架构嵌入到对抗训练框架中,这种设计带来了两方面的优势:
- 克服自编码器的局限性:传统的AE在异常检测中存在一个问题,即如果输入数据中不包含异常,它们可以很好地重构该数据。而USAD通过对抗训练增强了模型的能力,使其可以更有效地识别出输入数据是否包含异常,并在数据无异常时进行良好的重构。
- 提升稳定性:AE架构还能够在对抗训练中提高稳定性,从而解决GAN中常见的崩溃(collapse)和不收敛(non-convergence)问题。
USAD方法包含以下三个网络组件:
- 编码器网络 E E E:将输入数据编码到潜在表示空间。
- 两个解码器网络 D 1 D1 D1和 D 2 D2 D2:从潜在表示空间解码回输入数据空间,形成两个自编码器。
这三个组件通过共享编码器网络形成了两个自编码器结构:
-
AE1:由编码器
E
E
E和解码器
D
1
D1
D1组成,公式为
A E 1 ( W ) = D 1 ( E ( W ) ) AE1(W) = D1(E(W)) AE1(W)=D1(E(W)) -
AE2:由编码器
E
E
E和解码器
D
2
D2
D2组成,公式为
A E 2 ( W ) = D 2 ( E ( W ) ) AE2(W) = D2(E(W)) AE2(W)=D2(E(W))
其中, W W W代表输入的时间窗口数据。
4. USAD的双阶段训练流程
USAD的训练分为两个阶段:
第一阶段:自编码器的普通训练
- 在第一阶段,两个自编码器AE1和AE2被训练来重构正常的输入窗口 W W W。也就是说,它们学习如何尽可能准确地将正常数据重构出来。这一阶段的目的是让两个自编码器都能捕捉到正常数据的分布模式,以便在接下来的对抗训练阶段中有一个合理的初始表现。
第二阶段:对抗训练
-
在第二阶段,USAD使用一种对抗性训练方式:
- AE1(攻击者角色):尝试通过其重构结果欺骗AE2,使AE2无法区分数据的来源。
- AE2(防御者角色):目标是学习如何区分数据的来源,即区分直接从正常数据 W W W中来的数据和从AE1重构的数据。
在这个对抗训练框架中,AE1生成的重构数据逐渐趋于真实数据,从而难以区分;AE2则学习区分真实数据和AE1的重构数据。
这种训练方式让AE2学习到正常数据的更高维分布特征,并更好地区分正常数据与异常数据,提高异常检测的精度。
该段内容详细描述了USAD(UnSupervised Anomaly Detection)方法的双阶段训练过程以及推理阶段的异常检测方法。下面是逐步解析:
1. 阶段一:自编码器训练
目标:在第一阶段中,每个自编码器(AE)被训练来重构输入数据。具体来说,输入数据 W W W首先通过编码器<