OpenGAN: Open-Set Recognition via Open Data Generation

摘要:

  1. 现实世界的机器学习系统需要分析与训练数据不同的测试数据。在K-way分类中,这通常被表述为开集(open-set)识别,以区分 K闭集(closed-set)数据集。
  2. 关于开集识别通常有两种处理方案:1)使用一些离群数据作为开集,对开-闭二进制判别器分别进行判别学习(discriminatively learning an open-vs-closed binary discriminator by exploiting some outlier data as the open-set,);2)使用GAN,对闭集数据分布进行无监督学习,并使用其判别器作为开集似然函数。 然而,由于过度拟合训练离散值,前者不能很好地推广到不同的开放测试数据,而后者由于GANs训练不稳定,效果也不好。
  3. 基于以上问题,我们提出了一种新的解决方案OpenGAN,它解决了现有技术存在的局限,
  • 首先,在一些真实的离群数据上经过挑选的GAN鉴别器已经达到最先进的水平。
  • 第二,可用敌对合成的“假”数据来扩充可用的真实开集示例集。
  • 第三,也是最重要的一点,它可以在 K-way网络计算的特征上构建鉴别器。

大量实验表明,OpenGAN的性能明显优于以前的开集方法。

图1:我们探讨了开放集识别,这需要对K个感兴趣的类之外的开放集测试例子进行判别的能力。(a) 过去的工作表明,GAN判别器可以作为开放集的似然函数,但由于GAN的不稳定训练,这并不顺利[56, 53, 48, 66, 37]。(b) 异常值暴露[31]利用一些异常值数据来学习二元判别器D,用于开放集判别。因为在训练过程中观察到的离群值不会详尽地跨越开放世界,所以判别器D对不同的开放数据的概括性很差[57]。(c) 我们引入了OpenGAN,它用由训练有素的生成器G合成的假开放数据来增加训练中的离群值,以骗过判别器D。重要的是,我们发现少量的离群值可以通过对判别器D的有效模型选择来稳定训练。这使得OpenGAN可以通过一个建立在现有K-way网络之上的轻量级判别器头来实现,使得封闭世界的系统可以很容易地被修改为开放集识别。

1.引言

在真实的开放世界中运行的机器学习系统不可避免地会遇到与训练实例不同的测试时间数据,例如在训练期间没有充分观察甚至从未观察到的异常现象或罕见物体。图2展示了两个案例,其中最先进的语义分割网络将 "婴儿车"/"街边市场"--在训练和测试中都很少出现--错误地分类为 "摩托车"/"建筑"。这种失败对自主车辆来说可能是灾难性的。

通过异常检测[69, 31]和分布外检测[36]对解决开放性世界进行了探索。在K-way分类中,它可以被简单地表述为开放集识别,这需要对属于K个封闭集类之外的第(K+1)个 "其他 "类的开放集数据进行区分[54]。通常情况下,开放集识别假定没有来自 "其他 "类的训练实例(即,开放训练数据)[6, 64, 44]。在这种设置下,一个优雅的想法是用GAN学习封闭集数据分布,并使用GAN-判别器作为开放集似然函数(图1a)[56, 53, 48, 66, 37]。然而,由于GANs的训练不稳定,它的效果并不好。最近的工作表明,离群点暴露(图1b),或者将一些离群点数据作为开放训练的例子进行训练的能力,可以通过训练一个简单的开放-封闭二元判别器而取得惊人的效果[18, 31]。然而,由于对可用的训练异常值集的过度拟合,这种判别器对不同的开放集数据的概括性很差[57],而这些训练异常值集往往是有偏见的,不能详尽地跨越开放世界的范围。在上述的激励下,我们介绍了OpenGAN,这是一种简单的方法,它通过纳入几个关键的见解,极大地提高了开放集的分类精度。

  1. 首先,我们表明,使用离群数据作为val set来选择 "正确的 "GAN-判别器确实达到了开放集判别的最新水平。(筛选功能)
  2. 第二,利用离群点暴露,我们通过对抗性地产生欺骗二元判别器的假的公开例子来增加可用的公开训练数据集(图1c)。
  3. 第三,也是最重要的一点,我们不是在像素上定义判别器,而是在由封闭世界K-way分类网络计算的现成(OTS)特征上定义它们(图1d)。我们发现这种判别器的概括性要好得多。

