麻省理工研究:深度图像分类器,居然还会过度解读
作者 | 青苹果
来源 | 数据实战派
某些情况下,深度学习方法能识别出一些在人类看来毫无意义的图像,而这些图像恰恰也是医疗和自动驾驶决策的潜在隐患所在。换句话说,深度图像分类器可以使用图像的边界,而非对象本身,以超过 90% 的置信度确定图像类别。
不过,麻省理工学院的科学家最近发现了一种新颖的、更微妙的图像识别失败类:“过度解读”,即算法基于一些人类无法理解的细节,如随机模式或图像边界,而做出自信的预测。对于高风险的环境来说,这可能尤其令人担忧,比如自动驾驶汽车的瞬间决策,以及需要立即关注的疾病医疗诊断等,这都与生命安全息息相关。
研究团队发现,在 CIFAR-10 和 ImageNet 等流行数据集上训练的神经网络,就存在着过度解读的问题。
例如,在 CIFAR-10 上训练的模型,即使输入图像存在 95% 缺失的情况下,也能做出自信的预测。也就是说,在未包含语义显著特征的图像区域中,分类器发现强有力的类证据时,就会发生模型过度解释。
过度解释与过拟合有关,但过拟合可以通过降低测试精度来诊断。过度解释可能源于底层数据集分布中的真实统计信号,而这些统计信号恰好来自数据源的特定属性(如皮肤科医生的临床评分表)。
因此,过度解释可能更难诊断,因为它承认决策是由统计上有效的标准做出的,而使用这些标准的模型可以在基准测试中表现的较为出色。
过度解释发生在原始图像的未修改子集上。与使用额外信息修改图像的对抗性示例相反,过度解释基于训练数据中已经存在的真实模式,这些模式也可以泛化到测试分布。要想揭示过度解释,则需要一种系统的方法来识别哪些特征被模型用来做出决策。
这篇研究论文被 NIPS 收录,标题为“Overinterpretation reveals image classificationmodel pathologies”,文中引入了一种新的方法——批处理梯度 SIS(Sufficient Input Subsets),用于发现复杂数据集的充足的输入子集,并利用该方法在ImageNet中显示边界像素的充分性,用于训练和测试。
该文章的第一作者、MIT 计算机科学与人工智能实验室博士生Brandon Carter说,“过度解读实质上是一种数据集问题,由数据集中的无意义信号而引起的。这些高置信度图像不仅无法识别,而且在边界等不重要的区域,它们只包含不到 10% 的原始图像。我们发现这些图像对人类来说毫无意义,但模型仍然可以高度自信地对其进行分类。”
比如,在用于癌症检测的医学图像分类器的示例中,可以通过找到描述标尺的像素来识别病理行为,这足以让模型自信地输出相同的分类。
早先研究者便提出了 SIS 的概念,用于帮助人类解释黑盒模型的决策。SIS 子集是特征(如像素)的最小子集,它足以在所有其他特征被掩盖的情况下,产生高于某个阈值的类概率。
基准数据集的隐藏统计信号可能导致模型过度解释或不适用于来自不同分布的新数据。
CIFAR-10 和 ImageNet 已成为最流行的两种图像分类基准。大多数图像分类器由 CV 社区根据其在这些基准之一中的准确性进行评估。
除此之外,团队还使用 CIFAR-10-C 数据集来评估 CIFAR-10 模型可以泛化到分布外(OOD,Out-Of-Distribution)数据的程度。在这里,团队成员分析了在这些基准上流行的 CNN 架构的过度解释,以表征病理。通过一系列的实验证明,在 CIFAR-10 和 ImageNet 上训练的分类器,可以基于 SIS 子集进行决策,哪怕只包含少量像素和缺乏人类可理解的语义内容。
图1 显示了来自 CIFAR-10 测试图像的示例 SIS 子集(阈值为 0.99)。对于这些 SIS 子集图像,每个模型对预测类的置信度均≥99%,能够自信且正确地进行分类。
团队观察到,这些 SIS 子集具有高度稀疏的特征,在此阈值下,SIS 的平均尺寸小于每幅图像的 5%(如图2 所示),这表明这些 CNNs 可以自信地对那些对人类来说似乎毫无意义的图像进行分类,随之也就掀起了对鲁棒性和泛化性的关注热潮。此外,团队发现, SIS 的尺寸大小也是影响类预测准确性的重点因素。
到目前为止,深度图像分类器应用领域愈加广泛,除了医疗诊断和增强自动驾驶汽车技术外,在安全、游戏,甚至在一款可以告诉你某物是不是热狗的小程序上也有所应用。
考虑到机器学习模型能够捕捉到这些无意义的微妙信号,图像分类的难度之大也就不言而喻。比如,在 ImageNet 数据集上训练图像分类器时,它们便可以基于这些信号做出看似可靠的预测。
尽管这些无意义的信号会削弱模型在真实世界中的鲁棒性,但实际上,这些信号在数据集中是有效的,这也就意味着,基于该准确性的典型评估方法无法诊断过度解释。
为了找到模型对特定输入的预测的基本原理,本研究中的方法从整幅图像入手,反复研究,每一步究竟可以从图像上删除的内容。
团队采用局部后向选择(local backward selection),在每幅图像中保留 5% 的像素且用零掩码其余的 95%。从本质上说,这个过程会一直掩盖图像,直到残留的最小的部分仍然可以做出有把握的决定,让这些像素子集的分类精度堪比完整图像的分类精度。
如表1 所示,相比于从每幅图像中均匀随机选择的像素子集,通过后向选择所筛选的同样大小的子集具有更强的预测性。
图3a 显示了所有 CIFAR-10 的测试图像中,这些 5% 像素子集的像素位置和置信度。
研究发现,ResNet20 的底部边界上像素的集中是SIS向后选择过程中“决胜”的结果。此外,团队成员还在 CIFAR-10 上运行了分批梯度 SIS,并为 CIFAR-10 找到了充足的边缘输入子集。
而图3b 显示了来自 1000 张 ImageNet 验证图像的随机样本的 SIS 像素位置。关注度沿图像边界分布,表明该模型严重依赖于图像背景,存在严重的过度解释问题。
图4 显示了,在经过预训练的 Inception v3,通过批处理梯度 SIS 自信分类的图像上发现的例子 SIS 子集(阈值 0.9)。这些 SIS 子集看起来毫无意义,但网络将其分类的置信度≥90%。
CNNs 对图像分类的过度自信可能会引发怀疑,在语义无意义的 SIS 子集上观察到的过度自信是否是校准的伪像,而非数据集中的真实统计信号呢?
实验结果如表1 所示,随机 5% 的图像子集仍然能够捕捉到足够的信号,预测效果大约是盲猜的 5 倍,然而这并不足以捕捉到充足的信息,让模型做出准确的预测。
更多地,团队发现,无论是 CIFAR-10 测试图像(图5)还是 CIFAR-10- C OOD 图像,在所有 SIS 置信阈值上,正确分类图像的 SIS 子集都显著大于错误分类图像的 SIS 子集。
有研究表示,模型集成可以提高分类性能。由于团队发现,像素子集的大小与人类像素子集分类的准确性密切相关,于是,用来衡量集成程度可以缓解过度解释的指标是 SIS 子集大小的增加。
结果显示,集成测试一致地增加了预期的测试准确性,与此同时也增加了 SIS 的大小,因此削弱了过度解释的损害。
当然,文中的方法也可以作为一种验证标准。
例如,如果你有一辆自动驾驶汽车,它使用训练有素的机器学习方法来识别停车标志,你可以通过识别构成停车标志的最小输入子集来测试这种方法。
虽然看起来模型可能是罪魁祸首,但数据集的嫌疑更大。这可能意味着在更受控制的环境中创建数据集。
“存在一个问题,我们如何修改数据集,使模型能够更接近地模仿人类对图像分类的想法,从而有望在自动驾驶和医疗诊断等现实场景中更好地推广和应用,这样一来,模型就不会再产生荒谬的行为,” Carter 表示。
往
期
回
顾
技术
100行python代码制作鞭炮
资讯
算力超越iPhone,芯片堪比Mac
技术
31个好用的Python字符串方法
资讯
游戏圈地震级消息,微软收购动视暴雪
分享
点收藏
点点赞
点在看
相关文章:

