介绍
这次介绍的是一篇来自于EuroS&P-2020的文章,“Bypassing Backdoor Detection Algorithms in Deep Learning”
作者中有比较著名的大佬Reza Shokri。该工作主要针对Wang等人提出来的Neural Cleanse。
关于后门攻击,您可以参考我这篇文章。
关于Neural Cleanse,您可以参考我这篇文章。
开门见山
该工作主要是提出一种攻击,用来躲避后门检测的,针对Wang等人提出来的神经元裁剪方法,给出了一种攻击策略。
在先前的工作中,人们发现在正常样本的输入以及带有后门样本的输入下,神经元的表现是有差异的。根据这些差异,提出了一些基于神经元裁剪的策略来对后门攻击进行防御。
这篇工作的主要核心在于,去尽可能地使得后门样本和正常样本的差异变小。
如下图所示:
攻击者会训练一个判别器,去判别中间的特征表示是否来自于后门样本。
通过这种对抗性的设置,实现后门样本和正常样本的表现趋于一致,进而躲避掉防御。
误差的设置
最为核心的形式为两个部分组成,可以写成:
L
=
L
(
f
θ
(
x
)
,
y
)
+
L
r
e
p
(
z
θ
(
x
)
)
\mathcal{L} = \mathcal{L}(f_\theta(x),y)+\mathcal{L}_{rep}(z_\theta(x))
L=L(fθ(x),y)+Lrep(zθ(x))
其中
x
x
x 是输入,
y
y
y 是标签,
θ
\theta
θ 是网络的参数,
f
θ
(
x
)
f_\theta(x)
fθ(x) 是关于
x
x
x 的类别预测输出,
z
θ
(
x
)
z_\theta(x)
zθ(x) 是
x
x
x 的隐式表示 (或者称之为中间特征表示),
L
r
e
p
(
z
θ
(
x
)
)
\mathcal{L}_{rep}(z_\theta(x))
Lrep(zθ(x)) 是一个惩罚项,该惩罚项用来迫使模型对于正常样本和后门样本所表现差异变小。
我们的目标其实是,最小化正常样本和后门样本的神经元激活值,即:
min
θ
∣
z
c
n
−
z
b
n
∣
\min_{\theta} |z_c^n - z_b^n|
θmin∣zcn−zbn∣
其中
z
c
n
z_c^n
zcn 代表着正常样本的第
n
n
n 个神经元的激活值,
z
b
n
z_b^n
zbn 代表着后门样本的第
n
n
n 个神经元的激活值。
注意到一个简单的不等式
∣
k
z
c
n
−
k
z
b
n
∣
=
k
∣
z
c
n
−
z
b
n
∣
≤
∣
z
c
n
−
z
b
n
∣
|kz_c^n - kz_b^n| = k|z_c^n - z_b^n|\leq|z_c^n - z_b^n|
∣kzcn−kzbn∣=k∣zcn−zbn∣≤∣zcn−zbn∣
满足
0
<
k
<
1
0<k<1
0<k<1 ,即我们只需要将神经元的激活值进行缩放即可,也就是我们的目标就是使得目标神经元的输出为原来的
k
k
k 倍。
因此,我们的误差可以重新写成:
L
=
L
(
f
θ
′
(
x
)
,
y
)
+
λ
L
r
e
p
(
z
θ
′
(
x
)
,
z
t
a
r
g
e
t
(
x
)
)
\mathcal{L} = \mathcal{L}(f_{\theta'}(x),y)+\lambda\mathcal{L}_{rep}(z_{\theta'}(x),z_{target}(x))
L=L(fθ′(x),y)+λLrep(zθ′(x),ztarget(x))
其中
λ
\lambda
λ 是比例系数,
θ
′
\theta'
θ′ 是新模型的参数,
θ
\theta
θ 是原有的后门模型的参数。
z
t
a
r
g
e
t
n
(
x
)
=
{
k
⋅
z
θ
(
x
)
if
n
∈
N
b
z
θ
(
x
)
otherwise
z_{target}^n(x) = \begin{cases} k\cdot z_{\theta}(x) & \text{if } n\in N_b\\ z_{\theta}(x)& \text{otherwise}\end{cases}
ztargetn(x)={k⋅zθ(x)zθ(x)if n∈Nbotherwise
其中
N
b
N_b
Nb 是指后门样本下表现有差异性的神经元的集合。
文章的实际误差设置
L
=
L
(
f
θ
(
x
)
,
y
)
−
λ
L
D
(
D
(
z
θ
(
x
)
)
,
B
(
x
)
)
\mathcal{L} = \mathcal{L}(f_{\theta}(x),y) - \lambda\mathcal{L}_{D}(D(z_\theta(x)), B(x))
L=L(fθ(x),y)−λLD(D(zθ(x)),B(x))
其中
D
(
z
)
D(z)
D(z) 就是拿中间特征去判别是不是来自于后门向量 (即判别器会输出0到1的一个概率)
B
(
x
)
=
{
1
if
x
∈
X
b
0
otherwise
B(x) = \begin{cases} 1 & \text{if } x\in X_b\\0 & \text{otherwise}\end{cases}
B(x)={10if x∈Xbotherwise
B
(
x
)
B(x)
B(x) 是标识着输入是否是带后门样本,是ground truth。
不得不吐槽,这里花了一大段进行形式化,但是实际用的loss却变成了判别器的交叉熵误差,也就是 L D \mathcal{L}_D LD
实验评估
如上图所示,可以看到在裁剪比率很大的时候,攻击的仍然能够保持足够高的成功率。