Towards Evaluating the Robustness of Neural Networks(翻译,侵删)
Towards Evaluating the Robustness of Neural Networks
面向评估神经网络的鲁棒性
论文地址 https://ieeexplore.ieee.org/abstract/document/7958570
摘要
深度网络对于大多数的机器学习任务提供了顶尖的结果。不幸的是,深度网络容易受到对抗样本攻击:给定一个输入 x x x和任何类别 t t t,有可能找到一个新的输入 x ′ x^\prime x′,与 x x x相似但是分类为 t t t。这使得在安全的领域应用神经网络变得困难。防御蒸馏时最近提出的方法,可以用在任何的神经网络上,增加它的鲁棒性,减少目前攻击寻找对抗样本的能力的成功率从95%到0.5%。
在这篇文章中,我们证明了防御蒸馏并没有显著的提升神经网络的鲁棒性,通过引入三个新攻击算法,在蒸馏和非蒸馏的网络上都是100%的可能性。我们的攻击定制与之前文献中使用的三个距离指标,当和之前的对抗样本生成算法比较,我们的攻击常常更加的有效(并且从不变差)。进一步,我们提出使用高置信度对抗样本,在一个简单的迁移性测试上,也可以用来破解防御蒸馏。我们希望我们的攻击可以被用来作为一个基准,在未来的防御,尝试创建一个神经网络,来抵抗对抗样本。
I. 介绍
深度神经网络在许多困难的机器学习任务上变得越来越有效。在图像识别领域,它们可达到和人类相似的水平。它们也被用来进行语音识别,自然语言处理,玩游戏。
然后,研究者发现现有的神经网络容易受到容积。Szegedy等人首先提出了在图像分类领域的对抗样本的存在:可以少量地变换图像,从而改变图像的分类方式。通常,总的改变数量需要非常的小,以至于不可探测到。
攻击可以找到对抗样本的程度限制了神经网络可以使用的领域。例如,如果我们使用神经网络在自动驾驶汽车上,对抗样本可能运训攻击者引起汽车采取不想要的行动。
对抗样本的存在启发了有关如何让神经网络对于这类攻击鲁棒的研究。许多早期保护神经网络的尝试失败了或者只提供了微不足道的鲁棒性的改善。
防御蒸馏是一个这样最近防御提出的方法,来使得神经网络对于对抗样本鲁棒。初步分析证明是很有希望的:防御蒸馏打败了现有的攻击算法并且减少了成功率从95%到0.5%。防御蒸馏可以运用在任何前馈神经网络,只需要单个预训练步骤,是当前唯一的对于对抗样本给出强烈安全担保的防御方法之一。
一般的,有两个不同的方法可以评估一个神经网络的鲁棒性:尝试证明一个低的边界,或者构造攻击证明高的边界。前一个方法,虽然听起来,在实践上,很难实现,并且所有的尝试需要近似值。另一方面,如果攻击使用的后一种方法,没有足够的强,经常失败,高的边界似乎没有用。
在这篇文章中,我们创建了一系列的攻击可以用来构建一个上限,在神经网络的鲁棒性上。作为案例研究,我们使用这些攻击来证明防御蒸馏事实上不能消除对抗样本。我们构造了三个新的攻击(在三个之前使用的距离指标: L 0 , L 2 , L ∞ L_0, L_2, L_\infty L0,L2,L∞),可以在防御蒸馏的网络上成功的找到100%的图片的对抗样本。虽然防御蒸馏阻止了之前发布的攻击方法,但是它不能够抵抗更有力的我们在这篇文章中介绍的攻击技术。
这个案例研究证明了对于更好了评估神经网络鲁棒性的技术的一般性需要:虽然蒸馏被证明对于当前顶尖攻击的安全,但是它没有抵抗得了我们的更强的攻击。更进一步,当在标准的没有安全的模型上比较我们的攻击方法和目前顶尖的攻击方法,我们的方法生成的对抗样本,具有总体少的扰动,在每个案例中。我们建议我们的攻击方法可以作为一个更好的基线,来评估候选的防御:在相信一个新的可能的防御方法之前,我们建议设计者至少检查一下,它能否抵抗我们的攻击方法。
我们也提出了使用高置信度的对抗样本来评估防御方法的鲁棒性。迁移习惯是对抗样本的著名的属性,在一个模型上的对抗样本,通常在另一个模型上依然有对抗性。我们证明了来自我们的攻击方法的对抗样本,可以从不安全的模型上迁移到防御蒸馏的(安全的)模型上。一般的,我们认为,任何的防御方法必须证明它可以破解迁移性的属性。
我们在是那个标准的数据集上评估了我们的攻击方法:MNIST,数字识别任务(0-9);CIFAR-10,一个小的图像识别任务;ImageNet,一个大的图像识别任务,有1000个类别。
图1显示了我们的技术生成的对抗样本,在在MNIST和CIFAR数据集上训练的防御蒸馏模型上。
图1. 对于一个防御蒸馏模型上,我们的攻击方法的一个实例。最左边的一别包含了起始的图片。后面的三列展示了通过我们的算法 L 2 , L ∞ , L 0 L_2, L_\infty, L_0 L2,L∞,L0生成的对抗样本。所有的图片一开始都是被正确的分类为标签 l l l,三个误分类的实例,有相同的误分类的标签 l 1 l 1 l 1(mod 10)。图片是从测试集上选取的他们类别的第一个。
一个极端的例子,对于ImageNet分类任务,我们可以使得Inception v3网络错误的分类图片,通过仅更改每个像素的最低阶位。这种改变在视觉上是不可侦测的。
为了使的他人可以更容易使用我们的工作来评估他们的防御方法的鲁棒性,我们所有的对抗样本生成算法(和我们训练模型使用的代码,来复现我们呈现的结果)可在线获得[http://nicholas.carlini.com/code/nn robust attacks](http://nicholas.carlini.com/code/nn robust attacks)
这篇文章做出了如戏的贡献:
- 我们对于 L 0 , L 2 , L ∞ L_0, L_2, L_\infty L0,L2,L∞距离指标,引入了是三个新的攻击方法。我们的攻击方法比之前的方法更加的有效。我们的 L 0 L_0 L0攻击时第一个发布的攻击方法,可以在ImageNet数据集上引起有目标的误分类。
- 我们将三个攻击方法运用到了防御蒸馏,发现蒸馏提供了微弱的安全性比起没有蒸馏的网络。
- 我们在一个简单的迁移性测试上提出了使用高置信度的对抗样本来评估防御方法,并且证明了这个测试可以破解防御蒸馏。
- 我们系统的评估了在寻找对抗样本时目标函数的选择,并且证明了这个选择可以显著的影响一个攻击方法的功效。
II. 背景
A. 威胁模型
机器学习被使用在越来越多的设置中,做潜在的安全性的决策:自动驾驶汽车,无人机,机器人,异常检测,恶意软件分类,语音识别,语音命令识别,自然语言处理等等。因此,深度学习的安全属性在这类领域变成了一个关键问题。我们构造的对抗样本的程度影响了我们想要使用(或不想要使用)神经网络的设置。
在语音识别领域,最近的工作表明,可以生成音频,对于机器学习算法来说,听起来时声音,但是对于人来说不是。这可以用来控制用户的蛇别,没有他们的知识。例如,通过播放一个具有隐藏语音命令的视频,可能引起智能手机访问一个恶意的网页,导致驱动的下载。这个工作聚焦于传统的技术(高斯混合模型和隐马尔可夫模型),但是随着语音识别不断的使用深度网络,对抗样本的研究,变的于此领域相关1。
在恶意软件分类领域,对抗样本的存在不仅限制他们潜在的应用设置,而且完全的打败了它的目的:一个攻击者可以制作只需要轻微的修改,对一个恶意软件,使它任然是恶意软件,但是被分类为良性,完全的打败了恶意软件分类器。
将威胁转到早前引入的自动驾驶汽车,这不是一个不现实的攻击:已经证明了对抗样本可以在物理世界中存在,从它们上拍照。
那么,关键问题变城,我们需要精确的添加多少扰动使得分类改变。在每一个领域里面,我们必须使用不同的距离指标。在图片领域,也就是我们这篇文章所关注的,我们依靠之前的工作,建议各种 L p L_p Lp范数,是合理的对于人类察觉距离的估计值(更多信息见II-D部分)。
我们假设在这篇文章中,攻击者有对于一个神经网络完全的权限,包括架构和所有的参数,可以以一种白盒的方式使用。这是保守的现实的假设:之前的工作已尽证明了可以训练一个替代模型,对于目标模型的黑盒权限,通过攻击替代的模型,我们可以之后将这些攻击迁移到目标模型。
考虑这些攻击,有各种的尝试,在构建防御,来提升一个网神经网络的鲁棒性,定义一个测量方法,怎样容易的找到对抗样本,这些对抗样本与原始的输入非常的接近。
在这篇文章中,我们研究了这些中的一个,蒸馏防御,希望保护一个任意的神经网络。这个类型的防御蒸馏被证明使得生成的对抗样本几乎不可能对于现有的攻击技术。我们发现,虽然当前顶尖的技术没能找到对抗样本,对于防御蒸馏网络,但是我们在这篇文章中所研究的更强的攻击方法能够构建对抗样本。
B. 神经网络和符号说明
一个神经网络是一个函数 F ( x ) = y F(x) = y F(x)=y,接受一个输入 x ∈ R n x \in \mathbb{R}^n x∈Rn,产生一个输出 y ∈ R m y \in \mathbb{R}^m y∈Rm。模型 F F F也隐式的包含一些模型参数 θ \theta θ;在我们的工作中,模型是固定的,所谓方便起见,我们不显示对于 θ \theta θ的依赖。
在这篇文章中哦,我们关注神经网络使用作为一个 m m m-分类器,网络的输出使用softmax函数计算,这全包了输出向量 y y y慢煮 0 ≤ y i ≤ 1 , y 1 ⋯ y m = 1 0 \leq y_i \leq 1, \quad y_1 \cdots y_m = 1 0≤yi≤1,y1 ⋯ ym=1。输出向量 y y y因此被当作为一个概率分布,例如, y i y_i yi被当作输入 x x x有类别 i i i的概率。分类器将 C ( x ) = a r g m a x i F ( x ) i C(x) = \underset{\operatorname{i}}{arg\,max} F(x)_i C(x)=iargmaxF(x)i,作为输入 x x x的标签。设 C ⋆ ( x ) C^\star(x) C⋆(x)为 x x x的正确的标签,softmax函数的输出称为logits。
我们使用来自Papernot等人的符号:定义 F F F为包含softmax函数的一个全神经网络, Z ( x ) = z Z(x) = z Z(x)=z为所有层出了softmax的输出(所以 z z z是logits),
F ( x ) = s o f t m a x ( Z ( x ) ) = y F(x) = softmax(Z(x)) = y F(x)=softmax(Z(x))=y
一个神经网络通常2由层构成
F = s o f t m a x ∘ F n ∘ F n − 1 ∘ ⋯ ∘ F 1 F i ( x ) = σ ( θ i ⋅ x ) θ ^ i \begin{array}{c} F = softmax \circ F_n \circ F_{n-1} \circ \cdots \circ F_1 \\ F_i(x) = \sigma(\theta_i \cdot x) \hat{\theta}_i \end{array} F=softmax∘Fn∘Fn−1∘⋯∘F1Fi(x)=σ(θi⋅x) θ^i
对于一些非线性激活函数 σ \sigma σ,一些矩阵 θ i \theta_i θi,模型权重,一些向量 θ i ^ \hat{\theta_i} θi^,模型偏置。 θ \theta θ和 θ ^ \hat{\theta} θ^构成了模型参数。常见的 σ \sigma σ是tanh,sigmoid,ReLU,ELU。在这篇文章中,我们主要关注在使用一个ReLU激活函数的网络上,因为它目前是最广泛使用的激活函数。
我们使用图像分类作为我们的主要的评估领域。一个 h × w h \times w h×w像素灰度图片是一个二维的向量 x ∈ R h w x \in \mathbb{R}^{hw} x∈Rhw, x i x_i xi表示了像素 i i i的强度,被缩放到了[0, 1]。一个RGB颜色的图片有一个三维向量 x ∈ R 3 h w x \in \mathbb{R}^{3hw} x∈R3hw。我们不将RGB图片转换为HSV,HSL,或者其他的柱面坐标表示的彩色图片:神经网络在原始像素值上工作。
C. 对抗样本
Szegedy等人首先指出了对抗样本的存在:考虑以个有效的输入 x x x和一个目标 t ≠ C ⋆ ( x ) t \neq C^\star(x) t=C⋆(x),经常可以找到一个相似的输入 x ′ x^\prime x′,使得 C ( x ′ ) = t C(x^\prime) = t C(x′)=t,然而 x , x ′ x, x^\prime x,x′更具一些距离指标是相近的。一个样本 x ′ x^\prime x′具有这个属性被称为一个有目标的对抗样本。
一个不那么强大的攻击方法也在这篇文祥中讨论,相反是无目标的对抗样本:不是将 x x x分类为一个给定的目标类别,我们只寻找一个输入 x ′ x^\prime x′,满足 C ( x ′ ) ≠ C ( x ) C(x^\prime) \neq C(x) C(x′)=C(x),并且 x , x ′ x, x^\prime x,x′非常的近。无目标攻击严格不是那么强大比起有目标攻击,在这篇文章中,我们不涉及它们3。
相反,我们考虑三个不同的方法,对于如何选择目标类别,在一个有目标攻击中:
- Average Case: 在一个不包含正确标签的标签中,随检的均匀的选择目标类别
- Bease Case: 在所有的不正确的类别中实施攻击,并且报告最不难攻击的目标类别
- Worst Case: 在所有的不正确的类别中实施攻击,并且报告最难攻击的目标类别
在我们所有的评估中,我们试试了所有的三种类型的攻击:base-case, average-case, worst-case。注意如果一个分类器在80%的时间内是准确的,那么最好的情况攻击将需要在20%的情况下更改为0。
在ImageNet上,我们估计了best-case和worst-case攻击通过在1000个可能的有效的原因,采样100个随机的目标类别。
D. 距离指标
在我们的对抗样本定义中,我们需要一个距离指标,量化相似性。有三个广泛使用的距离指标,在生成对抗样本的文献中,所有的都是 L p L_p Lp范数。
L p L_p Lp距离写作 ∥ x − x ′ ∥ p \|x - x^\prime\|_p ∥x−x′∥p, p p p-范数 ∥ ⋅ ∥ p \|\cdot\|_p ∥⋅∥p定义如下:
∥ v ∥ p = ( ∑ i = 1 n ∣ v i ∣ p ) 1 p \|v\|_p = \left(\sum_{i=1}^n |v_i|^p\right)^{\frac{1}{p}} ∥v∥p=(i=1∑n∣vi∣p)p1
细节的:
L 0 L_0 L0距离测量了坐标 i i i, x i ≠ x i ′ x_i \neq x_i^\prime xi=xi′。因此, L 0 L_0 L0距离对应于在一个图片中被修改的像素的数量4. Papernot等人认为 L 0 L_0 L0距离的使用,是基本的距离指标,防御蒸馏的安全性认为的。
L 2 L_2 L2距离测量在 x x x和 x ′ x^\prime x′之间的标准的欧几里得(均方误差)距离。当有许多像素有小的改动 L 2 L_2 L2距离任然很小。这个距离指标在出事的对抗样本工作中使用。
L ∞ L_\infty L∞距离测量任何坐标的最大的改变:
∥ x − x ′ ∥ ∞ = m a x ( ∣ x 1 − x 1 ′ ∣ , ⋯ , ∣ x n − x n ′ ∣ ) \|x - x^\prime\|_\infty = max(|x_1 - x_1^\prime|, \cdots, |x_n - x_n^\prime|) ∥x−x′∥∞=max(∣x1−x1′∣,⋯,∣xn−xn′∣)
对于图片,我们可以想象有一个最大的预算,每个像素被允许改变到这个限制,对于像素的数量没有限制。Goodfellow等人认为 L ∞ L_\infty L∞是最优的距离测量来使用,在后续的文章中,Papernot等人认为在这个距离指标下,蒸馏是安全的。
没有距离指标是一个优先的测量方法,对于人类的察觉的相似性,我们对于哪个距离指标是最优的不作评估。我们香型构建和评估一个好的距离指标是一个重要的研究问题,我们留到未来的工作中。
然而,由于大多数的先后的工作,已经采用了三个距离距离指标中的一个,又因为防御蒸馏认为可以抵抗三个中的两个,我们也使用三个距离指标,构建攻击,实施优于顶尖技术的对于三个距离指标中的每一个。
当在这篇文章中报告所有的数字,我们使用上面定义的距离指标。在[0, 1]的范围。(也就是,在一个灰度图上改变一个像素,从全部修改到不做修改,将导致 L 2 L_2 L2距离的变为1.0, L ∞ L_\infty L∞距离变为1.0,不是255.0)
E. 防御蒸馏
我们简要的提供一个高度的概述对于防御蒸馏。我们在后面的VIII部分提供了一个全面的描述。
为了防御蒸馏一个神经网络,开始于训练一个网络,具有相同的架构,在一个训练集上,以一个标准的方式。当我们训练这个网络的同时,计算softmax,用一个更加平滑的版本的softmax(通过将logits除以一些常数 T T T)替换它。在训练的最后,生成soft trainging labels通过评估这个网络,在每一个训练实例,获取网络的输出标签。
之后,扔掉第一个网络,是有soft训练的额标签,用这些训练一个二级网络,而不是在一个原始的训练标签上训练,使用soft labels。这个训练的额第二个模型,和第一个模型的行为一样,soft labels传达了额外的隐藏的第一个模型学习的知识。
这里的关键点是,通过训练一个匹配的第一个网络,我们希望避免过拟合任何的训练数据,如果神经网络存在的原因是因为神经网络的高度非线性性和有“盲点”,对抗样本所依靠的,纳闷阻止这类的过拟合,可以清除这些盲点。
事实上,我们之后将看到,防御蒸馏没有去除对抗样本。一个可能的原因是,其他人认为对抗样本存在的原因不是因为在高度非线性神经网络上的盲点。这个馊味的线性性假设似乎是对的,在这一解释下,蒸馏没有提升神经网络的鲁棒性,可能变的没有那么的惊讶。
F. 组织
文章剩余的部分结构如下。在下一节中,我们调查了现有的攻击,在文献中被提出来生成对抗样本,在 L 2 , L ∞ , L 0 L_2, L_\infty, L_0 L2,L∞,L0距离指标下。之后,我们描述了我们的攻击算法在相同的三个距离指标下,提供了更好的相比于之前工作的结果。研究了这些方法后,我们更细节的评估了防御蒸馏,并且讨论了为什么现有的方法没能在一个防御蒸馏的网络上找到对抗样本。最后,我们使用了我们的新的算法攻击了防御蒸馏方法,并且展示了它只提供了有限的价值。
III. 攻击算法
A. L-BFGS
Szegedy 等人使用盒受限L-BFGS生成对抗样本。给定一张图片 x x x,它们的方法寻找一个不同的图片 x ′ x^\prime x′与 x x x相似,在 L 2 L_2 L2距离下,产生一个不同标签的,被分类器。它们的模型问题是一个受限最小化问题:
m i n i m i z e ∥ x − x ′ ∥ 2 2 s u c h t h a t C ( x ′ ) = l x ′ ∈ [ 0 , 1 ] n \begin{array}{l} minimize \quad &\|x - x^\prime\|_2^2 \\ such \, that \quad &C(x^\prime) = l \\ &x^\prime \in [0, 1]^n \end{array} minimizesuchthat∥x−x′∥22C(x′)=lx′∈[0,1]n
这个问题很难求解,然而,所以Szegedy等人相反求解了一下的问题:
m i n i m i z e c ⋅ ∥ x − x ′ ∥ 2 2 l o s s F , l ( x ′ ) s u c h t h a t C ( x ′ ) = l x ′ ∈ [ 0 , 1 ] n \begin{array}{l} minimize \quad &c \cdot \|x - x^\prime\|_2^2 loss_{F, l}(x^\prime) \\ such \, that \quad &C(x^\prime) = l \\ &x^\prime \in [0, 1]^n \end{array} minimizesuchthatc⋅∥x−x′∥22 lossF,l(x′)C(x′)=lx′∈[0,1]n
l o s s F , l loss_{F, l} lossF,l是将一张图片映射为一个可能的真实数字的函数。常见的损失函数是交叉熵损失函数。线性搜索被实施类搜索常数 c > 0 c > 0 c>0,生成一个最小距离的对抗样本:换句话说,我们重复解决这个优化问题,对于多个 c c c值,自适应更新 c c c使用二分查找或者其他一维优化的的方法。
B. Fast Gradient sign
快速梯度符号方法相比于L-BFGS有两个关键的不同:首先,它优化 L ∞ L_\infty L∞距离指标,第二,它设计主要是快而不是产生非常近的对抗样本。给定一张图片 x x x,快速梯度符号法,设:
x ′ = x − ϵ s i g n ( ∇ l o s s f , t ( x ) ) x^\prime = x - \epsilon sign(\nabla loss_{f, t}(x)) x′=x−ϵsign(∇lossf,t(x))
ϵ \epsilon ϵ选择足够小,以至于不可探测, t t t是目标标签。直观上,对于每个像素,快速梯度符号法使用损失函数的梯度来决定哪个方向上的像素密度需要改变(无路是增加或者减少),来最小化损失函数;之后它同时的变换所有的像素。
值得注意的是,快速梯度符号法攻击,设计的是快,而不是优化。它不是产生最小的对抗扰动。
Iterative Gradient Sign: Kurakin等人,引入了一个简单的增强的快速梯度符号法,不是采用单个步长 ϵ \epsilon ϵ在梯度的符号方向上,而是采用多个较小的步长 α \alpha α,结果被裁剪到相同的 ϵ \epsilon ϵ。特被的,通过设置
x 0 ′ = 0 x_0^\prime = 0 x0′=0
在每次迭代中:
x i ′ = x i − 1 ′ − c l i p ϵ ( α ⋅ s i g n ( ∇ l o s s F , t ( x i − 1 ′ ) ) ) x_i^\prime = x_{i-1}^\prime - clip_\epsilon(\alpha \cdot sign(\nabla loss_{F, t}(x_{i-1}^\prime))) xi′=xi−1′−clipϵ(α⋅sign(∇lossF,t(xi−1′)))
迭代梯度符号法被发现产生优于快速梯度符号法的结果。
C. JSMA
Papernot等人引入了一个基于 L 0 L_0 L0距离的优化的攻击方法,被称为Jacobian-base Saliency Map Attack(JSMA)。对于它们的算法我们给出一个简要的总结;对于完全的描述和动机,我们鼓励读者阅读他们的原文。
在一个高度的层面上,这个攻击算法是一个贪心算法,每次选择像素值来修改,在每次迭代中增大目标分类。他们使用梯度 ∇ Z ( x ) l \nabla Z(x)_l ∇Z(x)l来计算一个显著图,将每个像素的影响建模到结果的分类中。一个大的数值表明了改变它,将极大的增加模型将图片分类为指定类别 l l l的可能。考虑显著图,它采用了最重要的像素并且修改它来增加类别 l l l的可能性,重复这个步骤直到,超过了修改的像素的阈值,是的攻击被检测到,或者它成功的改变了分类。
更详细的,我们定义个显著图,依据每一对像素值 p , q p, q p,q,定义:
α p q = ∑ i ∈ { p , q } ∂ Z ( x ) t ∂ x i β p q = ( ∑ i ∈ { p , q } ∑ j ∂ Z ( x ) j ∂ x i ) − α p q \begin{array}{l} \alpha_{pq} = \sum_{i \in \{p,q\}} \frac{\partial{Z(x)_t}}{\partial{x_i}} \\ \beta_{pq} = \left(\sum_{i \in \{p,q\}} \sum_j \frac{\partial{Z(x)_j}}{\partial{x_i}}\right) - \alpha_{pq} \end{array} αpq=∑i∈{p,q}∂xi∂Z(x)tβpq=(∑i∈{p,q}∑j∂xi∂Z(x)j)−αpq
α p q \alpha_{pq} αpq代表了同时改变 p , q p, q p,q将会改变目标分类的程度, β p q \beta_{pq} βpq表示改变 p , q p, q p,q改变其他输出的程度。算法采用:
( p ⋆ , q ⋆ ) = a r g m a x (p,q) ( − α p q ⋅ β p q ) ⋅ ( α p q > 0 ) ⋅ ( β p q < 0 ) (p^\star, q^\star) = \underset{\operatorname{(p, q)}}{arg\,max} (-\alpha_{pq} \cdot \beta_{pq}) \cdot (\alpha_{pq} > 0) \cdot (\beta_{pq} < 0) (p⋆,q⋆)=(p,q)argmax(−αpq⋅βpq)⋅(αpq>0)⋅(βpq<0)
α p q > 0 \alpha_{pq} > 0 αpq>0表示目标类别越有可能, β p q < 0 \beta_{pq} < 0 βpq<0其他类别没有可能, − α p q ⋅ β p q -\alpha_{pq} \cdot \beta_{pq} −αpq⋅βpq最大。
注意JSMA使用了倒数第二个层 Z Z Z,logits,在梯度的计算过程中:softmax F F F的输出并没有被使用,我们将这个称为JSMA-Z攻击。
然而,点那个这个作者将这个攻击运用到他们的防御蒸馏的网络上,他们使用了 F F F而不是 Z Z Z。换句话说,他们使用了softmax( F F F)的输出而不是logits( Z Z Z)的输出。我们将这个称为 J S M A − F JSMA-F JSMA−F攻击5。
当一张图片有多个通道(例如:RGB),这个攻击考虑 L 0 L_0 L0距离变为1,对于每个像素通道独立的改变(也就是如果一个像素的三个通道都改变了, L 0 L_0 L0范数将会是3)。然而,我们不认为这是一个有意义的威胁模型,当比较这个攻击,我们评估了所有的模型。
D. Deepfool
Deepfool是一个优化 L 2 L_2 L2距离指标的无目标攻击技术。它是有效的,并且产生了相比于L-BFGS方法更近的对抗样本。
作者构建Deepfool通过想象神经网络总的是线性的,用一个超平面分离每个类别。基于这个,他们分析设计了一个优化方法,对于这个简单的问题,构建了对抗样本。
之后,由于实际上不是线性的,对于这个方法他们采取了进一步的措施,重复了这个过程第二次。当一个真实的对抗样本被发现时,停止搜索。
使用的精确的公式相当的复杂:有趣的读者可以阅读原文。
IV. 实验设置
在研究我们的攻击算法破解蒸馏之前,我们描述一下我们将在一个我们如何训练的模型上评估我们的攻击方法。
我们在MNIST和CIFAR-10分类任务上训练了两个网络,对于ImageNet分类任务使用了一个于训练的网络。我们的模型和训练方法和在39呈现的是相同的。我们在MNIST获得了99.5%的准确率,相比于顶尖的水平。在CIFAR-10上,我们获得了80%的准确度,和在蒸馏工作中给出的准确率一致6。
MNIST和CIFAR-10模型架构在表1给出,超参数的选择在表2给出。我们在训练过程中使用了基于动量的SGD优化器。
Layer Type | MNIST Model | CIFAR Model |
---|---|---|
Convolution Relu | 3x3x32 | 3x3x64 |
Convolution Relu | 3x3x32 | 3x3x64 |
Max Pooling | 2x2 | 2x2 |
Convolution Relu | 3x3x64 | 3x3x128 |
Convolution Relu | 3x3x64 | 3x3x128 |
Max Pooling | 2x2 | 2x2 |
Fully Connected Relu | 200 | 256 |
Fully Connected Relu | 200 | 256 |
Softmax | 10 | 10 |
表1模型架构 对于MNIST和CIFAR-10,这个架构和原始的蒸馏工作中的架构是相同的。
Parameter | MNIST Model | CIFAR Model |
---|---|---|
Learning Rate | 0.1 | 0.02(decay 0.5) |
Momentum | 0.9 | 0.9(decay 0.5) |
Delay Rate | - | 10 epochs |
Dropout | 0.5 | 0.5 |
Batch Size | 128 | 128 |
Epochs | 50 | 50 |
表2模型参数对于MNIST和CIFAR-10。这个参数和原始的蒸馏工作中的参数是相同的。
即使使用dropout,CIFAR-10模型显著的过拟合训练数据:我们获得了最终的训练交叉熵损失0.05准确率98%,验证集损失1.2验证准确率80%。我们没有通过实施图片增强或者添加额外的dropout,因为在39中没有,来修改网络。
ImageNet. 考虑的MNIST和CIFAR,都是相对小的数据集,我们也考虑了ImageNet数据集,没有训练我们自己的模型,我们使用了一个预训练的模型Inception v3网络,获得来 96% top-5的准确率(也就是,正确类别在5个最有可能中的1个的概率为96%)。Inception 采用的图片是 299x299x3维度的向量。
V. 我们的方法
我们相见转到我们的构建对抗样本的方法。首先,我们依靠对抗样本的初始公式,公式化定义找到一个对抗实例,对于一张图片 x x x:
m i n i m i z e D ( x , x δ ) s u c h t h a t C ( x δ ) = t x δ ∈ [ 0 , 1 ] n \begin{array}{l} minimize \quad & D(x, x \delta) \\ such that \quad & C(x \delta) = t \\ & x \delta \in [0, 1]^n \end{array} minimizesuchthatD(x,x δ)C(x δ)=tx δ∈[0,1]n
x x x是固定的,目标是找到一个 δ \delta δ,使得 D ( x , x δ ) D(x, x \delta) D(x,x δ)最小。也就是,我们想要找到一些小的改变 δ \delta δ,对图像 x x x做出改变,使得结果依然是一个有效的图片。这里的 D D D是一些距离指标;对于我们来说,它可以是早前讨论的 L 0 , L 2 , L ∞ L_0, L_2, L_\infty L0,L2,L∞。
我们通过将它公式化为一个适当的优化实例,可以通过现有的优化算法解决的问题。有许多方法可以做到;我们探索了公式空间并且经验上识别哪个可以导致最有效的结果。
A. 目标函数
上面的公式用现有的算法很难解决,因为限制 C ( x δ ) = t C(x \delta) = t C(x δ)=t是高度非线性的。因此,我们将它表示为一个不同的,更适合优化的形式。我们定义一个目标函数 f f f,满足 C ( x δ ) = t C(x \delta) = t C(x δ)=t,当且仅当 f ( x δ ) ≤ 0 f(x \delta) \leq 0 f(x δ)≤0,对于 f f f有很多的选择:
f 1 ( x ′ ) = − l o s s F , t ( x ′ ) 1 f 2 ( x ′ ) = ( m a x i ≠ t F ( x ′ ) t − F ( x ′ ) t ) f 3 ( x ′ ) = s o f t p l u s ( m a x i ≠ t F ( x ′ ) t − F ( x ′ ) t ) − l o g ( 2 ) f 4 ( x ′ ) = ( 0.5 − F ( x ′ ) t ) f 5 ( x ′ ) = − l o g ( 2 F ( x ′ ) t − 2 ) f 6 ( x ′ ) = ( m a x i ≠ t Z ( x ′ ) t − Z ( x ′ ) t ) f 7 ( x ′ ) = s o f t p l u s ( m a x i ≠ t Z ( x ′ ) t − F Z x ′ ) t ) − l o g ( 2 ) \begin{array}{l} f_1(x^\prime) = -loss_{F,t}(x^\prime) 1 \\ f_2(x^\prime) = (\underset{\operatorname{i \neq t}}{max}F(x^\prime)_t - F(x^\prime)_t)^ \\ f_3(x^\prime) = softplus(\underset{\operatorname{i \neq t}}{max}F(x^\prime)_t - F(x^\prime)_t) - log(2)\\ f_4(x^\prime) = (0.5 - F(x^\prime)_t)^ \\ f_5(x^\prime) = -log(2F(x^\prime)_t - 2) \\ f_6(x^\prime) = (\underset{\operatorname{i \neq t}}{max}Z(x^\prime)_t - Z(x^\prime)_t)^ \\ f_7(x^\prime) = softplus(\underset{\operatorname{i \neq t}}{max}Z(x^\prime)_t - FZx^\prime)_t) - log(2)\\ \end{array} f1(x′)=−lossF,t(x′) 1f2(x′)=(i=tmaxF(x′)t−F(x′)t) f3(x′)=softplus(i=tmaxF(x′)t−F(x′)t)−log(2)f4(x′)=(0.5−F(x′)t) f5(x′)=−log(2F(x′)t−2)f6(x′)=(i=tmaxZ(x′)t−Z(x′)t) f7(x′)=softplus(i=tmaxZ(x′)t−FZx′)t)−log(2)
s s s是正确的类别, ( e ) (e)^ (e) 是 m a x ( e , 0 ) max(e, 0) max(e,0)的简写, s o f t p l u s ( x ) = l o g ( 1 exp ( x ) ) softplus(x) = log(1 \exp(x)) softplus(x)=log(1 exp(x)), l o s s F , s ( x ) loss_{F, s}(x) lossF,s(x)是对于 x x x的交叉熵损失函数
注意我们调整了上面公式的一些内容,添加了一个常量;我们做这些是使得函数符合我们的定义。这不影响最后的结果,因为,它这是缩放了最小化函数。
现在,不是公式化这个问题,如下:
m i n i m i z e D ( x , x δ ) s u c h t h a t f ( x δ ) ≤ 0 x δ ∈ [ 0 , 1 ] n \begin{array}{l} minimize \quad & D(x, x \delta) \\ such that \quad & f(x \delta) \leq 0 \\ & x \delta \in [0, 1]^n \end{array} minimizesuchthatD(x,x δ)f(x δ)≤0x δ∈[0,1]n
我们使用一个替代的公式
m i n i m i z e D ( x , x δ ) c ⋅ f ( x δ ) s u c h t h a t x δ ∈ [ 0 , 1 ] n \begin{array}{l} minimize \quad & D(x, x \delta) c \cdot f(x \delta) \\ such that \quad & x \delta \in [0, 1]^n \end{array} minimizesuchthatD(x,x δ) c⋅f(x δ)x δ∈[0,1]n
, c ,c ,c是一个合适的选择的常量,这连个是等价的,在这个意义上,存在c>0使得后者的最优解与前者的最优解相匹配。在用一个 L p L_p Lp范数实例化一个距离指标 D D D,问题变为: 给定 x x x,找到 δ \delta δ,满足:
m i n i m i z e ∥ δ ∥ p c ⋅ f ( x δ ) s u c h t h a t x δ ∈ [ 0 , 1 ] n \begin{array}{l} minimize \quad & \|\delta\|_p c \cdot f(x \delta) \\ such that \quad & x \delta \in [0, 1]^n \end{array} minimizesuchthat∥δ∥p c⋅f(x δ)x δ∈[0,1]n
选择常数 c c c。
实验上,我们发现通常最好的寻找 c c c的方式是,使用一个最小的 c c c对于每一个结果 x ⋆ x^\star x⋆,有 f ( x ⋆ ) ≤ 0 f(x^\star) \leq 0 f(x⋆)≤0,这是的梯度下降同时最小话选项而不是在一开始选择一个来优化。
我们通过运行 f 6 f_6 f6公式(我们发现是最有效的)来验证这一点,在 c c c的均匀空间中( 0.01 ≤ c ≤ 100 0.01 \leq c \leq 100 0.01≤c≤100)在MNIST数据集上,我们在图2画出了这条线7。
图2: 对于常数 c c c的敏感性。我们画出了 L 2 L_2 L2距离,使用梯度下降作为 c c c的一个函数生成的对抗样本,对于目标函数 f 6 f_6 f6。当 c < 1 c < 1 c<1时,攻击基本不成功,当 c > 1 c > 1 c>1。攻击变的有效,总是成功。
进一步,我们发现,如果选择最小的 c c c满足 f ( x ⋆ ) ≤ 0 f(x^\star) \leq 0 f(x⋆)≤0,在5%优化70%,在30%优化98%。这里“最优”倾向于遭到最好的 c c c值。因此,在我们的式样中,我们使用修改的二分查找来选择 c c c。
B. 盒受限
为了确保修改后依然是一个有效的图片,我们有一个限制在 δ \delta δ上:我们有 0 ≤ x i δ i ≤ 1 0 \leq x_i \delta_i \leq 1 0≤xi δi≤1,对于所有的 i i i。在优化的文献中,这个被称之为"盒受限"。之前的工作使用了一个特别的优化算法,L-BFGS-B,原生的支持盒受限。
对于这个问题我们研究了三个不同的方法
***Projected gradient descent***执行一次标准的梯度下降,然后将所有的坐标裁剪到盒之内。
这个方法对于梯度下降方法表现不怎么好,有一个复杂的更新步骤(例如,使用动量):当裁剪实际的 x i x_i xi,我们意想不到的改变了对于该算法的下次迭代的输入。
***Clipped gradient descent***在每次迭代中,不对 x i x_i xi进行裁剪;相反的,它将裁减整合到最小化的目标函数中。换句话说,将 f ( x δ ) f(x \delta) f(x δ)替换为 f ( m i n ( m a x ( x δ , 0 ) , 1 ) ) f(min(max(x \delta, 0), 1)) f(min(max(x δ,0),1)),min和max采用元素乘。
***Change of variables***引入了一个新的变量 w w w而不是在上面定义的变量 δ \delta δ上优化,我们采用变脸变化,在 w w w上进行优化
δ i = 1 2 ( t a n h ( w i ) 1 ) − x i \delta_i = \frac{1}{2}(tanh(w_i) 1) - x_i δi=21(tanh(wi) 1)−xi
由于 − 1 ≤ t a n h ( w i ) ≤ 1 -1 \leq tanh(w_i) \leq 1 −1≤tanh(wi)≤1,服从于 0 ≤ x i δ i ≤ 1 0 \leq x_i \delta_i \leq 1 0≤xi δi≤1,所以方案是有效的8。我们可以将这个方法看作是裁减梯度下降的平滑处理,消除卡在外部区域的问题。
这些方法允许我们使用其他的优化算法,这些算法原本不支持盒受限。我们使用Adam优化器几乎唯一的,因为我们发现他是最有效的方法,可以快速的找到对抗样本。我们尝试了三个方案-标准梯度下降,动量梯度下降,Adam-所有的三个长生了相同的结果。然而,Adam收敛的比其他的方法更加的快。
C. 方法评估
对于每个可能的目标函数 f ( ⋅ ) f(\cdot) f(⋅),和方法来增强盒受限,我们评估了找到的对抗样本的质量。
为了选区最好的 c c c,我们执行了20个迭代的二分查找,在 c c c上,对于每个选择的 c c c值,我们运行了10000次的使用了Adam优化器的迭代9.
结果见表3。我们评估了MNIST和CIFAR数据就上找到的对抗样本的质量。每个目标函数的相对顺序在两个数据集上是相同的,所以为了简洁,我们只报告了MNIST的结果。
表3: 评估了所有的组合,7个可能的目标函数,3个盒受限,我们展示了平均的 L 2 L_2 L2扰动,标准差,成功的概率(使用我们的方法生成的白盒对抗样本)。评估了1000个随机的实例。当成功率不是100%,攻击成功时提供均值。
有一个因素子最好的目标函数的最坏的目标函数的之间。处理盒受限方法的选择没有最好的最小化函数的影响大。
事实上,最好的目标函数,交叉熵损失函数,在之前的文献中是推荐使用的。
为什么有些损失函数比其他的好?当 c = 0 c = 0 c=0时,梯度下降不会在继续,从初始的图片。然而,一个大的 c c c常常引起初始梯度下降以一个非常贪婪的方式运行,只在方向上进行,很大程度上容易减少 f f f而忽略 D D D的损失-这引起了梯度下降找到了次优解。
这意味着,对于损失函数 f 1 f_1 f1和 f 4 f_4 f4,没有好的常数 c c c是有用的在梯度下贱搜索中。由于常数 c c c加权了相关的距离项和损失项的重要性,为了一个固定的常数 c c c变的有用,这两项的相关值应该依然近似相等。这不是这两个损失函数的特列。
为了解释这个特列,我们旁敲侧击的分析了对抗样本如何存在。考虑在一个网络上的,一个有效的输入 x x x,和一个对抗样本 x ′ x^\prime x′。
如果我们线性的从a到b进行插值,看起来怎样?也就是,设 y = α x ( 1 − α ) x ′ , f o r α ∈ [ 0 , 1 ] y = \alpha x (1 - \alpha) x^\prime, for \quad \alpha \in [0, 1] y=αx (1−α)x′,forα∈[0,1]。结果是 Z ( ⋅ ) t Z(\cdot)_t Z(⋅)t的值从输入到对抗样本是最相似的,因此 F ( ⋅ ) t F(\cdot)_t F(⋅)t是一个逻辑logits。我们通过实验验证了这个事实,通过构造对抗样本,在MNIST和CIFAR数据集上前1000个测试图片,使用我们的方法,找到了皮尔逊相关系数(Perason correlation coefficient) r > 0.9 r > 0.9 r>0.9。
考虑到这个,考虑损失函数 f 4 f_4 f4(和 f 1 f_1 f1的参数类似)。为了梯度下贱就攻击,做出任何的初始的改变,常数 c c c需要足够的大
ϵ < c ( f 1 ( x ϵ ) − f 1 ( x ) ) \epsilon < c(f_1(x \epsilon) - f_1(x)) ϵ<c(f1(x ϵ)−f1(x))
或者当 ϵ → 0 \epsilon \rightarrow 0 ϵ→0
1 c < ∣ ∇ f 1 ( x ∣ \frac{1}{c} < |\nabla f_1(x| c1<∣∇f1(x∣
暗示, c c c必须大于梯度的倒数,来做出改善,但是 f 1 f_1 f1的梯度和 F ( ⋅ ) t F(\cdot)_t F(⋅)t相等,在初始图片的周围,以为这 c c c将有一个很大的值。
然而,只要我们离开初始图像的附近,梯度 ∇ f 1 ( x δ ) \nabla f_1(x \delta) ∇f1(x δ)增加了一个指数,使得大的常数 c c c以一个贪婪的方式引起梯度下降的执行。
我们通过式样验证了所有的这些理论。当我们运行我们的攻击方法,尝试常数从 1 0 − 10 t o 1 0 10 10^{-10} \quad to \quad 10^{10} 10−10to1010悬着,对于损失函数 f 4 f_4 f4平均常数是 1 0 6 10^6 106.
损失函数 f 1 f_1 f1的平均梯度在有效的图片上是 2 − 20 2^{-20} 2−20但是 2 − 1 2^{-1} 2−1是最精的对抗样本,这因为着 c c c百万倍的比它大,引起了损失函数 f 4 f_4 f4和 f 1 f_1 f1比其他函数表现的糟糕。
D. 离散化
我们将像素密度建模为一个连续的真实的数字在[0, 1]的方位。然而,在一个有效的图片,每个像素的密度必须时一个(离散)的整数,在 { 0 , 1 , ⋯ , 255 } \{0, 1, \cdots, 255\} {0,1,⋯,255}.我们的公式中没有包含附加要求。实际上,我们忽视这恶完整性约束,解决这个连续优化问题,第 i i i个像素值的密度变为 [ 255 ( x i δ i ) ] [255(x_i \delta_i)] [255(xi δi)].
这歌舍入可能轻微的轻微的降低对抗样本的治疗。如果我们恢复攻击质量,我们贪婪的在由离散方案,一次改变一个像素点,的格子上,搜索。这种贪婪搜索对于我们的任何攻击不会失败。
先前的工作很大程度上忽视了完整性约束10。例如,当使用快速梯度符号攻击,用 ϵ = 0.1 \epsilon = 0.1 ϵ=0.1(例如,改变像素值的10%),离散化很少影响攻击的成功率。相反,在我们的工作中,我们能够找到攻击使得对于图片做出更小的改变,所以离散化的印象不能被忽视。我们关心总是生成有效的图片;当报告我们的攻击成功率,它们总是包含了离散化的后处理。
VI. 我们的三种攻击
A. 我们的 L 2 L_2 L2攻击
将这些想法放在一起,我们获得了一个方法,寻找对抗样本,在 L 2 L_2 L2指标下有一个低的扰动。给定 x x x,我们选择目标类别 t t t(我们有 t ≠ C ⋆ ( x ) t \neq C^\star(x) t=C⋆(x)),之后寻找 w w w,解决:
m i n i m i z e ∥ 1 2 ( t a n h ( w ) 1 ) − x ∥ 2 2 c ⋅ f ( 1 2 t a n h ( w ) 1 ) minimize \quad \|\frac{1}{2}(tanh(w) 1) - x\|_2^2 c \cdot f(\frac{1}{2}tanh(w) 1) minimize∥21(tanh(w) 1)−x∥22 c⋅f(21tanh(w) 1)
f f f的定义如下:
f ( x ′ ) = m a x ( m a x { Z ( x ′ ) i : i ≠ t } − Z ( x ′ ) t , − k ) f(x^\prime) = max(max\{Z(x^\prime)_i : i \neq t\} - Z(x^\prime)_t, -k) f(x′)=max(max{Z(x′)i:i=t}−Z(x′)t,−k)
f f f是基于早前找到的最好的目标函数,轻微的修改,以至于我们可以控制置信度,通过调整 k k k产生的误分类。参数 k k k鼓励方案找到一个对抗实例 x ′ x^\prime x′被分类为类别 t t t有高的置信度。我们设置 k = 0 k = 0 k=0,对于我们的攻击方法,但是这里有一个附带利益,这个公式可以允许我们控制获得想要的置信度。则在VIII-D节中有进一步的讨论。
图3:显示了将这个方法运用到MNIST模型上,对于每个原数字和目标数字。几乎所有的攻击在视觉上和原数字不可区分。
相对应的图12对于CIFAR,在附录中。没有攻击在基线图片上是可区分的。
图3: 我们的 L 2 L_2 L2攻击运用在MNIST数据集上,实施了一个有目标的攻击对于每个原/目标数字,每个数字是在数据集中有那个标签的第一个。
Multiple starting-point gradient descent. 梯度下降的主要的问题是它的贪婪搜索不能保证找的最优解,可能陷入局部最优解。为了改进这一点,我们选择随机的雨原始图片相近的起始点,从每一个这样点,和一个固定的迭代次数上,运行梯度下降。我们随机的在以 r r r为半径的地方采样均匀的数据点,这里的 r r r是目前能够找到的最近的对抗样本。从多个起点开始减少了梯度下降陷入一个坏的局部最小值的可能性。
B. 我们的 L 0 L_0 L0攻击
L 0 L_0 L0距离指标是不可微的,因此,不适合标准的梯度下降。相反,我们使用了一个迭代的算法,在每次迭代中,识别一些像素对于分类器的输出没有太大的影响,之后固定这些像素,所以他们的值不会被改变。固定像素点的集合在每次迭代中增加,直到我们中断过程,识别一个最小(可能不是最小)的像素子集,可以被修改生成一个对抗样本。在每次迭代中,我们使用我们的 L 2 L_2 L2攻击来识别哪个像素不重要。
更细节的,在每次迭代中,我们调用 L 2 L_2 L2攻击,限制修改只在允许的集合里的像素。设 δ \delta δ为 L 2 L_2 L2攻击在一个输入的图片 x x x上的返回的结果,所以 x δ x \delta x δ是一个对抗样本。我们计算 g = ∇ f ( x δ ) g = \nabla f(x \delta) g=∇f(x δ)(目标函数的梯度在对抗样本上的评估)。之后,我们选择像素 i = a r g m i n i g i ⋅ δ i i = \underset{i}{arg\,min} \, g_i \cdot \delta_i i=iargmingi⋅δi,之后固定 i i i。例如将 i i i从允许的集合清除11。 g i ⋅ δ i g_i \cdot \delta_i gi⋅δi的直觉告诉我们我们从图片的第 i i i个像素减少了多少的 f ( ⋅ ) f(\cdot) f(⋅),当将 x x x移动到 x δ x \delta x δ: g i g_i gi告诉我们在 f f f上我们获得了多少的减少,对于单位改变第 i i i个像素,我们将这个乘以第 i i i个像素的改变量。这个过程重复直到 L 2 L_2 L2不能找到一个对抗样本。
这是最后一个细节来获得强的结果:选择一个常数 c c c给 L 2 L_2 L2攻击使用。为了做到这点,我们初始化 c c c为一个非常小的值(例如。 1 0 − 4 10^{-4} 10−4)。我们之后运行我们的 L 2 L_2 L2攻击在这个 c c c值上。如果它失败了,我们使用二倍的 c c c,再次尝试,知道它成功。我们终止搜索直到 c c c超过了一个固定的阈值(例如: 1 0 10 10^{10} 1010)。
JSMA 使用一个初始为空的像素集合,运训被改变,然后设置这些像素来最大化损失函数。相反,在我们的攻击中,我们减少像素的集合-初始化包含每一个像素-运训被改变的集合。
我们的算法比JSMA更加的有效(评估将VII节)。它同样有效:我们引入了优化,可以适合和我们的 L 2 L_2 L2攻击在MNIST和CIFAR上的单个起点的攻击一样快;在ImageNet上比较慢。相反,我们没有在初始图片上在每次迭代中开始梯度下降,我们从之前迭代找到的方案上上开始梯度下降(“warm-start”),这极大的极少了梯度下降在每次迭代中的轮次,因为 k k k的像素的方案与 k 1 k 1 k 1像素的方案非常的近。
图4显示了 L 0 L_0 L0攻击运用在每一个数字的每个原始类别和每一个目标类表,在MNIST数据集上。攻击是明显可见的,相比于 L 2 L_2 L2攻击, L 0 L_0 L0攻击更加的困难。大概是最坏的情况就是一个7倍分类为6;有趣的是这个攻击对于 L 2 L_2 L2是唯一能从视觉上辨别的攻击之一。
图4: 我们的 L 0 L_0 L0攻击运用在MNIST数据集上,实施了一个有目标的攻击对于每个原/目标数字,每个数字是在数据集中有那个标签的第一个。
对于CIFAR一个比较的图11在附录中。
C. 我们的 L ∞ L_\infty L∞攻击
L ∞ L_\infty L∞距离指标不是一个完全可微的,标准的梯度下降不能表现的横好。我们使用原生的优化:
m i n i m i z e c ⋅ f ( x δ ) ∥ δ ∥ ∞ minimize \quad c \cdot f(x \delta) \|\delta\|_\infty minimizec⋅f(x δ) ∥δ∥∞
然而,我们发现梯度下降的到了一个非常差的结果: ∥ δ ∥ ∞ \|\delta\|_\infty ∥δ∥∞项只惩罚了最大的值(绝对值)在 δ \delta δ,对于其他的值没有影响。因为这点,梯度下降很快的卡滞振荡在两个次优解上。考虑一种情况 δ i = 0.5 , δ j = 0.5 − ϵ \delta_i = 0.5, \delta_j = 0.5 - \epsilon δi=0.5,δj=0.5−ϵ, L ∞ L_\infty L∞项只惩罚了 δ i \delta_i δi,不是 δ j \delta_j δj,并且 ∂ ∂ δ j ∥ δ ∥ ∞ \frac{\partial}{\partial{\delta_j}}\|\delta\|_\infty ∂δj∂∥δ∥∞,在这一点将会是0.因此,梯度没有施加任何的惩罚在 δ j \delta_j δj上,即使它已经非常大了。在下一次的迭代中,我们可能会移动到一个点, δ j \delta_j δj略大于 δ i \delta_i δi,例如 δ i = 0.5 − ϵ ′ , δ j = 0.5 ϵ ′ ′ \delta_i = 0.5 - \epsilon^\prime, \delta_j = 0.5 \epsilon^{\prime\prime} δi=0.5−ϵ′,δj=0.5 ϵ′′,一个我们开始的镜像图片。换句话说,梯度下降很可能震荡回来,向前穿过线 δ i = δ j = 0.5 \delta_i = \delta_j = 0.5 δi=δj=0.5,使得它不肯能在进一步。
我们使用一个迭代的攻击解决这个问题,我们在目标函数中使用一个惩罚替换了 L 2 L_2 L2项, τ \tau τ(初始为1,在每次迭代中衰减)这个阻止了震荡,因为这个损失项同时惩罚所有的大值。特别的在每次迭代中过,我们解决:
m i n i m i z e c ⋅ f ( x δ ) ∑ i [ ( δ i − τ ) ] minimize \quad c \cdot f(x \delta) \sum_i[(\delta_i - \tau)^ ] minimizec⋅f(x δ) i∑[(δi−τ) ]
在每次迭代,如果 δ i < τ \delta_i < \tau δi<τ,对于所有的 i i i,我们减少 τ \tau τ一个0.9并且重工夫,否者,我们终止搜索。
再次,我们必须选择一个好的常数 c c c给 L ∞ L_\infty L∞攻击。我们选择与 L 0 L_0 L0攻击相同的方式:初始设置 c c c为一个很小的数字,运行 L ∞ L_\infty L∞攻击,在这个 c c c值,如果它失败了,我们二倍 c c c,并且再次尝试,知道它成功。我们终止搜索如果 c c c超过了一个固定的阈值。
使用"warm start"在每次迭代对于梯度下降,这个算法和我们的 L 2 L_2 L2算法一样的快(又单个起点)。
图5显示了 L ∞ L_\infty L∞攻击运用在每一个数字的每个原始类别和每一个目标类表,在MNIST数据集上。虽然最不同的是视觉上不可见的,最坏的结果是7倍分类为6.
图5: 我们的 L ∞ L_\infty L∞攻击运用在MNIST数据集上,实施了一个有目标的攻击对于每个原/目标数字,每个数字是在数据集中有那个标签的第一个。
对于CIFAR一个比较的图13在附录中。
VII. 攻击评估
我们比较了我们的有目标攻击和之前发布的最好的结果,对于三个距离指标的每一个。
我们重新实现了Deepfool,快速梯度符号,迭代梯度符号。对于快速符号,我们寻找 ϵ \epsilon ϵ,来找到最小的距离,来确保一个对抗样本;如果没有 ϵ \epsilon ϵ产生目标类别则是比爱。我们的迭代梯度符号方法是勒烯的,我们寻找 ϵ \epsilon ϵ(固定 α = 1 256 \alpha = \frac{1}{256} α=2561)并且返回成功的最小的。
对于JSMA我们使用了CleverHans中的实现,只有一个轻微的修改(我们改善了50x,对于准确率没有影响)。
JSMA不能够运行在ImageNet因为一个内在的显著的计算代价:会想到JSMA在每一对像素上 p , q p, q p,q搜索,一起改变是的目标类别更有可能,其他类别更不可能。ImageNet表示了图像 299 × 299 × 3 299 \times 299 \times 3 299×299×3向量,搜索在所有的像素对上搜索需要 2 36 2^{36} 236在每次计算的工程中,如果我们去除了在每对像素上的搜索,JSMA的成功率显著的下降,我们因此报告他不能在ImageNet上工作。
我们将如果攻击产生了正确的目标类别的对抗样本作为成功,无路需要做出多大的改变。失败表示攻击完全不能成功。
我们在CIFAR和MNIST测试集的前1000张图片上评估。在ImageNet上我们在1000张原本倍Inception v312正确分类的图片。在ImageNet上我们大约best-case, worst-case结果,通过随机的选择100个目标类别(10%)。
结果在表IV对于MNIST和CIFAR,表5对于ImageNet13.
表IV相比于三个有目标攻击与之前的工作对于我们的MNIST和CIFAR模型,当成功率不是100%,那么均值就是只是过度成功而已.
表V相比于三个有目标攻击与之前的工作对于我们的Inception v3在ImageNet上的模型,当成功率不是100%,那么均值就是只是过度成功而已.
对于每一个距离指标,在所有的三个数据集,我们攻击方法找到了比之前顶尖的攻击方法更近的对抗样本,我们的方法从来没有找不到对抗样本。我们的 L 0 L_0 L0和 L 2 L_2 L2公哦,找到的对抗样本,是之前提出的攻击方法的2x和10x的小的扰动,并且100%成功。我们的 L ∞ L_\infty L∞攻击相比于之前的工作,他们的成功率更高。我们的 L ∞ L_\infty L∞攻击在ImageNet上非常的成功,我们可以改变一张图片的类别为为任意的类别,同时只需要最小的像素,改变是视觉上不可探测的。
随着学习任务变的更加的困难,之前的攻击产生了比较坏的结果,由于模型的复杂性,相反,随着任务复杂度的增加我们的模型表现的甚至更加的好。我们发现JSMA不能找到有目标的 L 0 L_0 L0对抗样本在ImageNet上,然而我们的能够100%成功。
意识到在模型之间的结果是不可比较的。例如 L 0 L_0 L0攻击必须改变10倍多的像素,在ImageNet分类上相比于MNIST分类。ImageNet有114x多的像素,像素片段必须改变的非常的小。
生成合成数字,使用我们的有目标攻击,我们可以从任何一张图片开始,找到每一个给定类别的对抗样本,我们展示了最小的扰动对于一整个黑盒图片,需要它倍分类为每一个数字,对于每一个距离指标。在图6.
图6:有目标攻击对于10个MNIST上的数字,起始图片是完全黑的,对于三个距离指标。
之前实施的 L 0 L_0 L0攻击,然而,当使用他们的攻击,“对于类别0,2,3, 5”可以清晰的识别出目标数字,使用我们的强有力的攻击,没有数字是可以识别的。图7实施了相同的分析,从全是白的图片开始。
图7:有目标攻击对于10个MNIST上的数字,起始图片是完全白的,对于三个距离指标。
注意所有的全黑图片不需要任何的改变,变为数字1,因为它初始分类为1,并且所有的全白图片不需要改变,变为8,因为,初始图片已经是8.
运行分析,我们相信有两个原因为什么考虑对抗样本生成算法运行重要的:首先,为了理解,如果对于攻击者实际来挂在攻击,执行是禁止的,第二,在对抗再训练中,作为内循环使用。
相比于精确的攻击时间,可以被误导。例如:我们并行化实现了我们的 L 2 L_2 L2攻击,允许它在上百个攻击在一个GPU上,提升性能10x到100x。然而,我们没有并行化我们的 L 0 , L ∞ L_0, L_\infty L0,L∞攻击,类似的,我们对于快速梯度符号的实现是并行的,但是JSMA不是,我们因此,抑制了精确的表现,因为我们相信,不公平的比较比没有比较更糟。
我们所有的攻击和之前的攻击,对于一个攻击者来说是足够的。没有一个攻击需要超过几分钟来运行一个给定的实例。
与 L 0 L_0 L0比较的我们的攻击2x到10-倍的比我们优化的JSMA算法慢(比起非优化的版本显著的快)。我们的 L 2 , L ∞ L_2, L_\infty L2,L∞攻击比之前的 L 2 , L ∞ L_2, L_\infty L2,L∞慢10x到100x,除了快速梯度符号,10x的慢。
VIII. 防御蒸馏的评估
蒸馏首先被提出作为一种将一个大的模型(the teacher)转换为一个小的蒸馏的模型的方法。在一个高的层面上,蒸馏工作,首先训练老师模型在训练集上以一个标准的方式。然后,使用在训练集上老师模型来标签每一个实例,用soft标签(老师网络的输出向量)。例如:一张图片的硬标签时数字7,说它被分类为7,所以soft标签可能会说他有80%的机会说它是一个7,20%的机会说它是其他的。之后,我们训练一个蒸馏模型在一个来自老师的soft标签上,而不是来自训练集的硬标签。蒸馏可以潜在的提高测试集的准确性,和小模型学习预测的硬标签的准确性。
防御蒸馏使用蒸馏来提升一个神经网络的鲁棒性,但是又两个显著的不同。首先,教师模型和蒸馏模型是同样的大小-防御蒸馏不能导致一个小的模型。第二,更重要,防御蒸馏使用了一个大的蒸馏温度(在下面描述)来迫使蒸馏模型变的对于它的预测非常的自信。
回忆到,softmax函数是神经网络的最后一层。防御蒸馏修改了softmax函数,也包含了一个温度常量 T T T:
s o f t m a x ( x , T ) i = e x i / T ∑ j e x j / T softmax(x, T)_i = \frac{e^{x_i/T}}{\sum_j e^{x_j/T}} softmax(x,T)i=∑jexj/Texi/T
很容易看出 s o f t m a x ( x , T ) = s o f t m a x ( x / T , 1 ) softmax(x, T) = softmax(x/T, 1) softmax(x,T)=softmax(x/T,1),直觉上,增加温度,是的一个"softer"最大值,减少温度,导致一个"hander"最大值。随着温度趋向于0,softmax趋向于最大,随着温度趋向于无穷,softmax曲线与一个均匀分布。
防御蒸馏经过以下四步:
- 训练一个模型,教师网络,通过设置softmax的温度 T T T在训练阶段
- 在训练集上通过运用教师网络到每一个实例,计算出soft标签,再次评估在温度 T T T的softmax
- 训练一个蒸馏网络(一个和教师网络相同形状的网络)在soft标签上,使用在温度 T T T的softmax
- 最后,当运行蒸馏网络,在测试阶段(分类新的输入),使用温度1.
A. 现有攻击的不足
我们简要的研究了现有的攻击在蒸馏的网络上失败的原因,找到了现有的攻击是非常脆弱的,不能轻易的找到对抗样本即使他们存在。
L-BFGS和Deepfool的失败,是因为 F ( ⋅ ) F(\cdot) F(⋅)在大多的情况下是0,阻止了标准目标函数的使用
当我们训练一个正路的网络在温度 T T T,并且在温度1测试它,我们有效的引起了对于softmax的输入变大了一个因子 T T T.痛殴在训练阶段减少交叉损失,softmax的输出被强迫到1.0对于正确的类别,对于其他事0.0,由于 Z ( ⋅ ) Z(\cdot) Z(⋅)除上了一个 T T T,蒸馏网络将学习使得 Z ( ⋅ ) Z(\cdot) Z(⋅)的值 T T T被的大于它们之前的。(正的值将会变的 T T T倍的大,负的值将乘以 T T T,变的非常的小),实验上,我们验证了这一点: Z ( ⋅ ) Z(\cdot) Z(⋅)(logits)的 L 1 L_1 L1范数的均值,在一个未蒸馏的网络上是5.8,标准差是6.4。在蒸馏的网络上( T = 100 T = 100 T=100),均值是482,标准差是457.
因为 Z ( ⋅ ) Z(\cdot) Z(⋅)的值是100倍的大,当我们在温度1测试的时候, F F F的输出变成 ϵ \epsilon ϵ在所有的组层部分,除了输出类别,有 1 − 9 ϵ 1 - 9\epsilon 1−9ϵ,对于一些非常小的 ϵ \epsilon ϵ(对于10个类别的任务),事实上,在大多数的情况下, ϵ \epsilon ϵ是非常小的,32位的浮点数接近于0.由于相似的原因,梯度是非常小的变成了0,当使用32的浮点数表示的时候。
这引起了L-BFGS最小化的过程,没能再次的进步并且终止。相反,我们运行L-BFGS用我们早前的识别的稳定的目标函数,不是目Szegedy等人建议的目标函数 l o s s F , l ( ⋅ ) loss_{F,l}(\cdot) lossF,l(⋅),L-BFGS并没有失效,一个替代的方法来解决这个攻击,是:
F ′ = s o f t m a x ( Z ( x ) / T ) F^\prime = softmax(Z(x)/T) F′=softmax(Z(x)/T)
T T T是蒸馏温度选择的。最小化 l o s s F ′ , l ( ⋅ ) loss_{F^\prime, l}(\cdot) lossF′,l(⋅)没有失效,现在梯度不会消失,由于浮点算术的舍入。这个也清晰的证明了使用这个目标函数的来最小化的脆弱性。
JSMA-F(这里,我们使用最后一层 F ( ⋅ ) F(\cdot) F(⋅)的输出来进行攻击),失败是由于和L-BFGS同样的原因; Z ( ⋅ ) Z(\cdot) Z(⋅)层的输出非常的大,softmax变的非常的硬大。这是Papernot等人在他们文章中,用来攻击防御蒸馏时使用的版本。
JSMA-Z(使用logits攻击)失败,由于不同的原因。回忆在 Z ( ⋅ ) Z(\cdot) Z(⋅)的版本的攻击,我们使用了softmax的输入来计算梯度,而不是网络最后一层。这消除了梯度小时潜在的问题。在Papernot等人引入了这个版本的攻击,但是它没有使用来攻击蒸馏;我们在这里提供它为什么失败的分析。
由于攻击使用的 Z Z Z值,意识到在相关影响上的不同,是非常重要的。如果对于softmax层最小的输入是100,那么经过softmax层,相应的输出变的几乎为0,如果如果输入从100到90,输入依然是几乎为0.然而,如果softmax层的最大的输入是10,它变为0,这将对softmax的输出有一个巨大的影响。
将这个与在他们的攻击中使用的参数关联, α \alpha α和 β \beta β代表了对于softmax层输入的大小的改变。JSMA-Z在一个非蒸馏的网络上工作,它对待所有的改变同等的重要。如果改变了单一的像素将增大目标类别为10,但是也增大了最不可能的类别为15,这个攻击将不会增加那个像素。
回忆到蒸馏使用的温度 T T T使得logits值变的 T T T倍的大,事实上,这扩大了上面提到的次优,因为logits极大的不可能,但是有轻微的变异,引起攻击拒绝作出任何改变。
快速梯度符号失败,由于和L-BFGS相同的原因:梯度几乎总是为0.然而,如果我们尝试相同的除法技巧,将这个logits除以T,在将他们喂入softmax函数,有趣的方式发生了:蒸馏依然有效。我们不能解释这个现象。
B. 运用我们的攻击
当运用我们的攻击到防御蒸馏的模型上,我们发现蒸馏只提供了小志。我们复现了防御蒸馏在MNIST和CIFAR-10上,如39描述的,使用了相同的模型,用来评估。我们训练我们的蒸馏模型用 T = 100 T=100 T=100的温度,这个值发现非常的有用。
表VI显示了我们的攻击运用到蒸馏上。所有之前的攻击没能找到对抗样本。相反,我们的攻击100%的成功对于三个距离指标。
表VI,我们的攻击运用到蒸馏网络上比较,相比于表IV在没有蒸馏的网络上。
当比较表IV,蒸馏几乎没有添加值:我们的 L 0 , L 2 L_0, L_2 L0,L2攻击,表现的恶稍微有一点糟糕,我们的 L ∞ L_\infty L∞表示的几乎一样。我们的所有的攻击100%的成功。
C. 温度的影响
在原始的工作中,增大温度可以持续的降低攻击成功率。在MNiST上,在 T = 1 T = 1 T=1,成功率为91%, T = 5 T = 5 T=5,成功率为24%, T = 100 T = 100 T=100成功率为0.5%
我们复现了这个实验,使用我们改进的攻击来理解温度的选择如何影响网络的鲁棒性,我们使用了 1 ≤ T ≤ 100 1 \leq T \leq 100 1≤T≤100的温度范围。
当我们重新运行我们实现的JSMA,我们观察到了同样的效果:攻击成功率迅速的下降。然而,用我们改进的 L 2 L_2 L2攻击,我们看见温度对于对抗样本的均值距离没有影响:相关系数 p = − 0.05 p = -0.05 p=−0.05.这清晰的证明了增加蒸馏温度,不能提升神经网络的鲁棒性,它只会因此现有的攻击经常实效。
D. 迁移性
之前的工作展示了对于一个模型的对抗样本经常迁移到另一个模型,即使他们在训练数据的不同子集上训练的。甚至是他们使用了不同的算法(例如:在神经网络上的对抗样本迁移到了随机森林)。
因此,任何防御能够提供对于对抗样本的鲁棒性,一定在某种程度上打破了这种迁移属性;否则,我们可以在一个很容易攻击的模型上运行我们的攻击算法,之后将这些对抗样本迁移到那些很难攻击的模型上。
虽然防御蒸馏对于我们的更强的方法没有鲁棒性,我们证明了一个二次突破蒸馏,通过从一个标准的模型上的攻击,迁移到一个防御蒸馏的模型上。
我们通过找到高置信度的对抗样本来完成这点,我们定义一个对抗样本倍原始模型强烈的误分类。相反,找到一个对抗样本只是轻微的改变,将分类从原来的转换为目标类别,我们想要一个目标比其他的类别更有可能。
回忆之前定义的损失函数对于 L 2 L_2 L2攻击:
f ( x ′ ) = m a x ( m a x { Z ( x ′ ) i : i ≠ t } − Z ( x ′ ) t , − k ) f(x^\prime) = max(max\{Z(x^\prime)_i : i \neq t\} - Z(x^\prime)_t, -k) f(x′)=max(max{Z(x′)i:i=t}−Z(x′)t,−k)
参数 k k k的目的是控制对抗样本的强度: k k k越大,对抗样本的分类越强,通过增加 k k k,允许我们生成高置信度的对抗样本。
我们首先研究了我们的假设:如果在第一个模型上,分类越强,它越有可能迁移,我们通过从 0 ≤ k ≤ 40 0 \leq k \le 40 0≤k≤40范围取值。
我们的基线式样使用了两个在MNIST上训练的额模型,在节选IV描述的,每个模型使用一般的训练数据训练。我们发现迁移成功率线性的增加,随着 0 ≤ k ≤ 40 0 \leq k \le 40 0≤k≤40,然后在 k ≈ 20 k \approx 20 k≈20的时候,趋于稳定几乎100%,所以增加 k k k,增加了成功迁移攻击的可能性。
我么之后进行了同样的式样,相反,我们使用防御蒸馏训练了第二个模型,发现对抗样本依然迁移,这个给了我们另一个攻击技术,在一个蒸馏网络上寻找对抗样本。
然而,有趣的事,迁移成功率在不安全的模型和蒸馏的模型上,达到100%成功率,在 k = 40 k = 40 k=40,相比于之前的方法只需要 k = 20 k = 20 k=20。
我们相信这个方法可以用来评估防御的鲁棒性,即使防御能够完全的阻止梯度流,来引起我们基于梯度下降的方法失效。
IX. 总结
对抗样本的存在限制了深度学习可以应用的领域。这是一个公开的问题,来构建对于对抗样本鲁棒的防御。为了解决这个问题,防御蒸馏被提出作为一种通用的处理来增加任何一个神经网络的鲁棒性。
在这篇文章中,我们提出了强有力的攻击,可以击败防御蒸馏,证明了我们的方法更加的通用,可以被用来评估可能的防御的有效性。通过系统的评估许多可能的攻击方法,我们选定,我们比所有现有的方法,始终的找到更好的对抗样本。我们使用这个评估,作为我们的三个 L 0 , L 2 , L ∞ L_0, L_2, L_\infty L0,L2,L∞攻击。
我们鼓励创建了防御的人,实施我们在这篇文章中使用的两种评估方法:
- 使用一个强的攻击(例如这篇文章中提出的一个)来直接评估安全模型的鲁棒性。由于这个防御可以阻止我们的 L 2 L_2 L2攻击,也将阻止我们的其他攻击,防御者应该确保建立的鲁棒性可以抵抗 L 2 L_2 L2距离指标
- 证明迁移性失败通过在一个不安全的模型上构建高置信度的对抗样本,证明他们不能迁移到安全的模型上
致谢
我们感谢Nicolas Papernot讨论我们的防御蒸馏首先,和匿名读者的反馈。这项工作得到了英特尔通过ISTC安全计算、高通公司、思科公司、AFOSR根据MURI奖FA9550-12-1-0040以及惠普基金会通过长期网络安全中心的支持。
附录
图11,我们的 L 0 L_0 L0攻击,运用在CIFAR数据集上,实施了一个有目标攻击对于每个源/目标对,每个图片是这个数据集那个标签的第一张。
图12,我们的 L 2 L_2 L2攻击,运用在CIFAR数据集上,实施了一个有目标攻击对于每个源/目标对,每个图片是这个数据集那个标签的第一张。
图13,我们的 L ∞ L_\infty L∞攻击,运用在CIFAR数据集上,实施了一个有目标攻击对于每个源/目标对,每个图片是这个数据集那个标签的第一张。
严格的讲,隐藏的语音命令不是对抗样本,因为他们呢和原始输入不相似。 ↩︎
许多简单的网络简单的线性结果,然后其他高级的网络有更多的复杂的结构(例如:ResNet和Inception)。网络架构不影响我们的攻击 ↩︎
一个无目标攻击是简单一个更加有效(并且经常不那么精确的)方法,运行一个有目标攻击,对于每一个目标,并且采用了最近的距离。在这篇文章中,我们关注识别大多数的精确攻击,不考虑无目标攻击。 ↩︎
在RGB图片中共,有三个通道可以改变,我们计算的像素数量是不同的,当三个颜色中的任何一个是不同的我们考虑两个像素是不同的。我们不考虑一个距离指标,当一个攻击者可以改变一个颜色面板而不是另一个。与其他 L 0 L_0 L0攻击相比,我们放宽了这一要求,不要做出这样的假设来提供一个公平的比较。 ↩︎
我们通过和作者的个人交流验证了这个 ↩︎
相比于顶尖的结果95%。然而,为了提供与原工作更加精确的比较,我们觉得复现他们的模型架构是非常重要的。 ↩︎
对应的其他目标函数的图片是相似的;为了简洁,我们省略了它们。 ↩︎
没有使用 1 2 \frac{1}{2} 21缩放,使用 1 2 ϵ \frac{1}{2} \epsilon 21 ϵ,来避免被零除。 ↩︎
Adam收敛到了最优的95%在1000次迭代中使用了92%的时间,为了完整性,我们在每一步运行了1000次迭代。 ↩︎
一个例外:JSMA攻击通过设置输出为或者0或者255来解决这个问题。 ↩︎
选择索引 i i i最小化 δ i \delta_i δi是简单的,但是它产生了比 L 0 L_0 L0扰动高1.5x的结果。 ↩︎
否则best-case攻击结果将会超过通常的第,由于相对低的top-1准确率 ↩︎
复现这些表格和图的代码可在 [http://nicholas.carlini.com/code/nn robust attacks](http://nicholas.carlini.com/code/nn robust attacks) 获得。 ↩︎