摘要
机器学习训练出来的模型存在被攻击的可能,而且是容易被攻击的,攻击包括白盒攻击和黑盒攻击。白盒攻击采用逆向训练的方法,固定网络的参数,寻找有效的干扰信号,因此白盒攻击的前提需要知道网络的参数。研究表明,对网络一无所知也能够攻击成功。对所有攻击可以采取增加过滤器或在训练网络时把攻击成功的图像作训练集数据等措施防御。
1 White Box Attack
因为很多机器学习的模型,应用到侦测带有恶意的东西,如监测垃圾邮件、恶意代码、网络入侵等,所以有可能垃圾邮件会做更改试图骗过监测模型。这就要求机器学习的模型最好能够防住恶意攻击,识别出精心编写的恶意输入。
1.1 Loss Function for Attack
依旧使用Loss function:
L
t
r
a
i
n
(
θ
)
=
C
(
y
0
,
y
t
r
u
e
)
L_{train}(\theta)=C(y^0,y^{true})
Ltrain?(θ)=C(y0,ytrue)训练网络。训练时输入固定不变,不断调整参数,直至训练出一个准确率高的模型。
- Non-targeted Attack: 此种攻击寻找一个输入图片
x
′
x'
x′,得到上述训练好的神经网络的输出
y
′
y'
y′,使
y
′
y'
y′与
y
t
r
u
e
y^{true}
ytrue的交叉熵越大越好,也就是分类结果与正确结果相差越大越好。记Non-targeted Attack的损失函数为
L
(
x
′
)
=
?
C
(
y
′
,
y
t
r
u
e
)
L(x')=-C(y',y^{true})
L(x′)=?C(y′,ytrue)
- Targeted Attack: 有目标攻击希望输出是预定的目标,且不要被发现,也就是要与正确结果的交叉熵越大越好、与目标结果的交叉熵越小越好。记Targeted Attack的损失函数为
L
(
x
′
)
=
?
C
(
y
′
,
y
t
r
u
e
)
+
C
(
y
′
,
y
f
a
l
s
e
)
L(x')=-C(y',y^{true})+C(y',y^{false})
L(x′)=?C(y′,ytrue)+C(y′,yfalse),调节输入时有约束:
d
(
x
0
,
x
′
)
≤
ε
d(x^0,x')\leq\varepsilon
d(x0,x′)≤ε,只要
x
0
x^0
x0与
x
′
x'
x′差距不超过
ε
\varepsilon
ε,即可不被发现。
1.2 Constraint
对于有目标攻击,调节输入时有约束:
d
(
x
0
,
x
′
)
≤
ε
d(x^0,x')\leq\varepsilon
d(x0,x′)≤ε。既然是攻击,就要求输入的图像应该被人类判定为正确类型,做到以假乱真。约束应该根据不同的输入类型如影像、文字、语音等等做不同的“差距”的定义,定义“差距”涉及到人类如何判定两张图像很像、两段声音讯号很像或两段文字很像。约束中函数的“差距”有多种定义方式,本文介绍常见的两种,L2-norm和L-infinity。记
Δ
x
=
x
′
?
x
0
\Delta x=x'-x^0
Δx=x′?x0
- L2-norm:
d
(
x
0
,
x
′
)
=
(
Δ
x
1
)
2
+
(
Δ
x
2
)
2
+
(
Δ
x
3
)
2
.
.
.
d(x^0,x')=(\Delta x_1)^2+(\Delta x_2)^2+(\Delta x_3)^2...
d(x0,x′)=(Δx1?)2+(Δx2?)2+(Δx3?)2...
- L-infinity:
d
(
x
0
,
x
′
)
=
max
?
{
Δ
x
1
,
Δ
x
2
,
Δ
x
3
,
.
.
.
}
d(x^0,x')=\max\{\Delta x_1,\Delta x_2,\Delta x_3,...\}
d(x0,x′)=max{Δx1?,Δx2?,Δx3?,...}
Tip: 在攻击图像的某些模型时,L-infinity比较精确。在下图中的图像仅有4个像素,展成12维的向量做输入,给向量做调整,上方图像是给12维中的每一维都做微小的改变,在视觉上是完全看不出来与原图像有任何不同;下方图像是仅对第四个像素的rgb数值做一些改动。存在这样一种情况:上方图像与原图像的L2差距等于下方图像与原图像的L2差距,但上方图像能做到以假乱真,而下方图像能看到与原图像的差异。计算两者的L-infinity的值得到很大不同,可见L-infinity比较精确。不过,还要具体问题具体分析。
1.3 How to Attack
攻击需要找到恶意的输入,训练方法类似于神经网络的训练,只不过将网络的参数
θ
\theta
θ固定,更新输入找到使损失函数最小的那个输入。使用梯度下降法训练,以原图像作为初始化输入,迭代计算梯度并移动。注意,在计算梯度时先不考虑约束。 接下来对迭代中每一步的
x
t
x^t
xt限制,判断一下
x
t
x^t
xt与
x
0
x^0
x0的差距是否小于
ε
\varepsilon
ε。如果不满足约束,则定义一个函数:穷举所有满足约束的
x
x
x,选择与
x
t
x^t
xt最相近的
x
x
x做替换,就用符合约束的
x
x
x来取代不符合约束的
x
t
x^t
xt。
x
?
=
a
r
g
min
?
d
(
x
0
,
x
′
)
≤
ε
L
(
x
′
)
x^*=arg\min\limits_{d(x^0,x')\leq\varepsilon}L(x')
x?=argd(x0,x′)≤εmin?L(x′)
For t = 1 to T
x
t
=
x
t
?
1
?
η
?
L
(
x
t
?
1
)
x^t=x^{t-1}-\eta\nabla L(x^{t-1})
xt=xt?1?η?L(xt?1) If
d
(
x
0
,
x
t
)
>
ε
d(x^0,x^t)>\varepsilon
d(x0,xt)>ε
x
t
=
f
i
x
(
x
t
)
x^t=fix(x^t)
xt=fix(xt)
def
f
i
x
(
x
t
)
fix(x^t)
fix(xt) For all
x
x
x fulfill
d
(
x
0
,
x
)
≤
ε
d(x^0,x)\leq\varepsilon
d(x0,x)≤ε Return the one closest to
x
t
x^t
xt 上图为
f
i
x
(
x
t
)
fix(x^t)
fix(xt)的示意图。对那些不符合约束的点,对于L2-norm,它们的替换点为圆心与
x
t
x^t
xt连线与圆的交点;对于L-infinity,观察
x
t
x^t
xt在x轴或y轴方向超出的情况,如果x轴超出而y轴未超出,则取y轴数值不变、x轴为
ε
\varepsilon
ε的点,其他情况同理。
1.4 Example
以小虎斑猫的图像实做一下,使用已经训练好的50层的ResNet,而这个网络其实是很强的,如果给输入加入一些随机的噪声,该网络还是可以给出很好的辨识结果。但是如果图像加入了经过梯度下降计算出来的噪声,网络无法抵御恶意攻击。 为何深度神经网络抵御攻击会有这样的表现? 因为随机噪声作用的维度上,为小虎斑猫的信心分数高的范围很大。如果随机噪声变大一些,代表移动范围再广一些,可能波斯猫的信心分数高,总之能辨识出是猫。但是训练出的模型是非常高的维度,225×225×3等等这样高的维度,其中存在一些维度,小虎斑猫的信心分数高的范围非常狭窄,以至于稍微增加一些噪声,图像就被辨识为其他不相干的东西。
至于为何DNN模型中存在这样的维度,是一个研究方向。
1.5 Attack Approaches
攻击方法多种多样,变化主要是在约束条件上定义不同的“差距”和定义不同的优化算法来使损失函数最小化。下面介绍一个简单的攻击方法Fast Gradient Sign Method(FGSM)。 FGSM只需更新一次,并且步长为增加一个
ε
\varepsilon
ε或减小一个
ε
\varepsilon
ε,移动的方向只与梯度的方向有关,而且和梯度的方向相反。
2 Black Box Attack
2.1 基本思想
第一章中所有方法都需要知道网络的参数,因此有人会想那不公开网络的参数就可以保障模型的高可靠了。实则不然。 黑盒攻击只需知道训练集,攻击者利用该训练集训练出一个Proxy Network,然后使用这个Proxy Network找出能攻击Proxy Network的输入,很大可能这个输入也能成功攻击黑盒子。 甚至连训练集也得不到的情况,也能黑盒攻击。做法是给模型输入大量的数据,收集输出结果,用这些数据训练Proxy Network,训练出以假乱真的输入,结果大概率能攻击成功。 被攻击的网络可以是任何架构的网络、甚至是决策树与支持向量机。
2.2 Universal Adversarial Attack
通常,要为每一张不同的图像,加上不同的噪声。此种攻击找到一个万能的噪声,给输入图像加入该噪声,会使大部分图像的辨识结果出错。
3 Defense
防御分为两大类,被动防御与主动防御。被动防御不改变网络,只在网络外面加一层保护罩,做特殊的Anomaly Detection。主动防御则在训练模型时想到其可能被攻击,对网络做一些改变。
3.1 Passive Defense
被动防御在图像输入网络前经过一个过滤器,过滤器也没有很复杂。比如Smoothing,它的作用是改变起干扰作用的方向上的信号,使它们失效。其实杂讯的攻击,只在一些方向上可以成功。再比如,先将输入随机缩放,再给缩放后的图像加一些边框,它的作用也是破坏了各个方向上的干扰信号。
3.2 Proactive Defense
主动防御将漏洞找出来并补上。做法是在正常训练结束后,再训练迭代T次,在这T次中每一次都将N张训练集图像的恶意攻击图像找出来(使用某一个攻击算法A),把这些攻击成功的图像标上正确标记,加到训练集中,去训练模型。这样重复T次,最后的结果是可以防住攻击算法A,很可惜,往往防不住攻击算法B。主动防御类似增加训练集数据的方法。 防御至今仍是困难的,尚待解决的问题。
4 总结与展望
文章介绍了对机器学习的模型的攻击与防御,重点介绍了攻击步骤、基本思想和概念,对攻击能够成功的原因进行原理上的解释。而防御作为至今还未能有效解决的问题,文章介绍了一些防御策略,解释防御有效的原因,并介绍主动防御的训练过程。
|