Attack ML Models
通过前面的学习,我们知道:ML的目的是“预测准确”。 比如图像识别就是要识别出一个图像是什么。 但无论我们的模型多么复杂庞大,总会有识别不准的情况。 比如:把虎斑猫图片识别成键盘。 像这样的输入数据,就是对模型的攻击。
为什么要攻击
从开发者的角度:找到攻击数据可以帮助改进模型。 从攻击者的角度:可以进行伪装,比如:攻击人脸识别来盗刷银行卡。
Loss Function for Attack
无目标攻击:只要NN识别错误即可。 有目标攻击:NN要把图片识别成目标结果。 约束:和原图片不能差别过大。
Constraint
PS:L2范数的公式错了。更正:
d
(
x
,
x
′
)
=
(
△
x
1
)
2
+
(
△
x
2
)
2
+
(
△
x
3
)
2
.
.
.
d(x,x')=\sqrt{(△x_1)^2+(△x_2)^2+(△x_3)^2...}
d(x,x′)=(△x1?)2+(△x2?)2+(△x3?)2...
?
How to Attack
注意:
L
(
x
′
)
L(x')
L(x′)也是越小越好。
Example
以虎斑猫为例:左边是原图,右边是精心设计的攻击图片。左右两张图看似一样,但相减并乘50倍后,得到噪声图。 但如果随机加上噪声,攻击效果就一般了。 这是因为:在随机方向上,NN会在一个很宽的范围内认为图片是虎斑猫。而在某些方向上,虎斑猫的范围会很窄。
攻击方法
有很多攻击方法,这里给出一种很简单的方法:Fast Gradient Sign Method(FGSM)。
FGSM
即:在梯度方向上去到最大值。
Black Box Attack
以上都是白盒攻击:知道NN的参数,再进行攻击。 但大部分时候NN都是一个黑盒子,比如:网站。攻击方法就要发生改变。 一种方法是:我们知道了这个NN的training data,用这些training data自己训练另一个NN出来,当做替代。 数据显示:即便两个NN的模型都不一样,攻击也是有效的。 另一种方法:有人发现存在着一种通用的噪声图,给任意图片加上后就可以实现攻击。
Adversarial Reprogramming
我们还可以通过攻击技术改变神经网络的用处。 比如原本是一个用于分类的网络;我们加上了一些noise,并且在图片中心防止黑白格子,其就可以对某个颜色方块数量进行区分。
防御
有攻击就有防御。防御分为两种:被动防御与主动防御。
被动防御
在图片进入NN之前,可以对图片做一些过滤操作。比如:缩放、平滑化,加边框。
其中,有一种叫Feature Squeeze的方法:做多个预处理,集成学习,或者说查看这张图片是否被攻击过。 但是,这种思路就怕预处理方法被泄露。 因为,攻击者如果知道了预处理方法,其可以将预处理作为神经网络的第一层,进行训练,再攻击。
主动防御
发现了攻击图片,就把这些图片加入训练集,再次训练。
|