我们的表述在三个方面与其他采用GANs的openet方法不同。

(1) 我们的目标不是生成现实的像素图像,而是学习一个稳健的开闭判别器,自然地作为一个开放集的似然函数。正因为如此,我们的方法也许可以更好地描述为一个鉴别性的对抗性网络

(2) 我们用假数据(由生成器合成)和真实的开放训练实例(参考离群点暴露[31])训练判别器。(3) 我们在OTS特征而不是RGB像素上训练GANs。我们表明,OpenGAN在包括图像分类和像素分割在内的各种任务中,明显优于之前的开放集识别工作。此外,我们证明了我们的技术见解提高了其他基于GAN的开放集的准确性:在OTS特征上训练它们,并通过验证选择它们的判别器作为开放集的似然函数

2. 相关工作

开放集识别。有许多解决开放集识别的工作,如异常检测[12, 36, 69],离群点检测[53, 48],和开放集识别[54, 22]。这些问题的典型设置是假设人们无法获得开放集数据的训练实例。因此,许多方法建议首先在封闭集上训练一个封闭世界的K-way分类网络[30, 6],然后利用训练好的网络进行开放集识别[54, 35, 44]。其他一些人通过在训练过程中合成假的开放数据,为封闭世界的K-way分类和开放集的辨别训练 "基础 "模型,通常会牺牲封闭集的分类精度[21, 42, 64, 59]。为了识别开放集的例子,他们求助于事后的功能,如密度估计[69, 67],不确定性建模[20, 36],以及输入图像重建[48, 23, 17, 59]。我们也通过K-way分类网络来探索开放集识别,但我们显示OpenGAN,一种简单直接的方法,在逆向数据上训练一个开放-对-封闭的分类器,其表现明显优于先前的工作。

使用GANs的开放集识别。由于GANs可以学习数据分布[25],从概念上讲,在封闭集上训练的GAN-鉴别器自然可以作为一个开放集的似然函数。然而,这并不能很好地工作[56, 53, 48, 66, 37],可能是由于GANs的不稳定训练。因此,以前基于GAN的方法主要是:1)生成假的开放训练数据来增加训练集;2)依靠重建误差来进行开放集识别[62, 56, 53, 1, 16]。通过OpenGAN,我们表明GAN-判别器实际上达到了开放集判别的最先进水平,只有当我们在离群的例子的Valset上进行模型选择时。因此,与之前的方法不同,OpenGAN直接使用判别器作为开放集的似然函数。此外,我们最终版本的OpenGAN生成的是特征而不是像素图像。

带有异常点暴露的开放集识别。[18, 31, 52]用 "离群点暴露 "的概念重新表述这个问题,它允许方法访问一些离群点数据作为开放训练的例子。在这种情况下,简单地训练一个二进制的 "开放-封闭 "的分类器会有令人惊讶的效果。然而,这样的分类器很容易过度适应现有的开放训练数据集,并且概括性很差,例如,在开放测试数据与开放训练数据不同的 "交叉数据集 "环境中[57]。从根本上讲,收集离群数据以策划一个详尽的开放训练集的例子似乎是一个挑战。我们的方法,OpenGAN,试图通过用对抗性的假开放训练例子来增加训练集来解决这个问题。

3. 用于开放集识别的OpenGAN

