Deep End-to-End One-Class Classifier

Deep End-to-End One-Class Classifier


摘要

​ 由于目标类样本的高度多样性以及异常样本(非目标)概念上没有任何监督信号。在一般情况下设计分类器来区分正常样本和异常样本极具有挑战性,本文提出了一种对抗性训练的方法,在一个端到端可训练的深度模块中来检测外分布样本。我们联合训练两个深度神经网络R(重构)和D(鉴别),在训练过程中,R通过创建对抗性样本来帮助D描述目标类的概率分布。在测试阶段,R联合D完成新奇检测。提出的OCC方法首先在MNIST和Caltech-256两种图像数据集上进行试验,随后在UMN、UCSD两种视频数据集上进行试验。提出的方法可以成功地学习目标类的底层分布,并优于其他方法


简介

​ 单类分类器与不同的计算机视觉问题有很大的关系,如新奇检测,离群检测,图像去噪,以及异常检测。这些工作通常可以在OCC的框架下定义,目标是在没有负类的情况下学习分类模型。在这种情况下,负类可以假设为异常值,正(或目标)类中的大量训练数据点构成正常类,围绕着这些数据点建立OCC模型。

​ 为了精确地学习目标类的内在几何结构,需要对数据进行有效的、有区别的表示,以使不同的解释变量在训练数据中纠缠在一起。因为没有来自负类的训练样本,设计一个用于新颖性检测和OCC应用的端到端深度网络并不是一个简单的任务。最近,提出了一种端到端的深度网络,应用于图像和视频中的离群点和异常检测等各种应用。

​ 受GANs的启发,利用对抗性学习技术让我们的单类分类器能够以端到端的方式进行操作。我们设计的网络包含两个模块,即R和D。在训练中相互竞争,在检测时互相合作。同时R引入判别因子(D),使D更容易区分目标和异常样本。

​ R和D只在目标样本上进行训练,对于那些目标样本外的样本(异常),R作为抽取器或者失真器。在检测过程中,D作为有效的检测器,同时R通过重构目标样本(正常)和损失异常样本来配合D提高检测性能。

提出方法的架构如下

在这里插入图片描述

​ Fig.1 在训练过程中,R被优化以重构属于目标类的样本,而D检测其输入是真的正常样本还是由R生成的(即假的)。在测试中,R可以很好地重建内部样本,同时扭曲其输入的异常(在训练过程中没有发现任何异常值),D将它的输入区分为正常或异常。与原始X特征空间相比,R(X)有更好的可分性。我们学习了R中Z的编码,使得它能够重建目标类样本。

​ 本文中,强制R中的自动编码器学习一个遵循正态分布的潜在表示空间(为看不见的正常类数据创建一个具有简单插值功能的连续潜在空间),与上一篇“Adversarially Learned One-Class Classifier for Novelty Detection”(2018)主要不同有:

  1. 我们为R提出了一个新的结构和损失函数,以提高R+D的性能;
  2. 我们提出了一种简单而有效的停止培训的方法(停止训练RD的最佳时间,即训练多久);
  3. 我们详细解释了我们的方法的拒绝区域(RR),并展示了该方法如何从损失函数中的附加成分中获益。

文章的主要贡献

  1. 对于OCC,我们提出一种简单有效的端到端的训练方法;
  2. 其他文章提出的方法在训练之后,放弃了生成器或鉴别器(即我们的设置中的R和D网络),本文有效地利用了两个经过训练后的网络优势,提高测试步骤(推理时间)的性能;
  3. 该方法只在目标类样本存在的情况下进行训练,在各种应用中优于现有的方法;

相关工作

