机器学习笔记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‘ 与 x差值的模值 

                      2、L-infinity: x‘ 与 x差值的最大值

          如下图所示,右侧的方块分别为左侧方块颜色分别改变很小、单单只有一块颜色变得较深得到的。如果采用方法一来说明差距,则能得到一样的差距,但是如果采用方法二来说明差距,则会得到下面的图片与原图片差距较大。因此实际应用是使用哪种方法,则需要视情况而定。

                  

             Attack 要怎么做?

          和做 network 时一样,在做 network 时,有不同的 training data 用 gradient 确定 function 的参数。

          在做 attack 的时候,function是确定的,需要确定 input 的信息,也用 gradient 。

             

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

                     

                     

         问题分析 

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

                  

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

                   

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

                   

 

posted @ 2020-07-02 10:21  Haozi_D17  阅读(314)  评论(0)    收藏  举报