算法 Attack or Defense 介绍
FGSM White Attack FGSM:
1、原理详细:
https://www.cnblogs.com/tangweijqxx/p/10615950.html
2、参数解释详细: https://blog.csdn.net/qq_35414569/article/details/80770121
激活函数学习链接: https://liam.page/2018/04/17/zero-centered-active-function/
主要思想: 添加一个与梯度方向一致且在阈值内的扰动使分类错误。(所有基于梯度的攻击方法都是基于让梯度增大这一点来做的)
PGD(K-FGSM (K表示迭代的次数)) White Attack PGD:
1、学习链接:
https://www.cnblogs.com/tangweijqxx/p/10617752.html
2、
  1)
FGSM是仅仅做一次迭代,走一大步,而PGD是做多次迭代,每次走一小步,每次迭代都会将扰动clip到规定范围内。
  2) 一般来说,PGD的攻击效果比FGSM要好,首先,如果目标模型是一个线性模型,那么用FGSM就可以了,因为此时loss对输入的导数是固定的,换言之,使得loss下降的方向是明确的,即使你多次迭代,扰动的方向也不会改变。而对于一个非线性模型,仅仅做一次迭代,方向是不一定完全正确的,这也是为什么FGSM的效果一般的原因了。
BIM(I-FGSM) White Attack BIM:
1、 基于文献写作顺序:
https://blog.csdn.net/StardustYu/article/details/104803620/
2、 基于原理:https://blog.csdn.net/ilalaaa/article/details/106070091
  PGD 和BIM 的区别: 迭代次数增加了和随机噪声初始化
MIM(类似PGD) White Attack MIM:
1、 学习链接:
https://www.cnblogs.com/tangweijqxx/p/10623831.html
2、 MIM攻击全称是 Momentum Iterative Method,其实这也是一种类似于PGD的基于梯度的迭代攻击算法。它的本质就是,在进行迭代的时候,每一轮的扰动不仅与当前的梯度方向有关,还与之前算出来的梯度方向相关。其中的衰减因子就是用来调节相关度的,decay_factor在(0,1)之间,decay_factor越小,那么迭代轮数靠前算出来的梯度对当前的梯度方向影响越小。
DeepFool White Attack DeepFool:
1、 学习链接:
https://zhuanlan.zhihu.com/p/220421894
2、 贡献一: 量化了分类器的鲁棒性并提出使用不精确的方法来计算对抗性扰动可能会导致关于鲁棒性的不同甚至是误导性的结论。
    贡献二: 提出了简单而有效的方法,基于分类器的迭代线性化,计算足以更改标签的最小扰动(基于超平面分类,最小的扰动就是将x移动到超平面上,这个样本到超平面的距离就是代价最小的地方)
C&W White Attack C&W:
1、 学习链接:
https://www.jianshu.com/p/9440af6c640f
2、 CW是一个基于优化的攻击,主要调节的参数是c和k , c用来调节两个损失函数,k是置信度。它的优点在于,可以调节置信度,生成的扰动小,可以破解很多的防御方法,缺点是,很慢。条件一,保证了生成样本与原始干净样本尽量的相似。条件二,保证了生成样本确实能成功攻击模型。(包括防御蒸馏)
3、 loss1 = nn.MSELoss(reduction=’sum’)(a, images):表示优化目标函数的第一项损失函数。loss2 = torch.sum(self.c*f(a)):表示优化目标函数的第二项损失函数。
NES Black Attack NES:
1、学习链接:
https://echenshe.com/class/ea/3-03-evolution-strategy-natural-evolution-strategy.html
2、Policy Gradient: https://zhuanlan.zhihu.com/p/42055115(与NES算法思想很相似,Policy Gradient是强化学习中的算法)
Natural ES 后面简称 NES, 应该就是算一种用适应度诱导的梯度下降法, 如果用一句话来概括 NES: 生宝宝, 用好宝宝的梯度辅助找到前进的方向,NES作为梯度估计技术,并且用PGD算法生成对抗样本。
ZOO Black Attack ZOO:
1、 学习链接: https://blog.csdn.net/qq_34206952/article/details/115469971
2、 原理清晰: https://www.jianshu.com/p/cb452f48685c
3、 算法过程: 随机选取一个坐标,估计梯度;获得近似梯度后,利用一阶或二阶方法(Adam 方法或newton方法)来获取best梯度;获得best梯度后,输入目标model,如果出错则保留修改后的x,否则,循环算法过程直到产生best梯度。
SPSA Black Attack   Chen 等 [35] 提出了零阶优化 (Zeroth Order Optimization, ZOO) 来估计目标模型的梯度以产生对抗样本。其假设目标模型能够被查询以获得所有类的概率得分 , 然后使用差分数值近似估计目标函数关于输入的梯度 , 进而使用基于梯度的方法进行攻击。类似地 , Jonathan等 [36] 提出了一种使用同时扰动随机逼近算法(Simultaneous Perturbation Stochastic Approximation, SPSA) 进行梯度估计实施攻击的方法,通过特征降维以及随机抽样比 ZOO 取得了更高的效率。
N-Attack Black Attack N-attack:
1:学习链接: https://www.dazhuanlan.com/chunranjewel/topics/959748
2、 原理:
  1)