一般来说,开放集识别的解决方案包含两个 步骤。(1)开放集识别,根据开放集的可能性将测试实例分为封闭集和开放集,以及(2)对来自封闭集的K-way分类。步骤(1)[54, 5, 44]。开放集识别的核心问题是第一步,即开放集识别。通常情况下。辨别假设没有开放集的可用性 训练数据[42, 44]。[18, 31]令人信服地证明了 18, 31]令人信服地证明了离群点的暴露,或者将一些离群点的例子作为开放训练数据进行训练的能力,可以大大改善 通过训练一个简单的开放与封闭的二元分类器,可以大大提高开放集的辨别能力(图1b)。因为构建一个完全跨越开放世界的训练集是很有挑战性的。由于构建一个完全跨越开放世界的训练集具有挑战性,这样的分类器可能会过度适应离群的数据而不能充分概括[57]。我们证明了OpenGAN通过使用一个生成器来生成假的开放集训练实例来缓解这一挑战。我们证明了OpenGAN可以缓解这一挑战,它使用一个经过对抗性训练的生成器来生成虚假的开放集训练实例,以欺骗分类器。重要的是。OpenGAN在模型选择上也是有效的,在传统的设置下,假设没有公开训练数据的可用性 的公开训练数据。

3.1方法论

让x是一个数据例子,它可以是一个RGB图像或其特征表示。我们将表明,使用后者的性能更好。让Dclosed(x)是x的封闭世界分布--即来自K个封闭集类的封闭集数据。让D open(x)是不属于封闭集的例子的开放集数据分布。

二元分类器。我们从封闭集和开放集数据中训练一个二元分类器D。

其中D(x)=p(y="封闭集 "jx)。直观地说,我们调整λo以平衡封闭训练和开放训练的例子。 当开放训练的例子充分代表测试时间的开放数据时,这种简单的方法是有效的[31],但当它们不能跨越开放世界时,表现不佳[57]。

合成的公开数据。解决上述问题的一个办法是利用合成数据;有了开放性图像的合成训练例子,我们可能期望分类器D的表现更好。假设我们有一个生成器网络G(z),可以在给定的(高斯正常)随机噪声输入z∼N的情况下生成合成图像。但是这些合成图像对于D来说可能太容易被归类为开放集数据了[41, 13]。一个自然的解决方案是对抗性地训练生成器G,使其产生困难的例子,用GAN损失来欺骗分类器D。

因为一个经过完美训练的生成器G会产生现实的封闭集图像,最终使判别器D不能适用于开放集的判别。我们发现,以下两种技术很容易解决这个问题。

OpenGAN用真实的开放和封闭数据以及虚假的开放数据进行训练,使其成为一个(类似GAN的)对D和G的最小优化。

当没有开放的训练例子时(即λo=0),上述最小优化仍然可以训练一个用于开放集分类的判别器D。在这种情况下,训练OpenGAN等同于训练一个正常的GAN,并使用其判别器作为开放集的似然函数。虽然文献发现GAN-判别器的效果不好,但我们表明,一旦使用valset(详见下文)进行选择,它确实达到了最先进的水平。为了区分我们在通过验证选择模型这一关键步骤上的贡献,我们把这种方法称为OpenGAN-0。

公开验证。模型选择对GANs来说是一个挑战。通常情况下,人们通过对不同模型检查点生成的图像进行目测来选择生成器G[25]。我们尝试了许多方法,如使用最后一个模型检查点或选择训练误差最小的模型检查点,但都不奏效,因为对抗性训练最终会导致判别器D无法区分封闭集数据和G生成的假开放集数据(详情见附录)。我们发现使用真实离群数据的验证集来选择D是非常关键的,当它在valset上实现了最佳的开放-封闭分类精度。我们发现性能对离群实例的val集相当稳健,即使它们来自与测试时遇到的不同分布(表3和4)。 

 3.2. 对先前的GAN方法的进一步讨论

许多工作都使用GANs来进行开放集的辨别。我们将OpenGAN与这些文献进行比较。

鉴别器与生成器。GANs的主要目的是生成真实的图像[2, 9]。因此,先前在开放集识别方面的工作集中在使用GANs来生成真实的开放训练图像[21, 34, 42]。这些额外的图像被用来增加学习开放集模型的训练集,该模型通常被设计用于封闭世界的K-way分类和开放集识别[21, 34, 42]。在我们的案例中,我们没有学习一个单独的开放集模型,而是直接使用已经训练好的判别器作为开放集的似然函数。

