GANomaly: Semi-Supervised AnomalyDetection via Adversarial Training GANomaly:基于对抗训练的半监督异常检测

本文主要是介绍GANomaly: Semi-Supervised AnomalyDetection via Adversarial Training GANomaly:基于对抗训练的半监督异常检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:Samet Akcay 1, Amir Atapour-Abarghouei 1,和Toby P. breckon 1,2英国杜伦大学计算机科学系

术语:exemplary data 示例数据、within this challenging context 在这种具有挑战性的背景下、

Abstract

我们引入了一种新的异常检测模型,通过使用条件生成对抗网络,联合学习高维图像空间的生成和潜在空间的推断。在生成器网络中使用编码器-解码器-编码器子网络使模型能够将输入图像映射到低维向量,然后用于重建生成的输出图像。附加编码器网络的使用将此生成的图像映射到其潜在表示。训练过程中最小化这些图像与潜在向量之间的距离,助于学习正态样本的数据分布。在推断时,与学习到的数据分布的更大距离度量表明该分布是异常。对来自不同领域的几个基准数据集的实验表明,模型的有效性和优于先前最先进的方法。

1 Introduction

监督方法在很大程度上依赖于大型的标记数据集。我们的评估中考虑的一个具体应用是航空或边境安全的x射线筛查。模型在正常样本(a)上进行训练,并在正常和异常样本(b)上进行测试。当模型的输出大于某个阈值a (x) > φ时,就会检测到异常

如上图所示,异常检测任务的正式问题定义如下:给定一个数据集D,其中包含大量用于训练的正常样本X,以及相对较少的用于测试的异常样本X^,对模型f的参数θ进行优化。f在训练过程中学习正常样本的数据分布pX,在测试过程中通过输出异常分数A(x)将异常样本识别为离群值,其中x为给定的测试示例。较大的A(x)表示测试图像中可能存在异常,因为f在训练过程中学习最小化输出分数。A(x)具有一般性,它可以检测出不符合pX的不可见异常

各种应用领域中的异常检测模型[2-4,23,39],相当多的工作对文献中的方法进行了分类[9,19,28,29,33]。生成对抗网络(GAN)已成为跨无监督和半监督问题的领先方法。正如[23]中所述,对抗训练也在最近的异常检测工作中被采用。

  • 使用单色图像作为我们方法的输入,仅从正常(非异常)训练示例集中提取
  • 我们的方法不需要两阶段的训练,并且对于模型训练和后来的推理(运行时测试)都是有效的。
  • 关键新颖之处在于我们在编码器-解码器-编码器管道中使用对抗性自编码器,捕获图像和潜在向量空间中的训练数据分布。(实际上只基于正常的训练数据示例)

本文主要贡献:

  • 半监督异常检测:在编码器-解码器-编码器管道中的新型对抗性自编码器,捕获图像和潜在向量空间中的训练数据分布,产生优于当代基于GAN和传统基于自编码器的方法的结果。
  • 功效:一种高效和新颖的异常检测方法,在统计和计算上都有更好的表现。
  • 可再现性:简单有效的算法,使结果可通过code公开复制。

Our Approach: GANomaly

GAN

这项工作最初的主要目标是产生逼真的图像。想法是两个网络(生成器和鉴别器)在训练过程中相互竞争,前者试图生成图像,而后者决定生成的图像是真还是假。

  • 生成器:是一个类似解码器的网络,它从潜在空间中学习输入数据的分布。这里的主要目标是对捕获原始真实数据分布的高维数据进行建模。
  • 鉴别器网络通常有一个经典的分类架构,读取输入图像,并确定其有效性(即真假)。

为了解决训练不稳定性问题,已经提出了几种经验方法[7,38],著名研究是Radford和Chintala[34]的深度卷积GAN (Deep Convolutional GAN, DCGAN),他们通过去除完全连接层,在整个网络中使用卷积层和批处理归一化,引入了一个全卷积生成网络。通过使用Wasserstein损失,GAN的训练性能得到进一步提高。

Adversarial Auto-Encoders (AAE)

  • 由两个子网络组成,即编码器和解码器。
  • 该结构将输入映射到潜在空间,并重新映射回输入数据空间,称为重建。
  • 训练具有对抗设置的自编码器不仅可以更好地重建,而且可以控制潜在空间。

实验设置

有一个大的训练数据集D,只包含M个正常图像较小的测试数据集        且给定数据集

  1. 首先对D建模以学习其流形
  2. 在推理阶段检测D^中的异常样本作为异常值
  3. 模型f学习正态数据分布并最小化输出异常分数A(x)
  4. 对于给定的测试图像^x, a (^x)的高异常分数表示图像中可能存在异常
  5. 评价标准为分数的阈值(φ),其中A(^x) > φ表示异常

实验方法概述

包含两个编码器,一个解码器和鉴别器网络,在三个子网络中使用。

  1. 自编码器网络G。作为模型的生成器部分,学习输入数据表示,并分别通过使用编码器和解码器网络重建输入图像。
  2. 编码器网络E。对网络g重建的图像^x进行压缩。子网络E通过参数化明确地学习最小化距离。
  3. 鉴别器网络D。目标是将输入x和输出^x分别分类为真或假。该子网是DCGAN中引入的标准鉴别器网络。

模型训练

