我们希望类神经网络,不仅正确率要高,还要能应付来自人类的恶意。
How to attack
image
把benign image加入一个微小的、人肉眼看不到的杂讯后,attacked image放到ResNet-50中的分类结果是"star fish":
也不是随便加入杂讯就能让图片分类的结果发生大的改变:
How to Attack:
如何计算x和x0之间的距离,即如何计算d(x0,x)?
对于x变化的要求是,人类无法感知到x和x0之间的差别,所以Ɛ的值取决于人类的感知能力。关于x和x0之间距离的定义,在影像上,可以使用L2-norm和L-infinity(better)两种定义去计算x和x0之间的距离:
使用gradient descent的方法去minimize Loss。不同attack的方法,它们不一样的地方要么是constraint不一样,要么是optimization的方法不一样,但通常都是用gradient descent。
下面介绍一个最简单的attack的方法:
Fast Gradient Sign Method (FGSM),FGSM做gradient descent的时候只update一次参数,update后的结果会落在下图中蓝色方框的四个角落。这个方法可以过作业的simple baseline。
多跑几个Iteration结果会更好——Iterative FGSM,可以过作业的medium baseline
多跑几个iteration的坏处是可能会出界,出界了进行fixed,把x拉回范围内即可
到目前为止介绍的都是白箱攻击的方法,但是白箱攻击需要知道model的参数,在不知道model参数情况下的攻击叫做黑箱攻击。
下面介绍怎么做黑箱攻击:
情况①:have the training data of the target network
-
-
- Train a proxy network yourself.
- Using the proxy network to generate attacked objects
-
情况②:没有target network的训练资料。此时我们可以拿一些data当做target network的输入,然后得到data对应的输出,这些输入输出就可以被用来当做training data。其余步骤同情况①。
黑箱攻击在Non-targeted attack的时候比较容易成功,文献上的结果如下:
增加黑箱攻击测成功率:使用Ensemble Attack。Ensemble Attack的方法是,假设当前有上图中的五个模型,要对ResNet-152做Ensemble Attack,那么对除了ResNet-152之外的四个模型做攻击,如果都成功了,再用这张attacked image去攻击ResNet-152。下图中对角线的数据是黑箱攻击的数据,其余是白箱攻击的数据:
为什么attack很容易成功,有一个观点是data是造成attack会成功的元凶 ,而不是model。attack会成功这件事情,不止出现在deep learning上,在linear的network、SDM上也attack会成功。
One pixel attack && universal adversarial attack
attack的signal越小越好,one pixel attack是可以成功的(不过并没有很powerful):
universal adversarial attack:用一个signal成功攻击所有的图片,universal adversarial attack是有可能成功的
Beyond images
- speech processing
- natural language processing
Attack in the Physical World
从三维的世界中攻击数位的世界时,需要考虑很多问题,例如:
- An attacker would need to find perturbations that generalizebeyond a single image.
- Extreme differences between adjacent pixels in the perturbationare unlikely to be accurately captured by cameras.
- It is desirable to craft perturbations that are comprisedmostly of colors reproducible by the printer.
不只有人脸辨识可以攻击成功(上图中男子带上特制的眼镜后,可以被辨识为右边的女子),例如下图:
其他的一些攻击方式:
Adversarial Reprogramming:放一个东西去“寄生”原来的系统,让系统做它本来不想做的事情。
“Backdoor” in Model:在模型里面开一个“后门”,攻击从训练阶段就开始了(要攻击成功的话还是要遵守某一些限制)。在训练资料里面加一些特别的、人看起来没有问题但实际上有问题的资料。
Defense
Passive defense
模型不动,在模型前面加一个“盾牌”,即filter:
“盾牌”的作用可以是把图片做一个非常轻微的模糊化,只做模糊化就有可能能够非常有效的挡住adversarial attack:
“盾牌”也可以是一个image compress或者generator:
passive defense的弱点:一旦被攻击方知道passive defense的方式,这个defense就会失去作用
Proactive defense
主动的防御是指在训练模型的时候,要训练一个比较不容易被攻破的模型。
Adversarial Training有个非常大的问题,它不一定能够挡得住新的攻击的方式。也就是说如果实际上攻击model的方法,并没有在Adversarial Training的时候被考虑过,那Adversarial Training不见得能够挡住这个attack。
Adversarial Training的另一个问题是,它需要比较多的运算资源。
Concluding Remarks
Attack: given the network parameters, attack is very easy.
Even black box attack is possible
Defense: Passive & Proactive
Attack / Defense are still evolving.