特征与像素。GANs通常用于生成真实的像素图像。因此,许多基于GAN的开放集方法侧重于生成真实的图像,以增加封闭集的训练数据[48, 66, 31]。然而,生成高维的现实图像本身就是一种挑战[2, 9],而且可能不是开放集识别所必需的[48]。因此,我们在封闭世界K-way分类网络学到的OTS特征嵌入上建立GANs,例如,在倒数第二层的预logit特征上。这使得我们可以 "免费 "利用大量的工程努力(例如,网络设计)。

分类与重构。我们注意到,大多数(如果不是全部)基于GAN的方法在很大程度上依靠重建误差来进行开放集辨别[56, 53, 48, 66, 44]。其基本假设是,封闭集数据产生的重建误差比开放集低。虽然这似乎是合理的,但要重建复杂的、高分辨率的图像[2, 9],如图2所示的Cityscapes图像,是具有挑战性的。相反,对于开放集的判别,我们直接使用判别器作为开放集的似然函数。虽然这在文献中被用作一个效果不好的基线[56, 53, 48, 66, 37],但据我们所知,这是第一次GAN-判别器在各种基准上的表现优于现有技术,这要归功于通过开放验证的模型选择(3.1节)。

4.实验

 我们进行了广泛的实验来验证OpenGAN在各种设置下的效果,并证明了利用OTS特征和使用GAN-判别器作为开放集似然函数的优势。我们首先简要介绍以下三个实验设置(细节见后面章节)。

  • - 设置一:开放集判别将单个数据集分成开放集和封闭集,例如,将MNIST数字0-5定义为训练时的封闭集,将数字6-9定义为测试时的开放集。尽管规模不大,但这是一个常见的开放集识别的实验方案,对开放-封闭的测试例子进行分类[42, 44, 47, 67]。
  • - 设置-II开放集识别需要在封闭集上进行K-way分类和开放集识别。我们遵循一个 "较少偏见 "的协议[57],用跨数据集图像构建开放训练集和测试集[60]。
  • - 设置-III检查了语义分割中像素级的开放集辨别,它评估了像素级的开放与封闭分类的准确性[7, 29]。

实施。我们描述了如何训练封闭世界的K-way分类网络,该网络计算用于训练OpenGANfea(图1d)和其他方法(例如OpenMax[6]和C2AE[44])的OTS特征。在设置-I和设置-II下,为了训练K-way网络,我们专门在封闭训练集上训练ResNet18模型[28](有K-way交叉熵损失)。在设置-III下,我们使用HRNet[61]作为OTS网络,这是一个在Cityscapes[14]上进行语义分割的顶级模型。我们选择每个K-way网络的倒数第二层/前逻辑层来提取OTS特征。其他层也适用,但我们在这项工作中不做探讨。在这些特征上,我们训练OpenGANfea判别器(2MB),以及生成器(2MB),采用多层感知器架构。为了比较,我们还用一个CNN架构(14MB)在像素上训练了一个基础的OpenGANpix[68]。我们使用GAN技术[49]训练我们的OpenGAN模型。与分割网络HRNet(250MB)相比,OpenGANfea是相当轻量级的,引起的计算开销最小。我们用PyTorch[45]在单个Titan X GPU上进行实验。

评价指标。为了评估衡量开放-封闭二元分类性能的开放集判别,我们遵循文献[35, 44]并使用ROC曲线下面积(AUROC)[15]。AUROC是一个无校准和无阈值的指标,简化了方法之间的比较,在大型开闭不平衡的情况下也很可靠。对于衡量(K+1)方式分类准确性的开放集识别(K个封闭集类加上第(K+1)个开放集类),我们报告所有(K+1)类上的宏观平均F1-得分[54, 6] 。

 

5.总结 

我们提出了OpenGAN用于开放集识别,它包含了两个技术观点:1)在OTS特征而不是像素上训练一个开放-封闭分类器;2)对抗性地合成假的开放数据以增加开放训练数据集。通过OpenGAN,我们表明使用GAN-判别器确实在开放集的判别上达到了最先进的水平,一旦使用真正的离群例子的值集来选择。即使在离群的验证例子是稀疏的采样或有强烈偏见的情况下,这也是有效的。OpenGAN在开放集图像识别和语义分割方面都明显优于现有技术。

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值