[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning

对抗样本:深度学习的攻击和防御

内容来源于论文: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)两个维度对产生对抗样本的方法进行分类,可分类为:

[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning_第1张图片
图1-对抗样本分类

详细分类情况:

  1. 假正例攻击(False Positive Attacks) 与 假反例攻击(False Negative Attacks)

    • 假正例攻击(False Positive Attacks)是指,生成一个反例(negative sample)但被攻击模型误分类为正例(positive sample),属于第 Ⅰ 类错误。例如:一张人类不可识别的图像,被DNNs以高置信度分类为某一类。如下图4中,将人类不能识别的图像识别成知更鸟

    • 假反例攻击(False Negative Attacks)是指,生成一个正例(positive sample)但被攻击模型误分类为反例(negative sample),这是典型的第 Ⅱ 类错误。例如:人类能够正常识别,但是神经网络不能识别或者对其误分类。大多数对抗样本的生成方法都是假反例攻击。如下图3中,将熊猫识别成长臂猿

  2. 白盒攻击(White Box Attacks) 与 黑盒攻击(Black Box Attacks)

    • 白盒攻击(White Box Attacks)假定攻击者可以完全访问他们正在攻击的神经网络模型的结构和参数,包括训练数据,模型结构,超参数情况,激活函数,模型权重等。
    • 黑盒攻击(black-box attacks)假定攻击者不能访问神经网络模型,只能访问被攻击模型的输出(标签和置信度)。
  3. 目标攻击(Target Attack) 与 无目标攻击(Non-target Attack)

    • 目标攻击(Target Attack)生成的对抗样本被DNNs误分类为某个指定类别。目标攻击一般发生在多分类问题中。
    • 无目标攻击(non-target attack)生成的对抗样本识别结果和原标注无关,即只要攻击成功就好,对抗样本最终属于哪一类不做限制。因为无目标攻击有更多的选择和更大的输出范围,所以比目标攻击更易实现。
  4. 单步攻击(One-time Attack) 与 迭代攻击(Iteration Attack)

    • 单步攻击(One-time Attack)只需一次优化即可生成对抗样本。
    • 迭代攻击(Iteration Attack)需要多次更新对抗样本。迭代攻击生成的对抗样本比单步攻击的攻击效果更好,但迭代攻击需要更多的时间生成对抗样本。
  5. 个体攻击(Individual Attack) 与 普适性攻击(Universal Attack)

    • 个体攻击(Individual Attack)对于每个输入的原始数据添加不同的扰动。大多数攻击方法都属于个体攻击。
    • 普适性攻击(Universal Attack)对整个数据集训练一个通用的扰动。
  6. 优化扰动(Optimized Perturbation) 与 约束扰动(Constrained Perturbation)

    • 优化扰动(Optimized Perturbation)表示扰动大小作为优化过程中的优化目标。该方法旨在生成人类无法识别情况下的最小化扰动的对抗样本。
    • 约束扰动(Constrained Perturbation)表示所添加扰动仅需满足约束即可,该方法只要求扰动足够小。

Ⅲ. 常见攻击方法

1. L-BFGS Attack

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} minxs.t.cη+Jθ(x,l)x[0,1]

为了找到合适的参数C,L-BFGS算法通过线性搜索C > 0的所有情况,找到C 的近似值。实验表明,生成的对抗样本也可以推广到不同的模型和不同的训练数据集中。

2. Fast Gradient Sign Method (FGSM)

GoodFellow 等人设计了一种能有效计算对抗扰动的方法,而求解对抗扰动的方法被称为Fast Gradient Sign Method(FGSM)。

FGSM方法中对抗样本 X ′ X' X 是原始样本和噪声的合成体,即 X ′ = X + η X^{\prime}= X + \eta X=X+η,如下图所示,其中噪声可以使用反向传播(back-propagation,BP)算法进行计算。

[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning_第2张图片
图2-FGSM

其中噪声的计算方法为 η = ϵ ⋅ 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%的置信度识别成了长臂猿。

[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning_第3张图片
图3-FGSM生成对抗样本

基于FGSM的几个改进攻击方法:

2.1 Fast Gradient Value (FGV)

在FGSM方法上改进对抗样本噪声的计算方法,该方法的噪声 η \eta η 计算方法更为简便: η = ∇ x J ( θ , x , l ) \eta=\nabla_{x} J(\theta, x, l) η=xJ(θ,x,l)

2.2 One-step Target Class Method (OTCM)

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))

2.3 RAND-FGSM (R-FGSM)

使用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 α<ϵ

3. Basic Iterative Method (BIM)

上述方法是假设对抗数据能够直接输入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}}

4. Iterative Least-Likely Class Method (ILLC)

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(yx)}=Clipx,ϵ{xnϵsign(xJ(xn,yLL))}

5. Jacobian-based Saliency Map Attack (JSMA)

对抗攻击方法中最常使用的是限制扰动 l ∞ l_∞ l l 2 l_2 l2 范数的值,以使对抗样本中的扰动无法被人察觉。但 JSMA 提出了限制 l 0 l_0 l0 范数的方法来产生对抗样本,即仅改变几个像素值而不是扰动整张图像。

实验表明,该方法只需修改一个样本中4.02%特征就可以达到97% 的置信度。但,由于计算雅克比矩阵比较慢,导致该方法产生对抗样本的速度非常慢。

6. DeepFool

Deepfool算法的目的是寻找可以使分类器产生误判的最小扰动。实验表明,通过Deepfool算法生成的对抗样本的扰动比FGSM更小,但该算法所添加的扰动大小全靠作者自己设计,并不可控,这也是基于梯度的一系列算法的共同问题。

