Out-of-distribution Detection系列专栏(八)

目录

前言

Training confidence-calibrated classifiers for detecting out-of-distribution samples

Motivation

Methodology

Approach

Experiments


前言

这本次与下一次专栏中,我们将要介绍两种基于生成对抗网络进行OOD检测的文章。这两篇文章的角度都比较新颖,方法也很巧妙。从这两篇文章开始,OOD数据通常被划分为两种:一种是位于ID数据流形之外的,另一种是位于ID数据流形边缘的。在最新的文章中,与这种划分方式类似,一些作者使用Near-OOD与Far-OOD来界定OOD样本,这些划分都有一定的道理。

Training confidence-calibrated classifiers for detecting out-of-distribution samples

论文链接:https://arxiv.org/pdf/1711.09325.pdf

Motivation

在之前的方法中,OOD检测大都是依据Max-Softmax然后再做一些阈值的改进,但是整体来讲仍然没有摆脱分类模型over-confidence的问题。在本篇文章中,作者提出了一个新的框架:联合训练一个GAN生成对抗网络与一个分类器。其中分类器用于判断输入样本的类别,生成器用于生成有效训练样本。在文章中,有效训练样本指的是:与ID数据相似,但是分类器给的置信度较低的样本。借鉴于目标检测中的困难样本挖掘,我们可以把这些样本也叫做hard examples,在我自己的工作中,我喜欢这样称呼它们。

Methodology

试想一下,在训练传统的生成对抗网络的时候,我们希望生成器生成的数据与ID数据越接近越好,也就是生成标准的ID数据。另外,如果我们有一个在ID数据上训练得到的分类器,这个分类器会赋予ID数据很高的置信度,而给OOD数据相对较低的置信度。那么此时,如果我们去采样生成器生成的数据中,从分类器那里得到较低置信度的样本,那这些样本就可以认为是困难样本了。但是这样的方案存在一个弊端,就是这些所谓的困难样本很可能是大量的低质量样本,也就是生成器生成的样本质量不高。文章中使用了联合训练的方式,在我个人看来,应该是为了解决这个潜在的问题。

另外,联合训练的方式往往各部分的作用相互抵消,最后得到的效果可能并不会那么好,但是文章中给的指标结果很高,留给各位读者去验证。

Approach

为了便于大家理解,我画了一个简单的示意图,图中展示了文章中提出的框架结构:

上图中,我们用ID数据同时训练一个GAN网络以及一个分类网络,同时我们希望生成器生成的数据在CNN分类网络中得到的置信度尽量低。回想一下,在Softmax网络的输出中,我们使用的是输出置信度的最大值作为判断输入数据是ID还是OOD的衡量标准。因此,如果想要最大值最小的话,那就是要让Softmax的输出接近于一个均匀分布,各个维度的得分在均值附近。这样,我们就获得了联合训练的损失函数:

上面的表达式中,(c)代表的是交叉熵损失函数,用于监督分类网络的学习。(d)项是KL散度损失,将生成器生成的样本输入到分类网络中,网络的输出与均匀分布计算KL散度,最小化这一项可以使得分类网络对生成器数据的置信度最低。(e)项是训练传统生成对抗网络中常见的损失函数,期望生成数据与ID数据尽可能相似。文章中使用的训练方式是GAN与分类网络交替训练,使用的损失如下:

  • 训练判别器:使用损失(e)
  • 训练生成器:使用损失(e)的后一项和损失(d)
  • 训练分类器:使用损失(c)和(d)

训练完成后,生成器可以生成分布在ID边缘的样本,而分类网络可以赋予这些边缘样本较小的置信度数值。作者给出了生成器生成样本的示意图:

从示意图来看,生成器生成的结果还是比较令人惊讶的,实际复现效果大家可以使用作者公开的代码跑一下。

Experiments

对于具体的试验参数设置,我没有去源码中详细看,这里直接看一下作者公布的指标:

从上图可以看出,这种方法的实验效果很不错,AUROC以及AUPR等指标非常高。文章的思想也是比较具有创新性的,KL散度损失的设计是一大亮点。

### 回答1: Out-of-distribution是指在模型训练时未曾出现过的数据分布,也称为“未知数据”。在模型面对未知数据时,其预测结果可能会出现误差或不确定性。因此,对于模型的鲁棒性和泛化能力的提升,需要对out-of-distribution数据进行有效的识别和处理。 ### 回答2: out-of-distribution(OoD)是指模型在测试阶段遇到了其训练数据集之外的样本或类别。当模型只使用特定的数据集进行训练时,它可能无法处理那些与训练数据不同的输入。这些新的样本可能是在颜色、形状、大小等方面与训练数据有所不同,也可能属于未在训练数据中出现过的类别。 遇到OoD样本的问题是模型的泛化能力不足。模型在训练数据中表示和学习的特征可能过于特定,无法推广到训练数据集之外的样本。这可能导致模型的预测不准确或不可靠。 为了解决OoD问题,有几种方法可以采取。一种常见的方法是收集更多来自OoD分布的样本,并将其添加到训练数据中,以使模型能够更好地学习如何处理这些新样本。另一种方法是使用一些先验知识或规则,对OoD样本进行检测和筛选,以避免对其进行错误预测。 同时,一些研究者提出了一些用于检测OoD样本的新颖性评估方法。这些方法通过利用模型在训练样本和OoD样本上的输出差异来判断一个样本是否属于OoD类别。这种方法可以帮助我们识别OoD样本,并采取相应的措施,以提高模型的泛化性能。 综上所述,解决out-of-distribution问题是训练一个具有较强泛化能力的模型的重要步骤。只有当模型能够有效处理新的样本和未见过的类别时,才能提高模型的可靠性和适用性。 ### 回答3: "out-of-distribution"是指数据集中没有包含的数据样本或样本类别。在机器学习深度学习中,数据集通常用于训练和测试模型的性能。然而,在现实世界中,我们会遇到无法准确分类的新数据,这些数据就属于"out-of-distribution"。这可能是因为这些数据具有与训练数据不同的特征,或者因为数据集的覆盖范围有限。 "out-of-distribution"的出现可能会对模型的性能和鲁棒性产生负面影响。由于模型没有前面没有见过这些类型的数据,它可能会对其进行错误的分类或给出不确定的预测结果。这种情况在实际应用中特别重要,因为我们希望模型能够在各种不同的情况下表现得可靠和准确。 为了解决"out-of-distribution"问题,一种常见的方法是通过收集更多具有代表性的训练数据来增加数据集的覆盖范围。这样模型可以更好地学习不同类型的数据特征,并提高对"out-of-distribution"数据的泛化能力。另外,使用先进的模型架构和优化算法也可以增强模型的鲁棒性。 除了增加训练数据和改进模型架构外,还可以使用一些检测方法来识别"out-of-distribution"的样本。这些方法可以根据模型的置信度、预测熵或数据分布等特征来判断样本是否属于训练集之外的数据。这些方法可以帮助我们发现并处理那些可能造成模型失效的"out-of-distribution"数据。 总之,"out-of-distribution"是指在训练数据之外的数据样本或样本类别。对于机器学习深度学习任务,了解和解决"out-of-distribution"问题是提高模型性能和鲁棒性的关键。通过增加训练数据、改进模型架构和使用检测方法,我们可以减少"out-of-distribution"带来的负面影响。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值