0%

【阅读笔记】 Enhancing the Reliability of Out-of-Distribution Image Detection In Neural Networks

Abstract

本文考虑神经网络中图像的OoD的检测问题。作者提出了ODIN方法,这个方法的好处是不用对训练好的网络进行任何的更改。本文的理论基于两个手段————temperature scalinginput 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图片输入的问题。令表示定义在空间上的两个不同的数据分布。假定神经网络的训练数据是抽样于的,那么就成为In-Distribution,而与之不同的就是Out-of-Distribution。在测试中,我们从一个混合分布抽取新的图像,其中条件概率分布表示In-Distribution, 而表示Out-of-Distribution。我们考虑下面的问题:给定一个从混合分布中抽取的图像,如何分辨这个图像是否来自于

在本文中,作者关注OoD图像的检测。然而,把一个ID图像正确分类也同样重要。但这个比较容易,因为一旦检测出图像不是OoD,就可以直接把原始图像丢进网络中就可以分类。因为,作者不改变神经网络对于ID图像的预测结果,仅仅聚焦于提高OoD图像的检测性能。

ODIN: Out-of-Distribution detector

在本节,作者提出了ODIN方法,来检测OoD样本。检测器由两个组件构成:temperature scaling 和input preprocessing。接下来是两个组件的细节。

Temperature Scaling

假定神经网络是N类分类器。对于每个输入,神经网络的输出标签,其中 是temperature scaling的参数,训练时设置为1。对于给定的输入,我们称softmax向量中最大的概率值,即,为softmax score。本文把简写为。之前已经有工作使用了temperature scaling来提取神经网络的知识,并校准分类任务的预测置信度。我们将看到,使用temperature scaling 可以分离ID和OoD的softmax scores,让检测更有效。

Input Preprocessing

除了temperature scaling,本文通过添加微扰对输入进行预处理: 其中是控制扰动大小的参数。这个方法是受对抗样本的启发(即在对抗样本工作中,添加小的扰动,降低正样本的softmax score从而迫使网络做出错误预测)。而本文目标和设置刚好相反。本文旨在对任意输入(不需要类标签)都增加softmax score。之后将看到,微扰对ID的影响大于OoD的影响,使得它们更加分离。注意到,对交叉熵损失梯度(相对于输入)进行反向传播,很容易计算微扰。

Out-of-Distribution detector

检测器结合了上述两个组件。对于每个图像, 首先用公式2计算预处理后的。然后把预处理后的丢入网络,计算修正后的softmax score。然后把score和阈值比较。如果大于阈值则判定为ID,否则判定为OoD。OoD检测器的数学描述如下: 设置参数为合适的值,使得TPR为95%。

Experiments

本节,作者在几个CV的benchmark数据集上展示了ODIN方法的性能。实验完全用PyTorch框架编写,代码是开源的以方便复现。

Training setup

Architectures and training configuration

本文采用两个state-of-the-art的神经网络架构,分别为DenseNet和Wide ResNet。对于DenseNet,我们的模型设置为:层数,growth rate (Dense-BC),dropout rate=0。对于Wide ResNet,层数为28,宽度10,dropout rate为0。神经网络的超参数设置和原始的Wide ResNet (Zagoruyko & Komodakis, 2016) and DenseNet (Huang et al., 2016)实现完全相同。所有的网络都用带牛顿动量的SGD法(Duchi et al., 2011; Kingma & Ba, 2014)优化。具体来说,作者训练Dense-BC轮次为300,batch size为64,momentum为0.9;训练Wide ResNet轮次为200,batch size为128,momentum为0.9。学习率起始为0.1,当训练进行到50%和75%时,再相对降低10倍。

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 为TPR为95%时的错误分类概率。具体可以定义为,假定正例和反例在测试集中出现概率一样大。 + AUROC 即ROC曲线的面积,是一个依赖于阈值的指标。本指标刻画了TPR和FPR的关系。可以看作是正例比反例能获得更高的detection score的概率。一个完美的检测器有着100%的AUROC。 + AUPR 即PR曲线的面积,也是一个依赖于阈值的指标。具体来说,P就是,R就是,PR曲线就是P和R的关系图。而下表(Table 2)中,AUPR-In和AUPR-Out是当ID和OoD分别指定为正例时,PR曲线的面积。

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中选择。对于微扰程度,从0到0.004中等距选取。调节参数到合适的值,使得验证集的FPR at 95% TPR指标最小。

Main result

主要的结果总结在之前的Table 2中。验证集是iSUN(Xu et al., 2015)。T都设置为1000。对于DenseNet,对CIFAR-10使用,对CIFAR-100使用。在下一节Discussions中提供参数影响的细节。对于每一对ID和OoD数据集,实验都记录了baseline和ODIN的性能,从Table 2中可以看到在所有的数据对中,ODIN的性能相比baseline都有显著提升。

Parameter transferability

下表(Table 3)展示了,在单个验证集上进行参数调节是具有泛化性的。具体来说,使用单个OoD数据集作为验证集来调参,然后用剩余的OoD测试集进行评估。每次(不同的OoD验证集)的结果都是相似,这说明了本文的方法对于验证集的选取不太敏感。

