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

目录

前言

A baseline for detecting misclassified and out-of-distribution examples in neural networks

ID与OOD

OOD研究中常用的数据集以及实验构造方式

OOD实验的基本设置

Max-Softmax方法的主要思想

评价指标

AUROC与AUPR的计算方法

Max-Softmax检测效果

模型改进


前言

这是OOD检测专栏的第二篇文章,也是OOD检测比较正式的开篇之作,在此篇文章中,关于OOD检测任务的描述,衡量指标以及一些实验构造方法都被详细的定义,为后续关于OOD的研究奠定了基础。

A baseline for detecting misclassified and out-of-distribution examples in neural networks

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

本篇文章是使用深度学习方法做OOD检测的开篇之作,在介绍文章之前,我们先说明一下什么是OOD,什么是ID。

ID与OOD

ID指的是in-distribution数据,也就是我们熟悉的训练数据;OOD指的是out-of-distribution,在不同的领域也可能被叫做outlier或者是anomaly data,说的是与ID分布不一致的数据。其实ID和OOD的界定比较模糊,通常我们是将语意信息相差较大的两个数据集构成ID和OOD。例如,我们在CIFAR-10上训练好了一个图像分类网络,那么对于这个网络来讲,CIFAR-10数据集的图像就是ID数据,而MNIST,或者是SVHN,以及LSUN等数据集就可以看做是OOD。通常一个比较难以回答的问题就是,在CIFAR-100上训练好的网络,那么CIFAR-10对于网络来说是OOD吗?因为二者相似性很高。在我看来,我们构造验证试验的时候,还是需要尽量选取语义信息具有差异性的两个数据集构成ID与OOD。

OOD研究中常用的数据集以及实验构造方式

在OOD研究中,常用的数据集主要是一些小规模数据,超大规模数据集目前还没有在研究中大范围的看到,这里介绍一下经常使用的几个并说明实验的构造方法。

MNIST,Fashion- MNIST,Omniglot:这是三个单通道的灰度数据集。MNIST与Fashion-MNIST大家都比较熟悉,一个是手写数字,一个是服装图像。Omniglot是一个在小样本学习中经常使用的数据集,它里面包含了1623个类别,每个类别仅有20个样本。在OOD检测中,通常是使用MNIST作为ID数据,将Fashion-MNIST与Omniglot的混合作为OOD数据;或者是将Fashion- MNIST作为ID数据,将MNIST与Omniglot的混合作为OOD数据。由于Omniglot并不适合训练常规的分类网络,因此通常不作为ID数据。

CIFAR-10,CIFAR-100,TinyImageNet,LSUN,SVHN:这是5个RGB三通道的彩色数据集。CIFAR-10与CIFAR-100大家应该都比较熟悉,在分类网络的评测中经常看到它们。TinyImageNet是类似于ImageNet数据集的一个规模较小的数据集,它里面包含有200个种类的数据。LSUN是一个大规模的场景识别数据集,包含厨房、客厅、卧室等等之类的图像。SVHN是街景数字识别,主要是一些门牌号上的数字。这些数据集的下载链接都比较容易找到,我把它们列在文章的最后。在OOD实验设计中,通常是有以下几种设计方法,当然这些组合方案并不绝对,只是为了方便与大家常用的组合进行比较:

  • CIFAR-10作为ID数据,SVHN、LSUN、TinyImageNet作为OOD数据
  • CIFAR-100作为ID数据,SVHN、LSUN、TinyImageNet作为OOD数据
  • SVHN作为ID数据,LSUN、CIFAR-10、TinyImageNet作为OOD数据

因为需要在ID数据上训练分类网络,因此,在设计实验时,通常会选择不太复杂的数据集作为ID,而将其他数据作为OOD数据。

OOD实验的基本设置

在OOD检测中,我们通常约定不可以使用任何形式的OOD数据,我们能接触到的只有ID数据,这也是符合OOD研究的目的的。在实际使用中,网络不可能会见到所有的OOD图像,因此,如果在网络接触到的OOD数据上评测它的拒识能力是没有意义的。在一些方法中,作者使用了OOD数据来finetune网络,这样得到的指标结果是偏高的,并且说服力不强。

Max-Softmax方法的主要思想

