[论文阅读笔记]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

智能推荐

JS 中 DateTime日期时间及方法函数_刘奎gg的博客-程序员资料_js datetime

一、js获取当前日期时间var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1970-????)myDate.getMonth();       //获取当前月份(0-11,0代表1月)myDate.getDate();

uniapp+vue仿微信App界面|uni-app仿微信聊天/朋友圈_xiaoyan_2018的博客-程序员资料

基于uni-app技术开发的仿微信界面聊天室uniapp-chatroom实例项目|uniapp仿微信朋友圈,实现了发送图文消息、表情(gif动图),图片预览、地图位置、长按菜单、红包/钱包、仿微信朋友圈等功能。在H5 / 小程序 / App端测试效果如下,实测多端效果均为一致。(后续大图均展示App端)技术实现编辑器:HBuilder X 技术框架:uni-app + vu...

中级篇——VMware虚拟机的使用_玩转智能机器人的博客-程序员资料_vmware虚拟机使用

背景故事对于ros小车的调试,往往会用到分布式Ros来进行调试,简单来说就是ros节点分布在局域网内的不同Linux主机上,而对于只有windows主机+ros小车的用户来说,显然就缺少一台Linux主机,这个时候能在windows主机上虚拟一台Linux主机显得尤为重要。当然也有其他解决方式,比如安装双系统,或者再购买一台Linux主机,可以灵活处理。另外虚拟机不仅仅是针对这一个场景,还有很多很多用途,大家可以自行脑补。安装VMware下载首先想到的就是去官网下载安装包,推荐直接下载最新全功能版

Flutter遇到的第二个坑——垂直ListView嵌套水平ListView时报错_Leo星星的博客-程序员资料

'constraints.hasBoundedHeight': is not true.Listview(children:<Widget>[ListView( physics: NeverScrollableScrollPhysics(), scrollDirection: Axis.horizontal,shrinkW...

jpa entityManager 配置_xpsharp的博客-程序员资料_jpa entitymanager 配置

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springf

随便推点

echarts 功能四--圆柱体_秋秋_瑶瑶的博客-程序员资料_echarts 柱状图 圆柱

利用echarts 绘制圆柱体开发环境echarts每个版本效果都不一样,我采用的是4.9.0,如果个别同学和我的不一样,可能是版本不同效果图考虑数据安全,所以我用的测试数据和测试数据项。关键点先绘制bar,然后利用pictorialBar.这个代码绝对能用,大家可以放心下载。代码下载网址:...

通过iframe进行post跨域提交表单_booooooooooooooooooo的博客-程序员资料

配置流程 配置组件 所属集成服务: 保存流程

使用sqlite3 c++的一些坑_蓝黑墨水的博客-程序员资料_sqlite3 c++

1,里面的数字一定要转成 字符串类型。因为sql 语句,看起来你输入的是数字,其实你输入的是字符串。bool ZhMMMMMM::appendToXXXXXTable(std::string taskId, int maxParallelNumber){ string t_strSql = &amp;amp;quot;&amp;amp;quot;; t_strSql += &amp;amp;quot;INSERT INTO EEEELLLLTask (...

Spring动态切换多数据源事务开启后,动态数据源切换失效解决方案_Woody_Jiang的博客-程序员资料

关于某操作中开启事务后,动态切换数据源机制失效的问题,暂时想到一个取巧的方法,在Spring声明式事务配置中,可对不改变数据库数据的方法采用不支持事务的配置,如下:对单纯查询数据的操作设置为不支持事务,可避免一些动态数据源切换失效的场景。如本人在Shiro权限管理开发中,所有的前台页面需要通过jsp的shiro权限控制标签控制页面的一些显示效果,此时很可能因业务需要,查询显示的数据和控

centos 命令行执行多个命令_ClusterShell:一个在集群节点上并行运行命令的好工具,..._Tim Shen的博客-程序员资料

ClusterShell:一个在集群节点上并行运行命令的好工具,我们过去曾写过两篇如何并行地在多个远程服务器上运行命令的文章:并行 SSH(PSSH) 和分布式 Shell(DSH)。今天,我们将讨论相同类型的主题,但它允许我们在集群节点上执行相同的操作。你可能会想,我可以编写一个小的 shell 脚本来实现这个目的,而不是安装这些第三方软件包。当然,你是对的,如果要在十几个远程系统中运行一些命令...

WIN7创建系统映像失败:卷影复制服务操作失败 的解决办法_小书房的博客-程序员资料

今天晚上打算折腾下Ubuntu,想在一块移动硬盘上安装,但又在

推荐文章

热门文章

相关标签