学界 | Ian Goodfellow推荐论文:增加机器学习的防御就能解决鲁棒性问题?天真!

论文简介

这篇论文的名字为为「Adversarial Example Defenses: Ensembles of Weak Defenses are not Strong」,“防御对抗性样本:弱的防御方式组合起来也不强”,来自UC伯克利大学。论文关注的是机器学习模型面对攻击性数据时的防御表现,也就是模型的鲁棒性。论文中用生成式的方法修改MNIST和CIFAR-10中的图片,形成对抗性的样本,目的是让分类器对修改后的样本产生误判,借此对分类器的所用防御方法的效果进行评价。

论文中测试了五种不同的防御方式

  • 单独使用降低色深方法(color-depth-reduction defense,能够减少对大量像素的微小改动,是效果较弱的特征压缩方法)
  • 单独使用空间平滑方法(spatial smoothing,能够减少对少量像素的大幅改动,是效果较弱的特征压缩方法)
  • 降低色深和空间平滑这两者的组合(“combination of multiple squeezing techniques”,标题所指的“弱的防御方式的组合”)
  • 使用一组专用识别器,对分类后的图像再次检测攻击性;如果其中有识别器检测到其对应的攻击性特征,就可以通过对分类结果的置信度体现出来(“ensemble of specialists”)
  • 使用三种对抗性攻击检测器的组合(“ensemble of detectors”,三种检测器分别为Gong、Metzen和Feinman)。

下面几张图展示的就是测试结果。第一行是原始图像,通过生成模型修改出的能够使分类器错误分类的攻击图像在第二行。

降低色深法防御CIFAR-10图像(左),空间平滑法防御MNIST图像(右)

空间平滑法防御CIFAR-10图像(左),降低色深和空间平滑组合防御MNIST图像(右)

降低色深和空间平滑组合防御CIFAR-10图像(左),专用识别器防御MNIST图像(右)

可以直观地看到,四种防御方式的效果都非常有限,每一组中的第二行图片只有不大的改动,就已经可以导致分类器对样本的误判。由于MNIST图像比较简单,对于几种防御方式,对抗性处理带来的失真许多时候已经可以看得出来;但CIFAR-10的图像来说,能够骗过分类器的变化仍然都是人眼察觉不到的。

为了量化比较,他们也用把对抗性处理带来的失真(distortion)进行了数值化,虽然几种方法都不理想,但是所需的失真数量确实还是有所区别,能够反映防御能力的高低。

对于第五种防御方法,论文中还选取了另一种指标,就是自适应的攻击图片生成器除了能够骗过它本来目标的检测器之外(为了三种中的一种生成一张攻击图片,成功率轻松达到100%),能否同样轻松地骗过没有作为目标的检测器。结果是为骗Metzen生成的图片(作为source)最容易同样骗过另外两种(作为target),而为Feinman生成的就要差一点。

第五种防御方法里,三种检测器的交叉测试结果

总的来说,现有结果表明弱防御方式的组合并不能显著提高系统的鲁棒性,想要找到能够高效防御对抗性样本的方法还有很长的路要走。

论文中也介绍了他们在生成攻击图像过程中的收获:1. 评估防御能力的时候要想办法生成比较强的攻击图像,最好不要用FGSM这样图快的方法;2. 评估防御能力的时候最好用自适应性的攻击图像生成器,这样对于攻击者知道防御手段的情况也能够提高安全性。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-06-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刘君君

JDK8的HashMap源码学习笔记

3068
来自专栏后端之路

LinkedList源码解读

List中除了ArrayList我们最常用的就是LinkedList了。 LInkedList与ArrayList的最大区别在于元素的插入效率和随机访问效率 ...

19710
来自专栏java闲聊

JDK1.8 ArrayList 源码解析

当运行 ArrayList<Integer> list = new ArrayList<>() ; ,因为它没有指定初始容量,所以它调用的是它的无参构造

1192
来自专栏xingoo, 一个梦想做发明家的程序员

Spark踩坑——java.lang.AbstractMethodError

百度了一下说是版本不一致导致的。于是重新检查各个jar包,发现spark-sql-kafka的版本是2.2,而spark的版本是2.3,修改spark-sql-...

1210
来自专栏学海无涯

Android开发之奇怪的Fragment

说起Android中的Fragment,在使用的时候稍加注意,就会发现存在以下两种: v4包中的兼容Fragment,android.support.v4.ap...

3165
来自专栏alexqdjay

HashMap 多线程下死循环分析及JDK8修复

1K4
来自专栏拭心的安卓进阶之路

Java 集合深入理解(12):古老的 Vector

今天刮台风,躲屋里看看 Vector ! 都说 Vector 是线程安全的 ArrayList,今天来根据源码看看是不是这么相...

2447
来自专栏拭心的安卓进阶之路

Java 集合深入理解(6):AbstractList

今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

19210
来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

462
来自专栏聊聊技术

原 初学图论-Kahn拓扑排序算法(Kah

2888

扫码关注云+社区