【nlp】USAD异常检测

devtools/2024/11/13 15:57:29/

《异常检测——从经典算法到深度学习》18 USAD:多元时间序列的无监督异常检测
USAD: UnSupervised Anomaly Detection on Multivariate Time Series.pdf
USAD代码

一、USAD异常检测

1. problrm formulation

该段内容主要解释了单变量和多变量时间序列,以及无监督异常检测问题中的一些基本概念。以下是具体解释:

  1. 单变量与多变量时间序列

    • 单变量时间序列(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 xRm,表示在每个时间点存在 m m m个变量。单变量时间序列可以视为多变量时间序列的特殊情况,即当 m = 1 m=1 m=1时的多变量时间序列。
  2. 无监督异常检测问题

    • 假设我们得到时间序列 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标记为异常。
  3. 时间窗口的定义

    • 为了建模当前时间点与先前时间点之间的依赖关系,定义了一个长度为 K K K的时间窗口 W t W_t Wt,其包含了从时间点 t − K + 1 t-K+1 tK+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={xtK+1,,xt1,xt}
    • 可以将原始时间序列 T T T转换为窗口序列 W = { W 1 , … , W T } W=\{W_1,\dots,W_T\} W={W1,,WT}作为训练输入。
  4. 异常检测的目标

    • 该异常检测问题的目标是,给定一个新的未知窗口 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=XAE(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首先通过编码器 E E E压缩到潜在空间 Z Z Z,然后由每个解码器分别重构。根据公式(2),训练目标为最小化重构误差,目标函数为:
L A E 1 = ∥ W − A E 1 ( W ) ∥ 2 , L A E 2 = ∥ W − A E 2 ( W ) ∥ 2 L_{AE1} = \|W - AE1(W)\|_2, \quad L_{AE2} = \|W - AE2(W)\|_2 LAE1=WAE1(W)2,LAE2=WAE2(W)2
在此阶段,AE1和AE2的目标都是尽可能精确地重构正常数据 W W W,以学习数据的分布模式。

2. 阶段二:对抗训练

目标:第二阶段的目的是训练AE2去区分真实数据和来自AE1的重构数据,同时训练AE1去欺骗AE2。

  • AE1的作用:AE1的目标是最小化 W W W与AE2输出之间的差异。
  • AE2的作用:AE2的目标是最大化 W W W与AE2输出之间的差异,从而区分出来自AE1的重构数据。

在此对抗训练配置中,AE1会将输入数据 W W W重构后再通过 E E E编码到潜在空间 Z Z Z,然后通过AE2解码。训练目标是最小化AE1对 W W W和AE2输出的差异,并最大化AE2对 W W W和AE2输出的差异。公式如下:
min ⁡ A E 1 max ⁡ A E 2 ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 \min_{AE1} \max_{AE2} \|W - AE2(AE1(W))\|_2 AE1minAE2maxWAE2(AE1(W))2

该过程可以分解为以下损失函数:
L A E 1 = + ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 , L A E 2 = − ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 L_{AE1} = + \|W - AE2(AE1(W))\|_2, \quad L_{AE2} = - \|W - AE2(AE1(W))\|_2 LAE1=+WAE2(AE1(W))2,LAE2=WAE2(AE1(W))2

3. 双阶段训练目标

在这里入图片描述

在USAD的架构中,自编码器具有双重训练目标:

  • AE1:最小化 W W W的重构误差(阶段一)和 W W W与AE2输出的差异(阶段二)。
  • AE2:最小化 W W W的重构误差(阶段一)并最大化由AE1重构的输入数据的重构误差(阶段二)。

因此,每个AE的双重训练目标可以通过公式(4)和(6)的组合来表示,并随着时间演变。结合进化方案,训练目标定义如下,其中 n n n表示训练周期(epoch):
L A E 1 = 1 n ∥ W − A E 1 ( W ) ∥ 2 + ( 1 − 1 n ) ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 L_{AE1} = \frac{1}{n} \|W - AE1(W)\|_2 + \left(1 - \frac{1}{n}\right) \|W - AE2(AE1(W))\|_2 LAE1=n1WAE1(W)2+(1n1)WAE2(AE1(W))2
L A E 2 = 1 n ∥ W − A E 2 ( W ) ∥ 2 − ( 1 − 1 n ) ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 L_{AE2} = \frac{1}{n} \|W - AE2(W)\|_2 - \left(1 - \frac{1}{n}\right) \|W - AE2(AE1(W))\|_2 LAE2=n1WAE2(W)2(1n1)WAE2(AE1(W))2

  • 第一部分 1 n ∥ W − A E 1 ( W ) ∥ 2 \frac{1}{n} \|W - AE1(W)\|_2 n1WAE1(W)2

    • 这一部分表示AE1的普通重构误差,即AE1直接重构输入数据 W W W的误差。
    • 随着训练周期 n n n的增加, 1 n \frac{1}{n} n1的权重逐渐减小。换句话说,在训练的早期阶段,AE1主要集中于准确地重构输入数据。
  • 第二部分 ( 1 − 1 n ) ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 \left(1 - \frac{1}{n}\right) \|W - AE2(AE1(W))\|_2 (1n1)WAE2(AE1(W))2

    • 这一部分表示AE1的对抗性重构误差,即AE1经过AE2处理后的重构误差。
    • ( 1 − 1 n ) \left(1 - \frac{1}{n}\right) (1n1)的权重随着训练周期 n n n的增加而逐渐增大。这意味着,随着训练的进行,AE1的目标逐渐转向通过AE2的对抗性训练。

公式的目的:双阶段训练中的动态权重调整

  • 早期训练阶段:两者都侧重于重构输入数据,以确保它们能够对正常数据进行高质量的重构。
  • 后期训练阶段:AE1逐渐转向欺骗AE2,生成逼真的重构输出;AE2逐渐增强其对抗性能力,试图放大重构误差,以区分正常数据和异常数据。

3. EXPEREMENTS AND RESULTS

我们通过以下方式研究了USAD的关键特性:

  • 评估其性能并与其他先进方法进行比较(5.1),
  • 分析不同参数如何影响该方法的性能(5.2),
  • 估计其计算性能(5.3),
  • 通过消融研究逐步去除一个训练阶段来观察其影响(5.4)。
  • 在第5.5节中,我们使用Orange的内部数据进行了一项可行性研究,以证明USAD满足在生产环境中部署的需求。
4. 推理阶段:异常检测

在这里插入图片描述

在检测阶段,异常分数的定义如下:
A ( W ^ ) = α ∥ W ^ − A E 1 ( W ^ ) ∥ 2 + β ∥ W ^ − A E 2 ( A E 1 ( W ^ ) ) ∥ 2 A(\hat{W}) = \alpha \|\hat{W} - AE1(\hat{W})\|_2 + \beta \|\hat{W} - AE2(AE1(\hat{W}))\|_2 A(W^)=αW^AE1(W^)2+βW^AE2(AE1(W^))2
其中 α + β = 1 \alpha + \beta = 1 α+β=1,用于在推理时调整误报(false positives)和真实正例(true positives)之间的权衡。

  • α \alpha α大于 β \beta β时,异常分数更侧重于 AE1 的直接重构误差 ∣ W ^ − A E 1 ( W ^ ) ∣ 2 |\hat{W} - AE1(\hat{W})|_2 W^AE1(W^)2。这种设置可以减少误报,但会降低检测的敏感性(即减少检出异常的数量)。在某些场景下,比如重要设备的长期监控,我们可能更关注低误报率,以避免频繁的错误报警带来成本上升和资源浪费。
  • α \alpha α小于 β \beta β时,异常分数更侧重于 AE2 对 AE1 的重构误差 ∣ W ^ − A E 2 ( A E 1 ( W ^ ) ) ∣ 2 |\hat{W} - AE2(AE1(\hat{W}))|_2 W^AE2(AE1(W^))2。这种设置会提高检测的敏感性,可以发现更多的异常,但可能会增加误报。比如检测安全相关的异常(如化工厂的设备故障),高检测敏感性可能更重要,因为漏报可能带来安全隐患。
总结
  1. 第一阶段:AE1和AE2学习如何重构正常数据,以最小化重构误差。
  2. 第二阶段:通过对抗训练,AE1试图欺骗AE2,AE2则努力区分真实数据与来自AE1的重构数据,从而在异常检测中提升判别能力。
  3. 推理阶段:基于参数化的异常分数定义,可以调整检测的敏感度,使得模型在不同场景下都能保持高效的异常检测能力。

二、细节解释

1. 对抗训练

在USAD方法的第二阶段,即对抗训练阶段,AE1和AE2进行一个“对抗游戏”来提升异常检测的效果。该对抗训练配置的目标是使AE1和AE2分别充当“攻击者”和“防御者”的角色。下面是详细解释:

对抗训练的设置

  • AE1的角色(攻击者)

    • AE1的目标是欺骗AE2,即让AE2无法分辨出数据是正常数据还是由AE1重构的数据。为此,AE1会尝试最小化AE2对重构数据的检测准确性。
    • 简而言之,AE1希望自己重构的输出看起来像正常数据,使AE2难以检测到差异。
  • AE2的角色(防御者)

    • AE2的目标是成为一个“防御者”,即最大化它对输入数据和由AE1重构数据之间的差异。
    • AE2会尝试区分正常数据和AE1的重构数据,并通过最大化重构误差来实现这一点。

公式解释

对抗训练的目标公式如下:
min ⁡ A E 1 max ⁡ A E 2 ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 \min_{AE1} \max_{AE2} \|W - AE2(AE1(W))\|_2 AE1minAE2maxWAE2(AE1(W))2

该公式可以分解为两个部分来理解:

  1. max ⁡ A E 2 ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 \max_{AE2} \|W - AE2(AE1(W))\|_2 maxAE2WAE2(AE1(W))2

    • 对于AE2来说,目标是最大化 W W W与AE2对AE1的重构结果的输出之间的L2距离,即“重构误差”。
    • 这个最大化过程意味着AE2在努力找到一种方法,使得来自AE1的重构数据尽可能不同于原始数据 W W W。这样,AE2可以更容易地分辨出重构数据和正常数据的差异。
  2. min ⁡ A E 1 ∥ W − A E 2 ( A E 1 ( W ) ) ∥ 2 \min_{AE1} \|W - AE2(AE1(W))\|_2 minAE1WAE2(AE1(W))2

    • AE1的目标是最小化 W W W A E 2 AE2 AE2对其重构结果的差异。
    • AE1会尽可能地调整其重构,使得经过 A E 2 AE2 AE2处理后的输出尽可能接近原始数据 W W W,以欺骗AE2,使其无法正确识别出异常。
  3. ∣ W − A E 2 ( A E 1 ( W ) ) ∣ 2 |W - AE2(AE1(W))|_2 WAE2(AE1(W))2:这个部分是对 W W W A E 2 ( A E 1 ( W ) ) AE2(AE1(W)) AE2(AE1(W))之间的L2距离(欧几里得距离)的计算:

    • W W W表示真实的输入数据(一个时间窗口)。
    • A E 1 ( W ) AE1(W) AE1(W)表示将输入数据 W W W经过AE1的编码和解码过程得到的重构输出。也就是说,AE1试图将 W W W重构成类似于正常数据的样子。
    • A E 2 ( A E 1 ( W ) ) AE2(AE1(W)) AE2(AE1(W))表示AE2对AE1的重构输出进行再次重构。

工作机制

在这种对抗训练过程中,AE1和AE2的目标相互对立,形成一个博弈过程:

  • AE1的任务:生成一种“伪正常”的数据,使得AE2无法区分它和真实的正常数据。
  • AE2的任务:提高对数据的识别能力,尽可能区分真实的正常数据和AE1的重构数据。

2. 重构误差

重构误差(Reconstruction Error)是自编码器在异常检测中用于衡量输入数据与重构输出之间差异的一个重要指标。它反映了模型在重构输入数据时的偏离程度。自编码器的训练目标是最小化重构误差,使得模型能尽可能准确地重建输入数据。

1. 重构误差的定义

在自编码器(Autoencoder, AE)架构中,输入数据经过编码器(Encoder)被映射到潜在空间,生成一个潜在表示(通常是低维的)。然后解码器(Decoder)将这个潜在表示映射回输入数据空间,产生一个重构输出

假设:

  • 输入数据为 X X X
  • 自编码器对 X X X的重构输出为 R R R,即 R = A E ( X ) R = AE(X) R=AE(X)

重构误差就是 X X X R R R之间的差异,通常用L2范数(欧几里得距离)来度量,即
重构误差 = ∥ X − R ∥ 2 = ∥ X − A E ( X ) ∥ 2 \text{重构误差} = \|X - R\|_2 = \|X - AE(X)\|_2 重构误差=XR2=XAE(X)2

2. 重构误差的作用

重构误差可以作为异常检测的关键指标。对于正常数据,模型经过训练后可以很好地重构,因此重构误差很小;而对于异常数据,模型无法精确重构,导致重构误差较大。

在异常检测任务中,重构误差的大小可以帮助我们识别数据是否异常:

  • 低重构误差:说明自编码器能够很好地重构输入数据,即输入数据和重构输出非常接近。通常,这种情况表示输入数据符合模型的正常数据分布。
  • 高重构误差:说明自编码器无法很好地重构输入数据,即输入数据与重构输出差异较大。通常,这种情况提示输入数据可能是异常的。

3. 重构误差的计算示例

假设我们有一个简单的自编码器,用于处理手写数字图片(比如MNIST数据集),它学习了如何重构正常的数字“0”。

示例1:正常数据(数字“0”)

  • 输入图片:数字“0”的图片。
  • 自编码器经过编码和解码生成的重构输出:与输入的数字“0”非常相似。
  • 计算重构误差:假设 X X X是输入图片, R R R是重构输出。因为 R R R X X X非常接近,L2范数的值很小,例如 ∥ X − R ∥ 2 = 0.02 \|X - R\|_2 = 0.02 XR2=0.02
  • 结论:重构误差很小,自编码器认为该输入属于正常数据。

示例2:异常数据(数字“1”)

  • 输入图片:数字“1”的图片。
  • 自编码器生成的重构输出:由于模型只学习了如何重构“0”,因此输出可能更接近一个模糊的“0”形状,而不是“1”。
  • 计算重构误差: R R R X X X差异较大,L2范数的值较高,例如 ∥ X − R ∥ 2 = 0.8 \|X - R\|_2 = 0.8 XR2=0.8
  • 结论:重构误差较大,自编码器检测到该输入可能是异常数据。

重构误差是自编码器在异常检测中的重要指标,通过度量输入数据与重构输出的差异来判断数据是否异常。正常数据通常会有较低的重构误差,而异常数据则通常会有较高的重构误差。

3. 消融实验

消融实验(Ablation Study)是一种在机器学习和深度学习研究中常用的实验方法,用于评估模型各个组件或参数对最终性能的贡献。通过逐步移除或修改模型的某些部分,观察性能变化,消融实验可以帮助研究者了解哪些部分在模型中至关重要,哪些部分对结果影响较小。

消融实验的目的

消融实验的主要目的是分析模型的关键组件,找出最有效的部分,以优化模型结构、减少复杂度或改善性能。通过比较不同配置的模型性能,可以更深入地理解模型的工作原理和优化的潜力。

举例说明

假设我们设计了一个深度学习模型来进行图像分类,并添加了几个模块来提升性能。模型结构包括以下几个主要组件:

  1. 数据增强模块:对输入图像进行多种增强(如旋转、缩放等),以提高模型的泛化能力。
  2. 卷积神经网络(CNN)主干:基础的卷积网络层,用于提取图像特征。
  3. 注意力机制模块:引入注意力机制,用于捕捉图像中重要的特征,提高模型对复杂背景的鲁棒性。
  4. 全连接层:用于最终的分类。

在消融实验中,我们可以设计以下几种模型配置,通过逐步移除某些模块并观察对模型性能的影响:

  1. 完整模型:包含数据增强、CNN主干、注意力机制和全连接层的完整结构。
  2. 去除数据增强:移除数据增强模块,使用原始图像作为输入数据,观察数据增强对模型泛化性能的贡献。
  3. 去除注意力机制:移除注意力机制模块,仅使用CNN主干和全连接层,观察注意力机制对模型性能的提升效果。
  4. 仅保留CNN主干和全连接层:去除数据增强和注意力机制模块,只保留CNN主干和全连接层,观察基础模型的性能。

分析消融实验结果

在以上实验中,可以对比各个配置下模型在验证集上的准确率、召回率、F1分数等性能指标:

  • 如果完整模型的性能显著高于其他配置,说明各个模块都有助于提升模型性能。
  • 如果去除注意力机制后模型性能下降较多,说明注意力机制对模型在复杂背景下的准确性具有重要作用。
  • 如果去除数据增强对模型性能影响不大,则说明数据增强在此任务中作用不明显,可以考虑简化数据处理过程。

实际应用中的消融实验

USAD模型为例,我们可以通过消融实验来评估模型的对抗训练部分(AE1和AE2)对异常检测性能的贡献:

  1. 完整USAD模型:包含AE1和AE2,以及对抗性训练。
  2. 移除对抗性训练:不进行AE1和AE2之间的对抗性训练,仅让它们独立进行重构,观察是否对异常检测精度有显著影响。
  3. 仅使用AE1:移除AE2,仅使用AE1进行重构,观察AE2在提高检测性能方面的作用。
  4. 仅使用AE2:移除AE1,仅使用AE2进行重构,观察AE1对检测精度的影响。

通过对比不同配置下的异常检测性能,可以分析对抗性训练和双重自编码器结构在USAD模型中的贡献。这种分析可以帮助进一步改进模型,去除不必要的模块,从而减少计算复杂度或提高检测效率。

三、附加知识

1. 对抗训练

NLP中的对抗训练 + PyTorch实现
一文搞懂NLP中的对抗训练FGSM/FGM/PGD/FreeAT/YOPO/FreeLB/SMART


http://www.ppmy.cn/devtools/133254.html

相关文章

《Python使用sqlite3数据库》

《Python使用sqlite3数据库》 1、连接数据库2、创建游标3、执行SQL语句4、提交更改5、查询数据6、关闭连接 Python可以使用多种数据库,以下是一般步骤和示例: 1、连接数据库 首先要安装对应的数据库驱动。如使用MySQL数据库,要安装pymysql库…

SQL Server 2022安装要求(硬件、软件、操作系统等)

SQL Server 2022安装要求 1、硬件要求2、软件要求3、操作系统支持4、Server Core 支持5、跨语言支持6、磁盘空间要求 1、硬件要求 以下内存和处理器要求适用于所有版本的 SQL Server: 组件要求存储SQL Server 要求最少 6 GB 的可用硬盘驱动器空间。 磁盘空间要求随…

网站架构知识之Ansible剧本(day022)

1.剧本模式使用方法 1.创建/server/scripts/playbook目录,用于存放剧本 2.将/etc/ansible/hosts主机清单文件复制到该目录下,cp /etc/ansible/hosts . 3.书写剧本,剧本后缀名需要为yml,举报人你格式如下图,hosts代表执行的终端…

java双向链表解析实现双向链表的创建含代码

双向链表 一.双向链表二.创建MyListCode类实现双向链表创建一.AddFirst创建(头插法)二.AddLast创建(尾叉法)三.size四.remove(指定任意节点的首位删除)五.removeAll(包含任意属性值的所有删除)六.AddIndex(给任意位置添加一个节点…

简单介绍下 Java 中的 @Validated 和 @Valid 注解的区别?

文章目录 Valid:专注单个对象的深度验证适用场景使用示例小结 Validated:聚焦接口分组的批量验证适用场景使用示例小结 主要区别总结如何选择?总结推荐阅读文章 在 Java 开发中,为了确保输入数据符合我们的要求,少不了…

libgdiplus在MacOS M1上问题:Unable to load shared library ‘libgdiplus‘

libgdiplus在MacOS M1上问题:Unable to load shared library libgdiplus 问题解决步骤1步骤2 问题 在mac上的pycharm中执行下面的代码时出现下面的错误 slide.get_thumbnail( RuntimeError: Proxy error(TypeInitializationException): The type initializer for…

IntelliJ IDEA的快捷键

IntelliJ IDEA 是一个非常强大的集成开发环境,它提供了大量的快捷键来加速开发者的日常工作。这里为您整理了一份 IntelliJ IDEA 的快捷键大全,包含了编辑、导航、重构、运行等多个方面的快捷键。请注意,这些快捷键是基于 Windows 版本的 Int…

shell--常用命令

命令执行失败之后的操作 teee --version || { echo "tee command not found"; exit 1; } /dev/null /dev/null 对应的是一个空设备文件,任何写入这个文件的数据都将立即被销毁,而不是写到磁盘上。 if dpkg -s software-properties-common &g…