Attack ML Models
通过前面的学习,我们知道:ML的目的是“预测准确”。 比如图像识别就是要识别出一个图像是什么。 但无论我们的模型多么复杂庞大,总会有识别不准的情况。 比如:把虎斑猫图片识别成键盘。 像这样的输入数据,就是对模型的攻击。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/84ca7451c4ea4060b3fefc7c12b47210.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
为什么要攻击
从开发者的角度:找到攻击数据可以帮助改进模型。 从攻击者的角度:可以进行伪装,比如:攻击人脸识别来盗刷银行卡。
Loss Function for Attack
无目标攻击:只要NN识别错误即可。 有目标攻击:NN要把图片识别成目标结果。 约束:和原图片不能差别过大。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/44e9514dbc5d4554a9f614ce1d3ae9a9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
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...
? ![在这里插入图片描述](https://img-blog.csdnimg.cn/c49699817fdb4dbdaae8154582f9ec70.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
How to Attack
注意:
L
(
x
′
)
L(x')
L(x′)也是越小越好。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/95c545a802e44b5a9c9fa891ba24e190.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/21656ca793c94fa8b032fccab39e37e0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
Example
以虎斑猫为例:左边是原图,右边是精心设计的攻击图片。左右两张图看似一样,但相减并乘50倍后,得到噪声图。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c00b366deb8d4f5ab62773354b2f0cce.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/b4f1e2bfe0fd48f49a450d646fa8bb11.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) 但如果随机加上噪声,攻击效果就一般了。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/68667c5713a74cadb2b90f2a430e5bb2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) 这是因为:在随机方向上,NN会在一个很宽的范围内认为图片是虎斑猫。而在某些方向上,虎斑猫的范围会很窄。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3686818a41cd4db2b9750afdf5ed2758.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
攻击方法
有很多攻击方法,这里给出一种很简单的方法:Fast Gradient Sign Method(FGSM)。
FGSM
即:在梯度方向上去到最大值。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7da47a9c361641529f4f6837398806a3.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
Black Box Attack
以上都是白盒攻击:知道NN的参数,再进行攻击。 但大部分时候NN都是一个黑盒子,比如:网站。攻击方法就要发生改变。 一种方法是:我们知道了这个NN的training data,用这些training data自己训练另一个NN出来,当做替代。 数据显示:即便两个NN的模型都不一样,攻击也是有效的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5195b2e8586e4a98af638b9ed3e66088.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/9f7dc9a6b37b486c89989a716c58c8e3.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) 另一种方法:有人发现存在着一种通用的噪声图,给任意图片加上后就可以实现攻击。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2b95a78cc1e642c299f90fd8d17ac88d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
Adversarial Reprogramming
我们还可以通过攻击技术改变神经网络的用处。 比如原本是一个用于分类的网络;我们加上了一些noise,并且在图片中心防止黑白格子,其就可以对某个颜色方块数量进行区分。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c93d680369cd45c4bfabcd18ae499542.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
防御
有攻击就有防御。防御分为两种:被动防御与主动防御。
被动防御
在图片进入NN之前,可以对图片做一些过滤操作。比如:缩放、平滑化,加边框。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0fd5a6b67176487180c97b311241750f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://img-blog.csdnimg.cn/dd78b5349a8444bcadabbb36f7faad9d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
其中,有一种叫Feature Squeeze的方法:做多个预处理,集成学习,或者说查看这张图片是否被攻击过。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2affce17703043adbbedb08936a5bdf5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70) 但是,这种思路就怕预处理方法被泄露。 因为,攻击者如果知道了预处理方法,其可以将预处理作为神经网络的第一层,进行训练,再攻击。
主动防御
发现了攻击图片,就把这些图片加入训练集,再次训练。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ac989bfb46a0489890aff65c95f8b169.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JhaWdrZXI=,size_16,color_FFFFFF,t_70)
|