Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples
@article{athalye2018obfuscated,
title={Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples},
author={Athalye, Anish and Carlini, Nicholas and Wagner, David},
journal={arXiv: Learning},
year={2018}}
概
由于有很多defense方法都是基于破坏梯度(不能有效计算梯度, 梯度爆炸, 消失), 但是作者提出一种算法能够攻破这一类方法, 并提议以后的defense方法不要以破坏梯度为前提.
主要内容
\(f(\cdot)\): 模型;
\(f(x)_i\): 样本\(x\)为类别\(i\)的概率;
\(f^j(\cdot)\): 第\(j\)层;
\(f^{1..j}(\cdot)\): 第\(1\)到\(j\)层;
\(c(x)\): \(\arg \max_i f(x)_i\);
\(c^*(x)\): 真实标签.
Obfuscated Gradients
- Shattered Gradients: 一些不可微的defense, 或者一些令导数不存在的defense造成;
- Stochastic Gradients: 一些随机化的defense造成;
- Exploding & Vanishing Gradients: 通常由一些包括多次评估的defense造成.
BPDA
特例
有很多方法, 会构建一个不可微(或者其导数"不好用")的函数\(g\), 然后用模型\(f(g(x))\)替代\(f(x)\), 从而防御一些基于梯度的攻击方法, 而且这类方法往往要求\(g(x) \approx x\).
这类防御方法, 可以很简单地用
\]
替代, 从而被攻破(如果我们把\(g(x)\)视为模型的第1层, 那我们实际上就是攻击第二层).
一般情形
假设\(f^i(x)\)(即第i层)是不可微, 或者导数“不好用", 则我们首先构造一个可微函数\(g(x)\), 使得\(g(x) \approx f^i(x)\), 在反向传递导数的时候(注意只在反向用到\(g\)), 用\(\nabla_x g\)替代\(\nabla f^i(x)\).
注: 作者说在前向也用\(g(x)\)是低效的.
EOT
这类方法使用于攻破那些随机化的defense的, 这类方法往往会从一个变换集合\(T\)中采样\(t\), 并建立模型\(f(t(x))\), 如果单纯用\(\nabla f(t(x))\) 来攻击效果不好, 可以转而用\(\nabla \mathbb{E}_{t \sim T} f(t(x)) = \mathbb{E}_{t \sim T} \nabla f(t(x))\)替代.
Reparameterization
重参用于针对梯度爆炸或者消失的情况, 因为这种情况往往出现于\(f(g(x))\), 而\(g(x)\)是对\(x\)的一个多次评估(所以\(f(g(x))\)可以理解为一个很深的网络).
策略是利用构建\(x=h(z)\), 并且满足\(g(h(z))=h(z)\) (咋看起来很奇怪, 看了下面的DefenseGAN就明白了).
利用\(f(h(z))\), 我们找到对应的对抗样本\(h(z_{adv})\).
具体的案例
Thermometer encoding
这里的\(\tau\)是针对样本每一个元素\(x_{i,j,c}\)的, \(\tau:x_{i,j,c} \rightarrow \mathbb{R}^l\):
\left \{
\begin{array}{ll}
1 & x_{i,j,c}>k/l \\
0 & else.
\end{array} \right.
\]
只需令
\]
Input transformations
包括:
image cropping, rescaling, bit-depth reduction, JPEG compression, image quilting
既包括随机化又包括了不可微, 所以既要用EPDA, 也要用EOT.
LID
LID能够防御
\]
的攻击的主要原因是由于该函数陷入了局部最优. 因为LID高的样本不都是对抗样本, 也有很多普通样本.
忽视LID, 用原始的L2attack就能够有效攻破LID.
Stochastic Activation Pruning
SAP实际上是dropout的一个变种, SAP会随机将某层的\(f^i\)的某些元素突变为0(其概率正比于元素的绝对值大小).
这个方法可以用EOT攻破, 即用\(\sum_{i=1}^k \nabla_xf(x)\)来代替\(\nabla_x f(x)\).
Mitigating through randomization
这个方法的输入是\(229\times 229\)的图片, 他会被随机变换到\(r\times r\)大小, \(r\in[229, 331)\), 并随机补零使得其大小为\(331\times 331\).
同样, 用EOT可以攻破.
PixelDefend
pass
DenfenseGAN
对于每一个样本, 首先初始化\(R\)个随机种子\(z_0^{(1)}, \ldots, z_0^{(R)}\), 对每一个种子, 利用梯度下降(\(L\)步)以求最小化
\min \quad \|G(z)-x\|_2^2,
\]
其中\(G(z)\)为利用训练样本训练的生成器.
得到\(R\)个点\(z_*^{(1)},\ldots, z_*^{(R)}\), 设使得(DGAN)最小的为\(z^*\), 以及\(\hat{x} = G(z^*)\), 则\(\hat{x}\)就是我们要的, 样本\(x\)在普通样本数据中的投影. 将\(\hat{x}\)喂入网络, 判断其类别.