主要介绍一些比较成功的OCC方法(Statistical modeling 和self-representation Learing 是两种有效解决OCC问题的方法)

  1. Self-Representation:在以前的一些研究中,自表示被用作新颖性检测和OCC的一种有用的方法。
  2. Statistical Methods :简单地说,它们将目标类中的样本表示为降维的特征空间,并在这些样本上得到具有最大似然的概率分布。不符合这个分布的样本可以视为异常。
  3. Supervised Methods Based on Constrained Reconstruction :在这种情况下,给定的测试数据,如果不遵循相同的约束,则可以将其视为异常值。

对抗式单类分类器

​ 有很多种GAN,与我们方法最相关的一个是Condition GAN(CGAN),在我们的方法中,我们提出的**R不仅重构输入样本(在训练时所有来自于目标的样本),同时提高了异常检测的性能。R通过净化目标类样本,扭曲目标类外分布的样本来实现这一点。**我们提出的框架由两个模块组成,一个过滤器(或者称重构器),一个鉴别器。并且网络是在端到端的学习过程中进行的,是无监督学习的。

在这里插入图片描述

  1. R and D Networks

    ​ 以前,一些工作已经证明,仅在目标类样本上学习的自动编码器无法进行完美重建,仅可用于定义一种区分性和信息性的度量,来分离类内(即目标类或者正常类)样本和离群值。这是因为这样一个网络只对只包含目标 的训练样本最小化其重构误差损失函数(没有对全部的样本进行计算损失函数)。因此,对于离群样本,重建误差会很大。

    ​ R本身有两个组件:编码器(R1)和解码器(R2)。传统的编码器-解码器神经网络(即自动编码器)学习生成紧凑表示并重构它的输入,主要应用在图像去噪和绘制上。从以前的工作可以知道,来自目标类的数据可以被统计,使用多元高斯分布,获得最新结果。与以前不同,本文R1和R2被认为是卷积网络,被迫学习一个遵循高斯分布作为先验知识的潜在(隐)空间(即Z)。因此,R1被优化为将目标类样本映射到一个具有高斯分布的Z中,R2将其重新构造。

    ​ 可变自动编码器**(VAE)可以学习目标类样本具有高斯分布的潜在空间**。因此,潜在向量不在高斯分布内的样本被视为异常。根据这一思想,我们发现在对目标类样本进行编码和解码时,通过限制潜在空间(即Z)服从高斯分布,可以获得更好的性能。这主要是因为潜在变量是在由高斯分布定义的连续空间中跨距的,不可见的样本(在测试期间)可以可靠地映射到该空间上(可能通过插值)因此,P(R1(x))和||R(X)-X|2 都被用于训练R。强迫R的潜在空间遵循特定的分布,确保目标类的跨度在高斯分布上,其他所有不遵循该分布的都视为异常。因此,总体上提高了目标样本(正常)和新样本(异常)的分离性能。

  2. Traing R and D

    • platen :Z属于这个潜在空间(高斯分布特性)
    • Ptarget :正常类的分布
    • Nσσ代表噪声模型
    • N(μ1,σ1) :高斯分布(Z需要遵循的)
    • KL(Z||N(μ1,σ1)) :让Z服从高斯分布

