对抗样本学习报告
Ⅰ.背景
随着深度学习的快速发展,在众多机器学习领域取得了重大进步,深度学习在许多至关重要的安全环境中得到应用。但,最近几年研究者发现,输入一些精心设计的样本时,深度学习表现出极大的脆弱性,这些精心设计的样本就是对抗样本。
对抗样本(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)
- 白盒攻击(White Box Attacks)假定攻击者可以完全访问他们正在攻击的神经网络模型的结构和参数,包括训练数据,模型结构,超参数情况,激活函数,模型权重等。
- 黑盒攻击(black-box attacks)假定攻击者不能访问神经网络模型,只能访问被攻击模型的输出(标签和置信度)。
-
目标攻击(Target Attack) 与 无目标攻击(Non-target Attack)
- 目标攻击(Target Attack)生成的对抗样本被DNNs误分类为某个指定类别。目标攻击一般发生在多分类问题中。
- 无目标攻击(non-target attack)生成的对抗样本识别结果和原标注无关,即只要攻击成功就好,对抗样本最终属于哪一类不做限制。因为无目标攻击有更多的选择和更大的输出范围,所以比目标攻击更易实现。
-
单步攻击(One-time Attack) 与 迭代攻击(Iteration Attack)
- 单步攻击(One-time Attack)只需一次优化即可生成对抗样本。
- 迭代攻击(Iteration Attack)需要多次更新对抗样本。迭代攻击生成的对抗样本比单步攻击的攻击效果更好,但迭代攻击需要更多的时间生成对抗样本。
-
个体攻击(Individual Attack) 与 普适性攻击(Universal Attack)
- 个体攻击(Individual Attack)对于每个输入的原始数据添加不同的扰动。大多数攻击方法都属于个体攻击。
- 普适性攻击(Universal Attack)对整个数据集训练一个通用的扰动。
-
优化扰动(Optimized Perturbation) 与 约束扰动(Constrained Perturbation)
- 优化扰动(Optimized Perturbation)表示扰动大小作为优化过程中的优化目标。该方法旨在生成人类无法识别情况下的最小化扰动的对抗样本。
- 约束扰动(Constrained Perturbation)表示所添加扰动仅需满足约束即可,该方法只要求扰动足够小。
Ⅲ.数学符号声明
数学符号 | 意义 |
---|---|
x x x | 原图像 |
l l l | 分类标签 |
x ′ x' x′ | 对抗样本 |
l ′ l' l′ | 目标分类标签 |
f ( ⋅ ) f(·) f(⋅) | 深度学习模型 |
θ \theta θ | f f f 的参数 |
J f ( ⋅ , ⋅ ) J_f(·,·) Jf(⋅,⋅) | 损失函数 |
∥ ⋅ ∥ p \left\|·\right\|_p ∥⋅∥p | l p l_p lp 范数 |
η \eta η | 扰动(即 η = x ′ − x \eta = x' - x η=x′−x) |
∇ \nabla ∇ | 梯度 |
Ⅳ.攻击方法介绍
1. L-BFGS Attack
提出:
S z e g e d y Szegedy Szegedy 等人发表于 I C L R 2014 ICLR~2014 ICLR 2014,首次提出了使用对抗样本攻击深度神经网络。
原理:
找到一个扰动 r r r,最小化
c ∣ ∣ η ∣ ∣ 2 + J ( x + η , l ′ ) c||\eta||_2 + J_(x + \eta, l') c∣∣η∣∣2+J(x+η,l′)
其中 c c c 是个常数 ( c > 0 ) (c > 0) (c>0) , L − B F G S L-BFGS L−BFGS 算法通过线性搜索 c > 0 c > 0 c>0 的所有情况,找到 c c c 的近似值。
缺点:
花时间长
不切实际
2. Fast Gradient Sign Method
提出:
由 G o o d f e l l o w Goodfellow Goodfellow 等人发表在 I C L R 2015 ICLR~2015 ICLR 2015。
原理:
让 x x x 沿着梯度方向移动来生成 x ′ x' x′,从而来最大化损失函数。
设定一个 ϵ \epsilon ϵ,满足
∥ x ′ − x ∥ ∞ ≤ ϵ \|x' - x\|_∞ \leq \epsilon ∥x′−x∥∞≤ϵ
那么扰动 η \eta η 为 ϵ s i g n ( ∇ x J θ ( x , l ) ) \epsilon sign(\nabla_xJ_{\theta}(x,~l)) ϵsign(∇xJθ(x, l))
解释:
假设 J θ ( x , l ) J_{\theta}(x,~l) Jθ(x, l) 与 x x x 成线性关系,那么有
J θ ( x ′ , l ) = J θ ( x , l ) + ( x ′ − x ) T ∇ x J θ ( x , l ) J_{\theta}(x',~l) = J_{\theta}(x,~l) + (x' - x)^{T}\nabla_xJ_{\theta}(x,~l) Jθ(x′, l)=Jθ(x, l)+(x