Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks解读

[40]Liang S, Li Y, Srikant R. Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks[C]//International Conference on Learning Representations. 2018.

1.摘要

1.1问题:我们考虑了在神经网络中检测分布外图像的问题。

1.2方法:我们提出了ODIN,这是一种简单有效的方法,不需要对预先训练的神经网络进行任何改变。

1.3动机:我们的方法是基于这样的观察:使用温度缩放和向输入添加小的扰动可以分离分布内和分布外图像之间的softmax分数分布,从而实现更有效的检测。

1.4结果:我们在一系列的实验中表明,ODIN与不同的网络结构和数据集兼容。它始终比基线方法(Hendrycks & Gimpel, 2017)有很大的优势,在这个任务上建立了一个新的最先进的性能。例如,ODIN在DenseNet(应用于CIFAR-10和Tiny-ImageNet)上的假阳性率从基线的34.7%降低到4.3%,而真实阳性率为95%。

2.引言

​2.1背景与现存问题:

  1. 众所周知,当训练和测试数据从相同的分布中取样时,现代神经网络具有良好的泛化能力(Krizhevsky等人,2012;Simonyan和Zisserman,2015;He等人,2016;Cho等人,2014;张等人,2017)。然而,在现实世界的应用中部署神经网络时,对测试数据分布的控制往往非常少。最近的工作表明,即使对于完全无法识别的(Nguyen等人,2015)或不相关的输入,神经网络也倾向于做出高置信度的预测(Hendrycks & Gimpel,2017;Szegedy等人,2014;Moosavi-Dezfooli等人,2017)。
  2. 有资料显示(Amodei等人,2016),当显示新种类的输入,即分布外的例子时,分类器意识到不确定性是很重要的。因此,能够准确地检测出分布外的例子对于视觉识别任务是非常重要的(Krizhevsky等人,2012;Farabet等人,2013;Ji等人,2013)。

2.2现有方法及其分析:

  1. 检测分布外图像的一个看似简单的方法是扩大分布内和分布外实例的训练集。然而,分布外实例的数量可以是无限多的,这使得重新训练的方法在计算上很昂贵且难以实现。此外,为了确保神经网络能够准确地将分布内样本分类到正确的类别中,同时正确地检测出分布外样本,人们可能需要采用超大的神经网络架构,这使得训练过程更加复杂。
  2. Hendrycks和Gimpel提出了一种基线方法来检测分布外的例子,而不需要进一步重新训练网络。该方法基于一个观察,即一个训练有素的神经网络倾向于为分布内的例子分配比分布外的例子更高的softmax分数。

2.3本文的方法和效果:

  1. 在本文中,我们更进一步。我们观察到,在softmax函数中使用温度缩放后(Hinton等人,2015年;Pereyra等人,2017年),并在输入中加入小的受控扰动,分布内和分布外的例子之间的softmax分数差距进一步扩大了。我们表明,这两种技术(温度缩放和输入扰动)的结合可以带来更好的检测性能。
  2. 例如,在CIFAR-10数据集(阳性样本)上提供预训练的DenseNet(Huang等人,2016),我们针对TinyImageNet数据集的图像(阴性样本)进行测试。我们的方法将假阳性率(FPR),即错误分类的分布外样本的比例,从34.7%降低到4.3%,当95%的分布内图像被正确分类。

2.4本文的主要贡献:

  1. 我们提出了一种简单而有效的方法,ODIN(神经网络分布外检测器),用于检测神经网络中的分布外实例。
  2. 我们的方法不需要重新训练神经网络,而且很容易在任何现代神经结构上实现。
  3. 我们在最先进的网络架构(如DenseNet(Huang等人,2016)和Wide ResNet(Zagoruyko & Komodakis,2016))上测试了ODIN在一组不同的入分布和出分布数据集下的情况。我们表明ODIN可以显著提高检测性能,并持续以较大的幅度优于基线方法(Hendrycks & Gimpel, 2017)。
  4. 我们实证分析了参数设置如何影响性能,并进一步提供了简单的分析,提供了我们方法背后的一些直觉。

2.5本文的大纲如下:在第2节,我们提出了必要的定义和问题陈述。在第3节,我们介绍了ODIN,并在第4节介绍了性能结果。在第5节中,我们对所提出的方法进行了实验分析,并对我们的方法进行了一些论证。我们在第6节中总结了相关的工作和未来的方向,在第7节中总结了本文。

3.问题陈述

3.1问题描述:在本文中,我们考虑在预训练的神经网络上区分分布内和分布外的图像的问题。即我们考虑以下问题:在测试中,我们从定义在外分布和内分布上的混合分布中抽取新的图像,我们能否区分该图像是否来自内分布还是外分布?

3.2本文的核心问题:在本文中,我们专注于检测非分布式图像。虽然将分布中的图像正确地归入正确的类别也同样重要,但我们不改变神经网络对分布内图像的预测,只专注于提高分布外图像的检测性能。

4. ODIN: 分布外检测

4.1总述:在这一节中,我们介绍了我们的方法,ODIN,用于检测分布外的样本。该检测器建立在两个部分:温度缩放和输入预处理。我们在下面描述这两个组件的细节

