通过我们在
Pytorch对机器学习模型的安全漏洞攻击方法之Fast Gradient Sign Attack(FGSM,快速梯度符号攻击)https://blog.csdn.net/weixin_41896770/article/details/130319089
这篇文章的介绍,我们了解到FGSM可以对机器学习模型进行有效的攻击,成功的让MNIST分类器进行了错误的分类,并且写了代码做了可视化的示例。
论文地址:Adversarial Attacks and Defences Competition
这里对论文不单纯的做翻译,而是通过本人的理解,尽量通俗地解释,让大家更快的了解和熟悉,当然水平有限,文章难免存在错误,欢迎大家指正!
1、对抗性示例的危害
上面例子,换句话说就是对输入添加肉眼不可觉察的对抗性例子,就能够有效的让模型错误分类。
如果从白盒攻击到灰盒再黑盒攻击也有效的话,那就是很严重的安全问题了。
打个比方,道路上有一个STOP的标志,无人驾驶正确识别之后会停止,如果我对STOP的这个标志,做针对性的微小调整(精巧的设计,比如说在白盒测试攻击中得到的扰动,画一些阴影之类的点,或者阳光刚好打在了特殊的位置),人的肉眼没有仔细看是觉察不到的,然而无人驾驶可能就识别成了其他标志,将继续往前行驶,这很可能就会造成交通事故。所以说对对抗例子的鲁棒性是人工智能安全问题的一个非常重要的组成部分,在以前的信息时代,攻击的危害是经济损失,到了AI时代,攻击的危害可能就是生命安全问题!
2、谷歌对抗性攻击和防御的场景
既然有攻击,那就需要去防御,为了加速对抗性示例和机器学习分类器鲁棒性的研究,谷歌Brain组织了NIPS 2017竞赛,鼓励研究人员开发生成对抗性示例的新方法以及开发防御它们的新方法,也就是说2017年应该算是对AI模型进行攻防的真正开始。这里也可以看出,谷歌其实在人工智能领域一直都是开创者。
对模型的了解可以分为白盒、灰盒、黑盒三类:
1、白盒(White box):在白盒场景中,攻击者对模型有充分的了解,包括模型类型、模型架构以及所有参数和可训练权重的值
2、带查询的黑盒(Black box with probing,灰盒):攻击者不太了解模型,但可以探测或查询模型,即提供一些输入并观察输出。
3、不带查询的黑盒(Black box without probing):攻击者对被攻击模型的了解有限或完全不了解,并且在构建对抗示例时不允许探测或查询模型。在这种情况下,攻击者必须构建对抗性示例,以欺骗大多数机器学习模型。
对抗性攻击和防御竞赛,分为三组任务:
竞赛的排名规则是,对于攻击者是根据能够欺骗防御的次数来排名,对于防御者是根据正确分类的例子的数量来评分的。这个很好理解,就是攻击性越强排名越靠前,防御性越强排名越靠前。
使用两个数据集:
DEV数据集,在竞赛开始时就发布给了参与者,因此他们可以使用它来开发他们的解决方案。该数据集包含1000张图像。
FINAL数据集保密,用于评估参与者的最终提交。它包含5000张图片。
1、非目标对抗性攻击(Non Targeted Attack)组:修改输入,使得分类器进行错误分类,只要错误即可。
攻击得分公式:
2、目标对抗性攻击(Targeted Attack)组:修改输入,使得类器分类为指定的目标类,除了错误分类还要求分类到指定的类
攻击得分公式:
3、防御对抗性攻击(Defense)组:这个是针对前面两个攻击而做的防御,使得分类器对对抗性示例具有鲁棒性,也就是说可以进行正确分类。
防御得分公式:
公式中的字母符号解释
A:用于评估防御的所有攻击(目标和非目标)的集合(在某些输入上崩溃或在某些输入上超时的攻击不用于评估防御)
D:用于评估攻击的所有防御的集合(在某些输入上崩溃或在某些输入上超时的防御不会用于评估攻击)
N:数据集中的图像数量
I_k:数据集中的第k张图像
TrueLabel_k:图像I_k的真实标签
TargetLabel_k:图像I_k选择的目标标签
d(•) :防御分类器,如果二进制文件未能在时间限制内完成执行,则d(•)的输出是一个空标签,永远不会等于真标签。如果在未定义的图像上调用d(•),则将其定义为始终返回真实标签,因此崩溃的攻击者将获得零分。
3、攻击方法
接下来对其展开讨论,看论文中有哪些具体方法可以用来攻击以及防御这种对抗性攻击。
3.1、白盒下的攻击方法
3.1.1、L-BFGS:2010年提出的最早的一种寻找神经网络对抗例子的方法,该方法旨在找到最小可能的攻击摄动。这意味着有时仅仅通过降低图像质量就可以击败该方法,不过这个方法的缺点就是速度很慢。公式如下:
3.1.2、FGSM(Fast Gradient Sign Method):这个就是上面链接中专门介绍快速梯度符号攻击的方法,是一种很常见与实用的方法,这里就不重复介绍了,公式如下:
3.1.3、迭代攻击:针对L-BFGS攻击成功率高但是慢,以及FGSM攻击成功率低但是计算成本低的特点,这里出现一个权衡的方法,我们看公式跟FGSM挺像,所以也叫做迭代FGSM,公式如下:
这种迭代攻击很容易地成为一个目标攻击,称为迭代目标类,公式如下:
可以观察到,在足够的迭代次数下,这种攻击几乎总是成功地击中目标类
3.1.4、投影梯度下降(Projected Gradient Descent,PGD):这是非常重要的一种优化方法,由内部的最大化和外部的最小化两个问题构成。内部的最大化问题就是找到实现最大损失的数据扰动,这实际上是攻击问题,满足最大化条件的样本有很大的概率是对抗样本。外部的最小化问题就是找到模型的参数使得攻击的对抗损失最小,就是让分类器变得更鲁棒与安全。论文地址:Towards Deep Learning Models Resistant to Adversarial Attacks
3.1.5、C&W攻击:Carlini和Wagner遵循L-BFGS的攻击路径。他们设计了一个损失函数,该函数在对抗性示例中值较小,在干净示例中值较高,并通过将其最小化来搜索对抗性示例。通过变量变换来处理框约束(即x = 0.5(tanh(w) + 1))或在每一步后将结果投影到框约束上。公式如下:
其中参数化0.5(tanh(w) + 1);Y是目标类的较短表示法;c和k是方法参数。
3.1.6、对抗性转换网络(Adversarial Transformation Network,ATN):训练生成模型来制作对抗性示例。该模型以干净的图像作为输入,生成相应的对抗图像。这种方法的一个优点是,如果生成模型本身被设计得很小,那么ATN可以比显式优化算法更快地生成对抗性示例。理论上,这种方法甚至可以比FGSM更快。
3.1.7、不可微分系统的攻击(Attacks on non differentiable system):上面这些都是需要用到被攻击模型的梯度,然后制作对抗性示例,如果模型包含不可微操作,在这种情况下,攻击者可以训练一个替代模型,并利用对抗示例的可转移性对不可微系统进行攻击,这个类似于黑盒攻击了。
3.2、黑盒下的攻击方法
我们知道白盒下面是拥有权限的,所以对抗性示例的构建方法比较多,而且比黑盒要方便很多,但很多时候,我们是处于一个黑盒下面,这个时候因为模型的对抗性示例也有泛化性,也就是说欺骗了这个模型,很大程度也是可以欺骗另一个模型,这种也叫做“可移植性”。
我们可以用几个模型的集合作为对抗性示例的源模型。换句话说,就是如果一个对抗的例子欺骗了集合中的每个模型,它更有可能泛化并欺骗其他模型。
4、比赛前4名的方法
4.1、防御赛第一名:TsAIL队
High-level representation Guided Denoiser (HGD)(HGD)方法,训练一个基于神经网络的去噪器来去除对抗性扰动。
数据集:
为了准备去噪的训练集,我们首先从图像中提取了20K的图像ImageNet训练集(每类20张图像)。然后我们使用一堆对抗性攻击来扭曲这些图像并形成一个训练集。攻击方法包括,将FGSM和I-FGSM应用于多个模型及其集成系统中,以模拟弱攻击和强攻击。
去噪方法:
DAE在编码器和解码器之间的精细尺度信息传输方面存在瓶颈。这种瓶颈结构可能无法承载图像中包含的多尺度信息,Denoising U-net与DAE相比,DUNET增加了一些从编码器层到相应的相同分辨率的解码器层的横向连接。通过这种方式,网络只学习预测对抗性噪声,这与去噪更相关,比重建整个图像更容易。通过从损坏的输入中减去噪声,可以很容易地获得干净的图像,公式如下:
其中为参数为w的去噪网络,为预测的对抗噪声,为重建的干净图像。
损失函数:
传统的去噪方法使用重构距离作为损失函数,但我们找到了一种更好的方法。给定一个目标神经网络,我们提取其在第l层的表示x和,并计算损失函数,公式如下:
提出了两个选择l的HGD。对于第一个HGD,我们定义l =−2作为最顶层卷积层的索引。这种去噪称为特征引导去噪(FGD)。对于第二个HGD,我们使用logits层。因此称为logits引导去噪(LGD)。
另一种HGD使用目标模型的分类损失作为去噪损失函数,需要有监督学习作为基础真值标签。
该模型被称为类标签引导去噪(CGD)。在这种情况下,损失函数相对于降噪器w的参数进行优化,而引导模型的参数是固定的。
4.2、目标和非目标攻击赛双第一名:TsAIL队
动量迭代攻击方法建立在基本迭代方法的基础上,通过增加动量项,大大提高了生成的对抗样例的可转移性。
非目标攻击的动量迭代方法,公式如下:
其中 = 0, = x, α =
T表示迭代次数。以衰减因子µ收集前t次迭代的梯度,对抗示例在符号的方向上以步长α进行扰动。
我们应用动量迭代方法来攻击模型集合。如果一个例子对多个模型仍然是对抗性的,它可能会捕获一个内在的方向,这个方向总是欺骗这些模型,并且更有可能同时转移到其他模型中,从而实现强大的黑盒攻击。
目标攻击动量迭代法,公式如下:
其中std(•)是标准偏差,round(•)是舍入到最接近的整数。Clip的值[−2,2](round(•))在集合{−2,−1,0,1,2}中,与符号函数相比,它可以提供更大的搜索空间。
在目标攻击中没有观察到生成的对抗性示例的可转移性,也就是说对于黑盒攻击无效。
4.3、防御赛第二名:iyswim队
利用随机化作为对抗对抗性例子的防御。具体来说,在分类网络的开头添加一个随机调整大小层和一个随机填充层。
有以下优点:(1)不需要额外的训练和微调;(2)极少的额外计算;(3)与其他对抗性防御方法兼容。
看论文中的图例:
而且这样的随机转换,对于白盒攻击都是有效的,这感觉跟以前的图像增广操作很类似,有兴趣的可以了解下:计算机视觉之图像增广(翻转、随机裁剪、颜色变化[亮度、对比度、饱和度、色调])
当然这个例子的调整大小也需限制在一个合理的小范围内,如缩放带下为[310,331),设置的填充大小为331×331×3,不能太大了,否则干净图像的性能将会下降。
从结果和排名也可以知道,随机化方法可以有效地提高深度网络对对抗性攻击的鲁棒性。而且大量的实验表明,就算攻击者知道随机化层的存在,在实践中仍然不能完全突破这种防御。
4.4、目标攻击和非目标攻击双第二名:Sangxia队
针对具有随机扰动和增强的分类器集合的迭代FGSM攻击,以提高所生成攻击的鲁棒性和可转移性。这里也再次看到FGSM在机器学习模型中的作用,有兴趣的可以查阅:Pytorch对机器学习模型的安全漏洞攻击方法之Fast Gradient Sign Attack(FGSM,快速梯度符号攻击)
Sangxia队的源码都有公开,可以git:https://github.com/sangxia/nips-2017-adversarial
我们用来增加攻击的鲁棒性和可转移性的另一个想法是图像增强。用表示一个参数为θ的图像增强函数。例如,我们可以用θ∈[0,2π]作为角度,作为将输入图像顺时针旋转θ的函数。参数θ也可以是矢量。例如,θ∈作为宽度和高度维度的缩放因子,作为将输入图像在宽度方向上缩放,在高度方向上缩放的函数。
设x为输入图像,为x的标签。我们的攻击算法就是找到一个,使得预测的期望平均交叉熵损失最大化。公式如下:
然而,在典型的攻击场景中,攻击者无法获得真实标签,因此我们将其替换为攻击者可用的图像分类器g生成的伪标签,公式如下:
设:= x, =max(x−ε,0),=min(x+ε,1),设,,…是预先定义的步长序列。然后在迭代的第i步中,我们将图像更新为:
目标性攻击跟非目标性攻击的方法类似。主要的区别是:
1.最小化目标标签之间的损失,而不是上述那样相对于最大化。
2.我们的实验表明,随机图像增强严重降低了白盒攻击的成功率,因此无法对目标攻击进行增强。注意,这里所说的成功是被定义为成功地使分类器输出目标类。使用图像增强的攻击通常会导致分类器输出一些错误的标签,而不是目标类。
换句话说就是能成功欺骗分类器输出特定目标类,那我们的目标攻击就不能够很好地转移和不鲁棒。这个是一个矛盾体!
4.5、目标攻击第三名:FatFingers队
提出一种动态迭代集成目标攻击方法,该方法在损失集成神经网络上构建了迭代攻击,攻击的重点是难以扰动的分类器。
在攻击未知模型的目标攻击时,其命中率非常低,所以我们将大量已知模型有效地组合起来,来攻击未知模型。
利用詹森不等式,得到了损失函数的上界。而不是最小化Jprob(x, y),我们建议优化上界。这种组合分类器的方法被称为损失集成。公式如下:
实验表明这种损失集合的攻击比概率集合的攻击要有效。
动态迭代集成攻击:
攻击一个高成功率的对抗性训练模型比普通模型需要更多的迭代次数,公式如下:
决定了在时间步长t时模型k的损失是否包含在总损失中。
4.6、防守赛第四名:erko队
使用空间平滑对对抗训练模型的输入,特别是在图像上使用2×2窗口进行中值滤波,并仅使用经过反式训练的模型进行处理,我们可以实现简单而合适的黑盒攻击防御。此外,这种方法可以与其他使用随机化(数据增强和其他类型的防御)的防御解决方案一起工作。
中值滤波的优点:
1、中值滤波在干净的样例上不影响分类精度
2、跟对抗性模型比较,不需要额外的昂贵训练
通过实验观察到,只使用中值过滤,我们无法抵御像前面介绍的C&W的那种强烈的对抗性攻击。然而通过实验观察到,使用中值过滤和仅使用敌对训练的模型,我们可以获得针对敌对攻击的强大防御。
4.7、非目标攻击第四名:iwiwi队
跟前面队不一样,这里是训练全卷积网络(FCNs),它可以将干净的例子转换为对抗的例子
公式如下:
文章来源:https://www.toymoban.com/news/detail-442377.html
a是由参数为的FCN表示的可微函数。我们称之为FCN攻击。输出c×h×w张量,其中c、h、w分别为x的通道数、高度和宽度。输出值范围为[−ε,+ε]。在FCN的训练过程中,为了混淆图像分类器,我们最大化损失J(f(),y),其中f是预训练的图像分类器,我们将f称为目标模型。文章来源地址https://www.toymoban.com/news/detail-442377.html
到了这里,关于对抗性攻击和防御竞争(Adversarial Attacks and Defences Competition)的通俗解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!