2022-06-21
Evading Adversarial Example Detection Defenses with Orthogonal Projected Gradient Descent
符号系统定义
分类模型
f
:
R
d
→
R
n
f:\mathbb{R}^d \to \mathbb{R}^n
f:Rd→Rn ,输入
x
∈
R
d
x\in \mathbb{R}^d
x∈Rd,输出
f
(
x
)
∈
R
n
f(x)\in \mathbb{R}^n
f(x)∈Rn.
检测约束:
g
:
R
d
→
R
g:\mathbb{R}^d \to \mathbb{R}
g:Rd→R,
g
(
x
)
<
0
g(x) < 0
g(x)<0 满足条件,
g
(
x
)
>
0
g(x) > 0
g(x)>0 不满足条件.
真实标签:
c
(
x
)
=
y
c(x)=y
c(x)=y.
损失函数:
L
\mathcal{L}
L.
嵌入向量:
e
(
x
)
e(x)
e(x) 表示输入
x
x
x 在
f
f
f 的中间层上的嵌入。除非另有指定,否则
e
e
e返回紧邻 softmax 激活之前的 logit 向量.
使用投影梯度法生成对抗样本
梯度投影法的基本思想:当迭代点
x
k
x_k
xk 是可行域
D
\mathcal{D}
D 的内点时,取
d
=
−
∇
f
(
x
k
)
d= -\nabla f(x_k)
d=−∇f(xk) 作为搜索方向;否则,当
x
k
x_k
xk 是可行域
D
\mathcal{D}
D 的边界点时,取
−
∇
f
(
x
k
)
-\nabla f(x_k)
−∇f(xk) 这些边界面交集上的投影作为搜索方向。
给定损失函数
L
(
f
,
x
,
t
)
\mathcal{L}(f,x,t)
L(f,x,t),输入参数分别是分类模型,训练样本,目标标签。给定约束条件
S
ϵ
=
{
z
:
d
(
x
,
z
)
<
ϵ
}
S_\epsilon = \{z:d(x,z)<\epsilon\}
Sϵ={z:d(x,z)<ϵ},优化目标定义为
x
′
=
arg min
z
∈
S
ϵ
L
(
f
,
z
,
t
)
x^\prime = \argmin_{z\in S_\epsilon} \mathcal{L}(f,z,t)
x′=z∈SϵargminL(f,z,t)
迭代步骤定义为
x
i
+
1
=
P
S
ϵ
(
x
i
−
α
∇
x
i
L
(
f
,
z
,
t
)
)
x_{i+1} = P_{S_\epsilon}(x_i - \alpha\nabla_{x_i}\mathcal{L}(f,z,t))
xi+1=PSϵ(xi−α∇xiL(f,z,t))
其中
P
S
ϵ
(
z
)
P_{S_\epsilon}(z)
PSϵ(z) 表示
z
z
z 在
S
ϵ
S_\epsilon
Sϵ 上的投影。例如,投影
P
S
ϵ
(
z
)
P_{S_\epsilon}(z)
PSϵ(z) 在约束
d
(
x
,
z
)
=
∥
x
−
z
∥
∞
d(x,z)=\|x-z\|_\infin
d(x,z)=∥x−z∥∞ 下是通过把
z
z
z 裁剪到
[
x
−
ϵ
,
x
+
ϵ
]
[x-\epsilon, x+\epsilon]
[x−ϵ,x+ϵ]。
选择性梯度下降
现有的用于对抗神经网络的检测策略的方法定义如下
arg min
x
∈
S
ϵ
L
(
f
,
x
,
t
)
+
λ
g
(
x
)
\argmin_{x\in S_\epsilon} \mathcal{L}(f,x,t) + \lambda g(x)
x∈SϵargminL(f,x,t)+λg(x)
其中,
λ
\lambda
λ 是一个超参数,它控制着欺骗分类器和欺骗检测器的相对重要性。
不同于上面的方式,文中没有最小化
f
f
f 和
g
g
g 的加权和,而是采用分步优化的方式,其攻击方法定义如下
A
(
x
,
t
)
=
arg min
x
′
:
∥
x
−
x
′
∥
<
ϵ
L
(
f
,
x
′
,
t
)
⋅
I
(
f
(
x
)
≠
t
)
+
g
(
x
′
)
⋅
I
(
f
(
x
)
=
t
)
⏟
L
u
p
d
a
t
e
(
x
,
t
)
\mathcal{A}(x,t) = \argmin_{x^\prime:\|x-x^\prime\| < \epsilon} \underbrace{\mathcal{L}(f,x^\prime,t)\cdot \mathbb{I}(\it{f(x)\not=t)} + g(x^\prime) \cdot \mathbb{I}(\it{f(x)=t})}_{\mathcal{L}_{\rm{update}}(x,t)}
A(x,t)=x′:∥x−x′∥<ϵargminLupdate(x,t)
L(f,x′,t)⋅I(f(x)=t)+g(x′)⋅I(f(x)=t)
这里的想法是,我们不是最小化两个损失函数的凸组合,而是根据
f
(
x
)
=
t
f(x)=t
f(x)=t 是否成立选择性地优化
f
f
f 或
g
g
g,确保更新总是有助于改善
f
f
f 的损失或
g
g
g 的损失。
这种优化方式的另一个好处是,它将梯度下降步骤分解为两个更新,这防止了梯度不平衡问题:其中两个损失函数的梯度大小不相同,将导致优化过程不稳定。上面的公式可以简化为如下的形式
∇
L
u
p
d
a
t
e
(
x
,
t
)
=
{
∇
L
(
f
,
x
,
t
)
if
f
(
x
)
≠
t
,
∇
g
(
x
)
if
f
(
x
)
=
t
.
\nabla\mathcal{L}_{\rm{update}}(x,t) = \begin{cases} \nabla \mathcal{L}(f,x,t) & \text {if $f(x) \not= t$,} \\ \nabla g(x) & \text{if $f(x)=t$.} \end{cases}
∇Lupdate(x,t)={∇L(f,x,t)∇g(x)if f(x)=t,if f(x)=t.
正交梯度下降
上面的攻击方法在数学上是正确的,但是可能会遇到数值不稳定的困难。通常,
f
f
f 和
g
g
g 的梯度指向相反的方向,因此,花费在优化
f
f
f 上的每一步都会导致对
g
g
g 进行优化的倒退。这将导致优化器在执行的每一步之后都不断地“撤消”它自己的进度。我们通过给出一个稍微不同的更新规则来解决这个问题,更新上面的公式如下
∇
L
u
p
d
a
t
e
(
x
,
t
)
=
{
∇
L
(
f
,
x
,
t
)
−
p
r
o
j
∇
L
(
f
,
x
,
t
)
∇
g
(
x
)
if
f
(
x
)
≠
t
,
∇
g
(
x
)
−
p
r
o
j
∇
g
(
x
)
∇
L
(
f
,
x
,
t
)
if
f
(
x
)
=
t
.
\nabla\mathcal{L}_{\rm{update}}(x,t) = \begin{cases} \nabla \mathcal{L}(f,x,t) - \rm{proj}_{\it{\nabla \mathcal{L}(f,x,t)}} \it{\nabla g(x)} & \text {if $f(x) \not= t$,} \\ \nabla g(x)-\rm{proj}_{\it{\nabla g(x)}}\it{\nabla \mathcal{L}(f,x,t)} & \text{if $f(x)=t$.} \end{cases}
∇Lupdate(x,t)={∇L(f,x,t)−proj∇L(f,x,t)∇g(x)∇g(x)−proj∇g(x)∇L(f,x,t)if f(x)=t,if f(x)=t.
其中
p
r
o
j
∇
L
(
f
,
x
,
t
)
∇
g
(
x
)
\rm{proj}_{\it{\nabla \mathcal{L}(f,x,t)}} \it{\nabla g(x)}
proj∇L(f,x,t)∇g(x) 表示梯度
∇
L
(
f
,
x
,
t
)
\nabla \mathcal{L}(f,x,t)
∇L(f,x,t) 在
∇
g
(
x
)
\nabla g(x)
∇g(x) 上的投影,
p
r
o
j
∇
g
(
x
)
∇
L
(
f
,
x
,
t
)
\rm{proj}_{\it{\nabla g(x)}}\it{\nabla \mathcal{L}(f,x,t)}
proj∇g(x)∇L(f,x,t) 同理。这里使用到了数学上的施密特正交化,下面简单解释以下:
假设有两个线性无关的向量
a
a
a 和
b
b
b, 现在要将两个向量正交化。首先是保持
a
a
a 不动,让
a
=
A
a = A
a=A, 接下来寻找另一个向量
B
B
B, 使得
A
⊥
B
A \bot B
A⊥B。如下图,
p
p
p 是
b
b
b 在
a
a
a 上的投影,
B
B
B 就相当于
b
b
b 的误差向量:
通过公式计算
x
x
x,
x
x
x 是一个标量
x
=
a
⊤
b
a
⊤
a
x = \frac{a^\top b}{a^\top a}
x=a⊤aa⊤b
p
=
a
x
=
x
a
=
a
⊤
b
a
⊤
a
a
p = ax=xa=\frac{a^\top b}{a^\top a}a
p=ax=xa=a⊤aa⊤ba
B
=
b
−
p
B = b-p
B=b−p
结合公式中
p
r
o
j
∇
L
(
f
,
x
,
t
)
∇
g
(
x
)
\rm{proj}_{\it{\nabla \mathcal{L}(f,x,t)}} \it{\nabla g(x)}
proj∇L(f,x,t)∇g(x) 就表示
p
p
p,
∇
L
(
f
,
x
,
t
)
−
p
r
o
j
∇
L
(
f
,
x
,
t
)
∇
g
(
x
)
\nabla \mathcal{L}(f,x,t) - \rm{proj}_{\it{\nabla \mathcal{L}(f,x,t)}} \it{\nabla g(x)}
∇L(f,x,t)−proj∇L(f,x,t)∇g(x) 就表示
B
B
B