​ 根据第二章的解释,Goodfellowet 等人2014年提出了GANs,其中两个深层网络(G)和(D)]以对抗方式学习。生成与真实样本数据集分布相同的样本是该网络的目标(GAN的目标)。G训练为一个变换器,将随机向量映射到具有真实分布的实例(在我们的例子中是Ptarge。Z属于概率分布Platen。D被训练用于区分真实样本和生成样本。G+D用一个min-max公式来优化。

​ 在这里,我们使用了与之前类似的目标函数,并进行了一些修改。将随机生成的潜在空间映射到目标类并不是一个明确的任务,网络无法保证收敛并识别目标类样本的整个空间。我们选择学习有意义的潜在空间(即使用VAE学习目标类的表示),这也避免了在我们的GAN中出现模型遗失和模型崩溃的问题,因为网络直接从所有正确样本中学习。

​ 与传统的GANs类似,R+D是一个对抗性、无监督的训练方式。但是和传统的GANs还存在不同,他不是从潜在空间Z生成Ptarget概率分布的实例

R映射

在这里插入图片描述

​ η 是从N(0,σ2)中取值,在文章的接下来部分,Nσ代表噪声模型。η 是为了在训练过程中提高R的鲁棒性。Ptarget是正常类分布。D通过访问来自目标类的大量样本来了解Ptarget(学习正常样本)先训练D。因此D决定X是否符合ptarget。R+D关于下式目标联合培训。

在这里插入图片描述

​ 对于上述目标函数(类似于GAN),R生成的图像遵循Ptarget分布。因此,我们希望最大化

ptarget(R(X∼ptarget;θR)),其中θR是R的参数集。为了训练模型,我们计算损失函数LR+D作为联合网络R+D的损失函数(即GAN损失)。此外,我们需要R的输出与原始输入相似,因此,我们使用了额外的损失分量。

在这里插入图片描述

​ 为了让Z**[ 即R1(X)的输出 ]** 服从高斯分布,Kullback–Leibler散度(KL散度)KL(Z||N(μ1,σ1))也被添加到损失函数中。因此,要最下以下模型:(第一个是GAN的损失函数)

在这里插入图片描述

​ 其中λ1,λ2>0(权衡超参数)控制各项的贡献(即控制LR和KL偏差的权重项)。经过联合培训R+D网络,可以得出:

  1. R1(X—ptarget+η ) —> X`—N(μ1,σ1), θr1是让R学习遵循N(μ1,σ1)高斯分布的表示。

  2. 如果R2(Z!—N(μ1,σ1)) —> X`!—N(μ1,σ1)或者是P(X!—Ptarget+η)是一个非常小的值(异常),R2被训练将一个潜在向量Z—N(μ1,σ1) 映射为服从Ptarget分布的样本。如果Z!—N(μ1,σ1),那么R2映射出的样本也不会遵循

    Ptarget分布。

  3. 我们预计对于所有的 X—ptarget+η 和 Y!—ptarget+η ,可以得出 P(R1(X)|N,θr1) ≥ P(R1(Y)|N,θr1)。这是损失函数中的KL散度正则器。因此R1也可以看作是一种新颖的检测器。

  4. 当 || X-X`||2 最小时,R(X—ptarget+η )(R的输入图含有噪声) —> X—Ptarget,因为θr被优化来重构输入遵循Ptarget。注意,由于R的训练方式,它的工作原理类似于去噪自动编码器或去噪CNNs(参见下图)在这里插入图片描述
    在这里插入图片描述

  5. 任何异常值X*(即不遵循Ptarget),会让R迷惑,因为在训练中R未见过X*,因此R会将他映射到未见过的分布区域Pundefined(即 R(X*!—Ptarget+η) —> X*—Pundefined),在这种情况下, || X-X`||2可能不能最小化为0,这种情况的另一个作用是R会破坏他输入的异常样本。在上面MNIST数据集上,1被作为正常样本进行训练,能够很好的重构,但是其他的数字基本都被破坏掉。

  6. 预计 D(X—Ptarget) > D(X*‘!—Ptarget) ,这是因为D正确的检测输入样本遵循Ptarget

  7. 在大多数情况下, D(R(x—Ptarget)) – D(R(x*!—Ptarget)) > D(x—Ptarget) – D(x*!—Ptarget),这意味着R的输出比原图像更可分离,正是因为这个事实,R支持D来更好地检测。为了进一步探讨这一点,下图展示出了对于两种情况随着D的输出而生成的分数。在一些敏感的应用程序中,更恰当的做法是避免在困难的情况下做出决定,而将其留给人为干预 ( 即图中的Reject region(RR) 单元,这个单元的样本机器难以区分)。D(X)的RR明显大于D(R(X))。

  8. 在这里插入图片描述

  9. OCC Using R+D

    ​ 上面讨论了R和D深度网络的细节。在R的支持下,D作为一个OCC模型工作,因此,仅使用D网络(类似于GAN)就可以很容易地建立OCC模型。如果 D(X) > τ (τ是预测的阈值),X被分类为正常类,否则为异常类。在实验阶段,对于OCC网络来说,这种方法性能还算可以,同时我们进一步将R用于测试阶段以获得更好的性能。为此,R(X,θr)作为X的补偿过程。优化θr以增强那些遵循Ptarget样本,破话那些不遵循Ptarget分布的样本。建议使用D(R(X))而不是D(X)。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述


实验

​ 在四种数据集(包括图像和视频两种检测)对所提出的方法进行性能和应用评估,同时和最新的检测方法进行对此。

  1. 建立

    ​ 在 NVIDIA TITAN X上使用python和TensorFlow来操作我们的方法,对于联合的损失函数,LR的权重 λ1 = 0.4,KL(Z||Nμ1,σ1) 的权重λ2 =0.2,。批次标准化超参设为10-6,衰变设为0.9。为了公平,我们使用了与之前相同的实验指标和设置。

  2. 异常检测

    一系列计算机视觉任务处理OCC问题。机器学习方法的性能随着总异常值的出现而下降,而我们的方法具有学习正常类共享概念和识别异常类的能力

    1. 异常检测数据集:在MNIST和Caltech两个数据集上对我们提出的方法进行异常检测评估。

      ​ MNIST由10类60K个手写数字组成(数字“0”–“9”)。其中一个类被认为是正常类,异常类从其他数字随机抽样,比例为10%-50%。对所有10个类都执行此过程,并计算结果的平均值。

      ​ Caltech-256有256个类别的对象,每个类别至少有80个图像(总共30607个图像)。我们用n∈{1,3,5}随机选择的类别中的图像重复这个实验三次,以确定正常类。对于包含更多图像的类别,使用前150个图像。“杂乱”类用于随机抽样异常值实例,比例为50%。

    2. 异常检测结果:

      1. MNIST:R和D仅联合学习正常类样本。使用F1分数标准来将我们的方法与其他方法进行比较。下图通过考虑不同比例的异常样本,比较了不同方法的f1得分。证实,所提出的方法[ D(R(X) ]比前两种方法(即局部异常因子(LOF)和自动编码器的判别重构(DRAE)) 具有更好的性能。注意,与基线模型相比,我们的方法对异常值的数量不太敏感(即异常类所占的比例对实验的结果影响不大)并且能够一致地成功地检测到异常值。此外,下图还显示D(X)本身可以被认为是一个成功的检测器,甚至比先前的工作更好(LOF和DRAE)。然而,在合并R模块后,这些结果得到了进一步的改进,因为提炼了正常样本,同时还破坏扭曲异常样本。因此,R有助于样品的区分。

在这里插入图片描述
选择1000个数字“5”的样本作为正常类,200个来自其他类别的样本作为异常类。在下图中显示了使用R重建前后的t-SNE投影。可以看出,R(X)增加了这两类的可分辨性,这有助于D对它们进行准确分类。

在这里插入图片描述

  1. Caltech-256:所提出的方法与之前专门设计用于异常检测的7种方法作性能比较,下表显示了使用AUC和F1-score两种评估指标的对比结果。结果显示,一般情况下所提出的方法比其他方法性能更好。
    在这里插入图片描述

    ​ 比较CALTECH-256。我们通过改变正常类(#CAT)的数量,重复实验三次,即从1,3,5中随机选择正常类.。在所有三种设置中,异常类是从类别 257-杂波 中随机抽取的,它的数量始终是正常类数目的50%,最好的结果用粗体标出。

  2. 视频异常检测

    ​ 视频异常检测是一项具有挑战性的机器视觉任务。由于视频的时间特性,视频中的异常检测比图像中的异常检测更为繁重。我们在加州大学圣地亚哥分校(UCSD)Ped2数据集上评估了所提出的方法。与前面的工作一样,使用帧级性能来报告我们的方法的性能。

    1. ​ 数据集:UCSD里行人作为正常类,其他的作为异常。UMN中包含三个场景,其中正常移动的那组数据被视为正常,迅速跑开的视为异常。

    2. UCSD Ped2上的结果:我们将视频帧分割成30×30像素的二维块,见下图。训练帧只由正常的部分组成。在测试过程中,测试块被送入R和D网络,R输出的一些例子如下图所示。正常帧被成功地重建,而异常帧被扭曲并且没有被正确地重建。异常似然得分是我们方法的输出[即D(X)和D(R(X))],在最后一行中报告。比较表明,使用两种网络,即D(R(X)),可以更好地区分正常和异常。这最终为异常检测带来了更好的单分类。正如之前的工作所报告的,高误报率是视频异常检测的一大问题。这意味着算法通常将许多“正常”情况归类为异常。下图左三列显示了三个难以判断的“正常”情况,因为行人不完全可见(选择这一特点来说明使用D(R(X))与D(X)能提高可辨别性)。

在这里插入图片描述

下图显示了我们的方法和其他方法的帧级错误率(ERR)。对于帧级检测,如果一个像素被判定为异常,则该帧就被定义为异常。我们使用的通用方法可用于任何类型的异常值,并且没有专门针对视频中的异常检测问题进行调整(即,我们没有使用时间和空间线索来训练网络)。请注意,其他方法,如深层级联(deep cascade)和深层异常(deep anomaly ),利用了空间和时间复杂特征的优势,而本文提出的方法仅针对空间特征。在这个实验中,说明一般情况下,OCC操作至少和以前的方法一样好。

(%9 err 是2015年提出的 Real-time anomaly detection and localization in crowded scenes)

在这里插入图片描述

  1. UMN上的结果:UMN数据集相对来说比较容易,与新的检测方法相比较,在没有使用时间和空间特性的情况下,我们测得的ERR=2.6%,AUC=0.996。

在这里插入图片描述

  1. 复杂问题x

    ​ 经过训练,我们的方法可以在测试期间几乎实时地检测出异常值。如下图所示,显示了在图像和视频中的检测时间。(图像使用Caltech-256 视频使用UCSD PED2

在这里插入图片描述

  1. 讨论

    ​ 找到好的架构并对网络进行训练是一个重大挑战,我们提出的网络表现良好,但是还能改进。通过修改R+D两个网络中的任意一个卷积层的大小和顺序,获得了更好的结果(效果可能比较细微,大概在AUC上增长了0.02-0.04)

    1. 训练停止标准:何时停止R+D的联合训练非常重要。如果过早地停止训练,网络可能不太成熟,过度训练只会导致R混乱,从而导致不可靠的输出。主观标准上定义模块训练的停止条件。当能成功重建正常图像并去除噪声时,我们停止训练。形式上是, ||X-X||2<ρ,并且D能有效地对其输入进行分类时停止训练时停止训练(其中ρ是一个小的正标量),即∀X∈B,| D(X)−0.5 |≤ρ,其中B是一组正常和生成的样本。

      ​ 为了更深入地分析停止标准,我们需要注意R和D之间的最小-最大博弈正在进行,当他们处于最佳性能点时需要停止。换句话说,纳什均衡需要发生。通过达到纳什均衡,R和D将正常工作,而不是在其最大性能点(可以独立获得)。在训练过程中,D和R可能会出现三种情况:

      (1)如果R满足其最佳性能,即 || R(X)−X || 2≤ρ1,D会难以分清生成数据和真实数据,对于这两个数据判断输出的可能性概率接近0.5,即| D(X)−0.5 |≤ρ2

      (2) 当R重建数据时,D获得很高的精度,|| R(X)−X || 2≤ρ1,其中ρ1接近但略优于ρ1

      **(3) R和D获得平衡的性能。要达到这一条件,即纳什均衡,需要同时满足上述两个条件。找到达到这种平衡的停止点不是一件容易的事。我们使用了一个简单的技巧,即通过执行联合训练,当R对在条件(1)下达到最大性能时,将θR和θd保存为R的最佳参数设置,并继续对网络进行训练,直到D满足条件 (2)。**每一个网络的参数在其最佳性能时被保存。这些参数用于测试阶段。下表显示了这三种条件:

      在这里插入图片描述

    2. 弱监督:模型是在只有正常类样本的情况下训练,这被认为是弱监督。在处理异常检测问题时,如果假设训练集中的异常样本数与正常样本相比非常少,是合理的。

      ​ 在这种情况下,用少量的异常值训练模型不会对模型造成显著的损害。我们考察了这个设置,并使用Ped2数据集创建了一个包含正常(90%)和异常(10%)类的数据集,并训练模型。最终结果误差下降了1.3%。然而,一个简单的技巧可以用来避免这种性能下降。首先,在所有可用样本上学习这个网络,这可能导致较高的误报率(对于正常类)。然后,使用这个网络,可以拒绝所有异常样本,并在剩余样本上微调之前训练过的网络0。利用这个技巧,我们与之前提出的没有异常类训练的方法达到了同样的性能

    3. 模型崩溃:模型崩溃是对抗性深度学习框架中常见的问题。这个问题通常出现在当G只学习整个数据分布的一部分时(只会产生单一的模型,忽略了其他模型)。本文提出的方法避免了这个问题,因为R知道真实数据的整个分布(即它访问所有目标类样本)。因此,它隐式学习正常数据分布所跨越的流形。由于G可以访问数据集中可获得的真实数据池,因此自动编码器不太容易崩溃

    4. R的体系结构:R帮助D更好的获得检测性能,传统的全连接编解码器、带卷积编解码器的AEs、限制卷积编解码器可以作为R架构的三种选择。

      ​ 另一个重要因素是潜在变量Z的大小,通过对Z的灵敏度分析(即改变其大小并限制其服从高斯分布),发现它导致RR区域间隔的长度有很大不同。下表显示R在三种不同架构以及不同Z大小下的RR长度。

      (在MNIST数据集上测得)

在这里插入图片描述
RR是正常类和异常类边界的交叉点,位于该区域的样本极有可能被错误分类。如果我们能将两个类别的样本推离彼此,提高正常样本与异常样本的分离程度,RR会变小,检测误差也会降低。

  1. 选择λ1和λ2 (联合训练时对应的损失函数): 这两个超参权衡重建误差以及R的潜在空间和散高斯分布之间的KL散度为了有效地重建内部样本,λ1应该比较大。但是,如果λ1被设置为一个非常大的值,R很快就被训练好,而D还没有得到适当的训练(导致D无法区分X和R (X) )。此外,λ2的值过高会降低检测性能。不同λ1和λ2对F1-score的影响如下图所示:

    在这里插入图片描述

结论

​ 以一种对抗性的方式学习,我们介绍了一种有效的和一般的方法。提出的方法由R+D两个网络构成,R学习生成不能让D识别为生成的样本,经过训练后,R可以通过重构增强正常样本,并扭曲破坏不遵循正常样本分布的样本。在测试过程中,使用R来精炼样本(增强正常,扭曲异常)有助于D更好地进行区分。本文提出一种适用于视频异常检测的大范围检测模型。不同基准测试的结果表明,所提出的OCC方法能够检测出与正常样本共享概念有较大偏差的样本。
​ 本文的主要局限性在于不能有效地定位图像或视频中的异常部位,这是我们为什么在视频检测中采用块(帧)的方式 (这使得模型非常慢) 。提出一种端到端的方法,通过一步处理整个帧来定位异常。此外,与几乎所有的GAN类似,我们的体系结构很难进行训练,因为难以确定何时停止训练。

文章已上传,可直接免费下载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值