注:这个是笔者用于期末复习的一个简单笔记,因此难以做到全面详细,有疑问欢迎大家在评论区讨论
https://speech.ee.ntu.edu.tw/~hylee/ml/ml-course-data/attack_v3.pptx
I. Example of Attack
从某种角度来说,深度学习模型可以简单理解为各种各样的矩阵乘给叠在一起。以图像分类为例,输入的图像也是一个矩阵,那么,实际上就有可能对输入图像作出一些微小的数值上的修改(肉眼不可见的),但是却能造成网络(各种矩阵乘)的输出结果发生很大的变化。这个概念其实有点儿像数值计算中"解的稳定性",一个例子如下所示:
这里也可以将针对深度网络的攻击分为两类,一种是无目标的,只要让网络分类错误即可;一种是有目标的,需要让网络犯我们想要的错误。
当然,这里也很容易想到一个问题,如果深度网络确实如此脆弱的话(随便改下输入就能影响结果),那么根本就不存在所谓AI落地的说法。实际上网络对于一般的(自然存在的)干扰是鲁棒的:
例如这里在很强的噪声干扰下仍能识别出是一只猫。
II. Attack Approach
本文不讨论攻击的实现细节,只分析攻击的思路。我们知道,网络的训练过程是不断更新网络参数来降低损失函数的值,那么攻击的时候,网络参数是固定的,同样是降低损失函数的值,只不过此时变成了不断更新原始图像,而目标则可以理解为一个我们给定的新恶意label:
以此为思想的一种经典的攻击方法为Fast Gradient Sign Method (FGSM)。
III. Non-perceivable
攻击的时候有一个小细节,即被攻击的图像不能被人眼给很容易就察觉出来。说白了就是像素值的变化程度不能超过某个阈值,那么有两种具体的控制思路,一个是使用二范数控制图像整体的变动,一个是使用无穷范数控制像素的最大变动:
IV. Black Box Attack
上面提到的攻击有个隐藏前提,我们得知道网络的参数,才能进行梯度反传进而去修改图像,即属于一种"白盒攻击"。而如果网络参数未知的话,也还是有办法进行攻击的,这种我们称为黑盒攻击,一种思路如下:
比方说,如果有网络的训练数据的话(对面用的公开数据集),那么我们可以训练一个执行同样任务的代理网络,对代理网络进行攻击。由于任务相同数据集相同,那么此时梯度可能也是差不多的,从而实现从代理网络到实际网络的攻击。当然如果没原始训练数据的话这条路就行不通了。
V. Passive Defense
防御的话有些思路是十分直观的。例如,前面提到的攻击都是对图像进行一定的扰动,那么我们可以在将图片输入网络前先进行一些预处理(平滑、压缩、填充、再生成)等,这样就可以消掉图像中的恶意信息:
这么做有两个问题。首先就是由于训练的时候是没有这些“数据增强”的,因此会对模型的性能造成影响;第二就是如果这些防御措施也泄露了的话,那么攻击者可以直接把这些预处理步骤视为网络的一部分一起攻击。
VI. Proactive Defense
针对已知的攻击方法,进行对抗训练。可以简单理解为将被攻击的图片作为一种数据增强,从而提升网络的鲁棒性。