文章目录

  • 代码

感受:该论文提出的攻击算法,在实验中特别费时间,每一次迭代需要循环N次(N为batch_size的大小),因此需要消耗大量的时间去生成对抗样本。此外,用该论文的方法与2022年几篇顶会论文对比。发现该算法在白盒以及黑盒上的攻击表现都稍微低于其他顶会的攻击算法。
相对于经典的IFGSM、MIFGSM算法 有显著的提高。此外,结合的多种数学知识。作者将三种方法分别是优化标准目标函数、注意力图和平滑决策面集成到论文方法 TAIG 中,作者研究了两种计算直线路径和随机分段线性路径上积分梯度的 TAIG。实验结果表明,论文中提出的方法生成了高迁移性的对抗样本,并且可以与以前的方法进行无缝协同工作,而且 TAIG 的性能优于现有的方法。

论文链接:

https://arxiv.org/abs/2205.13152

代码链接:

https://github.com/yihuang2016/TAIG

参考论文概述
https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/125288718

代码

#Transferable Adversarial Attack Based on Integrated Gradients (ICLR 2022) 该论文训练时间超级长
#TAIG-S 以及TAIG-R  后者表现最好
def compute_ig(inputs,label_inputs,model):steps = 20baseline = np.zeros(inputs.shape)scaled_inputs = [baseline + (float(i) / steps) * (inputs - baseline) for i inrange(0, steps + 1)]scaled_inputs = np.asarray(scaled_inputs)r_flag = True  # 等于False时 为TAIG-Sif r_flag==True:# This is an approximate calculation of TAIG-Rscaled_inputs = scaled_inputs + np.random.uniform(-epsilon,epsilon,scaled_inputs.shape)scaled_inputs = torch.from_numpy(scaled_inputs)scaled_inputs = scaled_inputs.cuda().float()#scaled_inputs=torch.float(scaled_inputs)scaled_inputs.requires_grad_(True)#loss = loss_fn(model(x_adv), y)#out = model(scaled_inputs)  #_, preds = torch.max(out.data, 1)#yp = Variable(preds.cuda())#loss = loss_fn(out, yp)att_out = model(scaled_inputs)score = att_out[:, label_inputs]loss = -torch.mean(score)model.zero_grad()loss.backward()grads = scaled_inputs.grad.dataavg_grads = torch.mean(grads, dim=0)delta_X = scaled_inputs[-1] - scaled_inputs[0]integrated_grad = delta_X * avg_gradsIG = integrated_grad.cpu().detach().numpy()del integrated_grad,delta_X,avg_grads,grads,loss, att_out ,scorereturn IGdef IG(model, x, y, loss_fn,feature_layer, epsilon=epsilon, alpha=alpha, num_iter=20):#TAIG-R x_adv = x# write a loop of num_iter to represent the iterative timesfor i in range(num_iter):# x_adv = fgsm(model, x_adv, y, loss_fn, alpha) # call fgsm with (epsilon = alpha) to obtain new x_advx_adv = x_adv.detach().clone()x_adv.requires_grad = Truesteps = 20igs = []for im_i in range(list(x_adv.shape)[0]):inputs = x_adv[im_i].cpu().detach().numpy()label_inputs = y[im_i]integrated_grad = compute_ig(inputs, label_inputs, model)igs.append(integrated_grad)igs = np.array(igs)model.zero_grad()grad=torch.from_numpy(igs)grad=grad.cuda()x_adv = x_adv + alpha * grad.sign()delta = torch.clamp(x_adv - x, min=-epsilon, max=epsilon)x_adv = torch.clamp(x + delta, min=0, max=1).detach()return x_advdef IG_MI(model, x, y, loss_fn,feature_layer, epsilon=epsilon, alpha=alpha, num_iter=20,decay=1.0):#TAIG-R-MI x_adv = xmomentum = torch.zeros_like(x).detach().cuda()# write a loop of num_iter to represent the iterative timesfor i in range(num_iter):# x_adv = fgsm(model, x_adv, y, loss_fn, alpha) # call fgsm with (epsilon = alpha) to obtain new x_advx_adv = x_adv.detach().clone()x_adv.requires_grad = Truesteps = 20igs = []for im_i in range(list(x_adv.shape)[0]):inputs = x_adv[im_i].cpu().detach().numpy()label_inputs = y[im_i]integrated_grad = compute_ig(inputs, label_inputs, model)igs.append(integrated_grad)igs = np.array(igs)model.zero_grad()grad=torch.from_numpy(igs)grad=grad.cuda()grad = decay * momentum +  grad / (grad.abs().sum() + 1e-8)       momentum = gradx_adv = x_adv + alpha * grad.sign()delta = torch.clamp(x_adv - x, min=-epsilon, max=epsilon)x_adv = torch.clamp(x + delta, min=0, max=1).detach()return x_ad

