GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training_Flare_J的博客-程序员宅基地

技术标签: 论文  

GANomaly:通过对抗性训练进行半监督异常检测

​ — 2018 发表于发表于arXiv

Abstract

异常检测是计算机视觉中的一个经典问题,即当数据集由于另一类(异常)的样本量不足而高度偏向于一类(正常)时,从异常中确定正常。虽然这可以作为一个有监督的学习问题来解决,但一个更具挑战性的问题是如何检测未知/看不见的异常情况,从而将我们带入一类半监督学习范式的空间。提出了一种新的异常检测模型,该模型采用条件生成对抗网络,联合学习高维图像空间的生成和潜在空间的推理。在生成器网络中使用编码器-解码器-编码器子网络,使得模型能够将输入图像映射到低维向量,然后用低维向量重构生成的输出图像。附加编码器网络的使用将生成的图像映射到其潜在表示。在训练过程中最小化这些图像和潜在向量之间的距离有助于学习正态样本的数据分布。因此,推断时从该学习数据分布得到的较大距离度量表示该分布的异常值-异常。在多个不同领域的基准数据集上进行的实验表明,该模型的有效性和优越性优于以往的最新方法。

Introduction

尽管在各种计算机视觉任务中产生了令人鼓舞的性能,但有监督的方法在很大程度上依赖于大的标记数据集。然而,在许多实际问题中,来自更不寻常的兴趣类的样本大小不足以有效地建模。相反,异常检测的任务是能够识别这种情况,方法是只对被认为是正常的样本进行训练,然后识别这些异常的、可用性不足的样本(异常),这些样本不同于所学习的正态样本分布。例如,我们在评估中考虑的一个实际应用是航空或边境安全的X射线检查——在不经常遇到构成安全威胁的异常项目的情况下,很难获得任何数量的此类示范性数据,并且可能会发现构成潜在威胁的任何异常的性质由于一系列外部因素而演变。然而,在这一具有挑战性的背景下,人类安全运营商仍然有能力和适应性异常探测器,以应对新出现的异常威胁特征。

