文章目录
@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
(
⋅
)
f(\cdot)
f(⋅): 模型;
f
(
x
)
i
f(x)_i
f(x)i: 样本
x
x
x为类别
i
i
i的概率;
f
j
(
⋅
)
f^j(\cdot)
fj(⋅): 第
j
j
j层;
f
1..
j
(
⋅
)
f^{1..j}(\cdot)
f1..j(⋅): 第
1
1
1到
j
j
j层;
c
(
x
)
c(x)
c(x):
arg
max
i
f
(
x
)
i
\arg \max_i f(x)_i
argmaxif(x)i;
c
∗
(
x
)
c^*(x)
c∗(x): 真实标签.
Obfuscated Gradients
- Shattered Gradients: 一些不可微的defense, 或者一些令导数不存在的defense造成;
- Stochastic Gradients: 一些随机化的defense造成;
- Exploding & Vanishing Gradients: 通常由一些包括多次评估的defense造成.
BPDA
特例
有很多方法, 会构建一个不可微(或者其导数"不好用")的函数 g g g, 然后用模型 f ( g ( x ) ) f(g(x)) f(g(x))替代 f ( x ) f(x) f(x), 从而防御一些基于梯度的攻击方法, 而且这类方法往往要求 g ( x ) ≈ x g(x) \approx x g(x)≈x.
这类防御方法, 可以很简单地用
∇
x
f
(
g
(
x
)
)
∣
x
=
x
^
←
∇
x
f
(
x
)
∣
x
=
g
(
x
^
)
,
\nabla_x f(g(x))|_{x=\hat{x}} \leftarrow \nabla_x f(x)|_{x=g(\hat{x})},
∇xf(g(x))∣x=x^←∇xf(x)∣x=g(x^),
替代, 从而被攻破(如果我们把
g
(
x
)
g(x)
g(x)视为模型的第1层, 那我们实际上就是攻击第二层).
一般情形
假设 f i ( x ) f^i(x) fi(x)(即第i层)是不可微, 或者导数“不好用", 则我们首先构造一个可微函数 g ( x ) g(x) g(x), 使得 g ( x ) ≈ f i ( x ) g(x) \approx f^i(x) g(x)≈fi(x), 在反向传递导数的时候(注意只在反向用到 g g g), 用 ∇ x g \nabla_x g ∇xg替代 ∇ f i ( x ) \nabla f^i(x) ∇fi(x).
注: 作者说在前向也用 g ( x ) g(x) g(x)是低效的.
EOT
这类方法使用于攻破那些随机化的defense的, 这类方法往往会从一个变换集合 T T T中采样 t t t, 并建立模型 f ( t ( x ) ) f(t(x)) f(t(x)), 如果单纯用 ∇ f ( t ( x ) ) \nabla f(t(x)) ∇f(t(x)) 来攻击效果不好, 可以转而用 ∇ E t ∼ T f ( t ( x ) ) = E t ∼ T ∇ f ( t ( x ) ) \nabla \mathbb{E}_{t \sim T} f(t(x)) = \mathbb{E}_{t \sim T} \nabla f(t(x)) ∇Et∼Tf(t(x))=Et∼T∇f(t(x))替代.
Reparameterization
重参用于针对梯度爆炸或者消失的情况, 因为这种情况往往出现于 f ( g ( x ) ) f(g(x)) f(g(x)), 而 g ( x ) g(x) g(x)是对 x x x的一个多次评估(所以 f ( g ( x ) ) f(g(x)) f(g(x))可以理解为一个很深的网络).
策略是利用构建 x = h ( z ) x=h(z) x=h(z), 并且满足 g ( h ( z ) ) = h ( z ) g(h(z))=h(z) g(h(z))=h(z) (咋看起来很奇怪, 看了下面的DefenseGAN就明白了).
利用 f ( h ( z ) ) f(h(z)) f(h(z)), 我们找到对应的对抗样本 h ( z a d v ) h(z_{adv}) h(zadv).
具体的案例
Thermometer encoding
这里的
τ
\tau
τ是针对样本每一个元素
x
i
,
j
,
c
x_{i,j,c}
xi,j,c的,
τ
:
x
i
,
j
,
c
→
R
l
\tau:x_{i,j,c} \rightarrow \mathbb{R}^l
τ:xi,j,c→Rl:
τ
(
x
i
,
j
,
c
)
k
=
{
1
x
i
,
j
,
c
>
k
/
l
0
e
l
s
e
.
\tau(x_{i, j, c})_k= \left \{ \begin{array}{ll} 1 & x_{i,j,c}>k/l \\ 0 & else. \end{array} \right.
τ(xi,j,c)k={10xi,j,c>k/lelse.
只需令
g
(
x
i
,
j
,
c
)
k
=
min
(
max
(
x
i
,
j
,
c
−
k
/
l
,
0
)
,
1
)
.
g(x_{i,j,c})_k= \min (\max (x_{i, j, c} - k/l, 0),1).
g(xi,j,c)k=min(max(xi,j,c−k/l,0),1).
Input transformations
包括:
image cropping, rescaling, bit-depth reduction, JPEG compression, image quilting
既包括随机化又包括了不可微, 所以既要用EPDA, 也要用EOT.
LID
LID能够防御
min
∥
x
−
x
′
∥
2
2
+
α
(
ℓ
(
x
′
)
+
L
I
D
l
o
s
s
(
x
′
)
)
,
\min \quad \| x-x'\|_2^2 + \alpha(\ell(x')+\mathrm{LID_{loss}} (x')),
min∥x−x′∥22+α(ℓ(x′)+LIDloss(x′)),
的攻击的主要原因是由于该函数陷入了局部最优. 因为LID高的样本不都是对抗样本, 也有很多普通样本.
忽视LID, 用原始的L2attack就能够有效攻破LID.
Stochastic Activation Pruning
SAP实际上是dropout的一个变种, SAP会随机将某层的 f i f^i fi的某些元素突变为0(其概率正比于元素的绝对值大小).
这个方法可以用EOT攻破, 即用 ∑ i = 1 k ∇ x f ( x ) \sum_{i=1}^k \nabla_xf(x) ∑i=1k∇xf(x)来代替 ∇ x f ( x ) \nabla_x f(x) ∇xf(x).
Mitigating through randomization
这个方法的输入是 229 × 229 229\times 229 229×229的图片, 他会被随机变换到 r × r r\times r r×r大小, r ∈ [ 229 , 331 ) r\in[229, 331) r∈[229,331), 并随机补零使得其大小为 331 × 331 331\times 331 331×331.
同样, 用EOT可以攻破.
PixelDefend
pass
DenfenseGAN
对于每一个样本, 首先初始化
R
R
R个随机种子
z
0
(
1
)
,
…
,
z
0
(
R
)
z_0^{(1)}, \ldots, z_0^{(R)}
z0(1),…,z0(R), 对每一个种子, 利用梯度下降(
L
L
L步)以求最小化
min
∥
G
(
z
)
−
x
∥
2
2
,
(DGAN)
\tag{DGAN} \min \quad \|G(z)-x\|_2^2,
min∥G(z)−x∥22,(DGAN)
其中
G
(
z
)
G(z)
G(z)为利用训练样本训练的生成器.
得到
R
R
R个点
z
∗
(
1
)
,
…
,
z
∗
(
R
)
z_*^{(1)},\ldots, z_*^{(R)}
z∗(1),…,z∗(R), 设使得(DGAN)最小的为
z
∗
z^*
z∗, 以及
x
^
=
G
(
z
∗
)
\hat{x} = G(z^*)
x^=G(z∗), 则
x
^
\hat{x}
x^就是我们要的, 样本
x
x
x在普通样本数据中的投影. 将
x
^
\hat{x}
x^喂入网络, 判断其类别.
这个方法, 利用梯度方法更新的难处在于, x → x ^ x \rightarrow \hat{x} x→x^这一过程, 包含了 L L L步的内循环, 如果直接反向传梯度会造成梯度爆炸或者消失.
所以攻击的策略是:
min
∥
G
(
z
)
−
x
∥
2
2
+
c
⋅
ℓ
(
G
(
z
)
)
\min \quad \|G(z)-x\|_2^2 + c \cdot \ell (G(z))
min∥G(z)−x∥22+c⋅ℓ(G(z))
找到
z
a
d
v
z_{adv}
zadv, 于是
x
a
d
v
=
G
(
z
a
d
v
)
x_{adv}=G(z_{adv})
xadv=G(zadv).
注意, 通过这个式子能找到对抗样本说明, 由训练样本训练生成器, 生成器的分布 p G p_G pG, 实际上并不能能够撇去对抗样本.