MIM攻击原论文地址——https://arxiv.org/pdf/1710.06081.pdf

1.MIM攻击的原理

MIM攻击全称是 Momentum Iterative Method,其实这也是一种类似于PGD的基于梯度的迭代攻击算法。它的本质就是,在进行迭代的时候,每一轮的扰动不仅与当前的梯度方向有关,还与之前算出来的梯度方向相关。其中的衰减因子就是用来调节相关度的,decay_factor在(0,1)之间,decay_factor越小,迭代轮数靠前算出来的梯度对当前的梯度方向影响越小。由于之前的梯度对后面的迭代也有影响,迭代的方向不会跑偏,总体的大方向是对的。

为了加速梯度下降,通过累积损失函数的梯度方向上的矢量,从而(1)稳定更新(2)有助于通过 narrow valleys, small humps and poor local minima or maxima.(大致意思就是,可以有效避免局部最优)

是decay_factor, 另外,在原论文中,每一次迭代对x的导数是直接算的1-范数,然后求平均,但在各个算法库以及论文实现的补充中,并没有求平均,估计这个对结果影响不太大。

2.代码实现

class MomentumIterativeAttack(Attack, LabelMixin):"""The L-inf projected gradient descent attack (Dong et al. 2017).The attack performs nb_iter steps of size eps_iter, while always stayingwithin eps from the initial point. The optimization is performed withmomentum.Paper: https://arxiv.org/pdf/1710.06081.pdf"""def __init__(self, predict, loss_fn=None, eps=0.3, nb_iter=40, decay_factor=1.,eps_iter=0.01, clip_min=0., clip_max=1., targeted=False):"""Create an instance of the MomentumIterativeAttack.:param predict: forward pass function.:param loss_fn: loss function.:param eps: maximum distortion.:param nb_iter: number of iterations:param decay_factor: momentum decay factor.:param eps_iter: attack step size.:param clip_min: mininum value per input dimension.:param clip_max: maximum value per input dimension.:param targeted: if the attack is targeted."""super(MomentumIterativeAttack, self).__init__(predict, loss_fn, clip_min, clip_max)self.eps = epsself.nb_iter = nb_iterself.decay_factor = decay_factorself.eps_iter = eps_iterself.targeted = targetedif self.loss_fn is None:self.loss_fn = nn.CrossEntropyLoss(reduction="sum")def perturb(self, x, y=None):"""Given examples (x, y), returns their adversarial counterparts withan attack length of eps.:param x: input tensor.:param y: label tensor.- if None and self.targeted=False, compute y as predictedlabels.- if self.targeted=True, then y must be the targeted labels.:return: tensor containing perturbed inputs."""x, y = self._verify_and_process_inputs(x, y)delta = torch.zeros_like(x)g = torch.zeros_like(x)delta = nn.Parameter(delta)for i in range(self.nb_iter):if delta.grad is not None:delta.grad.detach_()delta.grad.zero_()imgadv = x + deltaoutputs = self.predict(imgadv)loss = self.loss_fn(outputs, y)if self.targeted:loss = -lossloss.backward()g = self.decay_factor * g + normalize_by_pnorm(delta.grad.data, p=1)# according to the paper it should be .sum(), but in their#   implementations (both cleverhans and the link from the paper)#   it is .mean(), but actually it shouldn't matterdelta.data += self.eps_iter * torch.sign(g)# delta.data += self.eps / self.nb_iter * torch.sign(g)delta.data = clamp(delta.data, min=-self.eps, max=self.eps)delta.data = clamp(x + delta.data, min=self.clip_min, max=self.clip_max) - xrval = x + delta.datareturn rval

  

有人认为,advertorch中在迭代过程中,应该是对imgadv求导,而不是对delta求导,foolbox和cleverhans的实现都是对每一轮的对抗样本求导。

转载于:https://www.cnblogs.com/shona/p/11274443.html

