[论文阅读笔记]DeepFool: a simple and accurate method to fool deep neural networks-程序员宅基地

技术标签: 对抗攻击  adversary attack  深度学习/机器学习  deepfool  

DeepFool: a simple and accurate method to fool deep neural networks(2016 CVPR)

文章简介:
本文为Adversary Attack方向的一篇经典论文。算法名为DeepFool,其目标是寻求最小的扰动来达到生成对抗样本的目标。下图第2行为DeepFool算法生成的扰动,第3行为FGSM算法生成的扰动。可以看到当生成的target label都为turtle时,DeepFool算法所加入的扰动,明显低于FGSM。DeepFool算法的特点主要为以下几个方面:

  • 这是一种untargeted attak
  • 该算法是通过寻求当前的点在高维空间中离所有非真实类的决策边界中最近的一个,来作为攻击后的label
  • 需要注意的是,该算法是一种贪心算法,并不能保证收敛到(1)中的最优扰动。但是,作者在实践中观察到,该算法产生的扰动非常小,可以认为是最小扰动的很好的近似

Contribute:

  • 提出了一种简单、准确的方法来计算比较不对分类器对对抗扰动的鲁棒性

  其中 ∇ ( x ; k ^ ) \nabla (x; \hat{k}) (x;k^)

  • 做了广泛的实验比较从而得出
    a) 我们的方法比现有的方法更可靠、更有效地计算了对抗性扰动。
    b) 发现用对抗性的例子增加训练数据可以显著增强对对抗性扰动的鲁棒性。

  • 作者证明,使用不精确的方法来计算对抗性扰动,可能导致对鲁棒性的不同结论,有时还会产生误导。因此,作者的方法提供了一个更好的理解这个有趣的现象及其影响因素。

DeepFool for binary classifiers:
f f f是一个线性二分类分类器: f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b。如下图,为了使得扰动达到最小,最小的方向就是垂直于分类面的方向。

因此可以给出一个closed-form formula:
其算法流程为

个人感觉这个算法中 r i r_i ri计算结果可能会偏大以至于无法满足题目中最小扰动的目标?
No!
f ( x 0 ) ∣ ∣ w ∣ ∣ 2 2 w ⇒ f ( x 0 ) ∣ ∣ w ∣ ∣ 2 w ∣ ∣ w ∣ ∣ 2 \frac{f(x_0)}{||w||_2^2} w \Rightarrow \frac{f(x_0)}{||w||_2} \frac{w}{||w||_2} w22f(x0)ww2f(x0)w2w
其中
f ( x 0 ) ∣ ∣ w ∣ ∣ 2 \frac{f(x_0)}{||w||_2} w2f(x0)
为点到平面 f f f的距离公式
另外
w ∣ ∣ w ∣ ∣ 2 \frac{w}{||w||_2} w2w
为梯度的单位向量。所以以上就为往梯度方向前进垂直距离大小,即能到达超平面(针对线性超平面而言)。但是事实上神经网络一般都是高度非线性。因此可能未必一次就能到到超平面边界,所以便出现了算法中的while循环。

值得注意的是,算法中为 ∇ f ( x i ) \nabla f(x_i) f(xi)而非 w w w。但是因为 f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b,所以 ∇ f ( x i ) = w \nabla f(x_i) = w f(xi)=w。此外,作者发现上述算法通常会收敛到为zero level set中的一个点,因此在实际操作的过程中,作者会将最终的 r ^ \hat{r} r^乘以一个常系数 1 + η 1+\eta 1+η,在作者的实验中,他选取 η = 0.02 \eta=0.02 η=0.02

DeepFool for multiclass classifiers:

  • 本文采用的多分类器方案是one-vs-all
  • 这里依然考虑的线性分类器
  • 分类的结果的选择 k ^ ( x ) = arg ⁡ max ⁡ k f k ( x ) \hat{k}(x)= \underset{k}{\arg \max} f_k (x) k^(x)=kargmaxfk(x)其中 f k ( x ) f_k(x) fk(x) f ( x ) f(x) f(x) k t h k_{th} kth的输出

因此只要在原样本 x 0 x_0 x0上加上扰动 r r r后,满足下式即攻击成功(只要出现某个类的输出置信度高于原类别即满足)

k ^ ( x 0 ) = 4 \hat{k}(x_0)=4 k^(x0)=4而言,假设其决策边界为下图,为了用最小的扰动来达到攻击效果,从图中我们可以选择往第3个边界移动。

其中P为

l ^ ( x 0 ) \hat{l}(x_0) l^(x0)为距离P的边界最近的超平面,其可以通过下式进行计算。有点不明白为什么要通过以下公式计算最近的超平面,而不是直接用点到平面的距离公式?
回答:仔细看超平面的公式为 f k ( x ) − f 4 ( x ) = 0 f_k(x) - f_4(x) = 0 fk(x)f4(x)=0

在计算得出最近的超平面后,我们的扰动可以通过下面的方式进行计算

DeepFool for General classifiers:

  • 此时可以是更一般的非线性的分类器

此时P为

上述两种情况都可以归为以下算法

Conclusion:

  • 本文提出了一种新的算法DeepFool
  • 本文基于分类器的iterative linearization来产生较小的扰动并产生非常有效的攻击效果
  • 本文在三个数据集和八个分类器上提供了大量的实验证据,表明了该方法相对于现有的计算对抗性扰动的方法的优越性,以及该方法的有效性。

由于这些笔记是之前整理的,所以可能会参考其他博文的见解,如果引用了您的文章的内容请告知我,我将把引用出处加上~
如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(
点个赞我可是会很开心的哦)~

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Invokar/article/details/96698876

智能推荐

Threadlocal 和 ThreadLocalMap 原理解析-程序员宅基地