这个方法, 利用梯度方法更新的难处在于, \(x \rightarrow \hat{x}\)这一过程, 包含了\(L\)步的内循环, 如果直接反向传梯度会造成梯度爆炸或者消失.
所以攻击的策略是:
\]
找到\(z_{adv}\), 于是\(x_{adv}=G(z_{adv})\).
注意, 通过这个式子能找到对抗样本说明, 由训练样本训练生成器, 生成器的分布\(p_G\), 实际上并不能能够撇去对抗样本.
Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples的更多相关文章
- ICML 2019论文录取Top100:谷歌霸榜
[导读]人工智能顶级会议ICML 2019发布了今年论文录取结果.提交的3424篇论文中,录取了774篇,录取率为22.6%,较去年有所降低.从录取论文数量来看,谷歌成为今年最大赢家,紧随其后的是MI ...
- Configuring Apache Kafka Security
This topic describes additional steps you can take to ensure the safety and integrity of your data s ...
- 每日英语:Apple's Latest iPhone Puts Focus Back on Fingerprint Security
Apple's latest product launch could breathe new life into a technology that failed to take hold the ...
- metasploit-post模块信息
Name Disclosure Date Rank Description ---- ...
- What does it mean for an algorithm to be fair
What does it mean for an algorithm to be fair In 2014 the White House commissioned a 90-day study th ...
- Visual Studio TFS Branching and Merging Guidance
Origin URL:https://msdn.microsoft.com/en-us/magazine/gg598921.aspx Bill Heys and Willy-Peter Schaub ...
- Chronic sleep loss cannot be cured that easily
Chronic sleep loss cannot be cured that easily Sleeping in on Saturday after a few weeks of too litt ...
- 使用机器学习检测TLS 恶意加密流——业界调研***有开源的数据集,包括恶意证书的,以及恶意tls pcap报文***
2018 年的文章, Using deep neural networks to hunt malicious TLS certificates from:https://techxplore.com ...
- 每日英语:A Buying Guide to Air-Pollution Masks
Blue skies were finally visible in the capital on Thursday after the region suffered fromseven strai ...
随机推荐
- LeetCode缺失的第一个正数
LeetCode 缺失的第一个正数 题目描述 给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数. 进阶:你可以实现时间复杂度为 O(n)并且只使用常数级别额外空间的解决方案吗? ...
- 基于 vue-cli 的 lib-flexible 适配
基于 vue-cli3.0 的 lib-flexible 适配方案 第一步:下载安装相关依赖 第二步:创建 vue.config.js 文件并配置 第三步:在 main.js 中引入 lib-flex ...
- Java——数组的定义与使用
数组的定义与使用 1.数组的基本概念 (1)数组的动态初始化: 数组首先先开辟内存空间,而后再使用索引进行内容的设置,这种定义数组的方式称为动态初始化 数组是引用数据类型,存在有内存分配问题.在使用前 ...
- Plist文件和字典转模型
模型与字典 1. 用模型取代字典的好处 使用字典的坏处 编译器没有自动提醒的功能,需要手敲 key如果写错了编译器也不会报错 2. 模型概念 概念 专门用来存放数据的对象 特点 一般继承自NSObje ...
- Nginx 1.9.7.2 + PHP 5.6.18(FastCGI)在CentOS Linux下的编译安装
本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.x 64位操作系统下实践 ...
- 使用 OPC Browser 加载 OPC Server 监测点
1,首先第一步,要连接OPC ,创建好 OPC对象. /// <summary> /// 连接OPC /// </summary> private string OPCIP=1 ...
- Android 内存泄漏检测工具 LeakCanary(Kotlin版)的实现原理
LeakCanary 是一个简单方便的内存泄漏检测框架,做 android 的同学基本都收到过 LeakCanary 检测出来的内存泄漏.目前 LeakCanary 最新版本为 2.7 版本,并且采用 ...
- uni-app使用腾讯地图注意点
地图map组件使用腾讯地图自定义样式: 1:在使用地图map组件腾讯地图时,获取本地定位,经纬度转地址与地址转经纬度解析时,小程序可以直接使用.但是h5版本会报跨域问题,目前前端没有找到更好的解决方法 ...
- 【划重点】Python matplotlib绘图建立画布和坐标系
一.建立画布 import matplotlib.pyplot as plt import numpy as np x=np.arange(8) y=np.arange(8) print(x,y) # ...
- [BUUCTF]PWN18——bjdctf_2020_babystack
[BUUCTF]PWN18--bjdctf_2020_babystack 附件 步骤: 例行检查,64位,开启了nx保护 试运行一下程序 大概了解程序的执行过程后用64位ida打开,shift+f12 ...