3 基于梯度的攻击——MIM相关推荐

  1. 4.基于梯度的攻击——MIM

    MIM攻击原论文地址--https://arxiv.org/pdf/1710.06081.pdf 1.MIM攻击的原理 MIM攻击全称是 Momentum Iterative Method,其实这也是 ...

  2. 2 基于梯度的攻击——PGD

    PGD攻击原论文地址--https://arxiv.org/pdf/1706.06083.pdf 1.PGD攻击的原理 PGD(Project Gradient Descent)攻击是一种迭代攻击,可 ...

  3. 3.基于梯度的攻击——PGD

    PGD攻击原论文地址--https://arxiv.org/pdf/1706.06083.pdf 1.PGD攻击的原理 PGD(Project Gradient Descent)攻击是一种迭代攻击,可 ...

  4. 论文 ❀《评价联邦学习中梯度泄漏攻击的框架》- A Framework for Evaluating Gradient Leakage Attacks in Federated Learning

    摘要 联合学习(FL)是一个新兴的分布式机器学习框架,用于与客户网络(边缘设备)进行协作式模型训练.联合学习允许客户将其敏感数据保存在本地设备上,并且只与联合服务器共享本地训练参数更新,从而默认客户隐 ...

  5. 理解GBDT算法(三)——基于梯度的版本

     理解GBDT算法(三)--基于梯度的版本 标签: GBDT梯度残差代价函数回归树 2015-03-31 16:13 1395人阅读 评论(3) 收藏 举报 本文章已收录于: 分类: Machin ...

  6. 图形处理(四)基于梯度场的网格编辑-Siggraph 2004

    基于梯度场的网格编辑,对应的Paper为<Mesh Editing with Poisson-Based Gradient Field Manipulation>,是Siggraph 20 ...

  7. 【CV】CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

    作者 | Alan 授权转载自 | https://zhuanlan.zhihu.com/p/121721537 CVPR2020:Structure-Preserving Super Resolut ...

  8. 合流超几何函数_【CV】CVPR2020丨SPSR:基于梯度指导的结构保留超分辨率方法

    作者 | Alan 授权转载自 | https://zhuanlan.zhihu.com/p/121721537 CVPR2020:Structure-Preserving Super Resolut ...

  9. 吴恩达机器学习(十四)推荐系统(基于梯度下降的协同过滤算法)

    目录 0. 前言 1. 基于内容的推荐算法(Content-based recommendations) 2. 计算电影特征 3. 基于梯度下降的协同过滤算法(Collaborative filter ...

最新文章

  1. python使用matplotlib可视化线图(line plot)、并自定义设置可视化图像线条的类型(specify the line style of a plot in matplotlib)
  2. Django 流式响应中文csv样例
  3. java实践源码--哈弗曼树
  4. ESP32实验板linux环境中下载固件报错解决办法
  5. python—多线程之线程之间共享数据(Queue)
  6. 计算机与人脑_类脑计算机:一种新型的计算系统
  7. 学习react的心路历程(一)
  8. 计算机术语中英文对照表(流水线/微架构/体系结构/指令集)
  9. Android下Cocos2d创建HelloWorld工程
  10. [VSTO系列]二、简单的UI设计/QQ联系人导出(上)
  11. linux应用之Lamp(apache+mysql+php)的源码安装(centos)
  12. 使用GIT来管理代码的心得
  13. 华师计算机硕士考试科目,华中师范大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  14. 黑马程序员之《String Buffer,包装类》
  15. 微博粉丝精灵_微信全国500强、微博粉丝数省内领先……看快报这群年轻人如何运营一个个人气平台...
  16. python正则去空格_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解...
  17. 图形学常见概念与算法-纹理过滤
  18. android res文件夹下values对应最全的本地化语言
  19. Joint Discriminative and Generative Learning for Person Re-identification 论文翻译
  20. 哈理工 第五届程序设计大赛——B.沼跃鱼

热门文章

  1. pr001 简单的图片放大动画
  2. iphone手机和mac电脑隔空投送无法使用怎么处理?
  3. wps临时文件不自动删除_网易科技频道--小心!使用WPS Office的自动存盘会造成“泄密”!...
  4. 湖南大学python头歌实训-分支语句
  5. 电子材料器件原理(固态电子学)-非金属电导率-未完
  6. 采用移位运算编程实现P2口8位LED流水灯
  7. wps excel实现三级联动
  8. PS入门(1-3) 图像通道
  9. 让高育良和高小凤相识相爱的《万历十五年》
  10. 清华大学陈拓2019计算机,10月30日,陈拓(清华大学经管学院)