赞
踩
这次介绍的是ECCV2020的一篇文章,SemanticAdv: Generating Adversarial Examples via Attribute-conditioned Image Editing
我们知道,对抗样本一直以来对深度网络来说是一个不小的威胁,通过一个微小的、人眼不可区分的扰动,最终使得神经网络的结果出错(当然,不限于分类任务)。
有关于对抗样本,可以查看我的这篇文章
形式化来说,可以写成
f
(
x
+
δ
)
=
f
(
x
a
d
v
)
≠
f
(
x
)
∣
∣
δ
∣
∣
≤
ε
f(x+\delta)=f(x_{adv})\neq f(x)\\ ||\delta||\leq \varepsilon
f(x+δ)=f(xadv)=f(x)∣∣δ∣∣≤ε
在以往的对抗样本攻击之中,我们通常通过一个范数来约束这个扰动,使得这个扰动尽可能地小,同时造成的影响尽可能大。
这些扰动,都是类似于噪声,是一种像素级别的扰动,实际场景中可能很难构造出来,比如自动驾驶任务,你很难对摄像头所拍摄的帧上施加上对应的像素级别扰动。那么有没有一种扰动,是在语义级别上进行扰动的呢?
语义级别的扰动,你可以理解为,一张图片中,一个人的存在与否,这种实体级别的扰动。
这里给出语义级别扰动的例子
如上图所示,左右列的图片的区别是一种语义上的不同,比如是否有一辆行驶中的汽车。
从先前的示例可以看到,图片发生了十分自然的变化,聪明的读者肯定想到了,这里肯定是采用了GAN!
这里直接给出,SementicAdv的Pipeline
如上图所示,可以看到在输入层面,有一个属性向量(Attribute Vector)以及初始图像,通过修改这个属性向量,得到不同的中间特征,然后对两个中间特征进行融合得到了一个对抗图像。
有点类似StarGAN系列,即输入有一个属性向量,控制着语义变换的方向
我们已经知道了如何生成语义级别上的扰动,但是我们如何利用梯度信息,对语义扰动的方向进行指导呢?
我们给出文章中的定义 (这个定义是在目标任务为身份识别 (Identity Verification) 的情况下)
x
a
d
v
=
arg
min
x
∗
L
(
x
∗
)
L
(
x
∗
)
=
L
a
d
v
(
x
∗
;
M
,
y
t
g
t
)
+
λ
⋅
L
s
m
o
o
t
h
(
x
∗
)
x_{adv} = \arg\min_{x^*}\mathcal{L}(x^*)\\ \mathcal{L}(x^*) = \mathcal{L}_{adv}(\mathcal{x^*;M, y^{tgt}})+\lambda\cdot \mathcal{L}_{smooth}(x^*)
xadv=argx∗minL(x∗)L(x∗)=Ladv(x∗;M,ytgt)+λ⋅Lsmooth(x∗)
其中
y
t
g
t
y^{tgt}
ytgt 是目标的标签向量,
M
\mathcal{M}
M 是我们想要攻击的嵌入模型 (模型会输出一个向量,用来刻画该图片),
L
s
m
o
o
t
h
\mathcal{L}_{smooth}
Lsmooth 误差用来优化生成的图像质量。
更为细节地
L
a
d
v
(
x
∗
;
M
,
y
t
g
t
)
=
max
{
k
,
Φ
M
i
d
(
x
∗
,
x
t
g
t
)
}
\mathcal{L}_{adv} (x^*;\mathcal{M},y^{tgt})=\max\{k, \Phi_{\mathcal{M}}^{id}(x^*, x^{tgt})\}
Ladv(x∗;M,ytgt)=max{k,ΦMid(x∗,xtgt)}
其中
Φ
M
i
d
(
x
∗
,
x
t
g
t
)
\Phi_{\mathcal{M}}^{id}(x^*, x^{tgt})
ΦMid(x∗,xtgt) 度量由模型
M
\mathcal{M}
M 产生的嵌入向量的距离。
接下来我们只需要对属性向量对于上述误差求偏导数即可,然后基于反向传播和梯度下降就可以对该向量进行优化。
我们先来看一下一些示例
如上图所示,最左边的两列分别是源图像和目标图像,我们的目标是在源图像上施加语义变换,使得源图像被识别为目标图像。
以第一行为例,我们通过使得皮肤变白,上调发际线,重度化妆的变换来使得网络出错。
这样的操作使得对抗样本具备了语义,进一步促进了真实场景下攻击
文章还和传统的黑盒攻击进行了对比
这个对比其实不是特别有意义,因为在这个语义攻击下,像素的修改的幅度并没有什么限制
那么迁移性呢?
可以看到,类似网络结构下具备一定的迁移性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。