![](https://img-blog.csdnimg.cn/img_convert/53d4957a06cdd8f1b70bfdbda9b128c3.png

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

在不同的应用领域中,有大量的研究提出了异常检测模型此外,有相当多的工作对文献中的方法进行了分类。在这一领域取得最新进展的同时,生成性对抗网络(GAN)已经成为解决无监督和半监督问题的主要方法。古德费罗等人。首先提出了一种通过共同训练一对网络(生成器和鉴别器)的方法。前者对来自潜在向量的高维数据进行建模,使其与源数据相似,而后者区分建模(即近似)和原始数据样本。在这项工作之后,有几种方法来改进训练和推理阶段。正如在[23]中所回顾的,对抗性训练也已被异常检测领域的近期工作所采用。Schlegl等人[39]假设GAN的潜在向量表示数据的真实分布,并通过基于潜在向量优化预先训练的GAN来重新映射到潜在向量。其局限性在于重映射到该潜在向量空间的巨大计算复杂性。在一项后续研究中,Zenati等人[40]训练了一个BiGAN模型[14],该模型将图像空间映射到潜在空间,并报告了统计和计算上的优越结果,尽管是在简单的MNIST基准数据集上[25]。受[6,39,40]的启发,本文提出了一种通用的异常检测体系结构,包括一个对抗性训练框架。与[39]类似,我们使用单色图像作为我们方法的输入,该方法仅从一组正常(非异常)训练示例中提取。然而,与此相反,我们的方法不需要两阶段训练,并且对于模型训练和后期推理(运行时测试)都是有效的。与[40]一样,我们还联合学习图像和潜在向量空间。我们的主要创新点来自这样一个事实,即我们在编码器-解码器-编码器管道中使用对抗式自动编码器,捕获图像和潜在向量空间中的训练数据分布。像这样的对抗性训练体系结构,实际上只基于正常的训练数据示例,可以产生比具有挑战性的基准问题更高的性能。本文的主要贡献如下:

  1. 半监督异常检测-编码器-解码器-编码器管道内的一种新型对抗性自动编码器,捕获图像和潜在向量空间内的训练数据分布,产生优于当代基于GAN和传统基于自动编码器的方法的结果。

  2. 有效性-一个有效的和新的异常检测方法,产生统计和计算性能更好。

  3. 再现性-一种简单有效的算法,可以通过公开提供的代码来再现结果。

Related Work

长期以来,异常检测一直是广泛领域的一个重要问题,包括但不限于生物医学[39]、金融[3]和安全,如视频监控[23]、网络系统[4]和欺诈检测[2]。此外,文献中已经发表了大量的工作来对这些方法进行分类,较窄的综述范围主要集中在基于重建的异常技术上。绝大多数基于重建的方法已经被用来研究视频序列中的异常现象。Sabokrou等人[37]研究了在自动编码器(全局)和最近邻相似性(局部)特征描述符之上使用高斯分类器来建模不重叠的视频块。Medel和Savakis[30]的一项研究利用卷积长-短期记忆网络进行异常检测。该模型仅对正态样本进行训练,预测未来可能的标准样本框架,从而在推理过程中区分异常。在另一项关于同一任务的研究中,Hasan等人[18]考虑了两阶段方法,首先使用局部特征和完全连接的自动编码器,然后使用完全卷积的自动编码器进行端到端特征提取和分类。实验在异常检测基准上产生了有竞争力的结果。为了确定对抗式训练在视频异常检测中的效果,Dimokranitou[13]使用了对抗式自动编码器,在基准测试中产生了相当的性能。最近文献中更多的关注集中在提供对抗性训练上。Ravanbakhsh等人的开创性工作[35]利用图像到图像的转换[21]来检查拥挤场景中的异常检测问题,并在基准上实现了最先进的技术。方法是训练两个有条件的gan。第一发生器从帧产生光流,而第二发生器从光流产生帧。上述方法的通用性是有问题的,因为在许多情况下数据集没有时间特征。Schlegl等人[39]对使用对抗性训练进行异常检测的最有影响力的描述之一。作者假设GAN的潜在向量代表了数据的分布。然而,映射到GAN的向量空间并不简单。为了实现这一点,作者首先训练一个发生器和鉴别器只使用正常的图像。在下一阶段,他们利用预先训练的生成器和鉴别器,通过冻结权值,并在z向量的基础上优化GAN,重新映射到潜在向量。在推理过程中,该模型通过输出一个高异常分数来精确定位异常,报告比以前的工作有显著改进。这项工作的主要限制是它的计算复杂性,因为该模型采用两阶段的方法,并且重新映射潜在向量是非常昂贵的。在一项后续研究中,Zenati等人[40]研究了BiGAN[14]在异常检测任务中的应用,考察了同时从图像空间映射到潜在空间的联合训练,反之亦然。通过[39]训练模型可以在MNIST[25]数据集上获得更好的结果。

总的来说,先前的工作有力地支持了这样一个假设,即使用自动编码器和GAN在异常检测问题上显示出前景。受[39]和[40]中研究的带推理的GAN思想的启发,我们引入了一个条件对抗网络,使得生成器由编码器-编码器-编码器子网络组成,共同学习图像和潜在向量空间中的表示,并在统计和计算上都达到了最先进的性能。

GANomaly

为了详细说明我们的方法,有必要简要介绍GAN网络的背景

Generative Adversarial Networks (GAN) 是一种无监督机器学习算法,最早由Goodfellow等人提出。这项工作最初的主要目标是生成逼真的图像。其思想是两个网络(生成器和识别器)在训练过程中相互竞争,前者试图生成图像,而后者决定生成的图像是真实的还是虚假的。该生成器是一个类似于解码器的网络,它从一个潜在空间学习输入数据的分布。这里的主要目标是为了构建能够捕获原始真实数据分布的高维数据。判别器网络通常具有经典的分类体系结构,读取输入图像,并确定其有效性(如是真或假)。

GAN由于其潜在的[28]特性,近年来受到了广泛的研究。为了解决训练不稳定性问题,提出了几种经验方法。Radford和Chintala[31]在文献中受到关注的一个著名研究是Deep Convolutional GAN (DCGAN),他们通过去除全连接层,在整个网络中使用卷积层和batch-normalization来引入一个全卷积生成网络。利用Wasserstein loss进一步提高GAN的训练性能。

Adversarial Auto-Encoders (AAE) 由两个子网络组成,即编码器和解码器。这种结构将输入映射到潜在空间并重新映射回输入数据空间,称为重构。训练具有对抗性设置的自动编码器,不仅可以更好地重建,而且可以控制潜在空间[33,34,28]。

GAN with Inference也可以通过挖掘潜在的空间变量[35]在识别任务中使用。例如,[36]的研究表明,网络能够为相关的高维图像数据生成类似的潜在表示。Lipton和Tripathi[37]也通过引入一种基于梯度的方法来研究逆映射的思想,将图像映射回潜在空间。这也在[38]中进行了探索,重点是生成器和推理网络的联合训练。前者从潜在空间映射到高维图像空间,后者从图像映射到潜在空间。Donahue等人[16]的另一项研究表明,随着编码器网络从图像空间映射到潜在空间的额外使用,普通GAN网络能够学习逆映射。

Proposed Approach

问题定义:我们的目标是训练一个无监督的网络,使用一个高度偏向于特定类的数据集来检测异常——即包含仅用于训练的正常的非异常事件。这个问题的正式定义如下:

给定一个仅包含M个正常图片的大数据集D,D = {X1,…,XM},同时还有包含N个正常和非正常图片的小数据集Dˆ,Dˆ = {(Xˆ1, y1), . . . , (XˆN , yN )},,对于正常和非正常图片yi大小值分别为[0,1]。在实际训练中,训练集远远大于测试集,即M >> N

给定数据集,我们的目标首先是构建模型D学习数据的manifold,然后在推理阶段检测在D^中作为异常值的异常样本。模型f同时学习正态数据分布
并最小化输出异常值A(x)。更大的异常分数(xˆ)表示在测试图像中可能存在的异常。其评估标准集设置分数的阈值(φ),其中f (xˆ)>φ表示异常。

Ganomaly Pipeline:图2基本概述了我们的方法:

img

整个框架由三部分组成:

GE(x),GD(z) 统称为生成网络,可以看成是第一部分。这一部分由编码器 GE(x) 和解码器 GD(z) 构成,对于送入数据 x 经过编码器 GE(x) 得到潜在向量 z,z 经过解码器 GD(z) 得到 x 的重构数据 x̂ 。

模型的第二部分就是判别器 D,对于原始图像 x 判为真,重构图像 x̂ 判为假,从而不断优化重构图像与原始图像的差距,理想情况下重构图像与原始图像无异。

模型的第三部分是对重构图像 x̂ 再做编码的编码器 E(x̂) 得到重构图像编码的潜在变量 ẑ。

在训练阶段,整个模型均是通过正常样本做训练。也就是编码器 GE(x),解码器 GD(z) 和重构编码器 E(x̂),都是适用于正常样本的。

当模型在测试阶段接受到一个异常样本,此时模型的编码器,解码器将不适用于异常样本,此时得到的编码后潜在变量 z 和重构编码器得到的潜在变量 ẑ 的差距是大的。我们规定这个差距是一个分值在这里插入图片描述
,通过设定阈值 ϕ,一旦 A(x)>ϕ 模型就认定送入的样本 x 是异常数据。

Model Training

我们假设当异常图像前向传播过网络G, GD不能重构该异常图像,虽然GD成功映射该输入X为潜在向量z。这是因为网络在训练时只在正常样本上构造,其参数不适用于生成异常样本。丢失了异常内容的输出Xˆ会导致编码器网络E将Xˆ映射到一个也丢失了异常特征表示的向量zˆ,导致z和zˆ之间的不同。当输入图像X的潜在向量空间存在这种差异时,该模型将X分类为异常图像。为了验证这一假设,我们结合三个损失函数来构造我们的目标函数,每个损失函数都优化单独的子网络。

Adversarial Loss:根据目前新异常检测方法的趋势[4,15],我们也使用特征匹配损失进行对抗性学习。由Salimans等人提出的[29],特征匹配被证明可以减少GAN训练的不稳定性。与传统GAN基于D的输出(真/假)来更新G不同,我们基于D的内部表征来更新G 。对于第二部分判别器下,设置了一个特征匹配误差,用于在图像特征层方面做优化因此,我们的对抗性损失如下:

Contextual Loss: 对抗性损失足以用生成的样本欺骗判别器。然而,由于只有对抗性损失,生成器不能优化以学习输入数据的上下文信息。对于第一部分的生成网络下,文章给定了一个重构误差损失,用于在像素层面上减小原始图像和重构图像的差距。

Encoder Loss: 对于第三部分重构图像编码得到的潜在变量 ẑ ,这部分对于正常数据而言,希望得到的 ẑ 与原始数据直接编码得到的 z 无差别最好,也就是对于最好的得分判断,对于正常数据而言理想状态下希望在这里插入图片描述
。当然这是最理想的状态,但是对于正常数据还是希望 A(x) 越小越好,所以引入了一个潜在变量间的误差优化。

训练过程中只有正例样本参与,模型只对正例样本可以做到较好的编码解码,所以送入负例样本在编解码下会出现编码得到的潜在变量差异大从而使得差距分值 A(x) 大,判断为异常。对于模型,整个损失函数可以表示为:
在这里插入图片描述
这里的 ωadv,ωcon,ωenc 是调节各损失的参数,可以根据具体实验设置。

Experimental Setup

在这里插入图片描述

为了评估我们的异常检测框架,我们使用了三种类型的数据集,从MNIST[17]的简单基准测试到CIFAR[40]的参考基准测试,再到x射线安全筛查[41]中异常检测的操作环境。

MNIST: 为了复现[15]中的结果,我们首先对MNIST数据[17]进行实验,其中一个类为异常,其余类为正常类。我们总共有10组数据,每组数据都将单个数字视为异常。

CIFAR10: 在使用CIFAR数据集时,我们再次将一个类视为异常,而将其他类视为正常。然后,我们通过在后面的标签上训练模型,从前面的类中提取实例来检测异常值。

University Baggage Anomaly Dataset - (UBA):这个基于滑动窗口补丁的数据集包含230275个图像补丁。正常样本(230,275)通过重叠滑动窗口从全x射线图像中提取,使用单一常规x射线图像和双能量[42]对应的假彩色材料映射构建。异常类(122,803)包括三个子类——刀(63,496)、枪(45,855)和枪组件(13,452)——包含带着手动裁剪的威胁对象的滑动窗口补丁,它们与真实图像的交并比大于0.3。

对上述数据集进行训练集和测试集分割的过程如下:我们对正常样本进行分割,其中80%和20%的样本分别作为训练集和测试集的一部分。数据集中正常类和异常类的比例分别为MNIST(1.8:1)、UBAgun(1:1)、UBAgun-parts(3.4:1)和UBAknife(1.37:1)。我们分别将MNIST大小调整为32×32,DBA调整为64×64。

在[4,15]之后,我们的对抗性训练也基于标准DCGAN方法[31]。因此,我们的目标是显示我们的多网络体系结构的优势,而不是使用任何技巧来提高GAN训练。我们使用PyTorch [43] (v0.3.0 Python 3.6.4)来实现我们的方法,通过使用最初学习速率设置为lr = 2e−3以及momentums设置为β1 = 0.5,β2 = 0.999的Adam[44]来优化网络。判别器优化基于二进制交叉熵损失,而生成器基于上面的方程4来更新,根据经验产生的最佳结果来设置λ= 50(可见section3.2)。我们分别为MNIST、CIFAR和DBA数据集训练了15、25、25个epoch。

Results

我们报告的结果基于Receiver Operating Characteristic(ROC)曲线下的面积(AUC),真正率(TPR)作为不同点的假正率(FPR)的函数,每个点对应不同阈值的TPR-FPR值。
表1给出了MNIST数据的结果,我们发现我们的方法明显优于之前的模型[4,15]。对于每一个被选为异常的数字,我们的模型都比其他方法获得了更高的AUC。有趣的是,所有方法在检测数字1是否异常方面的性能都很差。这可能是因为该类的线性形状简单,因此任何模型都很容易与数据过度匹配。总的来说,即使在这种具有挑战性的情况下,所提出的方法也明显优于其他方法。

img

表2显示了在CIFAR10数据集上训练的模型的性能。我们发现,我们的模型对于任何一个被选为异常的类,都能获得最佳的AUC性能。在这个数据集中获得相对较低量化结果的原因是,对于选定的异常类别,存在一个类似于异常的正常类(飞机vs.鸟,猫vs.狗,马vs.鹿,汽车vs.卡车)。
img
从表3中可以看出,我们的模型优于其他方法,不包括刀的情况。事实上,与MNIST数据中的数字1相似,刀的模型性能是可以比较的。同样,这也源于导致高false positive的对象的形状。然而,就整体性能而言,我们的方法优于其他模型,在DBA数据集上生成了0.666的AUC。

图4中的一组示例描述了分别作为模型输入和输出的真图像和假图像。我们期望模型在生成异常样本时失败。如图4A所示,MNIST数据中的类2并非如此,即仍能够生成异常样本2。这是因为MNIST数据集相对来说并不具有挑战性,并且该模型学习了足够的信息,能够生成训练期间没有看到的样本。可以得出的另一个结论是,尽管模型无法区分图像空间中的异常,但是潜在向量空间中的距离为检测异常提供了足够的细节,即生成的图像编码产生的潜在向量z^与原来图像的z有着较大距离。图4 (B-C)说明该模型无法生成异常对象。

可见CIFAR数据集中船图像为异常样本,所以生成的fake图不能将其成功重构;UBAgun中也不能成功将带有枪支的图片重构

表4说明了基于GAN的模型运行时的性能。与其他方法相比,AnoGAN[4]在计算上相当昂贵,因为每个示例都需要对潜在向量进行优化。对于Zenati等人的[15]模型,我们报告了与原始论文相似的运行时性能。另一方面,我们的方法实现了最高的运行性能。有趣的是,尽管DBA数据集的图像和网络大小是MNIST和CIFAR的两倍,但其运行时性能可以与MNIST和CIFAR相比。

Conclusion

提出了一种基于对抗性训练框架的通用异常检测的编码-解码-编码体系结构模型。通过不同复杂度的数据集基准测试,以及在x射线安全筛选的操作异常检测上下文中进行的实验表明,该方法优于当前最先进的基于GAN的异常检测方法,具有对任何异常检测任务的泛化能力。未来的工作将考虑采用新兴的当代GAN优化,以改进一般的对抗性训练。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42876552/article/details/114948708

智能推荐

[java 随机数] ThreadLocalRandom、Random_陈浩learning的博客-程序员宅基地

[java 随机数] ThreadLocalRandom、Random真理具有相对性。----马克思文章目录[java 随机数] ThreadLocalRandom、Random一、什么是随机数: 真随机数? 假随机数?二、Random和ThreadLocalRandom的区别?2.1 Random使用以及原理浅析2.1.1 基础使用2.1.2源码浅析2.1.3 Random性能问题2.2 ThreadLocalRandom使用和原理浅析2.2.1 基本使用2.2.2 源码浅析参考链接计算机世界

.net core微服务dapr-状态管理_大熊程序猿的博客-程序员宅基地

一、新建项目:DaprCounter.Demo <ItemGroup> <PackageReference Include="Dapr.Client" Version="1.4.0" /> </ItemGroup>二、Program.csusing Dapr.Client;using System;using System.Threading.Tasks;namespace DaprCounter.Demo{ class P

经济学人: 低调应用, 高调回报, 亚马逊才是AI技术最大受益企业_人工智能学家的博客-程序员宅基地

来源:经济学人编译:机器之能张玺亚马逊六页会议备忘录举世闻名。公司高管必须每年写一篇商业发展规划。鲜为人知的是,这些备忘录上有一道必答题──机器学习的应用路径?据亚马逊...

年终奖奖励员工10个BTC,现在值349万,全国网友都在羡慕_互联网王子健的博客-程序员宅基地

国内一家智能投顾公司AI PICK,不仅奖励员工10个BTC作为年终奖,还给了一年的带薪假期。完美地诠释了什么叫“别人家的年终奖”,让人各种羡慕嫉妒恨。比特币在过去一年上涨已超过 10 倍,种种迹象表明,机构和企业对比特币的兴趣已更加浓厚。AI PICK表示其业务近期发展迅速,公司为用户提供多种量化策略,今年已为客户创造数亿的收益。在短短半年内,有93位用户通过这个平台获利百万,21位投资者获利千万。据消息称,获奖员工不打算使用带薪年假,将更加全身心投入到工作之中。不得不说,这次的表彰奖励发挥了最佳激

精通CSS+DIV:5,用CSS设置网页背景_hidetobj的博客-程序员宅基地

一、背景颜色1,页面背景色[code]body { background-color: #5b8a00;}[/code]2,使用背景色给页面分块[code]body { background-color: #ffebe5;}.topbanner { background-color: #fbc9ba;}.leftbanner {...

随便推点

Unity Shader-死亡溶解效果_puppet_master的博客-程序员宅基地

简介赶脚每个学习shader的,都得过死亡溶解这一关....毕竟这个效果灰常常用。今天,我也来研究一下死亡溶解效果的实现。溶解效果实现

A*寻路 -- 算法优化_mybloglucis009的博客-程序员宅基地

基本思路: 1二叉堆 2用version代替close open列表 3用精简的估计公式 4提前运算 5代码本身的优化。 这个寻路算法基本还没找到as3写的能超过他的。  Java代码  package {       /**       * ...       * @author sliz http://game-dev

edge安装包_想用网银?新版Edge也能行_weixin_39958631的博客-程序员宅基地

点击上方电脑爱好者关注我们新核心Edge因为和Windows结合紧密,同时有带有Chrome的基因,因此成为了很多小伙伴的上网新宠。不过一度作为行业标准的IE影响力还在,有些老的网站、论坛、接入网页可能针对IE设计,比如很多人都需要使用的银行网站,用其他浏览器打开总有问题。旧版Edge还好说,自带呼出IE浏览器的功能,新版怎么办呢?咱们今天就来介绍两个方法吧。凡事不好解决,就上插件,这是...

拆系数FFT(任意模数NTT)_Hypoc_的博客-程序员宅基地_拆系数fft

拆系数FFT任意模数的话,就不能直接用 NTTNTTNTT 了,有一种做法是取三个不同模数做 NTTNTTNTT 然后用 crtcrtcrt 合在一起,但是这种做法要用 999 次 NTTNTTNTT,会比较慢,而另外一种拆系数 FFTFFTFFT 的做法就会快很多。设 M=m0M=\sqrt {m_0}M=m0​​,m0m_0m0​ 是系数的最大值,对于每个系数,将他拆成 aM+b (b<M)aM+b~(b<M)aM+b (b<M) 的形式,然后以 aaa 和 b

宝塔 开启xdebug_vscode 宝塔面板windows版 php xdebug调试_其实我王尼玛江西的博客-程序员宅基地

一、安装xdebug插件宝塔面板php.ini xdebug 设置[XDebug]xdebug.profiler_append=0xdebug.profiler_enable=1xdebug.profiler_enable_trigger=0xdebug.profiler_output_dir="e:\BtSoft\WebSoft\temp\xdebug";临时跟踪信息输出xdebu...

几种做站系统功能的对比,PageAdmin系统非常值得一提。_yingxiaofuwu的博客-程序员宅基地

对于一个网站开发者而言,工作量可想而知,别说个人完成困难,即使是一个团队 也需要付出很大的时间和精力,因此选择一个好的在功能和界面上都接近自己预想的系统来二次开发是非常理智的一个选择,在此,长话短说,把觉得对新手比较有用的心得稍微整理下,大家请看:1.其实各个系统,都有它好的地方和缺陷的地方,比如帝国,是一个比较完整的系统,在功能上也还行,但它的免费版本在二次开发上是比较冗沉的,尤其是对于新手,要

推荐文章

热门文章

相关标签