注:神经网络是在CIFAR-10上预训练的。

Data distributional distance vs. detection performance

为了度量ID和OoD数据集的统计距离,本文采用了一个广泛使用的指标,即Maximum Mean Discrepancy(MMD)。使用高斯RBF核。具体来说,给定两个图像集合,。V和Q最大平均误差MMD定义如下:

其中为Gaussian RBF kernel。比如。本文使用和Sutherland et al.(2016)相同的方法去选择。此时设置为集合中所有图像间欧氏距离的均值。

下图(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可以充分大,详细推导如下:

最后结果忽略了第三阶以及更高的项。为了简化表示,假定:

接着,作者对进行了解释。根据定义,度量了最大的logits和其余logits之间的偏差。而还度量了其余小logits之间的偏差。个人的理解是因为的形式类似于方差,因为可以在括号内加上一个logits平均值再减去一个logits平均值,然后用完全平方公式展开,可得到条件正相关于方差的形式(即固定,正相关于其他小logits间的方差)。在本文的附录D中有详细推导,此处从略。下图(Figure 5)的(a)展示了每个OoD和ID的的分布概率密度,ID是红色的。

我们观察到神经网络使用ID输入时,最大的logits输入和其余logits的偏差更大,即更大。这可能是因为神经网络倾向于对ID给出更高的置信度。

此外,Figure 5的(b)展示了关于的条件期望。每个曲线对应一个数据集,红色的是ID数据集CIFAR-10。可以观察到红色的曲线始终在其他曲线之上,这表明当两个图像的接近时,ID图像倾向于有一个更大。换句话说,对于ID图像,去掉最大的logits,剩余的小logits倾向于更加分散。当ID中某些类特征相似而其他类间显著不同时可能会发生上述情况。为了解释这一点,可以看Figure 5 的(f)(g)。(f)图展示了在DenseNet网络下,用CIFAR-10训练,然后输入一个来自CIFAR-10的狗的图像,得到每个类的输出logits。(g)图则是用TinyImageNet(crop)作为ID,输入一个青蛙。对于狗的图像,可以观察到标签狗和猫的预测logits非常接近但猫和卡车的输出差异就很大。这可能是因为狗和猫很相似但它们和卡车有很大差异。对于TinyImageNet(crop)数据集,除了最大的logits,其他的几个logits输出都比较接近,因此始终有一个较小

下面,作者探讨了T的影响。为了确定选取一个较大的T是有用的,作者首先重写公式3的softmax score函数为。因此softmax score很大程度上由来决定。如之前所推论的,且ID的较大,因此正面促进了ID的较大这个结果;而,而ID的相对于OoD也更大,故负面削弱了ID的较大这个结果。因此可以选取一个较大的temperature来弥补对检测性能的负面影响。这样,In-Distribution和Out-of-Distribution的softmax score就更加分离。最后,如果充分的大,softmax score几乎只被所影响————这解释了Figure 3(a)(b)的现象,也就是为什么太大了后(eg.,T>100)性能不再提升。在附录C中作者提供了规范的证明,来展示当T无穷大的时候检测误差将收敛为常数。可以详见作者原文,本笔记从略。

Analysis on Input Preprocessing

正如前文所说,使用temperture scaling方法对于检测性能提高是很有效的。然而当T很大的时候,性能就不再继续提升了。为了进一步提高性能,作者补充了一个input preprocessing的方法。正如下图(Figure 4)所展示的,使用合适的微扰程度后,检测性能得到了极大的提高(T=1000)。

本小节提供了一些直观的理解。首先看到log-softmax函数对于微扰图像的一阶泰勒展开: 其中 为原始输入。

首先看梯度的影响。Figure 5的(c)展示了的分布,这是log-softmax关于梯度的一范式。一个突出的现象就是,相比大多数OoD的图像,CIFAR-10的图像倾向于有一个更大的梯度范式的值。为了进一步弄清梯度范式对softmax score的影响,可以看到Figure 5的(d)是梯度范式关于S的条件数学期望。可以发现当softmax score相同的时候,ID相比OoD的更大。

下图(Figure 6)解释了梯度范式的影响。

假定图像(蓝色)是ID,图像(红色)是OoD,这两者有接近的softmax score。但经过input processing,因为ID的梯度的一范式较大,故微扰后ID有更大的softmax score了。这样,ID和OoD的图像就进一步的分离开(Figure 5的(e)也能看到类似的现象)。

然后看的影响。当充分小的时候,添加微扰不会有什么影响。然而当不可忽略时,ID和OoD的gap就会受到的影响。本文的观察和(Szegedy et al., 2014; Goodfellow et al., 2015; Moosavi- Dezfooli et al., 2017)的现象一致,都表明:给定ID图像小的微扰,softmax scores倾向于显著改变。值得注意的是,使用一个非常大的会导致性能下降,如Figure 4。这可能是因为,当比较大的时候,泰勒展开的第二阶和更高阶项不再可以忽略。

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方法,性能在各个网络架构、各个数据集上都有很大改进。本文实证的分析了不同参数设置下的方法,并且提供了一些见解。未来的工作可以是探索本文的方法在其他领域的应用,如语音识别和自然语言处理等等。