作者:Naveed Akhtar
and Ajmal Mian
2018年发表的一篇综述文章,现在很多最新的进展没有被包含在内,涵盖了最经典的一些对抗攻击与防御方法。但研究主要集中在CV方向,大多数都是图片分类问题。
一、关于对抗攻击的常用术语
Adversarial example/image: 对抗样本,被添加了恶意扰动的图片用来误导机器学习技术比如深度神经网络
Adversarial perturbation: 对抗扰动,干净样本+对抗扰动(噪声)->对抗样本
Adversarial training: 对抗训练,在训练样本中加入对抗样本作为扩充训练集来训练机器学习模型
Adversary:对抗样本产生者,有时对抗样本也被称为adversary
black-box attacks:黑盒攻击,不知道模型结构的情况下进行攻击。在某些情况下,假定对手对模型的了解有限(例如,它的训练过程和/或它的架构),但肯定不知道模型的参数。
semi-black-box attack:半黑盒攻击,使用了目标模型的任意信息
white-box attacks:白盒攻击,知道模型的全部信息
Detector:检测器,用来检测图像是否为对抗样本的方法
Fooling ratio/rate:图像被干扰后,预测标签被改变(模型被骗)的百分比
one-shot/one-step methods:经过一次计算就能得到对抗扰动(噪声r)的方法,如FGSM。与之相对的是迭代方法(计算多次),如PGD
Quasi-imperceptible:对抗扰动极其微小,让人也很难察觉出来
Rectifier:矫正器,修改对抗样本->干净样本
Targeted attacks:有目标攻击,欺骗模型使模型预测为特定标签。相对于un-targeted attacks,没有特定标签,只求模型预测错误
threat model:考虑潜在的攻击类型(如黑盒攻击)
transferability:可迁移性,指的是对抗样本在不同模型之间迁移仍有效
universal perturbation:全局对抗扰动。对任何图片+全局对抗扰动都能使模型出错
二、对抗攻击的12种攻击方法(针对分类网络)
三、对抗攻击的15种防御方法
1.目前,在对抗攻击防御上存在三个主要方向:
1)在学习过程中修改训练过程或者修改的输入样本。
2)修改网络,比如:添加更多层/子网络、改变损失/激活函数等。
3)当分类未见过的样本时,用外部模型作为附加网络。
这些方法可以被进一步细分为两种类型:
(a)完全防御;(b)仅探测(detection only)。
「完全防御」方法的目标是让网络将对抗样本识别为正确的类别。
「仅探测」方法意味着在对抗样本上发出报警以拒绝任何进一步的处理。
1.1【修改训练过程或者修改的输入样本】
·
暴力对抗训练 :Brute-force adversarial training
在训练时不断加入新类型的对抗样本,从而提高网络的鲁棒性。
最直观的想法,效果也很好,可以正则化网络以减少过拟合。
缺点:需要模型有很强的表现力,并且训练时使用很强的攻击算法
·
数据压缩防御: Data compression as defense
JPG压缩后图像可以很大程度上防御FGSM的攻击,但仅采用压缩不能有效防御。
缺点:(有点矛盾)压缩大了会损失精度,压缩小了又防御性能又不好
·
基于中央凹机制的防御:Foveation based defense
对FGSM和L-BFGS比较有用,但对更强的攻击算法失效
·
数据随机化方法:Data randomization
随机调整对抗样本(不太好用,因为无法区分哪个是对抗样本,统一调整很容易降低干净样本的精度)
1.2【修改网络】
·
深度收缩网络:Deep Contractive Networks
使用Contractive Auto Encoders自编码器,对L-BGFS攻击比较有效,但在DCN提出之前,更强的攻击已经提出来了,他没比,估计是不行的。
·
梯度正则化:Gradient regularization/masking
Ross and Doshi-Velez提出,增加输入梯度的正则项来提高模型的鲁棒性。与对抗训练结合效果会更好,但缺点是会让模型的训练的复杂度翻倍。
Lyu 等人也通过惩罚损失函数的梯度来提高模型的鲁棒性
Nguyen and Sinha通过向网络的对数输出添加噪声来防御C&W攻击
·
防御蒸馏:Defensive distillation
用知识蒸馏的方法来防御对抗攻击。distillation指将复杂网络的知识迁移到简单网络上。
但防御蒸馏面对C&W几乎没有抵抗能力,防御蒸馏可以算是梯度遮蔽的方法之一
·
生物启发式防御:Biologically inspired protection
使用类似与生物大脑中非线性树突计算的高度非线性激活函数以防御对抗攻击
·
分析网络:Parseval Networks
利用保持每一层的 Lipschitz 常数来摆脱对抗样本的干扰。采用分层正则化的方法
·
DeepCloak
增加一个遮蔽层,这个遮蔽层用干净图像和对抗图像的前向传播进行训练。遮蔽层训练的目标是干净图像和对抗图像的特征差异。训练出来的遮蔽层中,占主导性的权重被认为是对抗样本最敏感的特征,因此分类时将这些权重强行置为0来防御对抗样本。
·
仅探测方法
SafetyNet
Detector subnetwork
Exploiting convolution filter statistics
Additional class augmentation
1.3【引入模型附加组件】
·
防御通用扰动 Defense against universal perturbations
利用一个单独训练的网络加在原来的模型上,从而达到不需要调整系数而且免疫对抗样本的方法。
·
基于 GAN 的防御 GAN-based defense
用GAN 为基础的网络可以抵抗对抗攻击,而且作者提出在所有模型上用相同的办法来做都可以抵抗对抗样本。
·
仅探测方法Detection Only approaches
Feature Squeezing 方法用了两个模型来探查是不是对抗样本。后续的工作介绍了这个方法对 C&W 攻击也有能接受的抵抗力。
MagNet:作者用一个分类器对图片的流行(manifold)测量值来训练,从而分辨出图片是不是带噪声的。
混杂方法(Miscellaneous Methods):作者训练了一个模型,把所有输入图片当成带噪声的,先学习怎么去平滑图片,之后再进行分类。