组合三个损失函数来制定目标函数,每个损失函数都优化单个子网络。

  1. Adversarial Loss 敌对损失:
  2. Contextual Loss 上下文损失:
  3. Encoder Loss 编码器损失:为输入瓶颈特征,为生成图像的编码特征。

生成器的目标函数:。1、2损失可以强制生成器生成真实且符合上下文的图像。

 模型检验

  1. 对于测试样本x^的异常分数定义:
  2. 特征缩放异常分数控制在[0,1]范围内:,最终会产生一个异常得分向量S',用于测试集D^的最后评估

所用数据集

  • MNIST。

        将一个类别视为异常,而将其余类别视为正常类别。我们总共有十组数据,每组数据都将个别数字视为异常。

  • CIFAR10。

        将一个类视为异常,其余类视为正常。然后,我们通过在后一种标签上训练模型来检测从前一类中提取的异常值。

  • University Baggage Anomaly Dataset | (UBA) 大学行李异常数据集。
  • Full Firearm vs. Operational Benign | (FFOB) 。

对以上4类数据集进行训练集和测试集分割的步骤如下:对正常样本进行分割,分别将80%和20%的样本视为训练集和测试集的一部分。然后我们将MNIST调整为32 ×32,UBA和FFOB分别调整为64 × 64。

我们的对抗训练也是基于标准的DCGAN方法进行一致的比较。因此,我们的目标是展示我们的多网络架构的优势,而不使用任何技巧来改进GAN训练

还与传统的变分自编码器架构(VAE)进行了比较,显示我们的多网络架构的优势。

Results

knife的性能相对较低可能是因为它的形状简单,导致过拟合,从而导致高误报。就整体性能而言,我们的方法优于其他模型,在UBA和FFOB数据集上的AUC分别为0.666和0.882。

图5描述了超参数的选择最终如何影响模型的整体性能。

  • 在图5 (a)中,我们看到,对于具有异常数字2的MNIST数据集,当潜在向量z的大小为100时,可以实现最佳性能。图5 (b)展示了调整公式4中的损失函数对整体性能的影响。当wbce = 1, wrec = 50, wenc = 1时,模型AUC最高。我们根据经验观察到其余数据集的调优模式相同。

  • 图6提供了推理阶段(a)的异常分数直方图和从鉴别器网络的最后一层卷积提取的特征的t-SNE可视化(b)。这两幅图都显示了潜在向量z和特征f(:)空间之间的明显分离。

  • 表2说明了基于GAN的模型的运行时性能。与其他方法相比,AnoGAN[39]的计算成本相当高,因为每个示例都需要对潜在向量进行优化。对于EGBAD[40],我们报告了与原始论文相似的运行时性能。另一方面,我们的方法实现了最高的运行时性能。UBA和FFOB数据集的运行时性能与MNIST相当,尽管它们的图像和网络大小是MNIST的两倍。

  • 真实图像和虚假图像,它们分别是我们模型的输入和输出。对于MNIST数据中的2类,MNIST数据集相对来说没有挑战性,并且模型学习了足够的信息,能够生成在训练期间未见过的样本。
  • 尽管模型无法区分图像空间中的异常,但潜在向量空间中的距离为检测异常提供了足够的细节。图7 (b-c)说明该模型无法产生异常对象。
  • 总的来说,这些结果表明,我们的方法在统计和计算上都优于领先的最先进的方法。

Conclusion

  1. 引入了一种新的编码器-解码器-编码器架构模型。用于通过对抗性训练框架实现的一般异常检测。
  2. 在不同复杂性的数据集基准和x射线安全筛查的操作异常检测环境中进行的实验表明,所提出的方法优于当代最先进的基于GAN的异常检测方法和传统的基于自编码器的异常检测方法,具有对任何异常检测任务的泛化能力。

这篇关于GANomaly: Semi-Supervised AnomalyDetection via Adversarial Training GANomaly:基于对抗训练的半监督异常检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348985

相关文章

redis在spring boot中异常退出的问题解决方案

《redis在springboot中异常退出的问题解决方案》:本文主要介绍redis在springboot中异常退出的问题解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴... 目录问题:解决 问题根源️ 解决方案1. 异步处理 + 提前ACK(关键步骤)2. 调整Redis消费者组

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Java内存区域与内存溢出异常的详细探讨

《Java内存区域与内存溢出异常的详细探讨》:本文主要介绍Java内存区域与内存溢出异常的相关资料,分析异常原因并提供解决策略,如参数调整、代码优化等,帮助开发者排查内存问题,需要的朋友可以参考下... 目录一、引言二、Java 运行时数据区域(一)程序计数器(二)Java 虚拟机栈(三)本地方法栈(四)J

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

python利用backoff实现异常自动重试详解

《python利用backoff实现异常自动重试详解》backoff是一个用于实现重试机制的Python库,通过指数退避或其他策略自动重试失败的操作,下面小编就来和大家详细讲讲如何利用backoff实... 目录1. backoff 库简介2. on_exception 装饰器的原理2.1 核心逻辑2.2

如何合理管控Java语言的异常

《如何合理管控Java语言的异常》:本文主要介绍如何合理管控Java语言的异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、Thorwable类3、Error4、Exception类4.1、检查异常4.2、运行时异常5、处理方式5.1. 捕获异常

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图