将 θ\thetaθ 定义为正态分布的均值和方差参数,从而通过 θ\thetaθ 可以从正态分布中采样得到大量的值,将这些值称为种子(seed),然后通过映射函数将种子映射为与图片尺寸相同的向量即可。注意这里的映射函数不应该有任何可训练的参数,否则 pi(x′∣θ)pi(x^{\prime}|\theta)pi(x′∣θ) 就不只有 θ\thetaθ 这一个参数。
  2) 有了生成模型,我们需要做的只剩下优化模型的参数 θ\thetaθ。
  3) 作者给出的方法是不直接去求 J(θ)J(\theta)J(θ) 关于 θ\thetaθ 的导数,想办法求近似值来代替,然后利用梯度下降法优化 θ\thetaθ。求近似值的方法来源于 NES(Natural Evolution Strategies,2008)。首先认为 ∇xf(x)≈∇xEN(z∣x,σ2)f(z)\nabla_xf(x) \approx\nabla_xE_{N(z|x,\sigma^2)}f(z)∇x​f(x)≈∇x​EN(z∣x,σ2)​f(z),即对某输入 xxx 的导数等于在 xxx 周围随机取样得到输出的平均值对 xxx 的导数。
Boundary Black Attack Boundary:1、 学习链接: https://zhuanlan.zhihu.com/p/377633699
2、 主要思想: 首先寻找到一个不限制扰动大小的对抗样本 , 然后依据一定策略将该对抗样本沿着原样本的方向移动 , 直到该对抗样本离原样本最近 , 其结果依然保持较强的对抗性。
拓展:
3、 gradient-based: 知道模型的细节信息(梯度、结构),利用对应图片的梯度进行攻击;
4、 score-based:(需要input+每一个类别的概率)不知道模型的细节信息,但是知道模型预测的概率或者logits。
5、 transfer-based: 不依赖模型的信息,但是依赖训练数据的信息,可以利用训练数据训练替代模型,从而生成可迁移的扰动;如果对抗样本是攻击很多替代模型集成而得到的,攻击成功率可以达到近100%。
6、 decision -based: (需要input和 label(例如预测数字为label=2)
Evolutionary Black Attack Evolutionary:
1、 学习链接:
https://zhuanlan.zhihu.com/p/379040824
       https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/103342334
2、原理: 为了探索下一个可行解,我们需要进行采样。黑色椭圆表示采样概率分布,其服从高斯分布。该分布的中心点为当前可行解,协方差矩阵是则是根据历史可行解进行估计的,其基本思想是:根据历史探索点,我们可以计算出各个方向的探索成功率;沿着成功率大的方向继续探索,更容易找到下一个可行解。

对抗攻击常见方法汇总相关推荐

  1. java 字符串拼接_JAVA字符串拼接常见方法汇总

    字符串的拼接,常使用到的大概有4种方式: 1.直接使用"+"号 2.使用String的concat方法 3.使用StringBuilder的append方法 4.使用StringB ...

  2. 对抗样本无法被重建!CMU提出通用的无监督对抗攻击检测方法

    作者 | Ben Dickson 编译 | 琰琰 机器学习在应用程序中的广泛使用,引起了人们对潜在安全威胁的关注.对抗性攻击( adversarial attacks)是一种常见且难以察觉的威胁手段, ...

  3. javascript常见方法汇总之一——数组字符串相关

    (转载至慕课网) 原文链接:https://www.imooc.com/article/46933 github地址:https://github.com/dorseysen/notes-about- ...

  4. jQuery常见方法汇总

    jQuery常见方法 一.遍历筛选元素的方法 find() children() siblings() first() eq() parent() filter() end() has() prev( ...

  5. 黑客攻击常见方法及安全策略制订(转)

    一旦黑客定位了你的网络,他通常会选定一个目标进行渗透.通常这个目标会是安全漏洞最多或是他拥有最多攻击工具的主机.非法入侵系统的方法有很多,你应当对这些方法引起注意. 常见攻击类型和特征 攻击特征是攻击 ...

  6. 正态检验 (Normality Test)——常见方法汇总与简述

    前 言 在科学研究中,往往需要对数据进行差异性检验,而常用的参数检验需要数据服从正态分布,因此在决定是否采用参数检验之前需要先对数据进行正态性检验.这一步在任何统计学软件中(如SPSS.SAS.Ori ...

  7. 对抗学习常见方法代码实现篇

    原理篇可参考: 对抗学习概念.基本思想.方法综述 FGM 类定义 class FGM():def __init__(self, model):self.model = modelself.backup ...

  8. 彩色图像到灰度转换 常见方法汇总与对比

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 补一下基础知识,关注一波彩色转灰度 觉得不错,请点[在看]支持! ...

  9. Python 2D列表转1D列表的常见方法汇总

  10. 《对抗攻击与防御分类方法综述》阅读笔记20220401

    <对抗攻击与防御分类方法综述> A Review of Adversarial Attack and Defense for Classification Methods DOI:10.1 ...

最新文章

  1. 处理 react_【学习教程】React 中阻止事件冒泡的问题
  2. socket模块简单使用
  3. openjdk和jdk_JDK 11:发行候选更新和OpenJDK JDK 11 LTS
  4. CentOS7搭建部署Ambari 2.6.2.0最新版(HDP-UTILS、HDP-GPL)大数据平台
  5. ECMAScript 6 学习资料
  6. Best Cow Line(POJ-3617)
  7. Mybatis(8)DAO实现类的使用方式
  8. pcp pmda mysql_linux下的mysql的安装
  9. Django最新版(1.10.5)在SAE上面部署流程
  10. PXE启动原理以及与普通Linux启动的对比
  11. 谷歌 kaptcha 图片验证码使用教程
  12. Vue中显示echarts北京公交路线
  13. 思科计算机考试期末,Cisco期末考试选择题题库.doc
  14. CANopen协议中文文档
  15. 安卓Vitamio播放课程视频
  16. mel频谱--学习笔记
  17. 维克森林大学计算机专业,维克森林大学研究生读几年?
  18. Android多线程操作操作对象出现空指针问题
  19. MFC C++ 如何发送Postmessage
  20. PAT A1092 To Buy or Not to Buy ——自在飞花轻似梦,

热门文章

  1. 2019年总结-做时间的朋友
  2. 扫呗--扫码付支付问题
  3. html价格划掉的样式,用css布局价格划线_价钱中划线_价格中间贯穿删除线效果样式布局...
  4. 视觉技术的圣杯:光线追踪如何再现真实世界?
  5. 二甲苯酚的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. CC2640R2F BLE5.0 CC2640R2F SPI驱动实现
  7. 食堂配送公司订餐微信小程序开发制作定制功能需求文档
  8. 【量亿数据-level2】唐奇安趋势跟踪系统
  9. Linux 多点电容触摸屏
  10. windows下 apache配置rewrite错误解决