Moosavidezfooli S, Fawzi A, Fawzi O, et al. Universal Adversarial Perturbations[C]. computer vision and pattern recognition, 2017: 86-94.

@article{moosavidezfooli2017universal,

title={Universal Adversarial Perturbations},

author={Moosavidezfooli, Seyedmohsen and Fawzi, Alhussein and Fawzi, Omar and Frossard, Pascal},

pages={86--94},

year={2017}}

深度学习的脆弱以及周知了, 但是到底脆弱到何种程度, 本文作者发现, 可以找到一种对抗摄动, 令其作用在不同的数据上, 结果大部分都会被攻破(即被网络误判). 甚至, 这种对抗摄动可以跨越网络结构的障碍, 即在这个网络结构上的一般性的对抗摄动, 也能有效地攻击别的网络.

主要内容

一般地对抗样本, 是针对特定的网络\(\hat{k}\), 特定的样本\(x_i \in \mathbb{R}^d\), 期望找到摄动\(v_i \in \mathbb{R}^d\), 使得

\[v_i= \arg \min_r \|r\|_p \: \mathrm{s.t.} \: \hat{k}(x_i+r) \not = \hat{k}(x_i) .
\]

而本文的通用摄动(universal perturbations)是希望找到一个\(v, \|v\|_p \le \xi\), 且

\[\mathbb{P}_{x \sim \mu} (\hat{k}(x+v) \not = \hat{k}(x)) \ge 1-\delta,
\]

其中\(\mu\)为数据的分布.

算法

构造这样的\(v\)的算法如下:

其中