Oracle 查询转换之子查询展开
概念:子查询展开(Subquery Unnesting)是优化器处理带子查询的目标sql的一种优化手段,它是指优化器不再将目标sql中子查询当作一个独立的处理单元来单独执行,而是将该子查询转换为它自身和外部查询之间等价的表连接。这种等价连接转…

Xcode中通过删除原先版本的程序来复位App
可以在Xcode菜单中点击 Product->Clean Build Folder (按住Option键,在windows键盘中是Alt键.) 此时Xcode将会从设备中删除(卸载uninstall)任何该app之前部署的版本. 接下来重启Xcode,再试一下,有时这可以修复非常奇怪(really weird)的问题.

深入理解PHP之OpCode
OpCode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.NET的MSL。 此文主要基于《 Understanding OPcode》和 网络,根据个人的理解和修改,特记录下来 :PHP代码: <?phpecho "Hello World";$a 1…

关于 AIOps 的过去与未来,微软亚洲研究院给我们讲了这些故事
作者 | 贾凯强出品 | AI科技大本营(ID:rgznai100)在过去的15年里,云计算实现了飞速发展,而这种发展也为诸多的前沿技术奠定了基础,AIOps便在此环境中获得了良好的发展契机。在数字化转型的浪潮下,云计算已经…

JS 正则表达式 0.001 ~99.999
^(0|[1-9][0-9]?)(\.[0-9]{0,2}[1-9])?$转载于:https://www.cnblogs.com/wahaha603/p/9050130.html

