[paper] [综述]Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey


 

introduction

Szegedy[22] 首先发现了深度学习在图像识别的脆弱性,微小的扰动会导致模型分类错误。

 

第一篇全面的对抗攻击综述

 

DEFINITIONS OF TERMS

 

  • Adversarial example/image:修改后的image

  • Adversarial perturbation: 添加的perturbation

  • Adversarial training:使用对抗图片进行训练

  • Adversary:产生对抗样本的代理

  • Black-box attacks: 黑盒攻击

  • Detector:检测模型是否是对抗样本

  • Fooling ratio/rate: 在样本修改之后,模型标签更改率

  • One-shot/one-step methods:一步生成扰动,与此对应的是迭代生成扰动

  • Quasi-imperceptible:人眼不可察觉

  • Rectifier:将对抗样本恢复为能被模型识别的工具

  • Targeted attacks:目标攻击,对应无目标攻击

  • Threat model: 某种方法的潜在攻击

  • Transferability:可迁移性

  • Universal perturbation:通用扰动

  • White-box attacks:白盒模型

 

 

ADVERSARIAL ATTACKS

 

Attacks for classification

 

Box-constrained L-BFGS

 

 

Szegedy et al.[22] 提出了以下优化问题:

 

 

但是直接求该问题比较困难,于是转化为近似盒优化问题:

 

该问题可以用非凸方法进行优化。

 

Fast Gradient Sign Method

 

Goodfellow et al.[23]开发了一种基于梯度的生成对抗样本的方法:

基于深度神经网络在高维度空间是线性的假设。

 

Kurakin et al.[80]. 使用了与原label相近的标签作为target label进行攻击,例如把一种狗识别为另外一种狗。

 

Miyato et al. [103]则提出了一种利用梯度的L2正则项计算扰动的方法:

总结:one shot methods

 

Basic & Least-Likely-Class Iterative Methods

 

one shot方法是在梯度相反的方向上走一大步,而迭代的方法则意味着小的扰动多次迭代。

 

Basic Iterative Method (BIM) [35] 则迭代地计算响应的扰动量:

 

变体:Kurakin et al. [35](ILCM)

 

Jacobian-based Saliency Map Attack (JSMA)

 

通过限制L无穷和L2范数来达到让人眼不可识别的目的。

 

Papernot et al. [60] 通过限制L0范数来生成对抗样本,每次只修改一个像素点,直至对抗样本被误识别,每次使用的saliency map为特征图output梯度,以此来找到哪个最有效率的攻击像素。

 

 

One Pixel Attack

 

对抗样本攻击的极端情况,只有一个像素点被修改。

 

Su et al. [68] 生成了只有一个像素点被修改时的对抗样本,使用了差分进化的方法生成对抗样本,首先生成了一个500\*5的向量,然后使用进化的方法向目标优化,目标为对应图像的概率,最后留存的子代即为最优解。

 

 

Carlini and Wagner Attacks(CW)

 

Carlini and Wagner [36] 使用该方法可以将攻击样本迁移到蒸馏防御模型中,蒸馏模型对此不起作用,该方法基于L0、L2和无穷范数。

 

变体:Chen et al. [41](ZOO)

 

 

DeepFool

 

Moosavi-Dezfooli et al. [72]初始化对抗样本为干净图像,然后将对抗样本限定到分类器的边界,每次使用一个向量将图像限定到对应的边界,最后的图像为累加的扰动值。有论文证明,其效果和FGSM是近似相等的。

 

Universal Adversarial Perturbations

 

不同于前面的针对某个特定图像的对抗样本,Moosavi-Dezfooli et al. [16] 提出了通用攻击扰动的目的是生成针对所有图像的通用扰动:

 

其中P代表的是概率,sigmoid代表的是Fooling rate。

 

使用L2范数以及无穷范数来生成对抗样本,4%的范数上限可以得到较好的愚弄分数。

 

变体:Khrulkov et al. [190] , Mopuri et al. [135].

 

UPSET and ANGRI

 

Sarkar et al. [146] 提出UPSET网络用于生成对所有样本有效的扰动,ANGRI网络用于生成流氓图像以愚弄深度网络。具体来讲,UPSET网络是一个残差网络,用以生成最佳扰动。

 

 

 

Houdini

 

Cisse et al. [131] 提出了针对于task losses的对抗样本,可以针对语音样本生成对抗样本,也可以迁移到人体姿势识别应用上。

 

ATN

Baluja and Fischer [42] 训练了一种生成对抗样本的前向网络,名为对抗转化网络(ATN),主要有两部分的loss,一部分loss使得原图和对抗图尽可能相似,另外一部分则使得对抗样本识别错误。

 

 

变体:Hayex and Danezis [47]

 

Miscellaneous Attacks

对抗攻击方法总结:

 

 

Attacks beyond classification/recognition

 

Tabacof et al. [128] 提出了针对自编码器的对抗样本,变体:Kos et al. [121] 针对VAE和VAE-GAN

 

Papernot et al. [110]提出了针对RNN编码器的对抗样本。

 

Lin et al. [134] 提出了针对强化学习的对抗样本攻击,先在小数据集的攻击训练条件下最小化强化学习的reward,在增强攻击阶段则诱导智能体向对应的状态转移。http://yclin.me/adversarial_attack_RL/.

Huang et al. [62] 认为也可以降低强化学习训练策略的性能。http://rll.berkeley.edu/adversarial/

 

