Out-of-distribution Detection系列专栏
Posted DS..
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Out-of-distribution Detection系列专栏相关的知识,希望对你有一定的参考价值。
目录
A baseline for detecting misclassified and out-of-distribution examples in neural networks
前言
这是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,负责重构输入图像,上半部分是一个分类器,用于对输入进行分类。在训练完这一部分之后,冻结住权重,再训练红色部分。红色部分是一个二分类结构,输入有三个:第一阶段的重构误差,第一阶段的分类结果,第一阶段的隐空间特征向量。输出使用函数进行映射,0代表是OOD样本,1代表是ID样本。由于蓝色部分仅在ID数据上训练过,因此输入OOD数据时,会导致较大的重构误差以及具有区分度的隐空间特征,这是后续的红色模块能够顺利训练并区分ID与OOD的基础。
值得说明的一点是,这里作者使用的OOD数据是ID数据添加噪声得到的,并不是其他的OOD数据集,因此,这并没有违背OOD检测的基本设置。通过使用这种自编码器的两阶段结构,模型检测OOD的能力也得到了明显提升,效果如下:
上图中的Softmax代表的就是直接使用卷积神经网络检测的效果,AbMod是作者提出的基于自编码器结构的两阶段模型检测效果。可以看出,模型的检测能力要远远好于Max-Softmax,AUPRin、AUPRout以及AUROC等指标均有了明显的提升,说明模型对ID样本的检测能力和对OOD样本的检测能力均有大幅提升。
以上是关于Out-of-distribution Detection系列专栏的主要内容,如果未能解决你的问题,请参考以下文章
论文导读Deep Stable Learning for Out-Of-Distribution Generalization
文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment
文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment