本文发表于SIGSAC 2017,距今已有3年左右的时间,文章探究了在当时热门的对抗攻击(白盒、黑盒)情境,并提出了一种基于实际观察的有效的防御方法,比当时最好的防御策略表现都好。
文章较短,内容放到今天仍具有一定的普适性。逐一分析了在当时热门的对抗攻击以及特点和防御方法(有点Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey 的那味了)。
原文地址:立即下载
前言
随着最近深度神经网络(DNN)的广泛应用,对这些模型的对抗攻击已被证明是一个无可争议的威胁。对抗性样本的设计意图是破坏一个系统。就DNNs而言,由于缺乏对其工作原理的更好理解,阻碍了有效防御的发展。在本文中,我们提出了一种新的基于实际观测的防御方法,这种方法易于集成到模型中,并且比最先进的防御方法表现得更好。我们提出的解决方案旨在加强DNN的结构,使其预测更稳定,更不容易被对抗性样本愚弄。我们进行了广泛的实验研究,以证明我们的方法在对抗多种攻击时的效率,并将其与许多防御进行比较,包括白盒和黑箱设置。此外,我们的方法的实现在保持原始模型对干净样本的预测性能的同时,几乎没有给训练过程带来开销。
背景设置
深度学习已经在从视觉识别到图像生成的广泛计算机视觉应用中证明了它的威力。为了让它们能在关键系统(如医学成像、监视系统或安全敏感应用程序)中快速部署,要求在深度学习模型中预先保障其可靠性和安全性。与任何基于计算机的系统类似,深度学习模型可能会受到所有标准方法的攻击(如拒绝服务或欺骗攻击),它们的保护只取决于系统外部署的安全措施。此外,DNNs被证明对特定于预测模型的威胁非常敏感:如对抗攻击。这些输入样本被故意修改以产生模型所需的响应(通常是错误分类或特定的不正确预测,这将有利于攻击者。
对抗攻击的例子对攻击者和防御者构成了不对称的挑战。攻击者的目标是在不引起怀疑的情况下从成功的攻击中获得奖赏。另一方面,防御者被驱使去开发策略,以保护他们的模型不受所有已知的攻击,最好是所有可能的输入。此外,如果想要证明一个模型确实是安全的(也就是说,能够抵抗尚待设计的攻击),就必须提供正式的证明,例如通过验证。这是一个困难的问题,因为这种类型的方法不能扩展到DNN的参数数量。由于所有这些原因,找到防御策略是困难的。
除了安全性之外,用于图像分类的对抗性示例还有其他一些特殊的特性。首先也是最重要的是,对抗攻击的例子和正确的例子之间的难以察觉的差异,这为它们提供了一种毫不费力的攻击能力;而仅仅只是样本在不同模型之间的可转移性加强了,就能施展黑盒攻击。此外,误分类的高置信度证明了该模型将对抗性样本视为常规输入。对抗攻击的潜在损害的存在增加了这些样例的现实存在的可能:例如将对抗样本的图像由的相机然后传入模型和直接传入模型不经过物理介质有着相同的效果。另一个有趣的特性是无意义的输入(例如人为的噪音)被模型解释为具有高可信度的例子。从学习的角度来看,这些违反直觉的方面与更基本的问题有关,即模型学到了什么,以及它的泛化能力如何。事实上,仅仅是对抗性样本的存在就表明,DNNs可能无法从训练集中提取概念,相反,他们会记忆这些概念。
图1:在MNIST的前10张图片上欺骗一个模型所需要的最小扰动。原始的例子用绿色矩形标记。有了我们的防御,攻击就可以被视觉检测到。
深入了解深度学习模型的弱点,有助于更好的攻击策略,最重要的是,有助于更有效的防御。虽然原因至今还没有完全弄清楚,但已经提出了多种假设来解释它们对对抗攻击输入的敏感性。其中一个假设是,神经网络的高度复杂性和非线性可以在未充分开发的空间区域分配随机标签。此外,这些对抗性的例子将是罕见的,只会存在于空间的小区域,类似于口袋。这些理论已被驳倒,因为它们无法证明对抗性样本从一种模型到另一种模型的可转移性。此外,线性模型也存在这种现象。Goodfellow等人提出了一个线性假设:深度神经网络的参数是高度非线性的,但其输入大多是线性的,当探索与决策边界正交的方向时,很容易遇到对抗攻击的例子。解释对抗性例子存在的另一种推测是,当扰动从一层传播到另一层时,误差的累积。在输入层中一个微小的精心设计的扰动可能会导致输出层中更大的差异,这种影响只在高维空间中被放大,导致上层中错误的单元被激活。
本文贡献
1.提出了一种双重防御的方法,相对于标准的训练程序,这种方法很容易建立,而且几乎不需要额外的成本。该方法是为了增强深度网络的共同弱点和平滑决策函数而设计的。因此,它不知道用于创建对抗性示例的攻击类型,这使得它在多种情况下都有效。
2. 进行了一系列实验,将各种对抗攻击方式,应用到包括本文提出的防御方法等各种防御方法上,并探究了黑盒和白盒攻击及攻击的可移植性。并对各种方法效果进行了评估,证明单单从准确度判断防御方法的效果是不完善的。
问题设置
在本文中,神经网络A可以用函数F(x, θ) = y, x ∈ Rn, y ∈ Rm,θ表示参数来表示。网络的最后一层是softmax函数,m是标签的个数。softmax函数有两个主要特性:(i)它放大高值,同时减少小低值;(ii)它输出非负值的向量y,其和为1,使它们能够符合概率分布。然后将输入x赋给具有最高概率的类标签。考虑一个包含L层的网络F, F1作为输入,FL作为softmax层。一个内层Fj可以写成:
σ()是激活函数RELU。
攻击:
下列攻击可以分为两个方面:通过制定针对体系结构和了解被攻击模型的参数的对抗攻击输入 (白盒攻击)或使用一个类似的模型,合理考虑任务目标,而并没有利用任何敏感信息制作对抗攻击样本(黑盒攻击)。
对抗攻击的样本例子可以表示为x‘= x+∆x ,例如对抗攻击L-BFGS就可以表示成:
这种攻击虽然有效,但计算开销十分巨大。
基于梯度的方法之一是雅可比矩阵显著性映射攻击(JSMA),它利用神经网络对输入图像的导数迭代计算失真。每次迭代,导数最高的像素被一个固定的值(攻击者的预估值)修改,然后重新计算显著性映射,直到预测变为目标类。JSMA生成的对抗图像对于攻击来说是微妙而有效的,但是它们仍然需要大量的时间来计算。
快速梯度符号法(FGSM)作为一种计算成本低,但有效的替代JSMA的方法被引入。FGSM探索了损失函数的梯度方向,并引入了固定的扰动量来最大化损失值。在实践中,这种攻击产生的例子比JSMA的例子更容易检测到,并且需要更大的失真来实现误分类。
不像前两种方法那样使用固定的攻击预算值,DeepFool是第一个计算并应用L2范数下误分类所需的最小扰动的方法。该方法对分类器的局部线性逼近所提供的梯度的对抗性方向进行迭代。这样做,近似比FGSM更精确,比JSMA更快,因为所有的像素在方法的每一步都是同时修改的,但是它的迭代性质使得DeepFool的计算开销更大。
防御:
保护一个模型的一种常用技术是通过对抗攻击输入来增加训练数据(这种技术称为“对抗性训练”),方法是要么给一个模型同时提供真实的和对抗性的例子,要么使用修改过的目标函数来学习它:
用J表示原始损失函数。这种防御的目的是通过确保它将预测真实示例的相同类及其在这些方向上的扰动来增强模型在特定方向(对抗性扰动)上的鲁棒性。然而,对抗训练模型只对在原始模型上构建的对抗攻击示例有效,考虑到攻击者可能无法访问用于计算扰动的完全相同的模型,这是一种不太可能的情况。此外,通过两步攻击可以很容易地绕过这种训练模型,它首先对输入随机扰动,然后执行任何经典的攻击技术。
与对抗性训练不同,另一类防御系统旨在增强深度神经网络对与攻击无关的对抗攻击样例的鲁棒性。在这些攻击不可知的技术中,我们发现例如防御蒸馏,它通过两个步骤使模型变鲁棒:首先,训练一个分类模型,用常数T进行划分,平滑其softmax层;然后,使用相同的输入对第二个模型进行训练,但不是向它输入原始标签,而是使用第一个模型的最后一层的概率向量作为软目标。然后,第二个模型用于未来的部署。用这种策略训练第二个模型的优点是,它使损失函数更平滑。
其他的模型强化技术诸如特征压缩。它降低了数据表示的复杂性,使对抗性扰动由于灵敏度低而消失。作者提出了两种处理图像的启发式方法:降低像素级的颜色深度,即用更少的值编码颜色,并在图像上使用平滑过滤器。结果,多个输入被映射到相同的值,使模型对噪音和敌对攻击具有鲁棒性。尽管这可能会导致模型对真实例子的准确性下降,但就我们所知,特征压缩是迄今为止对抗攻击最有效的防御手段。
还有一种保护模型免受对抗攻击的方法是检测系统。为此,已经探索了一定的方向,如执行统计测试,使用额外的模型进行检测或在一定测试时间内应用dropout。然而,由于对抗性的样例与数据的原始分布比较接近,已经表明许多检测方法可以被攻击者绕过。
文章提出防御手段:
引入有界RELU
传统的神经网络激活函数会用到ReLU函数,但是在面对对抗攻击时,往往从输入来的一个小的扰动会沿着神经网络一直累积到模型的输出,这会体现在最终的输出中,导致输出一个错误的分类结果。而本文提出了一种ReLU激活函数的改进版本,即是受限ReLU。其定义为:
这里的t根据输入的范围设定,最终传统的ReLU激活函数,会受限于t的大小和学习到的层级间的权重,因此可以增强网络的稳定性。
高斯数据增强
这个防御方法的思想是增强模型的泛化能力,让模型能将原始数据和经过扰动后的数据分类相同。使用高斯噪声扰动的例子来增加训练集,一方面可以探索多个方向,另一方面可以平滑模型的置信度。其公式如下:
结果分析
实验是在两个标准的机器学习数据集上进行的:MNIST和CIFAR10。考虑两种类型的网络结构:简单卷积神经网络(CNN)和带有残差的卷积神经网络(ResNet),使用的激活函数都是RELU。采用了前面提到过的5中攻击方式以及5种防御方式。同时提出了一种新的测量防御性能的判断标准,模型F的鲁棒性定义为:
其中∆x为一个实例x所需要的摄动,以使模型F在一定的攻击下改变其预测。直观地说,稳健的防御需要在预测变化之前有更大的扰动。
不同模型准确率的实验结果如图:
不同攻击下的结果:
不同指标下的实验结果:
展望与个人分析
本文对当前在对抗攻击上的研究进行了总结:和深度神经网络类似,在对抗攻击原理的理解的假说有很多,但是假说终归是假说,其根本原理还是有很大的未知性。而目前对这种对抗攻击原理的探索,就是通过对攻击和防御策略的相互提高进步得来的。每有一种效果更好的攻击策略和防御策略的提出,都是在向理解其根本原理进步。
我们应该认识到:深度神经网络的原理直到如今仍处于很难被理解的状态,为什么能发挥作用也是黑盒。而本文通过加强深度神经网络结构来达到防御目的的方法,也是建立在对对抗攻击原理不了解的基础上的。而并不能因为条件的不确定而否认本文的假设与工作的合理性。
本文创新点突出,实验足备,理解上没有太大的困难,代码复现较为简单,很适合作为防御对抗攻击的参考论文。其中提到的对Relu函数的小改以及鲁棒性的新评价标准很有意思。这些年是否还有其他的防御措施呢?或者对于更加一般的神经网络架构,是否存在其他的修改方式增强其鲁棒性?例如设置“诱饵模型”等?这是我认为可以继续探索的方向。
“一周一篇好论文” 是Master X对一些缺乏参考资源,自己感兴趣的论文进行个人向的翻译与解析的板块。
本栏目旨在起到分享、交流的作用(所以一周只是个象征性的时间量词,又没说每周嘛XD),为避免主观诱导点到为止。
文章著作权归Master X所有,转载请注明出处。
文章评论