[Paper][Code]
本文提出了一种基于双指向性GAN异常检测的方法ALAD,使用对抗学习到的特征的重建误差决定样本是否异常。ALAD建立在确认数据空间和潜在空间的循环一致性损失、稳定的GAN训练上,达到了SOTA。
AnoGAN首先提出了在眼部图像上使用一个标准GAN结构做异常检测的方法,然而在测试阶段,为了找到潜在向量z,该方法需要对每个测试样本解决优化问题,之后通过z计算每个样本的异常分数,因此在实时应用中或应用于大型数据集时实现起来非常不现实。
本文提出的ALAD算法不仅十分有效,而且测试简便,利用一类GAN在训练时同时学习一个编码网络,除此之外还结合了一些现有的技术提升编码网络、稳定GAN训练,通过消融实验显示这些技术确实提高了异常检测的效果。
创新点:
建立在双指向性GAN的结构上,因此也包括一个将数据样本映射到潜在变量的编码网络,避免了昂贵的计算过程,潜在变量在测试时只需要在编码网络中通过一个简单的前向传播就可以获得;
评价指标与AnoGAN不同;
结合最新进展以稳定GAN训练过程。
A. GAN结构
Dzz/ Dxz/ Dxx表示判别器,G为生成器,E为编码器,这些网络在训练时同时学习。
B. 稳定的GAN训练过程
C. 检测异常
ALAD是以重建为基础的异常检测技术,主要评估测试样本与GAN的生成图像差异。正常样本会通过GAN精准重建,而异常样本重建的差异将非常大。首先需要使用GAN,对数据分布进行有效建模;同时我们需要学习数据的流形以便恢复精确的潜在表达。这两个对称的条件熵循环一致正则项能够保证这两点。
十字为异常样本,圈为正常样本。
另一个ALAD的重要组成部分是使用异常分数量化原始样本和重建样本之间的距离,本文提出在特征空间中计算循环一致性判别器Dxx的样本距离。
f(·,·) 表示给定一对输入样本时Dxx网络中在logits前一层的激励函数,A(x) 值越大,样本更可能为异常。这个损失灵感来源于GAN稳定训练中的特征匹配损失,但不同的是本文使用的是Dxx判别器(两个输入)。
实验
图像数据 :SVHN & CIFAR-10
以一类为正常图像,其余9类均为异常。对于每个数据集,使用80%数据用于训练,剩余20%作为测试数据;在训练集中额外分出25%作为验证集,在训练、验证集中不使用任何异常样本。
本文使用AUROC评价模型。
Baseline
- OC-SVM
- Isolation Forests
- DSEBM:基于能量的模型算法中的SOTA
- DAGMM:基于自动编码器算法中的SOTA
- AnoGAN:唯一基于GAN的异常检测算法
图像数据集实验结果
误差分析
第一行为正常类别,第二行为正常类别的重建图像;第三行为异常类别,第四行为异常类别的重建图像。
消融实验
SN:谱归一化
DL:潜在空间中的判别器
不同的异常分数模型实验