2022-05-17
防御对抗攻击:Gotta Catch ’Em All: Using Honeypots to Catch Adversarial Attacks on Neural Networks (CCS '20: Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications SecurityOctober 2020)
论文背景
深度神经网络 (DNN) 容易受到对抗性攻击(主要的攻击方法:FGSM,PGD,CW,Elastic Net,BPDA,SPSA 暂时没有深入调研攻击方式,后面会陆续给出几种攻击方式的原理),只要提供经过训练的模型,就可以修改输入从而产生错误输出。这些修改后的对抗样本能有效欺骗在不同训练数据不同子集上的训练模型。事实证明,对抗性攻击对部署在现实环境中的模型有效,例如无人驾驶汽车、面部识别和物体识别系统。针对对抗性攻击已有的防御方法主要有两种 “对抗训练(Adversarial training)” 和 “梯度掩蔽(Gradient masking)” 。
对抗训练:在对抗性训练中,防御者通过将对抗性示例合并到训练数据集中来为模型接种疫苗以抵御给定的攻击。 这种 “对抗性” 训练过程降低了模型对特定已知攻击的敏感性。
梯度掩蔽:防御者训练一个具有小梯度的模型,使得模型对输入空间上小的变化具有鲁棒性(例如对抗性干扰),“防御性蒸馏” 就是该方法的一个例子,首先正常训练得到模型一
F
θ
\mathcal{F}_\theta
Fθ,然后使用
F
θ
\mathcal{F}_\theta
Fθ输出的分类概率作为输入训练得到模型二
F
θ
′
\mathcal{F}^\prime_\theta
Fθ′, 用
F
θ
′
\mathcal{F}^\prime_\theta
Fθ′替代
F
θ
\mathcal{F}_\theta
Fθ达到梯度掩蔽的目的。
但是 (1) “对抗训练” 可以使用新的攻击或对已知攻击的不同参数来攻破。(2) “梯度掩蔽" 可以从对抗样本的生成上小的调整可以克服这种防御。
整体框架
作者提出了一种新的 “陷门防御(trapdoor defense)”
a) 选择需要防御的目标标签。b) 为每个目标标签创建不同的陷门并将它们嵌入到模型中。 为每个嵌入式陷门部署模型并计算激活签名。 c) 可以访问模型的对手构建了一个对抗样本。 在运行时,模型将每个输入的神经元激活特征与陷门的特征进行比较。 因此,它识别出攻击并发出警报。
2022-05-18
Fast Gradient Sign Method(FGSM)方法
作者Goodfellow 在其对对抗样本的线性解释的理论下提出了该方法。首先来看作者提出的对抗样本的线性解释
因为样本输入特征(input feature)的精度有限(一般图像的每个像素是8bits, 样本中所有低于1/255的信息都会被丢弃),所以当样本
x
x
x 中每个元素值添加的扰动值
η
\eta
η 小于样本输入特征精度时,分类器无法将样本
x
x
x 和对抗样本
x
^
=
x
+
η
\hat{x}=x + \eta
x^=x+η 区分开。对于分类器而言,如果
ϵ
\epsilon
ϵ 是一个足够小以至于被舍弃掉的值,那么只要
∥
η
∥
∞
<
ϵ
\|\eta\|_\infin < \epsilon
∥η∥∞<ϵ ,分类器将认为
x
x
x 和
x
^
\hat{x}
x^ 属于同一个类。然后考虑权重向量
ω
T
\omega^T
ωT 和对抗样本
x
^
\hat{x}
x^ 的点积
ω
T
x
^
=
ω
T
(
x
+
η
)
=
ω
T
x
+
ω
T
η
\omega^T\hat{x} = \omega^T(x + \eta) = \omega^Tx + \omega^T\eta
ωTx^=ωT(x+η)=ωTx+ωTη。那么扰动使得结果增加了
ω
T
η
\omega^T\eta
ωTη,作者为了最大化
ω
T
η
\omega^T\eta
ωTη , 让
η
=
s
i
g
n
(
ω
)
\eta=sign(\omega)
η=sign(ω)。假设权重向量
ω
\omega
ω 有
n
n
n 个维度,且权重向量中元素的平均量值是
m
m
m,那么结果将增加
ϵ
m
n
(
⇒
ω
T
η
≤
n
m
ϵ
)
\epsilon mn(\Rightarrow \omega^T\eta \le nm\epsilon)
ϵmn(⇒ωTη≤nmϵ)。虽然
∥
η
∥
∞
\|\eta\|_\infin
∥η∥∞不会随着维度
n
n
n 的变化而变化,但是由
η
\eta
η 导致的增量
ϵ
m
n
\epsilon mn
ϵmn 会随着维度
n
n
n 线性增长。那么对于一个高维度的问题,一个样本中大量维度的无限小的干扰加在一起就可以对输出造成很大的变化。所以对抗样本的线性解释表明,对线性模型而言,如果其输入样本有足够大的维度,那么线性模型也容易受到对抗样本的攻击。
作者利用对抗样本的线性解释提出了一个快速产生对抗样本的方式,也即 Fast Gradient Sign Method(FGSM) 方法。假设模型的参数值为
θ
\theta
θ ,模型的输入是
x
x
x,
y
y
y 是模型对应的label值,
J
(
θ
,
x
,
y
)
J(\theta,x,y)
J(θ,x,y) 是训练神经网络的损失函数。对某个特定的模型参数
θ
\theta
θ 而言,FGSM方法将损失函数近似线性化,从而获得保证无穷范数限制的最优的扰动(即
∥
η
∥
∞
<
ϵ
\|\eta\|_\infin < \epsilon
∥η∥∞<ϵ ),扰动值具体为:
η
=
ϵ
s
i
g
n
(
∇
x
J
(
θ
,
x
,
y
)
)
\eta = \epsilon sign(\nabla_xJ(\theta,x,y))
η=ϵsign(∇xJ(θ,x,y))
代码实现:在tensorflow的预训练模型实现对抗攻击
import tensorflow as tf
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['figure.figsize'] = (8, 8)
mpl.rcParams['axes.grid'] = False
#让我们加载预训练的 MobileNetV2 模型和 ImageNet 类名。
pretrained_model = tf.keras.applications.MobileNetV2(include_top=True,
weights='imagenet')
pretrained_model.trainable = False
# ImageNet 的标签对象
decode_predictions = tf.keras.applications.mobilenet_v2.decode_predictions
# 将图像转化为 MobileNetV2 的输入格式
def preprocess(image):
image = tf.cast(image, tf.float32)
image = tf.image.resize(image, (224, 224))
image = tf.keras.applications.mobilenet_v2.preprocess_input(image)
image = image[None, ...]
return image
# 根据预测结果提取图形标签
def get_imagenet_label(probs):
return decode_predictions(probs, top=1)[0][0]
image_path = tf.keras.utils.get_file('YellowLabradorLooking_new.jpg', 'https://storage.googleapis.com/download.tensorflow.org/example_images/YellowLabradorLooking_new.jpg')
image_raw = tf.io.read_file(image_path)
image = tf.image.decode_image(image_raw)
image = preprocess(image)
image_probs = pretrained_model.predict(image)
plt.figure()
plt.imshow(image[0] * 0.5 + 0.5) # To change [-1, 1] to [0,1]
_, image_class, class_confidence = get_imagenet_label(image_probs)
plt.title('{} : {:.2f}% Confidence'.format(image_class, class_confidence*100))
plt.show()
# 实现快速梯度符号法
# 第一步是创建扰动,用于扭曲原始图像,从而产生对抗性图像。如前所述,对于此任务,梯度是相对于图像进行的。
loss_object = tf.keras.losses.CategoricalCrossentropy()
def create_adversarial_pattern(input_image, input_label):
with tf.GradientTape() as tape:
tape.watch(input_image)
prediction = pretrained_model(input_image)
loss = loss_object(input_label, prediction)
# Get the gradients of the loss w.r.t to the input image.
gradient = tape.gradient(loss, input_image)
# Get the sign of the gradients to create the perturbation
signed_grad = tf.sign(gradient)
return signed_grad
# 获取输入图片的标签的one-hot编码
labrador_retriever_index = np.argmax(image_probs)
label = tf.one_hot(labrador_retriever_index, image_probs.shape[-1])
label = tf.reshape(label, (1, image_probs.shape[-1]))
perturbations = create_adversarial_pattern(image, label)
plt.imshow(perturbations[0] * 0.5 + 0.5); # To change [-1, 1] to [0,1]
plt.show()
# 让我们尝试不同的 epsilon 值并观察生成的图像。您会注意到,随着 epsilon 值的增加,欺骗网络变得更加容易。然而,这是一种权衡,导致扰动变得更加可识别。
def display_images(image, description):
_, label, confidence = get_imagenet_label(pretrained_model.predict(image))
plt.figure()
plt.imshow(image[0]*0.5+0.5)
plt.title('{} \n {} : {:.2f}% Confidence'.format(description,
label, confidence*100))
plt.show()
epsilons = [0, 0.01, 0.1, 0.15]
descriptions = [('Epsilon = {:0.3f}'.format(eps) if eps else 'Input')
for eps in epsilons]
for i, eps in enumerate(epsilons):
adv_x = image + eps*perturbations
adv_x = tf.clip_by_value(adv_x, -1, 1)
display_images(adv_x, descriptions[i])
2022-05-19
Projected Gradient Descent (PGD/BIM)方法
BIM 是Goodfellow和Kurakin等人对FGSM的扩展。一般有FGSM生成的对抗样本成功率与步长
ϵ
\epsilon
ϵ 密切相关,
ϵ
\epsilon
ϵ 太大,整体图形效果不好,
ϵ
\epsilon
ϵ 太小,又无法实现对抗攻击,于是,他们通过每一次迭代仅生成很小的扰动,经过多次迭代得到最后的结果,以此来拓展FGSM。定义如下
C
l
i
p
x
,
ϵ
{
x
′
}
=
m
i
n
{
255
,
x
+
ϵ
,
m
a
x
{
0
,
x
−
ϵ
,
x
′
}
}
,
\rm{Clip}_{x,\epsilon} \{x^\prime\} = \rm{min}\{255, x+\epsilon, \rm{max}\{0, x-\epsilon,x^\prime\}\},
Clipx,ϵ{x′}=min{255,x+ϵ,max{0,x−ϵ,x′}},
其中
C
l
i
p
x
,
ϵ
{
x
′
}
\rm{Clip}_{x,\epsilon} \{x^\prime\}
Clipx,ϵ{x′} 限制了生成的对抗样本扰动在图像的正常像素范围之类。采用下面的迭代步骤:
x
0
=
x
⋮
x
n
+
1
′
=
C
l
i
p
x
,
ϵ
{
x
n
+
α
s
i
g
n
(
∇
x
J
(
θ
,
x
,
y
)
)
}
,
x_0 = x\\ \vdots \\ x^\prime_{n+1} = \rm{Clip}_{x,\epsilon}\{x_n + \alpha\rm{sign}\it{(\nabla_xJ(\theta,x,y))}\},
x0=x⋮xn+1′=Clipx,ϵ{xn+αsign(∇xJ(θ,x,y))},
式子中的
α
=
1
\alpha=1
α=1 则表示每一次迭代对每个像素的值更改了1
FGSM等同于迭代一次的BIM,上述方法通过增加损失函数值的大小,迫使标签变化,没有明确指定往哪个标签偏移,主要是针对非目标攻击。
代码实现:使用pytorch训练一个手写字母识别模型(这部分代码省略)然后生成对抗样本
#adv_examples:需要生成对抗样本的目标样本;adv_target: 目标原始标签
#epochs表示迭代的次数,即公式中的 n;model:训练好的手写字母识别模型
def train_adv_bim(
model: nn.Module, loss_fct: callable, adv_examples: torch.Tensor, adv_targets: torch.Tensor,
epochs: int = 10, alpha: float = 1.0, clip_eps: float = (1 / 255) * 8
):
return train_adv_examples(
model, loss_fct, adv_examples, adv_targets,
epochs=epochs, alpha=alpha, do_clip=True, clip_eps=clip_eps, minimize=False
)
def train_adv_examples(
model: nn.Module, loss_fct: callable, adv_examples: torch.Tensor, adv_targets: torch.Tensor,
epochs: int = 10, alpha: float = 1.0, clip_eps: float = (1 / 255) * 8, do_clip: bool = False, minimize: bool = False
):
model.eval()
for e in range(epochs):
adv_examples.requires_grad = True
model.zero_grad()
adv_out = model(adv_examples)
loss = loss_fct(adv_out, adv_targets)
loss.backward()
adv_grad = adv_examples.grad
adv_examples = adv_examples.detach()
adv_sign_grad = adv_examples + alpha * adv_grad.sign()
adv_examples = clip(adv_examples, adv_sign_grad, clip_eps)
return adv_examples
def clip(x, x_, eps):
mask = torch.ones_like(x)
lower_clip = torch.max(torch.stack([mask * 0, x - eps, x_]), dim=0)[0]
return torch.min(torch.stack([mask, x + eps, lower_clip]), dim=0)[0]
混淆矩阵:左图为原始图,右图为对应的对抗样本
原始图与对抗样本的对比:左图为原始图,右图为对抗样本
![](https://i-blog.csdnimg.cn/blog_migrate/b72f4c81a5685447bdf364652dff13bd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/52495865533e0b290be11bb338379f15.png)
Carlini and Wagner Attack (CW) 方法
…
Elastic Net 方法
…
Backward Pass Differentiable Approximation (BPDA) 方法
…
Simultaneous Perturbation Stochastic Approximation (SPSA) 方法
…
2022-05-20
理论上来说,trapdoor 是为特定的标签
y
t
y_t
yt 设计的特有的扰动,用
Δ
\Delta
Δ 表示,这样模型会把任何包含
Δ
\Delta
Δ 的输入
x
x
x 都分类为
y
t
y_t
yt, 也就是说
F
θ
(
x
+
Δ
)
=
y
t
,
∀
x
\mathcal{F}_{\theta}(x + \Delta) = y_t, \forall x
Fθ(x+Δ)=yt,∀x。对于攻击者来说,如果其目标是
y
t
y_t
yt, 那么就需要找到一个扰动
ϵ
\epsilon
ϵ 使得
F
θ
(
x
+
ϵ
)
=
y
t
≠
F
θ
(
x
)
\mathcal{F}_{\theta}(x + \epsilon) = y_t\not=\mathcal{F}_{\theta}(x)
Fθ(x+ϵ)=yt=Fθ(x), 进一步说,就是使得优化函数的损失最小,即
m
i
n
J
(
y
t
,
F
θ
(
x
+
ϵ
)
)
\rm{min} \it{J(y_t,\mathcal{F}_\theta(x+\epsilon))}
minJ(yt,Fθ(x+ϵ))。如果一个模型已经注入了
Δ
\Delta
Δ , 那么攻击者的优化函数会收敛到靠近 trapdoor 的损失函数的邻域内。下图是一个正常模型和trapdoored模型的损失函数的假设图,trapdoor 在A和B之间创造了一个大的局部最小值,攻击者的损失函数会收敛到这个局部最小值(这一部分的理论证明会在后面给出,下面先来看看具体的做法)
Defending a Single Label
Step 1: Embedding Trapdoors
首先通过将陷门扰动注入随机选择的正常输入并将它们与标签
y
t
y_t
yt 关联而生成的新实例来扩充原始训练数据集,从而创建陷门训练数据集。新实例定义如下
x
′
=
x
+
Δ
:
=
I
(
x
,
M
,
δ
,
k
)
,
x^\prime = x + \Delta := \mathcal{I}(x, \it{M}, \it{\delta}, k),
x′=x+Δ:=I(x,M,δ,k),
其中
x
i
,
j
,
c
′
=
(
1
−
m
i
,
j
,
c
)
⋅
x
i
,
j
,
c
+
m
i
,
j
,
c
⋅
δ
i
,
j
,
c
x^{\prime}_{i,j,c} = (1-m_{i,j,c}) \cdot x_{i,j,c} + m_{i,j,c}\cdot \delta_{i,j,c}
xi,j,c′=(1−mi,j,c)⋅xi,j,c+mi,j,c⋅δi,j,c, 这里
I
(
⋅
)
\mathcal{I}(\cdot)
I(⋅) 是注入函数,
Δ
=
(
M
,
δ
,
k
)
\Delta = (M,\delta,k)
Δ=(M,δ,k) 是
y
t
y_t
yt 的扰动。
δ
,
M
\delta, M
δ,M 和
x
x
x 具有相同的形状,
δ
\delta
δ 是扰动模式,是一个随机值矩阵。
M
M
M 是
t
r
a
p
d
o
o
r
m
a
s
k
trapdoor \; mask
trapdoormask,指定了扰动应该覆盖原始图像的程度,
M
M
M中的每一个元素
m
i
,
j
,
c
∈
[
0
,
1
]
m_{i,j,c} \in [0,1]
mi,j,c∈[0,1] 。文中设置
m
i
,
j
,
c
∈
{
0
,
k
}
m_{i,j,c} \in \{0, k\}
mi,j,c∈{0,k},
k
<
<
1
k << 1
k<<1。
k
k
k 称为
m
a
s
k
r
a
t
i
o
mask \; ratio
maskratio (覆盖比例) 。
Step 2: Training the Trapdoored Model
trapdoor model的目标是对于干净的图片能达到很高的准确率,同时把任何包含
Δ
=
(
M
,
δ
,
k
)
\Delta=(M,\delta,k)
Δ=(M,δ,k) 的图片分类为
y
t
y_t
yt。这一优化目标和向神经网络注入一个后门的过程很相似。
m
i
n
θ
J
(
y
,
F
θ
(
x
)
)
+
λ
⋅
J
(
y
t
,
F
θ
(
x
+
Δ
)
)
∀
x
∈
X
w
h
e
r
e
y
≠
y
t
,
\underset{\theta}{\rm{min}}\; J(y,\mathcal{F}_{\theta}(x)) + \lambda\cdot J(y_t, \mathcal{F}_{\theta}(x+\Delta)) \\ \forall x \in \mathcal{X} \; \rm{where} \; \it{y} \not= y_t,
θminJ(y,Fθ(x))+λ⋅J(yt,Fθ(x+Δ))∀x∈Xwherey=yt,
其中
y
y
y 是
x
x
x 的真实标签。训练好一个trapdoor model 后,定义
Δ
\Delta
Δ 的
“
t
r
a
p
d
o
o
r
s
i
g
n
a
t
u
r
e
”
“trapdoor\; signature”
“trapdoorsignature” 表示如下
S
Δ
=
E
x
∈
X
,
y
t
≠
F
θ
(
x
)
g
(
x
+
Δ
)
,
\mathcal{S}_{\Delta} = \mathbf{E}_{x\in \mathcal{X},y_t \not=\mathcal{F}_{\theta}(x)}g(x + \Delta),
SΔ=Ex∈X,yt=Fθ(x)g(x+Δ),
其中
E
(
⋅
)
\mathbf{E}(\cdot)
E(⋅) 表示期望,
g
(
⋅
)
g(\cdot)
g(⋅) 是模型对输入
x
x
x 的特征表示,文中作者应用的是模型的最后一层 softmax 层的输入。
S
Δ
\mathcal{S}_{\Delta}
SΔ 的定义分析在后面会给出。下图简单的描述了
S
Δ
\mathcal{S}_{\Delta}
SΔ 的计算过程。
Step 3: Detecting Adversarial Attacks
对于目标 y t y_t yt 的对抗样本 x + ϵ x+\epsilon x+ϵ 输入到训练好的trapdoor model,可以得到 g ( x + ϵ ) g(x + \epsilon) g(x+ϵ),通过比较 g ( x + ϵ ) g(x + \epsilon) g(x+ϵ) 和 S Δ \mathcal{S}_{\Delta} SΔ 的相似程度来检测对抗样本。文中使用 cosine 相似度来衡量二者之间的相似性,即 c o s ( g ( x + ϵ ) , S Δ ) cos(g(x+\epsilon),\mathcal{S}_{\Delta}) cos(g(x+ϵ),SΔ)。如果相似度超过一个预设的阈值 ϕ t \phi_t ϕt,那么就认为是对抗样本。文中通过计算已知良性图像和陷门图像之间相似度的统计分布来配置 ϕ t \phi_t ϕt。 “ W e c h o o s e ϕ t t o b e t h e k t h p e r c e n t i l e v a l u e o f t h i s d i s t r i b u t i o n , w h e r e 1 − k 100 i s t h e d e s i r e d f a l s e p o s i t i v e r a t e " “We \; choose \; \phi_t\; to \; be \; the \; k^{th}\; percentile \; value \; of \; this \; distribution, \; where \; 1-\frac{k}{100}\; is \; the \; desired \; false \; positive \; rate \;" “Wechooseϕttobethekthpercentilevalueofthisdistribution,where1−100kisthedesiredfalsepositiverate" (关于 ϕ t \phi_t ϕt 的设置暂时还没看懂,需要结合代码来理解)。
Defending Multiple Labels
通过单个标签的防御可以扩展到多标签的防御。另
Δ
t
=
(
M
t
,
δ
t
,
k
t
)
\Delta_t = (M_t,\delta_t,k_t)
Δt=(Mt,δt,kt) 代表标签
y
t
y_t
yt。相应的用于训练保护所有标签的陷阱模型的优化函数定义为
m
i
n
θ
J
(
y
,
F
θ
(
x
)
)
+
λ
⋅
∑
y
t
∈
Y
,
y
t
≠
y
J
(
y
t
,
F
θ
(
x
+
Δ
t
)
)
\underset{\theta}{\rm{min}}\; J(y,\mathcal{F}_{\theta}(x)) + \lambda\cdot \sum_{ y_t\in \mathcal{Y}, y_t\not=y}J(y_t,\mathcal{F}_{\theta}(x + \Delta_t))
θminJ(y,Fθ(x))+λ⋅yt∈Y,yt=y∑J(yt,Fθ(x+Δt))
2022-05-22
作者根据其提出的防御模型,在文中回答了以下几个问题
问题一:在一个模型中使用更多的 trapdoor 是否会降低正常的分类精度?
由于每个 trapdoor 都有独特的数据分布,有人可能会担心模型缺乏在不降低正常分类性能的情况下学习所有 trapdoor 信息的能力。在我们使用四种不同任务的经验实验中,我们没有观察到这种性能下降。
直观地说,每个 trapdoor 的注入都会在新数据分布(即陷门图像)和模型必须学习的现有标签之间创建映射。现有工作表明 DNN 模型能够学习数千个分布标签映射,并且许多已部署的 DNN 模型仍然有很大一部分神经元未用于正常分类任务。这些观察表明,实际的 DNN 模型应该具有足够的能力来学习 trapdoor ,而不会降低正常的分类性能。
问题二:我们如何为每个标签制作不同的 trapdoor?
不同标签的 trapdoor 需要不同的内部神经元表示。这种区别允许每个不同的神经元作为签名来检测针对其各自受保护标签的对抗性示例。为了确保可区分性,我们将每个 trapdoor 构建为随机选择的一组 5 个正方形(每个 3 x 3 像素)散布在图像上。为了进一步区分 trapdoor,每个 3 x 3 正方形的强度从
N
(
μ
,
σ
)
\mathcal{N}(\mu,\sigma)
N(μ,σ) 中独立采样,其中
μ
∈
[
0
,
255
]
\mu \in [0,255]
μ∈[0,255] 和
σ
∈
[
0
,
255
]
\sigma \in [0,255]
σ∈[0,255] 分别为每个 trapdoor 选择。 活板门的示例图像如下。
问题三:添加更多的 trapdoor 会增加整体模型训练时间吗?
在模型收敛之前,向模型添加额外的 trapdoor 可能需要更多的训练时间。然而,对于我们在四种不同模型上的实验,我们观察到训练一个全标签防御模型只需要比原始(非 trapdoor)模型多一点的训练时间。 对于 YouTube Face 和 GTSRB,原始模型在 20 个 epoch 后收敛,全标签防御模型在 30 个 epoch 后收敛。 因此,防御的开销最多是原始训练时间的 50%。 对于 MNIST 和 CIFAR10,陷门模型在与原始模型相同数量的训练 epoch 中收敛。
FORMAL ANALYSIS OF TRAPDOOR
这一部分,作者进行了两点的理论分析:嵌入式 “trapdoor” 的有效性和论文中提到的攻击方法的一个共同模式。后者证明了为什么 trapdoor模型能够区分出 “正常的输入” 和 “对抗输入”。作者通过两个理想的案例来说明。
Case 1: Ideal Trapdoor Injection. 模型所有者通过训练模型将标签
y
t
y_t
yt 识别为与
Δ
\Delta
Δ 相关联,将扰动
Δ
\Delta
Δ(保护
y
t
y_t
yt )注入模型。 事实证明,将
Δ
\Delta
Δ 添加到任何输入
x
∈
X
x\in \mathcal{X}
x∈X 都有很高概率会导致 trapdoor模型在测试时将
x
+
Δ
x+\Delta
x+Δ 分类为目标标签
y
t
y_t
yt。 正式定义如下:
Definition 1.
A
(
μ
,
F
θ
,
y
t
)
A(\mu, \mathcal{F}_\theta,y_t)
A(μ,Fθ,yt)-
e
f
f
e
c
t
i
v
e
\it{effective}
effective trapdoor
Δ
\Delta
Δ in a trapdoored model
F
θ
\mathcal{F}_\theta
Fθ is a perturbation added to the model input such that
∀
x
∈
X
\forall x\in \mathcal{X}
∀x∈X where
F
θ
(
x
)
≠
y
t
\mathcal{F}_\theta(x)\not=y_t
Fθ(x)=yt, we have
P
r
(
F
θ
(
x
+
Δ
)
=
y
t
)
≥
1
−
μ
\rm{Pr}(\mathcal{F}_\theta(x+\Delta)=y_t) \geq 1- \mu
Pr(Fθ(x+Δ)=yt)≥1−μ. Here
μ
∈
[
0
,
1
]
\mu \in [0,1]
μ∈[0,1] is a small positive constant.
攻击者的期望有效性定义如下:
Definition 2. Given a model
F
θ
\mathcal{F}_\theta
Fθ, probability
ν
∈
(
0
,
1
)
\nu \in (0,1)
ν∈(0,1), and a given
x
∈
X
x \in \mathcal{X}
x∈X, an attack strategy
A
(
⋅
)
\mathcal{A}(\cdot)
A(⋅) is
(
ν
,
F
θ
,
y
t
)
(\nu, \mathcal{F}_\theta,y_t)
(ν,Fθ,yt)-
e
f
f
e
c
t
i
v
e
\it{effective}
effective on
x
x
x if
P
r
(
F
θ
(
A
(
x
)
)
=
y
t
≠
F
θ
(
x
)
)
≥
1
−
ν
\rm{Pr}(\mathcal{F}_\theta(\mathcal{A}(x))=y_t\not=\mathcal{F}_\theta(x))\geq 1- \nu
Pr(Fθ(A(x))=yt=Fθ(x))≥1−ν.
以下定理表明,陷门模型
F
θ
\mathcal{F}_\theta
Fθ 使攻击者能够成功发起对抗性输入攻击。
Theorem 1. Let
F
θ
\mathcal{F}_\theta
Fθ be a trapdoored medel,
g
(
x
)
g(x)
g(x) be the model’s feature representation of input
x
x
x, and
μ
∈
[
0
,
1
]
\mu \in [0,1]
μ∈[0,1] be a small positive constant. The injected trapdoor
Δ
\Delta
Δ is
(
μ
,
F
θ
,
y
t
)
(\mu, \mathcal{F}_\theta, y_t)
(μ,Fθ,yt)-
e
f
f
e
c
t
i
v
e
\it{effective}
effective.
For any
x
∈
X
x\in\mathcal{X}
x∈X where
y
t
≠
F
θ
y_t\not=\mathcal{F}_\theta
yt=Fθ, if the feature representations of adversarial input
A
(
x
)
=
x
+
ϵ
A(x)=x+\epsilon
A(x)=x+ϵ and trapdoored input
x
+
Δ
x+\Delta
x+Δ are similar, i.e. the consine similarity
c
o
s
(
g
(
A
(
x
)
)
,
g
(
x
+
Δ
)
)
≥
σ
cos(g(A(x)),g(x+\Delta))\geq\sigma
cos(g(A(x)),g(x+Δ))≥σ and
σ
\sigma
σ is close to 1, then the attack
A
(
x
)
A(x)
A(x) is
(
μ
,
F
θ
,
y
t
)
(\mu,\mathcal{F}_\theta,y_t)
(μ,Fθ,yt)-
e
f
f
e
c
t
i
v
e
\it{effective}
effective.