深入浅出PHP(Exploring PHP)
一直以来,横观国内的PHP现状,很少有专门介绍PHP内部机制的书。呵呵,我会随时记录下研究的心得,有机会的时候,汇总成书。:) 今天这篇,我内心是想打算做为一个导论: PHP是一个被广泛应用的脚本语言…

懒人神器 !一个创意十足的 Python 命令行工具
作者 | 写代码的明哥来源 | Python编程时光当听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试。有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带装了 n 多依赖库,就…

Regular Expression Matching
正则匹配 Regular Expression Matching Implement regular expression matching with support for . and *. . Matches any single character. * Matches zero or more of the preceding element.The matching should cover the entire input string (not partial).The functio…
PI校正环节的程序实现推导过程
PI校正环节在经典控制论中非常有用,特别是对负反馈控制系统,基本上都有PI校正环节。1.下面分别说明比例环节和积分环节的作用,以阶跃信号为例。①比例环节单独作用以上分析说明,若只有比例环节的控制系统,阶跃响应也是…

几行 Python 代码实现邮件解析,超赞~
作者 | Yunlor来源 | CSDN博客前言如何通过python实现邮件解析?邮件的格式十分复杂,主要是mime协议,本文主要是从实现出发,具体原理可以自行研究。一、安装通过mailgun开源的Flanker库实现邮件解析。该库包含了邮件地址解析和邮件…

深入理解PHP原理之变量(Variables inside PHP)
或许你知道,或许你不知道,PHP是一个弱类型,动态的脚本语言。所谓弱类型,就是说PHP并不严格验证变量类型(严格来讲,PHP是一个中强类型语言,这部分内容会在以后的文章中叙述),在申明一个变量的时候࿰…

jQuery中的.height()、.innerHeight()和.outerHeight()
jQuery中的.height()、.innerHeight()和.outerHeight()和W3C的盒模型相关的几个获取元素尺寸的方法。对应的宽度获取方法分别为.width()、.innerWidth()和.outerWidth(),在此不详述。1. .height()获取匹配元素集合中的第一个元素的当前计算高度值 或 设置每一个匹配…

Python实战之logging模块使用详解
用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所以Python引入了logging模块来…