Metzen et al. [67] 认为图像的不可预知可以愚弄深度学习的语义分割,变体 Arnab et al. [51] Xie et al. [115]

 

ATTACKS IN THE REAL WORLD

 

Rozsa et al. [130], [160] 使用了CelebA bench-mark探究了不同深度学习的方法的稳定性,使用Fast Flipping Attribute 的方法用来生成样本。

 

 

Kurakin et al. [35] 首先展示了物理攻击也可用于手机摄像头,他们将对抗样本打印出来并欺骗了谷歌tensorflow相机app。

 

Etimov et al. [75] 提出了覆盖在交通标志板上的两种方式,第一种方式是直接贴在交通标志上面,第二种是贴在交通标志的四周。

 

Athalye et al. [65] 提出了一个生成3D标志的对抗样本,可以在不同角度不同视角欺骗神经网络。

 

Papernot et al. [39]提出了一种可以欺骗在线智能系统的网络空间的生成样本方法,基于该方法生成的样本可以成功欺骗大多数在线系统。

 

Melis et al. [63] 提出了可以欺骗机器人视觉的对抗样本生成方法。 Xu et al. [40]提出了针对可视化问答的对抗样本生成方法。

 

DEFENSES AGAINST ADVERSARIAL ATTACKS

 

主要分为3种:

1. 在训练中修改训练过程或者在测试中修改输入

2. 修改网络,修改网络结构,或者更改loss和激活函数

3. 利用网络挂件。

 

Modified training/input

 

Brute-force adversarial training

 

对抗训练:[22] [23] [72]

Miyato etal. [113] 提出“虚拟对抗训练”用来平滑输出分布。

 

Data compression as defense

 

Dziugaite et al. [123]提出了通过JPG压缩来对抗FGSM生成的扰动图像。类似的文章[82] [37].

 

基于Discrete Cosine Transform(DCT)的压缩[81], 基于Principal Component Analysis的压缩[169]。

 

 

Foveation based defense

 

Data randomization and other methods

 

Xie et al. [115] resize和添加随机化padding可以提升模型的鲁棒性。

 

Wang et al. [138] 提出了单独分离通道做transform可以试图降低干扰。

 

训练时的数据增强也可以提高模型的鲁棒性,比如添加高斯噪声。

 

 

Modifying the network

 

Deep Contractive Networks

Gu and Rigazio [24] introduced Deep Contractive Networks (DCN). 降噪自编码器可以减少对抗噪声。但是如果将他们直接堆叠到相关的网络上面,会导致网络更加脆弱。所以在训练时往往会增加一个Contractive AutoEncoders平滑惩罚项。

相似论文:[141].

 

 

Gradient regularization/masking

 

Ross and Doshi-Velez [52] 使用了输入梯度的正则化项进行防御。增加了输入变化所带来输出变化程度的惩罚项。

 

输出loss的惩罚项:[28]

 

在输出的逻辑斯蒂值上添加噪声:Nguyen and Sinha [44]

 

Defensive distillation

Papernot et al. [38]提出利用蒸馏机制来对抗模型攻击。

可以将蒸馏机制看作是一种梯度隐藏的方法。

 

Biologically inspired protection

Nayebi and Ganguli [124]添加了高度线性激活层。

 

Parseval Networks

Cisse et al. [131]提出通过在每一层添加一个权重约束项,使得全局的利普西茨常数的值限定在一定范围。因此称为Parseval 网络。

 

DeepCloak

Gao et al. [139]提出了一种在分类器前面添加mask layer的方法,每次使用干净和对抗样本对来训练更新mask layer,当进行预测时,mask layer会将敏感的神经元屏蔽掉。

 

Miscellaneous approaches

bounded ReLU [174]

additive noise[120]

对PGD的对抗训练可以抵抗一定范围内的攻击[55],[59]

penalized using the distance between clean and the corresponding adversarial embeddings.[85]

ensemble method[89]

adversary resistant neural networks[129][122]

minimizes the difference between multi-layer embedding results of clean and adversarial images.[106]

 

Detection Only approaches

SafetyNet: Lu et al. [66]基于对抗样本都是由干净样本生成的假设,在模型的最后一个stage后面添加了一个svm,用以分辨是否是对抗样本。

 

Exploiting convolution filter statistics: Li [105]使用了每层网络间filter的统计信息,生成一个级联网络来对对抗样本进行二分类。

 

Grosse et al. [57] 提出了将所有对抗样本作为一个其他的类别进行分类的方法。

Network add-ons

 

Defense against universal perturbations

Akhtar et al. [81] 提出了Perturbation Rectifying Network(PRN)放置在神经网络的头部用来检测是否是对抗样本。

 

GAN-based defense

Lee et al. [101]使用GAN网络来对抗FGSM攻击,仅仅使用对抗网络来分类所有正确的和错误的样本。

 

Detection Only approaches

 

Feature squeezing: Xu et al. [43] 提出使用特征压缩来区分对抗样本和非对抗样本,将压缩后的样本和干净的样本进行比对,如果差异很大,则意味着是对抗样本,否则不是对抗样本。

 

Meng and Chen [45]提出了一种检测网络用以生成对抗样本的误差,当对抗样本的误差高于正常值时,便被认为是对抗样本。

 

scalar quantization and spatial smoothing filter[50]

使用特征图的密度估计[86]

 

 

工具库

 

Cleverhans

Adversarial-Playground (https://github.com/QData/AdversarialDNN-Playground)