Abstract
本文考虑神经网络中图像的OoD的检测问题。作者提出了ODIN方法,这个方法的好处是不用对训练好的网络进行任何的更改。本文的理论基于两个手段————temperature scaling和input perturbation。这两个手段可以加大ID和OoD的softmax分布的差异,有助于检测。作者通过一系列的实验证明ODIN的方法对于各种网络结构和数据集都是兼容的,并且性能远好于baseline,可以称得上是一个state-of-the-art的方法。例如,设置网络架构为DenseNet,数据集为CIFAR-10和Tiny-ImageNet,ODIN相比于baseline把FPR at 95% TPR从34.7%降低到4.3%。
Introduction
现代神经网络在训练集和测试集样本来自同一个分布的时候效果很好。但现实世界部署的时候,往往测试集的分布是不受控制的。最近的工作表明,即使是输入不相关的数据,神经网络的预测结果也会偏高。对于分类器来说,遇到没见过的输入时给出一个不确定的反馈非常重要。因此,精确的检测OoD样本在视觉识别任务的实践中非常重要。
一个看上去比较直接的OoD检测方式就是扩大In-Distribution集合和Out-of-Distribution集合的规模。而OoD的数据往往是很有限的,这让再训练变得昂贵且难以处理。此外,为了确保神经网络在准确的给ID进行分类的同时,也能正确的检测出OoD,可能需要很大的神经网络架构,这使得训练过程更加复杂。
Hendrycks & Gimpel提出一个baseline方法检测OoD,且不需要重训练网络。这个方法的提出基于一个观察,那就是训练好的网络倾向于给ID样本一个相对更高的softmax scores。在本文,工作进一步被开展。作者发现,使用temperature scaling在softmax函数中,并且给输入进行小的扰动,即input perturbation,那么ID和OoD的softmax分布就会增大差异。本文展示了,这两个方法可以提高检测性能。比如,对于训练好的DenseNet网络,用CIFAR-10作为ID,TinyImageNet作为OoD,本文的方法把FPR at 95% TPR这个指标从34.7%下降到4.3%。本文的主要贡献总结如下:
- 提出一个简单而有效的方法,ODIN(Out-of-Distribution detector for Nerual networks),不需要重训练神经网络,且容易在任意现代网络结构中执行。
- 在先进的网络结构(如DenseNet和Wide ResNet)中,用不同的数据集对作为ID和OoD。实验表明ODIN的方法可以显著的提高检测性能,并且始终比baseline的表现好得多。
- 结合实证分析了参数的设置如何影响性能,并提供了简单的分析以帮助直观了解本文方法。
本文的脉络大概是:第一部分为介绍;第二部分提供必要的定义和问题陈述;第三部分介绍ODIN方法;第四部分展示性能结果;第五部分实验性的分析ODIN方法并进行评估;第六部分总结相关工作和未来的方向;第七部分总结全文。
Problem Statement
本文中,作者考虑了在训练好的神经网络中区分ID和OoD图片输入的问题。令
在本文中,作者关注OoD图像的检测。然而,把一个ID图像正确分类也同样重要。但这个比较容易,因为一旦检测出图像不是OoD,就可以直接把原始图像丢进网络中就可以分类。因为,作者不改变神经网络对于ID图像的预测结果,仅仅聚焦于提高OoD图像的检测性能。
ODIN: Out-of-Distribution detector
在本节,作者提出了ODIN方法,来检测OoD样本。检测器由两个组件构成:temperature scaling 和input preprocessing。接下来是两个组件的细节。
Temperature Scaling
假定神经网络
Input Preprocessing
除了temperature scaling,本文通过添加微扰对输入进行预处理:
Out-of-Distribution detector
检测器结合了上述两个组件。对于每个图像
Experiments
本节,作者在几个CV的benchmark数据集上展示了ODIN方法的性能。实验完全用PyTorch框架编写,代码是开源的以方便复现。
Training setup
Architectures and training configuration
本文采用两个state-of-the-art的神经网络架构,分别为DenseNet和Wide
ResNet。对于DenseNet,我们的模型设置为:层数
Accuracy of pre-trained networks
两个网络结构的训练集都是CIFAR-10和CIFAR-100。CIFAR-10和CIFAR-100分别有10个类和100个类,都包括50000个训练集和10000个测试集。在CIFAR数据集上的测试错误率如下表(Table 1):
Out-of-Distribution Datasets
在测试阶段,来自CIFAR-10(以及CIFAR-100)的图像数据集被看作是In-Distribution样本,对于OoD样本,按照(Hendrycks & Gimpel, 2017)的设置,测试了几个不同的自然图像数据集和合成噪声数据集。本文考虑了如下OoD测试数据集。
TinyImageNet 本数据集是 ImageNet images (Deng et al., 2009)的子集,包含10000个测试图像,200个类型。实验中构造两个数据集,crop版本和resize版本,方法分别为随机裁剪
大小的子图、降像素采样至 大小的子图。 LSUN 本数据集为Large-scale Scene UNderstanding数据集,有10000个测试集图像,10个类,比如卧室、厨房、客厅。和TinyImageNet一样,构造两个数据集,分别为crop版本和resize版本。
Gaussian Noise 本数据集为合成高斯噪声,包含10000个随机的二维高斯噪声图像,且RGB三个信道的值都从各自的独立同分布的高斯分布中采样,均值为0.5,方差为单位大小。本实验把像素映射到[0,1]区间。
Uniform Noise 本数据集为合成均匀分布噪声,包含10000个图像,每个像素点的RGB都独立的、同等的从一个[0,1]均匀分布中采样。
对于超参数调优,使用iSUN(Xu et al.,
2015)作为验证集。此数据集和前面四个测试集是独立的,由自然场景图像组成,包含8925个图像,每个图像也被降像素采样到
Evaluation metrics
本文采用下面的四个指标来度量一个神经网络区分ID和OoD的性能。 +
FPR at 95% TPR
即TPR为95%时,负样本(OoD样本)识别为正样本(ID样本)的概率 +
Detection Error
Experimental results
Comparison with baseline
下图(Figure 1)展示了DenseNet-BC-100的ROC曲线,测试集中正例为CIFAR-10,负例为TinyImageNet。红色的曲线对应于baseline方法,蓝色的曲线对应于ODIN的方法。可以观察到两个曲线有一个比较大的gap。比如,当TPR=95%时,FPR从34%(baseline)降低到4.2%(ODIN)。
Hyperparameters
本文使用单独的OoD验证集用于调参。对于T参数,在1、2、5、10、20、50、100、200、500、1000中选择。对于微扰程度
Main result
主要的结果总结在之前的Table 2中。验证集是iSUN(Xu et al.,
2015)。T都设置为1000。对于DenseNet,对CIFAR-10使用
Parameter transferability
下表(Table 3)展示了,在单个验证集上进行参数调节是具有泛化性的。具体来说,使用单个OoD数据集作为验证集来调参,然后用剩余的OoD测试集进行评估。每次(不同的OoD验证集)的结果都是相似,这说明了本文的方法对于验证集的选取不太敏感。
注:神经网络是在CIFAR-10上预训练的。
Data distributional distance vs. detection performance
为了度量ID和OoD数据集的统计距离,本文采用了一个广泛使用的指标,即Maximum
Mean
Discrepancy(MMD)。使用高斯RBF核。具体来说,给定两个图像集合,
其中
下图(Figure 2)展示了ODIN的性能如何随着ID和OoD之间的MMD距离变化而变化。数据集(x轴)是按MMD距离降序排序的。网络在CIFAR-100上训练,OoD数据集从1到5分别为:LSUN(cop)、TinyImageNet(crop)、LSUN(resize)、iSUN(resize)、TinyImageNet(resize)。
可以发现两个有趣的结论: + 裁剪会使得数据集和CIFAR-100的MMD距离变得更大,可能是因为裁剪后图像只包含局部信息,因此与CIFAR-100的区别加大,而resized后的图像还包含全局的信息,因此和CIFAR-100中图像相对相似。 + MMD距离和检测性能是负相关的。这表明当ID和OoD图像相似度时候,检测任务会变得困难。
Discussions
Analysis on temperature scaling
在本小节,作者分析了temperature scaling方法的有效性。如下图(Figure 3)的(a)(b),可以观察到足够大的T可以获得更好的检测性能,当T过大的时候,这种正面影响变弱。
为了深入原理,作者对softmax
score进行泰勒展开,假设T可以充分大,详细推导如下:
最后结果忽略了第三阶以及更高的项。为了简化表示,假定:
接着,作者对
我们观察到神经网络使用ID输入时,最大的logits输入和其余logits的偏差更大,即
此外,Figure 5的(b)展示了
下面,作者探讨了T的影响。为了确定选取一个较大的T是有用的,作者首先重写公式3的softmax
score函数为
Analysis on Input Preprocessing
正如前文所说,使用temperture
scaling方法对于检测性能提高是很有效的。然而当T很大的时候,性能就不再继续提升了。为了进一步提高性能,作者补充了一个input
preprocessing的方法。正如下图(Figure 4)所展示的,使用合适的微扰程度
本小节提供了一些直观的理解。首先看到log-softmax函数对于微扰图像
首先看梯度的影响。Figure 5的(c)展示了
下图(Figure 6)解释了梯度范式的影响。
假定图像
然后看
Related works and future directions
OoD样本的检测问题在低维空间上已经在各种背景下被深入研究(可以参考Pimentel et al. (2014)的调查)。传统的方法,例如密度估计、最邻近、聚类分析都被广泛的使用(Chow, 1970; Vincent & Bengio, 2003; Ghoting et al., 2008; Devroye et al.,2013)。密度估计方法使用概率模型来估计ID,如果一个测试样本在低密度区域,那么就被识别为一个OoD;聚类方法基于统计距离,如果一个测试样本距离它的邻居很远,那么就被识别为OoD。尽管低维空间中方法很多,但不幸的是在高维空间(例如图像空间)中这些方法都不太可靠(Wasserman, 2006; Theis et al., 2015)。近些年,基于深度模型的OoD检测器被提出了。Schlegl et al. (2017)训练了一个生成式的对抗网络来检测临床场景中的OoD。Sabokrou et al. (2016)训练了一个卷积网络来检测异常的场景。Andrews et al. (2016)采用了迁移表征学习来进行异常检测。这些工作都需要扩充或修改神经网络架构。在最近的一个工作中(也就是baseline那篇文章),Hendrycks & Gimpel (2017)发现了预训练好的神经网络对于OoD样本的分类是过度自信的,这限制了检测的性能。本文旨在提高OoD样本的检测性能,而不需要修改已有的训练好的网络模型。
我们的方法利用了下面两个有趣的现象来提高ID和OoD的区分:(1)对于ID图像,现代神经网络倾向于产生类间方差较大的输出;(2)对于ID图像,神经网络往往会有一个较大的log-softmax score的梯度范式。作者相信,更好地理解这些现象就可以更加理解这个问题。
Conclusions
在本文中,作者提出了一个简单而有效的方法去检测神经网络中OoD的样本。这个方法不需要重训练神经网络,并且相比于Hendrycks & Gimpel (2017)的baseline方法,性能在各个网络架构、各个数据集上都有很大改进。本文实证的分析了不同参数设置下的方法,并且提供了一些见解。未来的工作可以是探索本文的方法在其他领域的应用,如语音识别和自然语言处理等等。