作者:栗峰
编辑:丛末
对抗样本是各种机器学习系统需要克服的一大障碍。它们的存在表明模型倾向于依赖不可靠的特征来最大限度的提高性能,如果受到干扰,可能会导致错误分类,带来潜在的灾难性后果。对抗性样本的非正式定义可以认为是,输入被以一种人类难以察觉的方式修改后,机器学习系统会将它们错误分类,而没有修改的原始输入却能被正确分类。下图就说明了这种情况:
图 1:原始图像(左),对抗噪声(中间),被干扰的图像被错误地分类为 2(右)
左侧的「7」是原始输入,模型能够正确地将它识别为「7」,但将它与中间的对抗噪声叠加后,模型却将它错误地识别为「2」。
对抗样本的正式定义如下:
图 2:对抗性样本的定义
其中 ? 是我们尝试最大化的损失函数,?_orig 是原始图像,δ 是干扰因子,y 是基准标签,选择 ε 以确保被扰动图像看起来不太嘈杂,并且看起来仍然像是人类的原始图像。一些攻击(例如 FGS,IGS 和 PGD)会使用 L-∞ 范数来约束被扰动的图像和原始图像之间的距离。在这篇文章中,我们将探讨为 MNIST 数据集挑选合适 ε 的难点。我们还将研究「生成对抗样本」的最新技术,这种技术不依赖于扰动原始图像,但我认为这种技术事实上并不严格符合对抗样本的定义。
让我们先来简单分析一下同类和不同类图像之间的平均距离。也许这些距离可以帮助我们以一种更客观的、量化的方式来选择 ε 。
我们从每一个类中抽取 100 个随机图像,并计算在不同范数下图像之间的平均成对距离。下图只显示了 L-2 范数(以避免混乱),主要是因为 L-∞范数热图在每个单元格中只有一个 1,并没有其它信息。
图 3:L-2 规范训练集距离,相应代码可查看 ipynb 文件:http://bit.ly/2Q82Feo
一个合理的假设是,这个热图的对角线元素(类内距离)应该低于同一行或同一列中的非对角线元素(类间距离)。然而,与上面说到的情况会有一些不同,类「2」更接近类「1」,而类「8」也更接近类「1」。这猛一看会让人很吃惊,但它其实表明给定数字的样式变化可能导致比在数字之间的切换造成更多的像素差异。我们可以这样来理解,对于每一个数字,都会有一组像素不因该数字的不同样式而改变,但当两个不同数字的不变组具有很高的重叠时,就会出现上述的意外结果。
那么这对 ε 的选择有什么影响呢?
根据 Madry 等人[1]的研究,当使用 L-∞范数时,ε一般设置为 0.3;而当使用 L-2 范数时,一般设置为 4.5 这样大的数值。
如果我们在 L-∞范数下取极端值ε= 1.0,我们将无法控制被扰动图像的基本真值类,并可能最终生成一个无论对于人类还是我们的分类模型来说都是不同类的图像。
于是这就允许我们在训练集和测试集图像之间进行插值:x'= rx_train *(1-r)x_test。如果我们的模型碰巧对 x_test 进行错误分类,那么它将被标记为对抗性的。因此,下面这两个条件应当得到保证:
对于观察者来讲,条件(1)通常意味着条件(2)。那么,条件(2)是否意味着条件(1)呢?ε= 0.3 当然满足条件(2),因为所有图像的 L-inf 距离都接近 1.0。让我们来看看如果生成如下 2 个类的组合的图像会发生什么。
图 4:在 L-∞距离约束下的平均图像
将原始图像和精制图像之间的 L-∞距离限定为 ε ,但任何人类都可以轻松区分两个图像之间的差异,如下图所示:
图 5:在原始ε= 0.3 L-inf 距离内制作的图像
很明显,最右边的图像有一些不足之处。事实上,如果没有被告知这是一个由 0 和 1 组合而成的图像,有些人可能会说它只是一个抽象的符号。
因此,通过这个简单的例子,我们可以看出 ε= 0.3 违反条件(1)。其它较小的值如 ε= 0.2 也会得到类似的结果。MNIST 数据集允许轻松识别被扰动的像素。在很多情况下,仅通过简单地检查是否对背景像素进行了修改,就可以为对抗样本创建检测机制。但如果攻击者知道有这种检测机制,那么他们可以绕过这种(Carlini and Wagner[ 2 ])。
那我们又该怎么选择 ε 呢?
一种方案就是对不同的图像使用不同的ε。对于某些类,很容易判断在数字本身的边界框内是否已经更改了像素,如上面的例子所示。对于这些类,ε 应该设置为较小的值。
此外,当用于计算图像空间中的距离时,诸如 L-2 或 L-∞的典型范数没有语义相似性的概念。如果他们能够在输入空间中给出图像之间的语义相似性,那么就有可能构建一个简单的 KNN 图像分类器,并能轻松超越过去 7 年中卷积神经网络的成就。
一个可能的方案是使用度量学习中的技术。通过学习嵌入,这些嵌入之间的 L-2 或 L-∞距离包含语义相似性的概念,那么我们可以在这个嵌入空间(而不是输入空间)中调整ε。
图 6:三重网络的作用
有一种被称为三重网络(triplet networks)的技术使用的正式这种方案。三重网络将 3 幅图像同时传递给同一个嵌入网络来并行运行,并通过类 y 的锚,以及同一类的正例(+)和不同类 y'的负例(-)。损失函数确保了锚和正例之间的距离至少小于锚和负例之间的距离。
使用像三重网络这样的度量学习技术仍然需要手动验证,以确保选择的ε不会太大,以至于允许在类上发生变化。此外,我们必须考虑条件(2),它表示我们不应该使用扰动从数据集中的一个图像跳转到同一个类的另一个图像。
PGD 的攻击是在损失函数梯度方向上迭代增加损失,然后将得到的图像投影到满足原始图像距离约束的输入子空间上。在这里,我们可以不在输入子空间上进行投影,而是在刚才提到的使用度量学习算法的嵌入空间进行投影。
传统上,对抗样本都是通过使用反向制造噪音的方法干扰一些已经存在的图像。而 Song 等人[3]则提出了一种非常酷的生成对抗样本的方法,他们使用 GAN 直接从头开始生成能够欺骗被攻击模型的图像。
具体来说就是,他们使用了一个辅助分类器 GAN(AC-GAN),能够对图像类进行条件设置,以便控制正在生成的图像类型。这导致会生成「不受限制的对抗样本」,因为没有约束距离(图像是从头开始生成的)。
不过这里需要强调,他们的方法既不满足前面提到的条件(1)也不满足条件(2)。
虽然他们的技术非常有用,并且用生成能够欺骗模型的新图像可以进行模型调试以及数据增强,但他们的分析却将泛化性能和对抗性鲁棒性看做一回事。
事实上,若想正确分析模型的鲁棒性,我们需要能够将泛化性能和对抗鲁棒性这两个指标分开,因为它们并不一样,具体可以参看 Tsipras 等人[4]最新的研究工作。
因此,尽管人们可能会放弃「基于干扰的对抗样本」的定义,但就目前而言,它们是唯一允许以独立的、非混淆的方式研究对抗鲁棒性的方法。
对于诸如 MNIST 这类的数据集,对抗样本的当前定义还存在着些许不足,但是对于类似 ImageNet 的内容还是很有意义的,因为在 ImageNet 中干扰因子很难被注意到,也不会使图像看起来像是奇怪的组合。对每个图像或每类图像使用相同的阈值 ε 可能是一种惩罚性要求,因为这会更容易检测特定类别图像的噪声。
图像是一种可视化的数据类型,人类自然容易分析和判断是否有可疑的东西存在。然而,在很多领域中,数据都是以数字的抽象向量的形式出现,这些向量很难理解和可视化。在这些领域中定义什么是对抗可能已经超出了我们想象的范围,因为我们一开始就无法理解原始数据。在这种情况下,提出 ε 的定量方法是必须的。
via:http://1t.click/akDc
参考文献:
[1] Madry et al. https://arxiv.org/pdf/1706.06083.pdf
[2] Carlini and Wagner, https://arxiv.org/pdf/1705.07263.pdf
[3] Song et al. https://arxiv.org/pdf/1805.07894.pdf
[4] Tsipras et al. https://arxiv.org/pdf/1805.12152.pdf