\[\mathcal{P}_{p, \xi} (v)= \arg \min_{v'} \|v'-v\|_2, \: \mathrm{s.t.} \|v'\|_p \le \xi,
\]

为向\(p\)范数球的投影.

实验部分

实验1

实验1, 在训练数据集(ILSVRC 2012)\(X\)上(摄动是在此数据上计算得到的), 以及在验证数据集上, 攻击不同的网络.

实验2

实验2测试这种通用摄动的网络结构的转移性, 即在一个网络上寻找摄动, 在其它模型上计算此摄动的攻击成功率. 可见, 这种通用摄动的可迁移性是很强的.

实验3

实验3, 研究了样本个数对攻击成功率的一个影响, 可以发现, 即便我们用来生成摄动的样本个数只有500(少于类别个数1000)都能有不错的成功率.

代码

代码因为还有用到了别的模块, 这放在这里看看, 论文有自己的代码.


import torch
import logging
from configs.adversarial.universal_attack_cfg import cfg sub_logger = logging.getLogger("__main__.__submodule__") class AttackUni: def __init__(self, net, device,
attack=cfg.attack, epsilon=cfg.epsilon, attack_cfg=cfg.attack_cfg,
max_iterations=cfg.max_iterations, fooling_rate=cfg.fooling_rate,
boxmin=0., boxmax=1.):
""" the attack to construct universal perturbation
:param net: the model
:param device: may use gpu to train
:param attack: default: PGDAttack
:param epsilon: the epsilon to constraint the perturbation
:param attack_cfg: the attack's config
:param max_iterations: max_iterations for stopping early
:param fooling_rate: the fooling rate we want
:param boxmin: default: 0
:param boxmax: default: 1
""" attack_cfg['net'] = net
attack_cfg['device'] = device
self.net = net
self.device = device
self.epsilon = epsilon
self.attack = attack(**attack_cfg)
self.max_iterations = max_iterations
self.fooling_rate = fooling_rate
self.boxmin = boxmin
self.boxmax = boxmax def initialize_perturbation(self):
self.perturbation = torch.tensor(0., device=self.device) def update_perturbation(self, perturbation):
self.perturbation += perturbation
self.perturbation = self.clip(self.perturbation).to(self.device) def clip(self, x):
return torch.clamp(x, -self.epsilon, self.epsilon) def compare(self, x, label):
x_adv = x + self.perturbation
out = self.net(x_adv)
pre = out.argmax(dim=1)
return (pre == label).sum() def attack_one(self, img):
result = self.attack.attack_batch(img+self.perturbation)
perturbation = result['perturbations'][0]
self.update_perturbation(perturbation) def attack_batch(self, dataloader):
total = len(dataloader)
self.initialize_perturbation()
for epoch in range(self.max_iterations):
count = 0
for img, label in dataloader:
img = img.to(self.device)
label = img.to(self.device)
if self.compare(img, label):
self.attack_one(img)
else:
count += 1
if count / total > self.fooling_rate:
break
sub_logger.info("[epoch: {0:<3d}] 'fooling_rate': {1:<.6f}".format(
epoch, count / total
))
return self.perturbation

Universal adversarial perturbations的更多相关文章

  1. Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

    目录 概 主要内容 算法 一些有趣的指标 鲁棒性定义 合格的抗干扰机制 Nicolas Papernot, Patrick McDaniel, Xi Wu, Somesh Jha, Ananthram ...

  2. 论文阅读 | Universal Adversarial Triggers for Attacking and Analyzing NLP

    [code] [blog] 主要思想和贡献 以前,NLP中的对抗攻击一般都是针对特定输入的,那么他们对任意的输入是否有效呢? 本文搜索通用的对抗性触发器:与输入无关的令牌序列,当连接到来自数据集的任何 ...

  3. (转) AdversarialNetsPapers

      本文转自:https://github.com/zhangqianhui/AdversarialNetsPapers AdversarialNetsPapers The classical Pap ...

  4. ICCV 2017论文分析(文本分析)标题词频分析 这算不算大数据 第一步:数据清洗(删除作者和无用的页码)

    IEEE International Conference on Computer Vision, ICCV 2017, Venice, Italy, October 22-29, 2017. IEE ...

  5. CVPR 2017 Paper list

    CVPR2017 paper list Machine Learning 1 Spotlight 1-1A Exclusivity-Consistency Regularized Multi-View ...

  6. (转)Awesome Knowledge Distillation

    Awesome Knowledge Distillation 2018-07-19 10:38:40  Reference:https://github.com/dkozlov/awesome-kno ...

  7. (转)Is attacking machine learning easier than defending it?

    转自:http://www.cleverhans.io/security/privacy/ml/2017/02/15/why-attacking-machine-learning-is-easier- ...

  8. [转]GAN论文集

    really-awesome-gan A list of papers and other resources on General Adversarial (Neural) Networks. Th ...

  9. zz姚班天才少年鬲融凭非凸优化研究成果获得斯隆研究奖

    姚班天才少年鬲融凭非凸优化研究成果获得斯隆研究奖 近日,美国艾尔弗·斯隆基金会(The Alfred P. Sloan Foundation)公布了2019年斯隆研究奖(Sloan Research ...

随机推荐

  1. C# 设计模式(1)——简单工厂模式、工厂模式、抽象工厂模式

    1.前言 上一篇写了设计模式原则有助于我们开发程序的时候能写出高质量的代码(牵一发而不动全身),这个系列还是做个笔记温习一下各种设计模式,下面就看看简单工厂模式.工厂模式.抽象工厂模式. 2.简单工厂 ...

  2. 零基础学习java------36---------xml,MyBatis,入门程序,CURD练习(#{}和${}区别,模糊查询,添加本地约束文件) 全局配置文件中常用属性 动态Sql(掌握)

    一. xml  1. 文档的声明 2. 文档的约束,规定了当前文件中有的标签(属性),并且规定了标签层级关系 其叫html文档而言,语法要求更严格,标签成对出现(不是的话会报错) 3. 作用:数据格式 ...

  3. 「译」 .NET 6 中 gRPC 的新功能

    gRPC是一个现代的.跨平台的.高性能的 RPC 框架.gRPC for .NET 构建在 ASP.NET Core 之上,是我们推荐的在 .NET 中构建 RPC 服务的方法. .NET 6 进一步 ...

  4. Js数组内对象去重

    let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name: "小李& ...

  5. HTTP初识

    HTTP(HyperText Transfer Protocol):超文本传输协议. URL(Uniform Resource Locator):统一资源定位符. URI(Uniform Resour ...

  6. 【STM32】使用SDIO进行SD卡读写,包含文件管理FatFs(终)-配合内存管理来遍历SD卡

    [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(一)-初步认识SD卡 [STM32]使用SDIO进行SD卡读写,包含文件管理FatFs(二)-了解SD总线,命令的相关介绍 [STM3 ...

  7. Can we access global variable if there is a local variable with same name?

    In C, we cannot access a global variable if we have a local variable with same name, but it is possi ...

  8. OC-私有方法,构造方法,类的本质及启动过程

    总结 标号 主题 内容 一 OC的私有方法 私有变量/私有方法 二 @property 概念/基本使用/寻找方法的过程/查找顺序 三 @synthesize @synthesize概念/基本使用/注意 ...

  9. Servlet(2):通过servletContext对象实现数据共享

    一,ServletContext介绍 web容器在启动时,它会为每一个web应用程序都创建一个ServletContext对象,它代表当前web应用 多个Servlet通过ServletContext ...

  10. ICCV2021 | 简单有效的长尾视觉识别新方案:蒸馏自监督(SSD)

    ​  前言  本文提出了一种概念上简单但特别有效的长尾视觉识别的多阶段训练方案,称为蒸馏自监督(Self Supervision to Distillation, SSD).在三个长尾识别基准:Ima ...