机器学习笔记10(Attack and Defense)
Attack and Defense
1、什么是Attack and Defense
2、Attack 怎么做?
Attack 需要做什么? / 目标是什么?
1、什么是Attack and Defense
在实际的机器学期分类器中,更多的情况是用在实际生活中,很多时候实际系统会遇到很多的干扰、甚至是人为的蓄意攻击。如垃圾邮件等,我们需要让机器判别这些恶意攻击。
在这里主要学习Attack 。

2、Attack 怎么做?
1、Attack 需要做什么?
在训练好的network中,给一个input,会得到一个正确的 output 和一个 confidence,一般而言这个结果是正确的。
而Attack 则会在 input 中加入一个干扰,使得最后得到的 output 与实际的结果不符合。

1)在 network 的训练中,我们会寻找参数 𝜃 ,使得 loss function 的值最小,即 output 与实际结果的误差最小。
2)但在无目标的 Attack 中,对于一个确定的 network,我们需要使得得到的 output 与实际结果偏差越大越好(没有想要的错误结果)。
3)在有目标的 Attack 中,对于一个确定的 network,我们则需要使得得到的结果与实际结果偏差越大越好,同时与想要的错误结果误差越小越好。
4)同时,我们的干扰应该与原来的 input 差距/距离不能太大,要在一定范围内,能让人看得到差距,但是机器不能判别的差距。

2、Attack 要怎么做?
Constraint定义
两种定义方式:
1、L2-norn:x‘ 与 x0 差值的模值
2、L-infinity: x‘ 与 x0 差值的最大值
如下图所示,右侧的方块分别为左侧方块颜色分别改变很小、单单只有一块颜色变得较深得到的。如果采用方法一来说明差距,则能得到一样的差距,但是如果采用方法二来说明差距,则会得到下面的图片与原图片差距较大。因此实际应用是使用哪种方法,则需要视情况而定。

Attack 要怎么做?
和做 network 时一样,在做 network 时,有不同的 training data 用 gradient 确定 function 的参数。
在做 attack 的时候,function是确定的,需要确定 input 的信息,也用 gradient 。

但是需要注意的是,x 是有范围的,也就是满足Constraint。在每一次 update x 的时候,判断 x 所在的范围,如果超出范围则用距离最近的范围内的 x 代替。


问题分析
如下图,原 input 可以得到 output 为一只猫,但是经过 update 50次后的 input 就得到了结果 star fish。

但事实上,两张图片的差值经放大后也并没有什么,同样的也可以被识别为其他东西。

在输入的多维向量中,任一维的改变都可能导致结果发生变化,且每一维对结果造成的影响的范围并不相同。


浙公网安备 33010602011771号