7. CPPN EA Fool

CPPN EA(Compo-sitional Pattern-Producing Network-encoded EA, CPPN EA)方法使用了进化(EA)算法产生对抗样本。通过该方法产生的对抗样本会被DNNs以99%的置信度进行误分类。

下图中举例的图像是典型的假正例攻击(False Positive Attack),也就是本身没有意义,人类无法识别,但DNNs却以较高置信度判定其属于某一类别的图像。

[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning_第4张图片
图4-CPPN EA Fool

8. C&W’s Attack

Carlini 和Wagner 为了攻击防御性蒸馏(Defensive distillation)网络提出了三种对抗攻击方法,通过限制 l 0 l_0 l0 l 2 l_2 l2 l ∞ l_∞ l 范数使得扰动无法被察觉。实验证明蒸馏网络完全无法防御这三种攻击。该算法生成的对抗扰动可以从unsecured网络迁移到secured网络上,从而实现黑箱攻击。实验表明,C&W攻击方法能有效攻击现有的大多数防御方法。

9. Zeroth Order Optimization (ZOO)

和上述基于梯度的攻击方法不同,ZOO方法不使用梯度训练直接对模型进行攻击而产生对抗样本,属于黑盒攻击。

因为是黑盒攻击,不需要计算梯度,但需查询和评估梯度,基于此,Chen 等人提出ZOO-ADAM 算法,即随机选择一个变量更新对抗样本。实验表明,ZOO方法实现了与C&W攻击方法一样的性能。

10. Universal Perturbation

DeepFool 攻击方法提出者Moosavi-Dezfooli 等人在DeepFool基础上提出了通用扰动(Universal Perturbation),对于每一次迭代使用DeepFool 方法获得一个最小的样本扰动,直到大多数数据样本能够欺骗神经网络迭代束。如下图所示,这种通用扰动可以让一个分类器对所有图片错误分类。

[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning_第5张图片
图5-Universal Perturbation

### 11. One Pixel Attack Su 等人提出了单点像素攻击(One Pixel Attack),即只改动一个像素点就可以产生对抗样本,这是一种极端的对抗攻击方法。该方法使用了差分进化算法,对每个像素进行迭代地修改,生成子图像并与母图像对比,根据标准选择保留攻击效果最好的子图像,实现对抗攻击。这种对抗攻击不需知道网络参数或梯度的任何信息,是迭代黑盒攻击。

12. Feature Adversary

Sabour 等人提出的一种有目标攻击方法,主要通过最小化神经网络内部feature的差距来产生对抗样本。

13. Hot/Cold

为了生成各种各样的对抗样本,Rozsa 等人提出Hot/Cold 方法,他们将目标标签 l ′ l' l 定义为热(Hot)类,将原始标签 l l l 定义为冷(Cold)类。在每次迭代中,将样本移向目标(Hot)类,同时远离原始(Cold)类。

他们定义了一个新的衡量方法PASS(Psychometric Perceptual Adversarial Similarity Score, PASS)作为衡量攻击前后样本差异的新指标。PASS分为两步:
(1)将修改后的图像与原始图像对齐;
(2)测量对齐后的图像与原始图像的相似性。

结果表明,生成的对抗样本与FGSM 相当,并具有多样性。

14. Natural GAN

Zhao 等人使用GAN方法生成对抗样本,使得结果看起来更自然。该方法通过最小化诸如「Feature Adversary」之类的内部表示距离来产生对抗噪声。该方法不需要使用神经网络的梯度,被当做黑盒攻击。

15. Model-based Ensembling Attack

该论文提出了模型集成的概念,作者基于多个不同模型生成对抗样本,并通过对比实验,总结出模型集成的方法,可以有效提高对抗样本的泛化能力。

16. Ground-Truth Attack

Carlini 等人使用Ground-Truth Attack方法最小化 l 1 l_1 l1 l ∞ l_∞ l 扰动以产生对抗样本。为了提高性能,该方法使用C&W攻击方法产生的对抗样本作为初始样本,然后在后续迭代中使用Reluplex迭代找到最小扰动的对抗样本。

攻击方法小结

根据单步/迭代 和 白盒/黑盒攻击对以上攻击方法进行总结,如下图所示:

[读论文]Adversarial Examples: Attacks and Defenses for Deep Learning_第6张图片
图6-攻击方法小结

Ⅳ. 常见防御方法

以下只列了举常见防御方法,防御方法还在不断发展中,暂时还没有系统的方法。

  1. 蒸馏网络 (Network Distillation)
  2. 对抗训练 (Adversarial (Re)training)
  3. 对抗识别 (Adversarial Detecting)
  4. 输入重建(Input Reconstruction)
  5. 鲁棒的分类器(Classifier Robustifying)
  6. 验证网络 (Network Verification)
  7. 集成防御 (Ensembling Defenses)

Ⅴ. 应用实例

以下列举了几个对抗攻击的应用实例,详细示例可参看原文:

  1. 生成模型(Generative Modeling)
  2. 人脸识别系统(Face Recognition)
  3. 语义分割网络(Semantic Segmentation)
  4. 目标检测系统(Object Detection)
  5. 自然语言处理(Natural Language Processing)
  6. 恶意软件检测(Malware Detection)
  7. 强化学习(Reinforcement Learning)

Ⅵ. 总结

本文介绍了对抗样本的分类情况,以及常用的对抗样本生成方法,对于对抗攻击的防御算法和相关应用实例没有展开,有兴趣的朋友可以阅读原文查看。

你可能感兴趣的:(读论文,ARTS)