Su J, Vargas D V, Sakurai K, et al. One Pixel Attack for Fooling Deep Neural Networks[J]. IEEE Transactions on Evolutionary Computation, 2019, 23(5): 828-841.

@article{su2019one,

title={One Pixel Attack for Fooling Deep Neural Networks},

author={Su, Jiawei and Vargas, Danilo Vasconcellos and Sakurai, Kouichi},

journal={IEEE Transactions on Evolutionary Computation},

volume={23},

number={5},

pages={828--841},

year={2019}}

一般的adversarial attack 是针对所有像素, 但是这种情况下,



从人的角度来看, 是容易发现差别的(虽然不改变这依旧是船的本质). 所以本文研究了一种更为极端的情况, 只在少数几个像素点(甚至是one pixel)下进行扰动, 实验证明成功率也是可以的(且利用了Differential Evolution). 下图是one pixel attack 的一个例子:

主要内容

问题描述

一般的adversarial attack 期望最大化

\[\begin{array}{rc}
\max_{e(x)} & f_{adv}(x+e(x)) \\
\mathrm{s.t.} & \|e(x)\| \le L,
\end{array}
\]

其中\(e(x)\)为扰动.

本文的问题, 可以理解为一个特例

\[ \begin{array}{rc}
\max_{e(x)} & f_{adv}(x+e(x)) \\
\mathrm{s.t.} & \|e(x)\|_0 \le d,
\end{array}
\]

特别的, one pixel 下\(d=1\) .

实际上,这是一种trade-off, 如果我们不限制像素个数, 则需要限制其扰动大小, 若不限制扰动大小, 这需要限制其像素个数, 只有这样, 扰动后的图像在人眼中其本质不变.

Differential Evolution (DE)

这个算法整理于此here.

首先, 初始化\(P_G=\{\Theta_1,\ldots, \Theta_{NP}\}\)(文中给定\(NP=400\)),

\[\Theta=(x,y,r,g,b),
\]

\((x,y)\)表示图片像素点的位置, \((r,g,b)\)表示图片的RGB属性, 于是(mutation step)

\[\Theta_{i, G+1} = \Theta_{r_1^i,G} + F \cdot (\Theta_{r_2^i,G}- \Theta_{r_3^i,G}),
\]

文中给定\(F=0.5\), 且舍弃了crossover step.

注1: \(x, y\)是利用均匀分布初始化的, \(r,g,b\)使用高斯分布初始化的.

注2:既然\(x,y,r,g,b\)都是由一些特殊范围和限制的, 个人认为生成后的\(\Theta_{i,G+1}\)是需要一定的调整使得落入可行域内的.

实验

主要在CIFAR-10, 和 ImageNet 上做了实验, 有一些指标, 还做了和随机one pixel attack进行比较, 没有特别好讲的.

One Pixel Attack for Fooling Deep Neural Networks的更多相关文章

  1. 论文阅读笔记三十:One pixel attack for fooling deep neural networks(CVPR2017)

    论文源址:https://arxiv.org/abs/1710.08864 tensorflow代码: https://github.com/Hyperparticle/one-pixel-attac ...

  2. Classifying plankton with deep neural networks

    Classifying plankton with deep neural networks The National Data Science Bowl, a data science compet ...

  3. Must Know Tips/Tricks in Deep Neural Networks

    Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)   Deep Neural Networks, especially C ...

  4. Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)

    http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html Deep Neural Networks, especially Conv ...

  5. (转)Understanding, generalisation, and transfer learning in deep neural networks

    Understanding, generalisation, and transfer learning in deep neural networks FEBRUARY 27, 2017   Thi ...

  6. Training (deep) Neural Networks Part: 1

    Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...

  7. 为什么深度神经网络难以训练Why are deep neural networks hard to train?

    Imagine you're an engineer who has been asked to design a computer from scratch. One day you're work ...

  8. [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

    About this Course This course will teach you the "magic" of getting deep learning to work ...

  9. 大师Geoff Hinton关于Deep Neural Networks的建议

    大师Geoff Hinton关于Deep Neural Networks的建议 Note: This covers suggestions from Geoff Hinton's talk given ...

随机推荐

  1. 基于MQTT协议实现远程控制的"智能"车

    智能,但不完全智能 虽然我不觉得这玩意儿有啥智能的,但都这么叫就跟着叫喽. 时隔好几天才写的 其实在写这篇博文的时候我已经在做升级了,并且已经到了中后期阶段了. 主要是业余时间做着玩,看时间了. 规格 ...

  2. Node.js 概述

    JavaScript 标准参考教程(alpha) 草稿二:Node.js Node.js 概述 GitHub TOP Node.js 概述 来自<JavaScript 标准参考教程(alpha) ...

  3. 『学了就忘』Linux启动引导与修复 — 70、grub启动引导程序的配置文件说明

    目录 1.grub中分区的表示方法 2.grub的配置文件 3.grub的配置文件内容说明 (1)grub的整体设置 (2)CentOS系统的启动设置 1.grub中分区的表示方法 在说grub启动引 ...

  4. SpringIOC原理浅析

    1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...

  5. POST/GET请求中RequestBody和RequestParam的应用场景

    POST请求时 @RequestBody --> JSON字符串部分 @RequestParam --> 请求参数部分 application/json格局图   图一.png form- ...

  6. Linux后台启动服务

    systemctl 启动/关闭/启用/禁用服务 总结 启动服务 systemctl start test.service 关闭服务 systemctl stop test.service 重启服务 s ...

  7. my38_MySQL事务知识点零记

    从innodb中查看事务信息 show engine innodb status\G; ------------ TRANSACTIONS------------Trx id counter 3153 ...

  8. 为什么在集合中不能使用int关键字作为类型

    解释: 1.Int是基本数据类型,Integer是Int的引用类型,定义集合的时候不能使用基本数据类型,需要使用对应的引用类型 2.int是基本数据类型,Integer是他的包装类,包装类主要用在类型 ...

  9. mysqldump备份容灾脚本

    目录 一.备份脚本 环境需求 全量脚本 增量脚本 二.备份策略 三.容灾测试 准备 测试 误删除 一.备份脚本 环境需求 编辑/etc/my.cnf文件添加在[mysqld]版块下添加如下变量,添加后 ...

  10. Mysql-5.6 二进制多实例部署

    目录 一.简介 二.环境声明 三.程序部署 一.简介 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务 ...