文章浏览阅读1.1w次。java 中提供了两个线程安全的操作方式,一个是 Threadlocal ,一个是ThreadLocalMap。本文介绍他们的区别和实现原理。ThreadlocalThreadlocal 的属性包括 threadLocalHashCode,getMap(Thread t) 到当前线程去获取一个 ThreadLocalMap 的内部类对象,它的属性有一个 entry 数组,数组下标是当前 T...

FTP命令 上传下载文件_ftp下载命令-程序员宅基地

文章浏览阅读2.6w次,点赞6次,收藏47次。1. 连接ftp服务器格式:ftp [hostname| ip-address]a)在linux命令行下输入:ftp192.168.1.1b)服务器询问你用户名和密码,分别输入用户名和相应密码,待认证通过即可。2. 下载文件下载文件通常用get和mget这两条命令。a) get格式:get [remote-file] [local-file]将文件从远端主机中传送至..._ftp下载命令

hdu 1104 (数论+bfs)-程序员宅基地

文章浏览阅读894次。RemainderTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2039 Accepted Submission(s): 436Problem DescriptionCoco is a clever

Call/Return Style (调用/返回风格)-程序员宅基地

文章浏览阅读4k次,点赞6次,收藏31次。软件体系结构——调用/返回风格一、调用/返回风格1、调用/返回风格简介1.1 主程序/子程序风格二、风格变种三、课程总结一、调用/返回风格1、调用/返回风格简介简介思维导图:体系结构风格Review:1.1 主程序/子程序风格从图中我们可以看出整个系统是一个主程序/子程序风格的系统,它是单一的单线程的结构,首先它具有一个统一的程序入口,叫做控制器(main)。在整个统中,它具有三个..._调用/返回风格

认识WRK(简介和编译)-程序员宅基地

文章浏览阅读439次。WRK是微软于 2006 年针对教育和学术界开放的Windows内核的部分源码,WRK(Windows Research Kernel)也就是Windows研究内核,在WRK中不仅仅只提供Windows内核模块的部分代码,其还提供了编译工具,也就是通过这个编译工具,你可以将你的WRK编译成一个EXE文件,也就是内核可执行模块,然后你可以利用这个EXE文件来取代操作系统本身的内核...

centos7远程离线安装mysql_CentOS7离线安装MySQL的教程详解-程序员宅基地

文章浏览阅读56次。1.删除原有的mariadb,不然mysql装不进去mariadb-libs-5.5.52-1.el7.x86_64rpm -qa|grep mariadbrpm -e --nodeps mariadb-libs1.在https://dev.mysql.com/downloads/mysql/选择为Red Hat Enterprise Linux 7 / Oracle Linux 7 ,把os的版..._centos离线安装mysql

随便推点

startActivityForResult、setResult、onActivityResult用法精炼详解_onactivityresult和startactivityforresult-程序员宅基地

文章浏览阅读392次。一、前期基础知识储备(1)ActivityManger管理Activity启动startActivity(Intent intent),启动一个Activity最简单的方式。Activity调用startActivity()方法时,该方法调用请求是发送给操作系统的ActivityManager。ActivityManager负责创建Activity实例并调用其onCreate()方法。Act..._onactivityresult和startactivityforresult

Socket 应用中DataInputStream 的readInt()方法_socket readint-程序员宅基地

文章浏览阅读2.9k次。不知道为什么,readInt就是不能用,同样的还有readChar(),相信其他的也不行,不过read却能用。其他都会抛出这个异常Exception in thread "main" java.io.EOFException at java.io.DataInputStream.readChar(Unknown Source) at TestSocket.TestServer1.main(Te_socket readint

win7最大内存设置问题,导致系统无法启动的解决方法_引导最大内存设置无效-程序员宅基地

文章浏览阅读1.2w次。cmd-msconfig-引导-高级选项-最大内存不能随便勾!否则可能会出现系统无法启动的情况!最便捷的解决办法,亲测可用:1、拔掉主板电池,用PS2口键盘按F8进入安全模式,然后在相同路径下去掉最大内存前面的勾,关机!2、装上主板电池,开机正常启动!_引导最大内存设置无效

Oracle 查询分析器的数据库查询工具。_oracle查询分析器在哪-程序员宅基地

文章浏览阅读4.6k次。最近找到了一个小巧的Oracle 工具 不过要注册,真不爽Canoe是一个相当于Toad、SQL Server查询分析器的数据库查询工具。支持Oracle 8i,Oracle 9i, 无需先安装客户端 支持MS SQL 2000 支持Sybase ASE特点:1.无需安装数据库客户端即可使用数据库终端工具。2.超强的表、列注释功能,可实时增删改注释,并可以导出到Excel中交付给项目负责人。3.直_oracle查询分析器在哪

windows下mysql定时备份(bat文件和windows任务计划)_db_backup.bat-程序员宅基地

文章浏览阅读397次。使用bat文件定时创建mysql备份1.新建一个文本文档.改名为backup.bat(前缀可自定义)2.编辑backup.bat3.复制以下内容(记得将中文改成对应内容 注释中文需要去掉)SET DB_NAME=备份库名SET SAVE_PATH=备份路径SET MYSQL_DUMP_PATH=mysql的mysqldump.exe路径(注:有空格请加双引号,如"MySQL Server 5.7") %SAVE_PATH:~0,2%cd %SAVE_PATH%SET BAK_FIL_db_backup.bat

android线程之间的通信-程序员宅基地

文章浏览阅读965次。对于这部分的内容,将分成4小节来描述:1.职责与关系2.消息循环3.线程与更新4.几点小结--------------------------------------------------------------------------------------------------1) 接下来,我们开始这部分的内容,首先了解一下各自的职责及相互之_android线程之间