深入理解PHP原理之变量作用域
作者:laruence(http://www.laruence.com/)地址: http://www.laruence.com/2008/08/26/463.html PHP变量的内部表示是如何和用户脚本中的变量联系起来的呢?也就是说,如果我在脚本中写下:<?php $var"laruen…

Azure AI的又一里程碑,Neural TTS新模型呈现真人般情感饱满的AI语音
在人与人之间的对话中,即使是同样的字句,也会因为所处情景和情感的不同而表现出丰富的抑扬顿挫,而这种动态性恰恰是各种AI合成语音的“软肋”。相比于人类讲话时丰富多变的语气,AI语音的“心平气和”往往给人带来明显的违和感。 …

VS2010中“工具选项中的VC++目录编辑功能已被否决”解决方法
http://blog.csdn.net/chaijunkun/article/details/6658923 这是VS2010的改变,不能够在“工具-选项”中看到“VC目录”了。 但是呢,我们可以在另外一个地方找到它,请看下边的对比照片。 VS2008中: VS2010中: 打开方式非…

Bminer 7.0.0 ETH挖矿教程(Linux 64)
Bminer产品介绍Bminer是目前最快的挖矿程序,Bminer是基于NVIDIA GPU深度优化的挖矿软件。Bminer支持Equihash和Ethash两种算法的虚拟币,包括:ETH(以太坊),ETC,ZEC(零币),…

深入理解PHP原理之变量分离/引用(Variables Separation)
引自: http://www.laruence.com/ [风雪之隅 ]在前面的文章中我已经介绍了PHP的变量的内部表示(深入理解PHP原理之变量(Variables inside PHP)),以及PHP中作用域的实现机制(深入理解PHP原理之变量作用域(Scope inside PHP))。这节我们就接着前面的文章,继…

C# 属性、索引
属性(property): public string Name {get{return _name;}set{_name value;} } 简写为: public string Name { set; get;} 索引器(index): 索引器为C#程序语言中泪的一种成员,它是的对象可…

分享几段祖传的 Python 代码,拿来直接使用!
作者 | 周萝卜来源 | 萝卜大杂烩今天分享几段工作生活中常用的代码,都是最为基础的功能和操作,而且大多还都是出现频率比较高的,很多都是可以拿来直接使用或者简单修改就可以放到自己的项目当中日期生成很多时候我们需要批量生成日期…
JVM——Java虚拟机架构
Java虚拟机(Java virtualmachine)实现了Java语言最重要的特征:即平台无关性。 平台无关性原理:编译后的 Java程序(.class文件)由 JVM执行。JVM屏蔽了与具体平台相关的信息,使程序可以在多种平台…

深入理解PHP之数组遍历
本文地址: http://www.laruence.com/2009/08/23/1065.html 经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢? 比如: <?php$arr[laruence] huixinchen;$arr[yahoo] 2007;$arr[baidu] 2008;foreach ($arr as $key >…

Github 年度最受欢迎的 TOP30 Python 项目,超值
作者 | 俊欣来源 | 关于数据分析与可视化今天小编整理归纳了2021年Github上面最受欢迎的30个Python项目,帮助大家在打磨技术与提升自我上面更进一步。通过代码来获取Github官网有开源的接口,因此数据的获取也就方便了许多,代码如下url https…
Linux字符设备驱动程序的框架(新写法)
这是老版本内核的的Linux驱动注册函数写法: major register_chrdev(0, "hello", &hello_fops); /* (major, 0), (major, 1), ..., (major, 255)都对应hello_fops */ 新版本内核Linux驱动注册函数写法#define MAJOR(devid) ((unsigned int) ((devid…

将一个普通的java项目转化为maven项目
在学习Spring事务时,我参考的书的源码不是maven项目,整本书依赖的100多个jar包都在一个文件夹里,我本来对spring每个模块的学习源码都放在一个Github仓库里,每一个项目都是maven项目,这样想要将项目转化为maven项目&am…
深入理解PHP内存管理之谁动了我的内存
本文地址: http://www.laruence.com/2011/03/04/1894.html转载请注明出处首先让我们看一个问题: 如下代码的输出, var_dump(memory_get_usage());$a "laruence";var_dump(memory_get_usage());unset($a);var_dump(memory_get_usage()); 输出(在我的个人电脑上, 可能…

蓝懿教育九月二十七日记录
将VIew移动做成动画效果 这种动画效果没有中间的位移可以添加动画的View属性center,frame,alpha,transform , backgroundColor//继续做消失的动画[UIView animateWithDuration:1 animations:^{iv.alpha 0;} completion:^(BOOL finished) …

新年快到了,让我们一起用 Python 编织中国结吧
作者 | FrigidWinter来源 | CSDN博客新年快到了,今天博主教大家用Python编织中国结~中国结的组成部分中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。因为其外观对称精致,可以代表汉族悠久的历史&#x…

pwa+webpack,初探与踩坑
0.前言 我们都知道pwa是一个新技术.,依靠缓存,离线了还能正常跑,而且秒开。我把以前原生写的小游戏迁移到react,再迁移到webpackreact,最后再升级到pwa。具体介绍不多说,我们开始撸吧。 1.webpack webpack攻…

linux sar 命令详解
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程…