内容来源于论文:Adversarial Examples: Attacks and Defenses for Deep Learning,发表在IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS。
论文地址:Adversarial Examples: Attacks and Defenses for Deep Learning
该论文中对对抗攻击领域之前比较模糊的概念进行了统一,同时也概括了这个方向到目前为止比较典型的攻击、防御方法,以及基于攻击防御的应用。此外,作者还在文中对对抗样本目前面临的主要问题和未来潜在的发展方向进行了总结。
随着深度学习的快速发展,在众多机器学习领域取得了重大进步,深度学习在许多至关重要的安全环境中得到应用。但,最近几年研究者发现,输入一些精心设计的样本时,深度学习表现出极大的脆弱性,这些精心设计的样本就是对抗样本。
对抗样本(Adversarial Examples),就是向原始样本中添加一些人眼无法察觉的噪声,添加这些噪声后不会影响人类的识别,但是却很容易欺骗深度神经网络(Deep Neural Networks, DNNs),使其作出与正确结果完全不同的判定。对抗样本的存在导致了DNNs的脆弱性,成为了DNNs在许多关键的安全环境上的主要风险之一。
深度学习广泛地被当作**『黑箱技术』**–它性能好,但是却不知道为什么性能好,具有不可解释性。通过研究对抗样本,有助于提高神经网络的鲁棒性和可解释性。
从威胁模型(Threat Model)和扰动(Perturbation)两个维度对产生对抗样本的方法进行分类,可分类为:
详细分类情况:
假正例攻击(False Positive Attacks) 与 假反例攻击(False Negative Attacks)
假正例攻击(False Positive Attacks)是指,生成一个反例(negative sample)但被攻击模型误分类为正例(positive sample),属于第 Ⅰ 类错误。例如:一张人类不可识别的图像,被DNNs以高置信度分类为某一类。如下图4中,将人类不能识别的图像识别成知更鸟
假反例攻击(False Negative Attacks)是指,生成一个正例(positive sample)但被攻击模型误分类为反例(negative sample),这是典型的第 Ⅱ 类错误。例如:人类能够正常识别,但是神经网络不能识别或者对其误分类。大多数对抗样本的生成方法都是假反例攻击。如下图3中,将熊猫识别成长臂猿
白盒攻击(White Box Attacks) 与 黑盒攻击(Black Box Attacks)
目标攻击(Target Attack) 与 无目标攻击(Non-target Attack)
单步攻击(One-time Attack) 与 迭代攻击(Iteration Attack)
个体攻击(Individual Attack) 与 普适性攻击(Universal Attack)
优化扰动(Optimized Perturbation) 与 约束扰动(Constrained Perturbation)
Szegedy 等人在2014年首次提出了使用对抗样本攻击深度神经网络。他们通过L-BFGS 方法产生对抗样本,方法如下所示。
min x ′ c ∥ η ∥ + J θ ( x ′ , l ′ ) s.t. x ′ ∈ [ 0 , 1 ] \begin{array}{ll}{\min _{x^{\prime}}} & {c\|\eta\|+J_{\theta}\left(x^{\prime}, l^{\prime}\right)} \\ {\text {s.t.}} & {x^{\prime} \in[0,1]}\end{array} minx′s.t.c∥η∥+Jθ(x′,l′)x′∈[0,1]
为了找到合适的参数C,L-BFGS算法通过线性搜索C > 0的所有情况,找到C 的近似值。实验表明,生成的对抗样本也可以推广到不同的模型和不同的训练数据集中。
GoodFellow 等人设计了一种能有效计算对抗扰动的方法,而求解对抗扰动的方法被称为Fast Gradient Sign Method(FGSM)。
FGSM方法中对抗样本 X ′ X' X′ 是原始样本和噪声的合成体,即 X ′ = X + η X^{\prime}= X + \eta X′=X+η,如下图所示,其中噪声可以使用反向传播(back-propagation,BP)算法进行计算。
其中噪声的计算方法为 η = ϵ ⋅ sign ( ∇ x L ( f ( θ , x ) , y t r u e ) ) \eta=\epsilon ·\operatorname{sign}\left(\nabla_{x} L(f({\theta},x), y^{true})\right) η=ϵ⋅sign(∇xL(f(θ,x),ytrue)), ϵ \epsilon ϵ 表示扰动的大小。
如下图所示,左图被神经网络仅以57.7%的置信度识别成大熊猫,添加噪声后生成的对抗样本(右图)被神经网络以高达99.3%的置信度识别成了长臂猿。
基于FGSM的几个改进攻击方法:
在FGSM方法上改进对抗样本噪声的计算方法,该方法的噪声 η \eta η 计算方法更为简便: η = ∇ x J ( θ , x , l ) \eta=\nabla_{x} J(\theta, x, l) η=∇xJ(θ,x,l) 。
FGSM算法是无目标攻击,以下是其有目标攻击方法
x ′ = x − ϵ sign ( ∇ x J ( θ , x , l ′ ) ) x^{\prime}=x-\epsilon \operatorname{sign}\left(\nabla_{x} J\left(\theta, x, l^{\prime}\right)\right) x′=x−ϵsign(∇xJ(θ,x,l′))
使用FGSM方法进行对抗训练后的神经网络模型,在面对白盒攻击时比黑盒攻击更为鲁棒,所以提出了R-FGSM 增加随机梯度训练,用于防御对抗训练。
x t m p = x + α ⋅ sign ( N ( 0 d , I d ) ) x ′ = x t m p + ( ϵ − α ) ⋅ sign ( ∇ x t m p J ( x t m p , l ) ) \begin{aligned} x_{t m p} &=x+\alpha \cdot \operatorname{sign}\left(\mathcal{N}\left(\mathbf{0}^{d}, \mathbf{I}^{d}\right)\right) \\ x^{\prime} &=x_{t m p}+(\epsilon-\alpha) \cdot \operatorname{sign}\left(\nabla_{x_{t m p}} J\left(x_{t m p}, l\right)\right) \end{aligned} xtmpx′=x+α⋅sign(N(0d,Id))=xtmp+(ϵ−α)⋅sign(∇xtmpJ(xtmp,l))
其中 α α α 和 ϵ \epsilon ϵ 是参数,且 α < ϵ α <\epsilon α<ϵ。
上述方法是假设对抗数据能够直接输入DNNs,但实际生活中并不是这样的情况,一般是我们通过诸如相机等这些设备直接上传图像,DNNs针对上传的图像进行识别。
BIM是一个小步迭代的攻击方法,在每一次迭代中为了避免大的改变,所以使用 C l i p Clip Clip 函数进行计算,经过多次迭代后获得对抗样本,迭代方法如下。
x 0 = x x n + 1 = Clip x , ξ { x n + ϵ sign ( ∇ x J ( x n , y ) ) } \begin{aligned} x_{0} &=x \\ x_{n+1} &=\operatorname{Clip}_{x, \xi}\left\{x_{n}+\epsilon \operatorname{sign}\left(\nabla_{x} J\left(x_{n}, y\right)\right)\right\} \end{aligned} x0xn+1=x=Clipx,ξ{xn+ϵsign(∇xJ(xn,y))}
其中 C l i p x , ξ { x ′ } = min { 255 , x + ξ , max { 0 , x − ϵ , x ′ } } Clip_{x, \xi}\left\{x^{\prime}\right\}=\min \left\{255, x+\xi, \max \left\{0, x-\epsilon, x^{\prime}\right\}\right\} Clipx,ξ{x′}=min{255,x+ξ,max{0,x−ϵ,x′}}。
ILLC的方法和BIM类似,BIM是无目标攻击,ILLC是BIM针对有目标攻击做的改进,用于产生特定的类别图像。
x 0 = x y L L = arg min y { p ( y ∣ x ) } x n + 1 = C l i p x , ϵ { x n − ϵ sign ( ∇ x J ( x n , y L L ) ) } \begin{aligned} x_{0} &=x \\ y_{L L} &=\arg \min _{y}\{p(y | x)\} \\ x_{n+1} &=C l i p_{x, \epsilon}\left\{x_{n}-\epsilon \operatorname{sign}\left(\nabla_{x} J\left(x_{n}, y_{L L}\right)\right)\right\} \end{aligned} x0yLLxn+1=x=argymin{p(y∣x)}=Clipx,ϵ{xn−ϵsign(∇xJ(xn,yLL))}
对抗攻击方法中最常使用的是限制扰动 l ∞ l_∞ l∞ 或 l 2 l_2 l2 范数的值,以使对抗样本中的扰动无法被人察觉。但 JSMA 提出了限制 l 0 l_0 l0 范数的方法来产生对抗样本,即仅改变几个像素值而不是扰动整张图像。
实验表明,该方法只需修改一个样本中4.02%特征就可以达到97% 的置信度。但,由于计算雅克比矩阵比较慢,导致该方法产生对抗样本的速度非常慢。
Deepfool算法的目的是寻找可以使分类器产生误判的最小扰动。实验表明,通过Deepfool算法生成的对抗样本的扰动比FGSM更小,但该算法所添加的扰动大小全靠作者自己设计,并不可控,这也是基于梯度的一系列算法的共同问题。
CPPN EA(Compo-sitional Pattern-Producing Network-encoded EA, CPPN EA)方法使用了进化(EA)算法产生对抗样本。通过该方法产生的对抗样本会被DNNs以99%的置信度进行误分类。
下图中举例的图像是典型的假正例攻击(False Positive Attack),也就是本身没有意义,人类无法识别,但DNNs却以较高置信度判定其属于某一类别的图像。
Carlini 和Wagner 为了攻击防御性蒸馏(Defensive distillation)网络提出了三种对抗攻击方法,通过限制 l 0 l_0 l0、 l 2 l_2 l2 和 l ∞ l_∞ l∞ 范数使得扰动无法被察觉。实验证明蒸馏网络完全无法防御这三种攻击。该算法生成的对抗扰动可以从unsecured网络迁移到secured网络上,从而实现黑箱攻击。实验表明,C&W攻击方法能有效攻击现有的大多数防御方法。
和上述基于梯度的攻击方法不同,ZOO方法不使用梯度训练直接对模型进行攻击而产生对抗样本,属于黑盒攻击。
因为是黑盒攻击,不需要计算梯度,但需查询和评估梯度,基于此,Chen 等人提出ZOO-ADAM 算法,即随机选择一个变量更新对抗样本。实验表明,ZOO方法实现了与C&W攻击方法一样的性能。
DeepFool 攻击方法提出者Moosavi-Dezfooli 等人在DeepFool基础上提出了通用扰动(Universal Perturbation),对于每一次迭代使用DeepFool 方法获得一个最小的样本扰动,直到大多数数据样本能够欺骗神经网络迭代束。如下图所示,这种通用扰动可以让一个分类器对所有图片错误分类。
Sabour 等人提出的一种有目标攻击方法,主要通过最小化神经网络内部feature的差距来产生对抗样本。
为了生成各种各样的对抗样本,Rozsa 等人提出Hot/Cold 方法,他们将目标标签 l ′ l' l′ 定义为热(Hot)类,将原始标签 l l l 定义为冷(Cold)类。在每次迭代中,将样本移向目标(Hot)类,同时远离原始(Cold)类。
他们定义了一个新的衡量方法PASS(Psychometric Perceptual Adversarial Similarity Score, PASS)作为衡量攻击前后样本差异的新指标。PASS分为两步:
(1)将修改后的图像与原始图像对齐;
(2)测量对齐后的图像与原始图像的相似性。
结果表明,生成的对抗样本与FGSM 相当,并具有多样性。
Zhao 等人使用GAN方法生成对抗样本,使得结果看起来更自然。该方法通过最小化诸如「Feature Adversary」之类的内部表示距离来产生对抗噪声。该方法不需要使用神经网络的梯度,被当做黑盒攻击。
该论文提出了模型集成的概念,作者基于多个不同模型生成对抗样本,并通过对比实验,总结出模型集成的方法,可以有效提高对抗样本的泛化能力。
Carlini 等人使用Ground-Truth Attack方法最小化 l 1 l_1 l1 和 l ∞ l_∞ l∞ 扰动以产生对抗样本。为了提高性能,该方法使用C&W攻击方法产生的对抗样本作为初始样本,然后在后续迭代中使用Reluplex迭代找到最小扰动的对抗样本。
根据单步/迭代 和 白盒/黑盒攻击对以上攻击方法进行总结,如下图所示:
以下只列了举常见防御方法,防御方法还在不断发展中,暂时还没有系统的方法。
以下列举了几个对抗攻击的应用实例,详细示例可参看原文:
本文介绍了对抗样本的分类情况,以及常用的对抗样本生成方法,对于对抗攻击的防御算法和相关应用实例没有展开,有兴趣的朋友可以阅读原文查看。