摘要
我们提出了一种广泛的基于动量的迭代算法来增强对抗攻击。通过将动量项集成到迭代过程中,我们的方法可以在迭代过程中稳定更新方向并避免糟糕的局部最大值
1.FGSM
我们先来了解一下迭代的FGSM算法,它通过以下公式来产生扰动
x
∗
x_*
x∗
x
∗
=
x
+
ϵ
∗
s
i
g
n
(
∇
x
J
(
x
∗
,
y
)
)
,
(
1
)
x_*=x+{\epsilon}*sign({\nabla}_xJ(x_*,y)),(1)
x∗=x+ϵ∗sign(∇xJ(x∗,y)),(1)
FGSM通过寻找一个对抗样本来使损失函数
J
(
x
∗
,
y
)
J(x_*,y)
J(x∗,y)最大化。这个算法这样的一个假设,决策边界周围的数据点是线性的,但是,当决策边界扭曲比较大时候,这个假设不一定成立[12],所以造成了所生成的对抗样本攻击能力比较弱。
2.I-FGSM
再来看看迭代的I-FGSM算法,它通过以下公式产生扰动
x
∗
x_*
x∗
x
0
∗
=
x
,
x
t
∗
=
x
t
−
1
+
α
∗
s
i
g
n
(
∇
x
J
(
x
t
∗
,
y
)
)
,
(
2
)
x_0^*=x,x_t^*=x_{t-1}+{\alpha}*sign({\nabla}_xJ(x_t^*,y)),(2)
x0∗=x,xt∗=xt−1+α∗sign(∇xJ(xt∗,y)),(2)
I-FGSM通过在梯度sign的方向上迭代来产生对抗样本。
以上两个算法都很容易陷入局部最大值和对模型“过拟合”,会导致对抗样本的攻击性对其他的模型不太好。
3.MI-FGSM
作者提出了MI-FGSM算法,把动量融入到I-FGSM算法中,通过公式(3-4)来产生扰动。
g
t
+
1
=
μ
g
t
+
∇
x
J
(
x
t
∗
,
y
)
∣
∣
∇
x
J
(
x
t
∗
,
y
)
∣
∣
1
,
(
3
)
x
t
∗
=
x
t
−
1
+
α
∗
s
i
g
n
(
g
t
+
1
)
,
(
4
)
g_{t+1}={\mu}g_{t}+\frac{{\nabla}_xJ(x_t^*,y)}{||{\nabla}_xJ(x_t^*,y)||_1},(3) \\ x_t^*=x_{t-1}+{\alpha}*sign(g_{t+1}),(4)
gt+1=μgt+∣∣∇xJ(xt∗,y)∣∣1∇xJ(xt∗,y),(3)xt∗=xt−1+α∗sign(gt+1),(4)
g
t
+
1
g_{t+1}
gt+1在梯度方向上累积了速度矢量。对梯度正则化的原来在于每次迭代中变化幅度的范围不一样。
那么为什么要加入动量?
之前我们通过动量融入梯度下降法中加速了梯度下降和收敛。在文献[20]中表明随机梯度上升中,用动量来更新同样是有效的。
集合模型的方法中在比赛中很常用,作者也使用集合模型的方法来产生对抗样本。作者对logit进行了融合,即输入softmax前的值。
l
(
x
)
=
∑
k
=
1
k
w
k
∗
l
k
(
x
)
,
(
5
)
l(x)=\sum_{k=1}^k w_k*l_k(x),(5)
l(x)=k=1∑kwk∗lk(x),(5)
损失函数定义为
J
(
x
,
y
)
=
−
1
y
∗
l
o
g
(
s
o
f
t
m
a
x
(
l
(
x
)
)
)
J(x,y)=-1_y *log(softmax(l(x)))
J(x,y)=−1y∗log(softmax(l(x)))
作者发现融合logit比融合预测值和loss值效果更好。
MI-FGSM算法如下:
[12]Y. Liu, X. Chen, C. Liu, and D. Song. Delving into transferable adversarial examples and black-box attacks. In ICLR,2017. 1, 2, 3, 4, 6, 7, 10
[20] I. Sutskever, J. Martens, G. Dahl, and G. Hinton. On the importance of initialization and momentum in deep learning.In ICML, 2013. 3
欢迎关注:CVpython,一个专注于分享Python教程和CV算法的公众号