在后续的专栏中,我们使用Max-Softmax来指代本文章中提出的方法。在实验中,作者发现了虽然卷积神经网络会赋予OOD样本很高的置信度,但是从统计规律来看,ID数据的置信度是要高于OOD样本的置信度的。这里的置信度指的是Softmax激活函数输出的所有类别的置信度的最大值。用这个最大的置信度来判断样本是ID还是OOD就是所谓的Max-Softmax方法。因此,这篇文章是直接使用传统的卷积神经网络来检测OOD样本的,检测的依据是网络输出的置信度的最大值。

评价指标

如何评价方法检测OOD的能力需要统一的标准。在本文中,作者巧妙的规避了显式的设定置信度阈值的评价方法,而是采用了两个阈值无关的评价准则,AUROC与AUPR。值得说明的一点是,虽然这两个评价指标不需要定义阈值,但是在实际应用中,需要在ROC曲线或者PR曲线上选择合适的点,也就是合适的置信度阈值来进行OOD判断。

那么如何计算AUROC与AUPR呢?OOD检测本质上是一个二分类问题,对于测试样本,我们是知道它们的真实标签的,也就是0-1标签,表示是ID样本还是OOD样本。同样的,我们的模型利用Softmax输出的最大置信度作为当前样本是ID数据的概率。利用这两组数值,我们就可以计算AUPR与AUROC。在计算AUPR的时候,作者将ID看作正样本计算AUPRin,将OOD样本看作正样本计算AUPRout,这两个指标分别反映了网络检测ID的能力与检测OOD的能力。AUPR以及AUROC这两个指标都是越大越好。

AUROC与AUPR的计算方法

我们用target来表示样本的真实标签,也就是0-1标签,0代表是OOD样本,1代表是ID样本。用prob来表示Max-Softmax的预测结果,也就是Softmax映射函数输出的最大置信度。置信度越接近于1,代表模型越确信输入样本为ID数据。有了target与prob,我们便可以计算AUROC以及AUPR。

from sklearn.metrics import roc_auc_score, average_precision_score

def get_metric(target, prob):
    au_roc = roc_auc_score(target, prob)
    au_pr_in = average_precision_score(target, prob)
    au_pr_out = average_precision_score(1 - target, -1 * prob)
    return au_roc, au_pr_in, au_pr_out

注意,在计算AUPR out的时候,需要将OOD数据看作是正样本,也就是交换正负样本标签,同时将置信度数值的大小关系交换,也就是变为原来的相反数。

Max-Softmax检测效果

在文章中,作者给出了直接使用卷积神经网络来检测OOD的指标结果,内容如下:

可以看出,相对于真实数据集,高斯噪声以及均匀噪声是很容易被检测出来的,它们被模型赋予了很低的置信度,对应的,它们的AUROC以及AUPR指标都很高。总而言之,AUROC是综合反应模型检测效果的,AUPRin反应的是模型检测ID数据的能力,AUPRout反应的是模型检测OOD数据的能力,较高的指标寓意着性能更好的检测模型。

模型改进

在文章最后,作者提出了一种基于自编码器的网络结构,用于提升OOD检测的性能。作者在真实图像也就是ID数据的基础上,添加噪声,并把得到的新图像认为是OOD数据。

 上图中的蓝色部分在ID数据上训练,蓝色部分的下半部分结构是一个decoder,负责重构输入图像,上半部分是一个分类器,用于对输入进行分类。在训练完这一部分之后,冻结住权重,再训练红色部分。红色部分是一个二分类结构,输入有三个:第一阶段的重构误差,第一阶段的分类结果,第一阶段的隐空间特征向量。输出使用\sigma(\cdot)函数进行映射,0代表是OOD样本,1代表是ID样本。由于蓝色部分仅在ID数据上训练过,因此输入OOD数据时,会导致较大的重构误差以及具有区分度的隐空间特征,这是后续的红色模块能够顺利训练并区分ID与OOD的基础。

值得说明的一点是,这里作者使用的OOD数据是ID数据添加噪声得到的,并不是其他的OOD数据集,因此,这并没有违背OOD检测的基本设置。通过使用这种自编码器的两阶段结构,模型检测OOD的能力也得到了明显提升,效果如下:

 上图中的Softmax代表的就是直接使用卷积神经网络检测的效果,AbMod是作者提出的基于自编码器结构的两阶段模型检测效果。可以看出,模型的检测能力要远远好于Max-Softmax,AUPRin、AUPRout以及AUROC等指标均有了明显的提升,说明模型对ID样本的检测能力和对OOD样本的检测能力均有大幅提升。


### 回答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"带来的负面影响。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值