技术标签: 对抗攻击 adversary attack 深度学习/机器学习 deepfool
文章简介:
本文为Adversary Attack方向的一篇经典论文。算法名为DeepFool,其目标是寻求最小的扰动来达到生成对抗样本的目标。下图第2行为DeepFool算法生成的扰动,第3行为FGSM算法生成的扰动。可以看到当生成的target label都为turtle时,DeepFool算法所加入的扰动,明显低于FGSM。DeepFool算法的特点主要为以下几个方面:
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。如下图,为了使得扰动达到最小,最小的方向就是垂直于分类面的方向。
个人感觉这个算法中 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} ∣∣w∣∣22f(x0)w⇒∣∣w∣∣2f(x0)∣∣w∣∣2w
其中
f ( x 0 ) ∣ ∣ w ∣ ∣ 2 \frac{f(x_0)}{||w||_2} ∣∣w∣∣2f(x0)
为点到平面 f f f的距离公式
另外
w ∣ ∣ w ∣ ∣ 2 \frac{w}{||w||_2} ∣∣w∣∣2w
为梯度的单位向量。所以以上就为往梯度方向前进垂直距离
大小,即能到达超平面(针对线性超平面而言)。但是事实上神经网络一般都是高度非线性。因此可能未必一次就能到到超平面边界,所以便出现了算法中的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:
因此只要在原样本 x 0 x_0 x0上加上扰动 r r r后,满足下式即攻击成功(只要出现某个类的输出置信度高于原类别即满足)
对 k ^ ( x 0 ) = 4 \hat{k}(x_0)=4 k^(x0)=4而言,假设其决策边界为下图,为了用最小的扰动来达到攻击效果,从图中我们可以选择往第3个边界移动。
令 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:
由于这些笔记是之前整理的,所以可能会参考其他博文的见解,如果引用了您的文章的内容请告知我,我将把引用出处加上~
如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(点个赞我可是会很开心的哦)~
RePlugin startActivity
一、js获取当前日期时间var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate.getDate();
基于uni-app技术开发的仿微信界面聊天室uniapp-chatroom实例项目|uniapp仿微信朋友圈,实现了发送图文消息、表情(gif动图),图片预览、地图位置、长按菜单、红包/钱包、仿微信朋友圈等功能。在H5 / 小程序 / App端测试效果如下,实测多端效果均为一致。(后续大图均展示App端)技术实现编辑器:HBuilder X 技术框架:uni-app + vu...
背景故事对于ros小车的调试,往往会用到分布式Ros来进行调试,简单来说就是ros节点分布在局域网内的不同Linux主机上,而对于只有windows主机+ros小车的用户来说,显然就缺少一台Linux主机,这个时候能在windows主机上虚拟一台Linux主机显得尤为重要。当然也有其他解决方式,比如安装双系统,或者再购买一台Linux主机,可以灵活处理。另外虚拟机不仅仅是针对这一个场景,还有很多很多用途,大家可以自行脑补。安装VMware下载首先想到的就是去官网下载安装包,推荐直接下载最新全功能版
'constraints.hasBoundedHeight': is not true.Listview(children:<Widget>[ListView( physics: NeverScrollableScrollPhysics(), scrollDirection: Axis.horizontal,shrinkW...
<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每个版本效果都不一样,我采用的是4.9.0,如果个别同学和我的不一样,可能是版本不同效果图考虑数据安全,所以我用的测试数据和测试数据项。关键点先绘制bar,然后利用pictorialBar.这个代码绝对能用,大家可以放心下载。代码下载网址:...
配置流程 配置组件 所属集成服务: 保存流程
1,里面的数字一定要转成 字符串类型。因为sql 语句,看起来你输入的是数字,其实你输入的是字符串。bool ZhMMMMMM::appendToXXXXXTable(std::string taskId, int maxParallelNumber){ string t_strSql = &amp;quot;&amp;quot;; t_strSql += &amp;quot;INSERT INTO EEEELLLLTask (...
关于某操作中开启事务后,动态切换数据源机制失效的问题,暂时想到一个取巧的方法,在Spring声明式事务配置中,可对不改变数据库数据的方法采用不支持事务的配置,如下:对单纯查询数据的操作设置为不支持事务,可避免一些动态数据源切换失效的场景。如本人在Shiro权限管理开发中,所有的前台页面需要通过jsp的shiro权限控制标签控制页面的一些显示效果,此时很可能因业务需要,查询显示的数据和控
ClusterShell:一个在集群节点上并行运行命令的好工具,我们过去曾写过两篇如何并行地在多个远程服务器上运行命令的文章:并行 SSH(PSSH) 和分布式 Shell(DSH)。今天,我们将讨论相同类型的主题,但它允许我们在集群节点上执行相同的操作。你可能会想,我可以编写一个小的 shell 脚本来实现这个目的,而不是安装这些第三方软件包。当然,你是对的,如果要在十几个远程系统中运行一些命令...
今天晚上打算折腾下Ubuntu,想在一块移动硬盘上安装,但又在