武广作者

杜伦大学提出GANomaly:无需负例样本实现异常检测

本期推荐的论文笔记来自 PaperWeekly 社区用户 @TwistedW。在异常检测模块下,如果没有异常(负例样本)来训练模型,应该如何实现异常检测本文提出的模型——GANomaly,便是可以实现在毫无异常样本训练下对异常样本做检测。

关于作者:武广,合肥工业大学硕士生,研究方向为图像生成。

■ 论文 | GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training

■ 链接 | https://www.paperweekly.site/papers/2293

■ 源码 | https://github.com/samet-akcay/ganomaly

异常检测(Anomaly Detection)是计算机视觉中的一个经典问题,生活中大部分的数据是正常数据,有很少一部分属于异常数据,在很少的异常下如何检测出异常是一个困难的课题,甚至不知道什么是异常,只知道不属于正常的就算异常的话又如何检测异常呢?GANomaly 便是可以实现在毫无异常样本训练下对异常样本做检测,我们一起来读一下。

论文引入

计算机视觉上大部分的检测任务的前提是需要大量的标记数据做训练,这虽然在成本上耗费巨大,但是在实验效果上确实有很大的突破,目前的目标检测技术已经上升到近乎实时检测的效果了,背后的人力和成本也是可想而知的。

在庞大的目标检测背景下,异常检测算是一个特立独行的分支,虽然只是判断正常和异常两种情况(二分类问题),但是往往异常样本特别的少,如果从特征提取上区分正常和异常的话,由于训练样本过少或者说是训练样本比例太不平衡(正常样本特别多)往往会导致实验结果上不尽如人意。 

异常检测的发展在深度学习的浪潮下得到了很快的发展,基于 CNN,RNN、LSTM 技术上已经取得了一定的成效。随着 GAN 的提出,对抗的思想越来越引人注意,利用 GAN 做异常检测的文章在实验上有了一定的突破,从 AnoGAN [1] 学习到正常样本的分布,一旦送入异常样本数据发生改变从而检测出异常,这种方法的局限性很强,往往也会带来计算成本的昂贵(需要严格的控制先验分布 z)。在此基础上,为了找到更好用作生成的先验分布 z,在 AnoGAN 的基础上提出了 Efficient-GAN-Anomaly [2] 同样由于做个一次重新映射导致计算成本上也是庞大的。 

GANomaly 算是在前两篇文章的基础上做了一次突破,不再比较图像分布了,而是转眼到图像编码的潜在空间下进行对比。对于正常的数据,编码解码再编码得到的潜在空间和第一次编码得到的潜在空间差距不会特别大。但是,在正常样本训练下的 AE 用作从未见过的异常样本编码解码时,再经历两次编码过程下往往潜在空间差距是大的。

当两次编码得到的潜在空间差距大于一定阈值的时候,我们就判定样本是异常样本,这就是 GANomaly 的思路。我们以此对比一下以 GAN 为发展下的异常检测模型,模型结果如下,上述已对其做了一定的分析。

GANomaly 的优势总结一下:

  • 半监督异常检测:编码器-解码器-编码器流水线内的新型对抗自动编码器,捕获图像和潜在向量空间内的训练数据分布;

  • 功效:一种有效且新颖的异常检测方法,可在统计和计算上提供更好的性能。

GANomaly模型

我们还是先看一下模型框架:

GANomaly 模型框架是蛮清晰的,整个框架由三部分组成:

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 是异常数据。 

网络损失 

对于模型的优化,全是通过正常样本实现的,网络损失也可分为三部分。标准 GAN 的损失大家相比都很清楚了,这里不重复写。对于第一部分的生成网络下,文章给定了一个重构误差损失,用于在像素层面上减小原始图像和重构图像的差距。

对于第二部分判别器下,设置了一个特征匹配误差,用于在图像特征层方面做优化,这部分损失其实已经在很多文章中都用到过。

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

训练过程中只有正例样本参与,模型只对正例样本可以做到较好的编码解码,所以送入负例样本在编解码下会出现编码得到的潜在变量差异大从而使得差距分值 A(x) 大,判断为异常。对于模型,整个损失函数可以表示为:

这里的 ωadv,ωcon,ωenc 是调节各损失的参数,可以根据具体实验设置。

模型测试 

模型测试过程中以正负样例 D̂ 混合输入,对于测试样本下的得分 S 可记为具体的判断异常分数进行一个归一化处理将其整合到 [0,1] 之间。

这里的就是最终的异常得分,对于正常样本理论上希望,对于异常样本理论上希望。需要一个阈值 ϕ 来衡量这个标准,经过源码分析,一般的 ϕ=0.2 可以根据实际项目需要对 ϕ 做调整。

GANomaly实验

实验在 MNIST,CIFAR10 上选取部分类别做正样本,选取一些类别作异常样本,测试模型是否能够检测出异常样本并给出准确率。文章的衡量标准是以 AUC 为判断。实验对比了三种以 GAN 做异常检测的模型以及 VAE 的结果,通过 AUC 分析可以看出 GANomaly 取得了不错的优势。

实验还对大件行李异常数据集(University Baggage Anomaly Dataset - (UBA))做了实验,数据集包括 230275 个图像块,图像从完整的 X 射线图像中提取,异常类别(122803)有 3 个子类 - 刀(63,496),枪(45,855)和枪组件(13,452),对于另一个数据集选择了枪械检测(FFOB)。

对于潜在变量的选取,以及超参的确定也通过实验选取:

最后来看一下正常样本和异常样本重构的对比,可以看出异常样本在重构上已经和原始有了较大的差别了,所以编码得到的潜在变量自然会产生差异,从而判断出异常。

总结

GANomaly 以编码器-解码器-编码器设计模型,通过对比编码得到的潜在变量和重构编码得到的潜在变量差异,从而判断是否为异常样本。文章在无异常样本训练模型的情况下实现了异常检测,对于很多场景都有很强的实际应用意义。个人感觉文章对于异常分数的计算和判断可再进一步优化,从而实现更好的异常检测效果。

PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

理论杜伦大学GANomaly
71
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

异常检测技术

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。 通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。 异常也被称为离群值、新奇、噪声、偏差和例外。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

长短期记忆网络技术

长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。

推荐文章
有人测试过预测一张图片的速度吗?