4.2温度缩放:在常规的softmax中加了一个缩放参数T(注意训练时,T设为1,即等价于训练时不加温度缩放参数),如下

4.3:生成扰动样本:该方法受到对抗性例子的启发(Goodfellow等人,2015年),在对抗性例子中加入小的扰动,以减少真实标签的softmax得分,迫使神经网络做出错误的预测。在这里,我们的目标和设置正好相反:我们的目标是增加任何给定输入的softmax得分,而根本不需要一个类别标签。实现的方式是在正常分类样本中,通过和生成对抗样本相反的方法,减去某个扰动幅度的负梯度方向值,生成类别评分更高和更准确的样本,用来训练模型。请注意,扰动对非分布区图像的影响比对分布区外图像的影响更大,使它们更容易分离。生成方式具体如下

 

4.4分布外检测:分布外检测方式很简单,设置一个阈值,如果基于温度缩放后的最大softmax概率小于阈值,则为分布外,否则为分布内。公式如下

5.实验数据集:训练集 CIFAR-10/ CIFAR-100 测试集 CIFAR-10/ CIFAR-100(ID) + TinyImageNet/LSUN/Uniform/Gaussian(OOD)

6.评价指标

FPR at 95% TPR

Detection Error

AUROC

AUPR

7.实验

7.1与基线的比较。在图1中,我们展示了DenseNet-BC-100在CIFAR-10(阳性)图像上对TinyImageNet(阴性)测试实例进行评估时的ROC曲线。 红色曲线对应的是使用基线方法(Hendrycks & Gimpel, 2017)时的ROC曲线,而蓝色曲线对应的是ODIN。我们观察到蓝色和红色的ROC曲线之间存在着惊人的差距。例如,当TPR=95%时,通过使用我们的方法,FPR可以从34%降低到4.2%。

 

 

7.2主实验结果

主要结果。主要结果总结在表2中,我们使用iSUN(Xu等人,2015)作为验证集。我们对所有的设置都使用T=1000。对于DenseNet,我们对CIFAR-10使用"=0.0014,对CIFAR-100使用"0.002。我们在第5节提供了关于参数影响的额外细节。对于每个分布内和分布外的数据集对,我们同时报告了基线(Hendrycks & Gimpel, 2017)和ODIN的性能。在表2中,我们观察到所有数据集对的性能都有明显的改善。

 

7.3参数的可转移性。在表3中,我们展示了在一个验证集上调整的参数如何在不同的数据集上进行推广。具体来说,我们使用一个验证数据集调整参数,然后在其余的OOD测试数据集上进行评估。不同验证集的结果非常相似,这表明我们的方法对调整集不敏感。

 

7.4数据分布距离与检测性能。

为了测量分布内和分布外数据集之间的统计距离,我们采用了一个常用的指标,即高斯RBF核的最大平均差异(MMD)(Sriperumbudur等人,2010;Gretton等人,2012;Sutherland等人,2016)。

在图2(a)(b)中,我们显示了ODIN的性能对分布内和分布外数据集之间的MMD距离的变化。数据集(在X轴上)按照与CIFAR-100的MMD距离的降序排列。从这些数字中可以得出两个有趣的观察结果。首先,我们发现裁剪后的数据集与CIFAR-100之间的MMD距离往往更大。这可能是由于裁剪过的图像只包含局部的图像背景,因此与CIFAR-100的图像更加不同,而调整过的图像包含全局模式,因此与CIFAR-100的图像相似。其次,我们观察到MMD距离往往与检测性能呈负相关关系。这表明,当分布内和分布外的图像彼此更加相似时,检测任务变得更加困难。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着物联网系统的不断发展,机器到机器的通信变得越来越重要。MQTT作为一种轻量级的通信协议,已经被广泛应用于物联网系统中。而Python作为一种灵活且强大的编程语言,可以用来增强MQTT-based的机器到机器通信。 首先,Python提供了丰富的库和工具,可以帮助开发人员更加便捷地使用MQTT协议。通过使用Python的MQTT客户端库,开发人员可以快速地建立起MQTT连接,并且方便地进行消息的发布和订阅操作。同时,Python还提供了各种各样的扩展库,可以用来处理与MQTT相关的数据和事件。 其次,Python具有较为友好的语法和良好的可读性,这使得开发人员可以更加高效地编写和维护MQTT-based的机器到机器通信代码。同时,Python还支持异步编程,这意味着可以编写高效的并发MQTT通信程序,从而提高系统的性能和响应速度。 此外,Python还可以与各种传感器、执行器和其他物联网设备进行良好的集成。开发人员可以利用Python的丰富库和工具,将MQTT通信与物联网设备的控制和监测结合起来,从而实现更加智能和灵活的物联网系统。 综上所述,通过使用Python来增强MQTT-based的机器到机器通信,可以使物联网系统变得更加灵活、高效和功能丰富。Python为开发人员提供了丰富的工具和良好的支持,从而可以更好地应对物联网系统中的各种挑战和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值