0%

lyx GAN ensemble for anomaly detection

1.研究背景

当异常检测形式化为一个无监督的学习问题时,通常需要模型学习正常数据的分布。基于GAN的方法以及改进版本已经被提出。很多工作主要是修改生成器的结构。

2.研究动机

GAN方法存在模式塌陷以及训练不稳定的问题。

图像生成任务中相关的研究表明GAN集成通常比单个GAN更加稳定。

因此,本研究提供了构造基于GAN的异常检测方法进行集成,从而更好提高异常检测性能。

3. 基于GAN的异常检测集成方法

3.1 基于GAN的异常检测模型

基于GAN的异常检测模型通常包含一个编码-解码结构的生成器和一个分类模型作为解码器。现有的一些基于GAN的异常检测模型都可以统一到这个框架中 (f-AnoGAN, EGBAD, GANomaly, Skip-GANomaly等)。

生成器:通常由一个编码网络和一个解码网络组成

​ 编码网络:$G{e}(\cdot,\phi):\mathbb{R}^d \rightarrow \mathbb{R}^{d’}$,解码网络: $G{d}(\cdot,\psi):\mathbb{R}^{d’} \rightarrow \mathbb{R}^{d}$;

​ $\bold{z}=G{e}(\bold{x},\phi) , \tilde{\bold{x}}=G{d}(\bold{z},\psi)$

鉴别器:$D(\cdot,\gamma): \mathbb{R}^d \rightarrow \mathbb{R}$

基于GAN的异常检测模型通常会考虑以下四种损失函数:

  1. 对抗损失
    1. vanilla GAN:$L_{a-g}(\bold{x}) = \log {D(x)+\log ({1-D(G_d(G_e(\bold{x})))}})$
    2. WGAN:$L_{a-wg}(\bold{x}) = D(\bold{x}) + D(G_d(\tilde{\bold{z}}))$
    3. BiGAN:$L_{a-bg}(\bold{x}) = \log {D(\bold{x}, G_e(\bold{x}))+\log ({1-D(G_d(G_d(\tilde{\bold{z}}),\tilde{\bold{z}})}})$
  2. 重构损失:$L_r(\bold{x})=||\bold{x}-G_d(G_e(\bold{x}))||_l^{l}$
  3. 鉴别损失:$L_d(\bold{x})=||f_D(\bold{x})-f_D(G_d(G_e(\bold{x})))||_l^{l}$
  4. 编码损失:$L_e(\bold{x})=||G_e(\bold{x};\phi)-G_e(G_d(G_e(\bold{x};\phi));\tilde{\phi})||_l^l$

为训练鉴别器,这些GAN的模型需要最小化对抗损失;

而为了训练生成器,这些GAN模型需要最小化上面提到的四种损失函数。

训练完成之后,异常分数通常是重构误差和鉴别损失的加权和:

几个基于GAN的异常检测方法:

f-AnoGAN

image-20211021114049170

鉴别器

采用WGAN的对抗损失$L_{a-bg}(\bold{x}) = \log {D(\bold{x}, G_e(\bold{x}))+\log ({1-D(G_d(G_d(\tilde{\bold{z}}),\tilde{\bold{z}})}})$。

生成器

生成器只利用了对抗损失。

然后固定鉴别器和生成器,以$\alpha_1=\alpha_3=0$训练编码器。

EGBAN

image-20211021114208417

鉴别器

采用BiGAN的对抗损失$L_{a-bg}(\bold{x}) = \log {D(\bold{x}, G_e(\bold{x}))+\log ({1-D(G_d(G_d(\tilde{\bold{z}}),\tilde{\bold{z}})}})$。

生成器

生成器只利用了对抗损失。

GANomaly

image-20211021114227885

鉴别器

采用VanillaGAN的对抗损失$L_{a-g}(\bold{x}) = \log {D(x)+\log ({1-D(G_d(G_e(\bold{x})))}})$。

生成器

生成器利用了上述所说的各种损失函数,唯一例外的是异常分数使用了$L_r$。

Skip-GANomaly

image-20211021114337312

训练生成器的时候没有使用编码误差。

3.2 基于GAN异常检测算法的集成学习

一组生成器:

image-20211021114411780

一组鉴别器:

image-20211021114423492

将生成器和鉴别器两类配对,将索引为(i,j)的生成器和鉴别器对的对抗损失和鉴别损失记做:

image-20211021114434333

类似的,将每个生成器的重构损失和编码损失记为:

image-20211021114445317

集成GAN异常检测的目标是:

最大化对抗损失的和训练鉴别器,同时最小化生成器的损失训练鉴别器:

image-20211021114523041

image-20211021114532072

异常评分是来自多个生成器和鉴别器的平均:

image-20211021114542638

4. 实验评估

4.1 数据集

  • KDD99
  • OCT
  • MNIST
  • CIFAE-10

4.2 对比方法

  • f-AnoGAN
  • EGBAD
  • GANomaly
  • Skip-GANomaly

实验设置:所有的实验都是利用3个生成器和3个鉴别器,即$I=J=3$。

4.3 性能比较

MNIST数据集上构造了10个异常检测任务,每类数字作为异常类,其余的9类作为正常数据。性能如表1所示。

image-20211021114553207

CIFAR10数据集上也是构造了10个异常检测任务。结果如表2所示。

image-20211021114609434

OCT数据集,三类任务

image-20211021114618807

KDD99数据集

image-20211021114627399

4.4 集成大小分析

生成模型和鉴别模型的数目在{1,3,5,7}之间变化。

image-20211021114638379

4.5 Encoding vector和hidden vector分析

Encoding vector:指的是从编码器的编码输出

hidden vector: 指的是鉴别器最后一个隐层的输出

集成模型的Encoding vector 和hidden vector取得是多个模型的平均。

  • 如图4(a),4(b)所示,正常样本和异常样本的encoding vector混合在一起。意味着重构误差并不能将异常和正常样本分开。
  • 如图4(b)所示,在基模型的鉴别器中,训练样本和测试样本得到了不同的表示,意味着单个模型的鉴别器可能会过拟合训练数据。而如图4(e)所示,集成训练展示了训练数据和测试数据的表示是类似的。
  • 如图4(c)所示,单个模型的鉴别器不能区分测试正常和异常样本,图4(f)所示,异常和正常似乎有一些区分。

image-20211021114655086

4.6 参数$\beta$

image-20211021114708627

$\beta$:表示重构损失与鉴别损失的相对权重。

随着$\beta$值的增加,鉴别损失对于异常评分的贡献越大,检测性能提高。说明鉴别损失对于异常检测是重要的。

与基模型相比,对于大的$\beta$值,集成模型提升更多。表明集成模型主要是提高了基模型的鉴别损失。

5. 总结

  • 本文对现有的基于GAN的异常检测方法进行了框架统一;
  • 本文主要介绍了将现有的基于GAN的异常检测算法的集成方法;
  • 本文在多个领域的实验结果表明集成方法确实得到了更好的性能。并且也从编码向量和隐向量的角度验证了理论分析以及集成学习的益处。