对抗样本:ICLR 2022 基于积分梯度的对抗攻击(可迁移的黑盒攻击)Transferable Attack based on Integrated Gradients (TAIG)相关推荐

  1. ​ICLR 2022 | 基于积分梯度的迁移对抗攻击

    ©PaperWeekly 原创 · 作者 | 鬼谷子 引言 该论文是关于黑盒对抗攻击的工作.论文中作者提出了一种基于积分梯度的可迁移性攻击算法(TAIG),该算法可以生成高可迁移性的对抗样本.作者将三 ...

  2. ICLR2022:基于积分梯度的迁移对抗攻击

    1 引言  该论文是关于黑盒对抗攻击的工作.论文中作者提出了一种基于积分梯度的可迁移性攻击算法(TAIG),该算法可以生成高可迁移性的对抗样本.作者将三种方法分别是优化标准目标函数.注意力图和平滑决策 ...

  3. ICLR 2022 | 基于对抗自注意力机制的预训练语言模型

    ©作者 | 曾伟豪 单位 | 北京邮电大学 研究方向 | 对话摘要生成 论文名称: Adversarial Self-Attention For Language Understanding 论文来源 ...

  4. 你真的懂对抗样本吗?一文重新思考对抗样本背后的含义

    作者:Alex Adam 机器之心编译 参与:Luo Sainan.一鸣 很多人都大概了解对抗样本是什么:在数据中加入人眼不可察觉的扰动,使得模型对数据的标签预测发生混淆和错误.但是,这句话背后的技术 ...

  5. ICLR 2022 | 基于扩散模型(DDPM)的语义分割

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 转载自:咚咚学AI 论文标题:LABEL-EFFICIENT SE ...

  6. 顶刊TIP 2022!阿里提出:从分布视角出发理解和提升对抗样本的迁移性

    关注公众号,发现CV技术之美 阿里巴巴 AAIG 与浙江大学团队在对抗迁移攻击问题中,通过引入数据分布的视角出发,利用 score matching 对替代的判别式模型与数据分布进行对齐,从而在提到模 ...

  7. AdvFlow:一种基于标准化流的黑盒攻击新方法,产生更难被发觉的对抗样本 | NeurIPS‘20

    本文提出一种新的黑盒对抗攻击方法AdvFlow,通过利用标准化流来建模对抗样本的数据分布,使得生成的对抗样本的分布和正常样本接近,从而让对抗样本更难被检测出来,打破了对抗样本和正常样本的分布大不相同的 ...

  8. LNG:首个基于图的对抗样本检测方法

    关注公众号,发现CV技术之美 Adversarial Example Detection Using Latent Neighborhood Graph 论文链接:  https://openacce ...

  9. 论文盘点:GAN生成对抗样本的方法解析

    ©PaperWeekly 原创 · 作者|孙裕道 学校|北京邮电大学博士生 研究方向|GAN图像生成.情绪对抗样本生成 引言 对抗样本的生成方式很多.一般情况下会分成三大类,第一种是基于梯度的生成方式 ...

最新文章

  1. android常用命令
  2. [Snipaste]系统截图工具
  3. Elastic-Job任务类
  4. HDU 6071 Lazy Running(同余最短路的应用)
  5. flex学习网站大全(转)
  6. 【Elasticsearch】腾讯Elasticsearch海量规模背后的内核优化剖析
  7. [ubuntu 16.04]如何在新建的Anaconda环境中打开jupyter notebook
  8. 2010-6-15 Linux 学习笔记
  9. 170925_Spring Cloud 微服务实战(翟永超著) 读书笔记(二)_什么是Spring Cloud Eureka?
  10. C语言学习-翁凯(第三章笔记)
  11. 读《线上幽灵:世界头号黑客米特尼克自传》 有感
  12. 几种颜色空间(RGB,YUV,YIQ,HSI)的基本概念及转换
  13. 西安交大计算机814大纲,西安交大考研辅导班:西安交通大学2020年809电子技术基础考研科目参考书目及考试大纲...
  14. python指纹识别_python之图片指纹(唯一性的)
  15. 为你的个人博客添加访客地图
  16. python爬取携程酒店评论_python爬取携程酒店列表
  17. ADODB.Recordset 错误 '800a0bb9' 参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
  18. Golang源码探究 —— 网络轮询器netpoller
  19. 【Android应用】 苏州实时公交
  20. DL深度学习部分成果展示

热门文章

  1. gather torch_torch.gather()的理解
  2. 实验一计算机组成原理,计算机组成原理 实验一
  3. 已收藏!厦门铃盛面试java
  4. Qt发布程序(windows平台)
  5. 数据库mysql调优
  6. 学习笔记之高斯过程回归(含代码):连续无限空间上建模的超级武器
  7. angular项目中的增删改功能
  8. linux命令查看tcp连接,查看linux系统中的TCP连接
  9. unicode什么意思中文_Unicode是什么???
  10. atlas 不稳定 mysql_连接确实很不稳定 · Issue #50 · Qihoo360/Atlas · GitHub