Nicholas Carlini, David Wagner, Towards Evaluating the Robustness of Neural Networks
概
提出了在不同范数下 ℓ 0 , ℓ 2 , ℓ ∞ \ell_0, \ell_2, \ell_{\infty} ℓ0,ℓ2,ℓ∞下生成adversarial samples的方法, 实验证明此类方法很有效.
主要内容
基本的概念
本文主要针对多分类问题, 假设神经网络 F : x ∈ R n → y ∈ R m F:x \in \mathbb{R}^n \rightarrow y \in \mathbb{R}^m F:x∈Rn→y∈Rm, 其网络参数为 θ \theta θ.
假设:
F
(
x
)
=
s
o
f
t
m
a
x
(
Z
(
x
)
)
=
y
,
F(x)=\mathrm{softmax}(Z(x))=y,
F(x)=softmax(Z(x))=y,
其中
s
o
f
t
m
a
x
(
x
)
i
=
e
x
i
∑
j
e
x
j
\mathrm{softmax}(x)_i=\frac{e^{x_i}}{\sum_j e^{x_j}}
softmax(x)i=∑jexjexi.
C
(
x
)
=
arg
max
i
F
(
x
)
i
,
C(x) = \arg \max_i F(x)_i,
C(x)=argimaxF(x)i,
为
x
x
x的预测类, 不妨设
C
∗
(
x
)
C^*(x)
C∗(x)为其真实的类别.
Adversarial samples 的目标就是构建一个与 x x x相差无几的 x ′ x' x′( ∥ x − x ′ ∥ \|x-x'\| ∥x−x′∥足够小),但是 C ( x ′ ) ≠ C ∗ ( x ) C(x')\not =C^*(x) C(x′)=C∗(x). 很多构建Adversarial samples可以指定类别:
- Average Case: 在不正确的标签中随机选取类别;
- Best Case: 对所有不正确的标签生成Adversariak samples, 并选择最容易成功(即骗过网络)的类别;
- Worst Case:对所有不正确的标签生成Adversariak samples, 并选择最不容易成功的类别.
文章中介绍了不少现有的方法, 这里不多赘述.
目标函数
一般可以通过如下问题求解
x
′
=
x
+
δ
x'=x+\delta
x′=x+δ:
min
D
(
x
,
x
+
δ
)
s
.
t
.
C
(
x
+
δ
)
=
t
x
+
δ
∈
[
0
,
1
]
n
,
\begin{array}{ll} \min & \mathcal{D}(x, x+\delta) \\ \mathrm{s.t.} & C(x+\delta)=t \\ & x + \delta \in [0, 1]^n, \end{array}
mins.t.D(x,x+δ)C(x+δ)=tx+δ∈[0,1]n,
其中
D
\mathcal{D}
D衡量
x
,
x
+
δ
x,x+\delta
x,x+δ之间的距离, 常常为
ℓ
0
,
ℓ
2
,
ℓ
∞
\ell_0, \ell_2, \ell_{\infty}
ℓ0,ℓ2,ℓ∞.
但是
C
(
x
+
δ
)
=
t
C(x+\delta)=t
C(x+δ)=t这个条件离散, 这个问题很难直接求解, 作者给出的思路是构造一些函数
f
(
x
,
t
)
f(x,t)
f(x,t), 使得当且仅当
f
(
x
,
t
)
≤
0
f(x,t)\le0
f(x,t)≤0的时候此条件满足.
则问题转换为:
min
D
(
x
,
x
+
δ
)
s
.
t
.
f
(
x
,
t
)
≤
0
x
+
δ
∈
[
0
,
1
]
n
,
\begin{array}{ll} \min & \mathcal{D}(x, x+\delta) \\ \mathrm{s.t.} & f(x,t) \le 0 \\ & x + \delta \in [0, 1]^n, \end{array}
mins.t.D(x,x+δ)f(x,t)≤0x+δ∈[0,1]n,
进一步
min
D
(
x
,
x
+
δ
)
+
c
f
(
x
,
t
)
s
.
t
.
x
+
δ
∈
[
0
,
1
]
n
.
\begin{array}{ll} \min & \mathcal{D}(x, x+\delta) + cf(x,t) \\ \mathrm{s.t.} & x + \delta \in [0, 1]^n. \end{array}
mins.t.D(x,x+δ)+cf(x,t)x+δ∈[0,1]n.
作者给出了7种符合此类条件的函数(作者尤为推荐第6种):
如何选择c
binary search
如何应对Box约束
图片的元素需要满足 0 ≤ x i ≤ 1 0\le x_i \le 1 0≤xi≤1, 如何满足此约束:
- 简单粗暴地对其裁剪, 大于1的为1, 小于0的为0, 但是这种方法在梯度下降方法比较复杂(如带momentum)的时候效果可能不会太好(既然momemtum要记录变量改变的方向, 而我们又擅自对此方向进行更改);
- 用 f ( min ( max ( x + δ , 0 ) , 1 ) f(\min (\max(x+\delta,0),1) f(min(max(x+δ,0),1)替代 f ( x + δ ) f(x+\delta) f(x+δ), 我的理解是, 每次不改变原变量 x ′ x' x′, 然后把clip后的 x ′ x' x′喂给 f f f. 作者说此类方法容易方法在次优解间来回振荡的现象;
- 定义
δ i = 1 2 ( tanh ( w i ) + 1 ) − x i , \delta_i = \frac{1}{2}(\tanh (w_i) +1)-x_i, δi=21(tanh(wi)+1)−xi,
于是我们只需优化 w i w_i wi, 且保证 x i + δ i ∈ [ 0 , 1 ] x_i + \delta_i \in [0, 1] xi+δi∈[0,1].
L 2 L_2 L2 attack
min
∥
1
2
(
tanh
(
w
)
+
1
)
−
x
∥
2
2
+
c
⋅
f
(
1
2
(
tanh
(
w
)
+
1
)
,
t
)
,
\min \quad \|\frac{1}{2}(\tanh(w)+1)-x\|_2^2+c\cdot f(\frac{1}{2}(\tanh(w)+1), t),
min∥21(tanh(w)+1)−x∥22+c⋅f(21(tanh(w)+1),t),
其中
f
(
x
′
,
t
)
=
max
(
max
{
Z
(
x
′
)
i
:
i
≠
t
}
−
Z
(
x
′
)
t
,
−
κ
)
,
f(x',t)=\max(\max \{Z(x')_i:i \not =t\}-Z(x')_t, -\kappa),
f(x′,t)=max(max{Z(x′)i:i=t}−Z(x′)t,−κ),
是对第6种方法的一个小改进, 其中
κ
\kappa
κ反应了我们对误判发生的信心.
L 0 L_0 L0 attack
因为 L 0 L_0 L0范数不可微, 所以每一次, 我们先利用 L 2 L_2 L2 attack来寻找合适的 δ \delta δ, 令 g = ∇ f ( x + δ ) g=\nabla f(x+\delta) g=∇f(x+δ), 根据 g i δ i g_i \delta_i giδi判断每个像素点的重要性, 最不重要的我们删去(根据文中的意思是永久删去).
- Input: x , c x, c x,c
- I = ∅ I=\empty I=∅
- Do …:
- 计算在 L 2 L_2 L2下的解 x + δ x+\delta x+δ(倘若在 c c c下找不到, 则在 2 c 2c 2c条件下找(嵌套));
- g = ∇ f ( x + δ ) g=\nabla f(x+\delta) g=∇f(x+δ);
- i = arg min i g i ⋅ δ i , i ∉ I i=\arg \min_i g_i \cdot \delta_i, i \not \in I i=argminigi⋅δi,i∈I, 然后 I = I ∪ { i } I=I \cup \{i\} I=I∪{i};
在利用 L 2 L_2 L2寻找 δ \delta δ的过程中, 若失败, 令 c = 2 c c=2c c=2c并重复进行, 直到其成功或者超过了最大的迭代次数.
L ∞ L_{\infty} L∞ attack
∥
δ
∥
∞
\|\delta\|_{\infty}
∥δ∥∞作为惩罚项(?)只会针对个别元素, 这在实际实验的时候并不友好, 往往会出现振荡, 于是作者想了一种替代
min
c
⋅
f
(
x
+
δ
)
+
∑
i
[
(
δ
i
−
τ
)
+
]
,
\min \quad c \cdot f( x+ \delta) + \sum_i [(\delta_i-\tau)^+],
minc⋅f(x+δ)+i∑[(δi−τ)+],
这样我们就把可以关注部分突出而非个别.