目录
因为英语翻译能力和在本专业的基础欠佳,在写这篇整理的时候参照了很多前辈们的博客,已在参考文献中说明,感谢前辈们的总结。
0x01.论文概要
Goodfellow I J , Shlens J , Szegedy C . Explaining and Harnessing Adversarial Examples[J]. Computer Science, 2014.
摘要:包括神经网络在内的几种机器学习模型都会存在对对抗样本错误分类的情况,早期认为这种是因为非线性和过拟合导致的,本文认为神经网络对对抗样本的脆弱性的根本原因是其线性特征,这也解释了对抗样本在结构和训练集上的泛化性,并在此基础上提出了FSGM(Fast Gradient Sigh Method)算法用来生成对抗样本,将产生的样本用于对抗训练可以提升模型的测试性能(通过在训练样本中加入一定的对抗样本(随机生成),可以对模型起到一定的正则化作用)。
0x02.主要内容
这篇文章由Goodfellow等人发表在ICLR'2015会议上,是对抗样本领域的经典论文。这篇文章主要提出与之前论文不同的线性假设来解释对抗样本的存在性。同时,论文提出了一种简单的对抗样本生成方法——FGSM,并且再利用该攻击方法产生的对抗样本进行对抗训练。总得来说,这篇文章主要说明的对抗样本的三个方面:1.存在性、2.攻击方法、3.防御方法。
1.前期工作
Szegedy et al. (2014b)的文章[Intriguing properties of neural networks]中,发现通过在原图是加入一些不可察觉的非随机扰动,可以极大改变网络的预测结果。这些扰动是通过最大化预测误差来训练获得输入的,称这种输入为对抗样本。这表明,对抗样本暴露了我们训练算法中的基本盲点。
对抗样本是相对鲁棒的,即神经网络A生成的对抗样本,在神经网络B下仍然是,即使B有不同的网络结构、超参和训练数据。因此,神经网络含有一些内在的盲点和非显示的特征,其结构与数据分布相关。具体介绍可见生成对抗网络 - Adversarial Examples 对抗样本
Szegedy et al. (2014b)的文章还阐述了神经网络和其它相关模型的一些有趣的特性,和本篇文章相关的有:
- 使用Box-constrained L-BFGS能够找到对抗样本
- 在ImageNet这样的数据集里,对抗样本和原始样本的差别非常小,人眼不可分别
- 同样的对抗样本,会同时被不同的分类器错误分类,哪怕他们使用了不同的训练集
- 浅层-的softmax回归模型对对抗样本也很脆弱
- 在对抗样本上训练能够正则化模型,但是代价高昂,因为训练集不容易获得。
Szegedy 在文章中阐述如何找到对抗样本(使用Box-constrained L-BFGS),但是没有分析为什么能找到。本文就是想探讨对抗样本出现成的本质。
现在已经有人开始设计抵抗模型,但是还没有任何一个模型保持在clean inputs上的高准确率的同时具有抵抗力。
2.对抗样本的线性解释
- 输入的精度有限
- 分类器不可能对输入x和对抗样本 x+delta 做出不同的响应,如果delta比精度还小
- 一个简单的线性模型如果它的输入有足够多的维度,可以有对应的对抗样本
后来在这篇论文Kurakin A , Goodfellow I , Bengio S . Adversarial examples in the physical world[J]. 2016.中证明真实数据在物理世界是存在的
未来的工作,就是希望不只是用打印的图片作为对抗样本,而是真是的物理世界中的object,已经希望研发出有效的防御系统
3.非线性模型的线性扰动
非线性模型的线性扰动就是一个非线性微分线性化的过程,利用梯度下降的方式来实现。基于此,作者提出了一个快速生成对抗样本的方法,即fast gradient sign method(FGSM).
方法的实现:假设一个模型参数θ,x是输入,y是标签(目标输出),损失函数J(θ, x, y),可以在θ的附近线性化这个损失函数获得一个最佳正则限制扰动,η = esign (∇xJ(θ, x, y)) .梯度可以通过反馈的方式得到。一组实现如下图所示:
0.07 = 1/128
实验表明,FGSM这个简单廉价的算法确实可以生成对抗样本,这也证明了对抗样本是由线性特性引起的。
Szegedy发现用对抗样本和clean样本混合进行训练可以有正则的效果,这是不同于数据增广的,数据增广是产生的数据是有可能出现在测试集里的,而对抗样本是不可能出现在测试集中的。这个方法提升的效果是比不上droupout的,作者说这可能是使用要的对抗样本范围有限。
快速生成对抗样本:Fast Gradient Sign Method
Fast Gradient Sign Method方法虽然简单,但是因为扰动是根据w来计算的,故而生成的对抗样本不会说100%使得网络进行误分类。作者表示,除此之外也可以通过其他方法产生对抗样本,如使x绕着梯度方向旋转一定的角度,不过文章后面提到这样生成的对抗训练泛化性能并不佳,可能是因为旋转等操作比较容易学习到(旋转矩阵的结构比较简单,这些生成的对抗样本反过来又证明了对抗样本的线性解释。
假定神经网络足够的线性化,导致其也不能抵抗对抗样本。(线性结构、非线性结构的非饱和,线性区域)
攻击样本的思想:追求以微小的修改,通过激活函数的作用,对分类结果产生最大化的变化。
如果我们的变化量与梯度的变化方向完全一致,那么将会对分类结果产生最大化的变化。sign函数用来保持变化量方向,此时的最优攻击样本是,也即FGSM(fast gradient sign method)
但之后作者给出的ϵ\epsilonϵ并不是小于图像精度的,所以扰动幅度并不算特别小。
两个标准:
错误率(error rate)是说误判的百分比,
置信率(confidence):是指分类器认为该图像是错误类别的百分比,错误率和置信率越高,则说明生成的对抗样本越强势
正是因为线性响应,使得他们在训练数据分布中未出现的数据保持过度自信
其他生成对抗样本的方式:如沿梯度方向旋转原图像x一个小的角度
LSTM、ReLU、maxout网络都是线性的,sigmoid也大多工作在线性区域,所有这些具有线性性质的模型都能以下FGSM方法简单获得对抗样本:η(x)=ϵsign(∇xJ(θ,x,y))\eta(x)=\epsilon sign(\nabla_x J(\theta,x,y))η(x)=ϵsign(∇xJ(θ,x,y))
这很容易理解:在输入空间中把样本朝着增加成本函数的方向移动。这一方案在实验中也取得了很好的效果。
4.线性模型的对抗训练VS权重衰减
考虑在最简单的逻辑回归(Logistics Regression)模型上应用FGSM方法,从而理解在一个简单的设置中如何生成对抗样本。
作者通过实现一个二分类的逻辑回归(MNIST中的3和7),查看模型参数w、扰动n,以及对比生成对抗样本前后的图片分析,如下所示
除了生成对抗样本来攻击神经网络以外,对抗训练神经网络从而有效防止对抗样本的攻击也是一个值得考虑的问题。
我们先考虑最简单的逻辑回归模型:如果我们训练一个简单的模型来识别标记 y∈{−1,+1},并且
注意这里与文中相同,选择的标记为{−1,+1}并不是我们平时常用的{0,1},我们可以简单推导一下该情况下的损失函数:
我们对x求梯度可以得到 :
因此通过FGSM得到的对抗样本为
,对于对抗样本的损失函数,有:
对于学到足够的置信度的模型来说,即−y(wTx+b)足够小时,ϵ||w||1几乎不起作用。而对于欠拟合的模型来说,则会使得模型更加欠拟合。(还是刚刚那个原因,高维情况下很小的扰动都会使得内积产生很大的变化,而对于L1范数的变化却是极小的,所以很容易就忽略了||w||1)。
进一步的,作者基于FGSM生成的对抗样本提出了一个高效的对抗训练方法:
这看起来似乎和将对抗样本和原始样本同时放入训练类似,不过作者的实验表明该方法还是有效的降低了欺骗成功率。
对于为什么会有如此大量的对抗样本,Goodfellow的解释是,只要选择的扰动方向正确,并且有足够大的ϵ,则产生的扰动就足够大,就会改变原先的样本标记。我们可以跟踪不同的 ϵ值,可以发现对抗样本出现在不同的连续区域。这就解释了为什么对抗性的例子非常丰富,为什么一个分类器错误分类的例子具有相当高的被另一个分类器错误分类的可能性。
为了解释为什么多个分类器将同一个类分配给敌对的例子,作者假设用当前方法训练的神经网络都类似于在相同训练集上学习的线性分类器。分类器在训练集的不同子集上训练时能够学习大致相同的分类权重,这仅仅是因为机器学习算法具有泛化能力。但是基础分类权重的稳定性反过来又会导致对抗性例子的稳定性。
这个式子与L1正则化公式非常相似。不同之处在于,这里是加上e||w||1,而L1正则化是减去。这也导致了最抗训练最终的损失是有可能完全消失的,只要模型的学习对预测足够自信。在低拟合度的情况下,对抗训练会使拟合度更低。因此,我们可以认为L1权重衰减相对于对抗训练是倾向于最坏情况,因为它在好的边际情况下是不能起作用的(这一段没怎么理解)。下面还例举了对抗训练与权重损失的对比实验,试验中,L1损失总是过分评估了对抗样本的损失,所以L1的权重系数不能太大,太大训练效果很差,但是权重太小又不能起到很好的正则化的作用。
5.深层网络的对抗性训练
作者在文中表明,相比于线性模型,深度网络至少可以在训练网络过程中来抵御对抗扰动攻击。文章给一种利用FGSM进行对抗训练的方法:
对抗训练可以对应于如下的正则化【这里的等价是要求这里的θ的参数是已经是训练好的模型下的】,其中在本文实验中α=0.5(随意测试的值,其他值或许更好),通过有dropout网络的对抗训练,能够比单纯的dropout的错误率低(from94% to 0.84%):
通过上式的训练不仅能降低overfit并提高准确率,同时还能抵御对抗样本(对抗样本错误率从89.4%降低到17.9%)。前面提到,对抗样本有迁移能力,对不同的模型同样有效,通过对对抗正则化训练得到的新模型却能很好的降低这个问题:通过原模型和新模型的参数分别产生两种对抗样本,分别交叉放入新模型和旧模型中,错误率为19.6%和40.9%,不过对于误分类的样本的confidence依旧很高,平均达81.4%。而且作者发现通过对抗训练得到的网络参数更加局部化,解释性更强。
文章后来也提到说是否有必要对隐藏层进行扰动,Szegedy的表明将其应用在隐藏层的时候得到一个最好的正则效果。不过这里的实验发现隐藏单元的激活值为明确的情况下,没有必要去扰动,这样只是单纯让某些激活值更大,并且实验正则效果并不理想,甚至不如直接在输入层加入的扰动
这种对抗训练的方法意味着在训练过程中不断更新对抗样本,从而使得当前模型可以抵御对抗样本。但是作者表示在训练集上对抗训练的错误率error rate没有达到过0%,作者主要从以下两个方面解决:
- 增大模型,即使用1600个unit代替240个unit
- 在validation set上也使用early stopping算法
文章表明,在不进行对抗训练的情况下,模型识别FGSM攻击方法生成样本的错误率是89.4%,但是通过对抗训练,同样的模型识别对抗样本的错误率下降到17.9%。
作者还探讨了在模型中加零均值零方差的实验,实验表明,这种方式对于抵抗对抗样本效果不好。
6.不同类型的模型容量
所谓模型容量就是指其拟合各种函数的能力。容量低的模型很难拟合训练集,容量高的模型容易过拟合。模型的容量对于对抗样本的敏感度是不一样的。低容量的模型对于对抗样本有一种天然的抗性(毕竟拟合度差)。文中用RBF做了一个实验,发现它对于误分类的样本信心非常低(1.2%)。但是RBF的不变性对于其他变换的适应性并不好。作者认为线性单元与RBF单元实际是一个precision与recall的权衡。为此,作者想要设计一个复杂的模型,包含二次单元和RBF网络,但是这个任务比较困难。
6.对抗样本泛化的原因
我们都知道很多论文都表明,对抗样本具有Transferability。具体来说,在一个特定模型上产生的对抗样本通常也容易被其他模型误分类,即使这些模型的结构不同或者模型在不同的训练集上训练。甚至,不同的模型对对抗样本误分类的结果相同!作者表明,非线性或者过拟合的假设不能解释上述的现象,即, 为什么拥有无限能力的极度非线性模型会以相同的方式标注数据分布点?在本文提出的线性解释下,作者认为对抗样本在广泛的子空间存在。
上图表明,在不同的ϵ下,可以看到FGSM可以在一维的连续子空间内产生对抗样本,而不是特定的区域(为什么误分类仍有比较高的置信度)。这就解释了为什么对抗样本特别多,以及对抗样本transferability存在的原因。
该方法在[Adversarial Machine Learning at Scale]这篇文章中进行了一些改进,将one-shot变成了迭代的方式求解;并且将增大原类别标记的损失函数改成减小目标类别标记的损失函数。即:
其中α是迭代步长。这样增加了FGSM的攻击成功率,称为BIM方法。
另外,为了解释为什么不同的分类器将对抗样本误分类到同一个类,作者假设目前的方法训练神经网络都类似于在同一个训练集上学习的线性分类器。由于机器学习算法的泛化能力,所以线性分类器可以在训练集的不同子集上训练出大致相同的分类权重。底层分类权重的稳定性反过来又会导致对抗样本中的稳定性。
7.对抗样本的其他假设
假设1:生成训练可以在训练过程中提供更多的限制,或者是的模型学习如何分辨"real"或者"fake"的数据,并且对"real"的数据更加自信。
文章表明,某些生成训练并不能达到假设的效果,但是不否认可能有其他形式的生成模型可以抵御攻击,但是确定的是生成训练的本身并不足够。
假设2:对抗样本存在于单个奇怪的模型(models with strange quirks),因此多个模型的平均可以使得模型防御性更好。
文章通过实验说明,模型融合对于对抗样本的防御能力非常有限。
0x03.主要结论
- 对抗样本的存在是因为模型过于线性,而不是因为模型过于非线性。
- 对抗样本在不同模型之间的泛化能力可以解释为对抗样本扰动与模型权重变量步调高度一致的结果,而不同的模型在执行相同的任务的时候,学习的都是相似的函数。
- 扰动的方向比扰动的具体值重要。因为特征空间并不像实数里面到处嵌入了无理数一样,到处都存在对抗样本。
- 正是因为扰动在正确的方向才起作用,所以可以在不同的原始干净样本中进行泛化。
- 介绍了一种生成对抗样本的方法。
- 对抗样本可以起到正则化的作用,甚至比 dropout 的效果还好。
- L1 weight decay 加噪音起到的正则化效果没有对抗样本的正则化效果好。
- 越容易优化的模型,越容易遭受扰动。
- 线性模型缺乏抵抗对抗样本扰动的 capacity。只有含有隐含层的结构才能被用于训练来抵抗扰动(不确定意思get的对不对)。
- RBF 网络可以抵抗对抗样本。
- Models trained to model the input distribution are not resistant to adversarial examples.(不好翻译)
- 集成多个模型也并不能抵抗对抗样本。
参考:
https://www.cnblogs.com/lainey/p/8568581.html
https://blog.csdn.net/m0_38011344/article/details/80262570
https://blog.csdn.net/SYSU_BOND/article/details/79785989
https://blog.csdn.net/Evabook/article/details/89461984
https://blog.csdn.net/kearney1995/article/details/79638389
https://blog.csdn.net/wuye999/article/details/83347113
https://blog.csdn.net/tfcy694/article/details/80614399
https://blog.csdn.net/weixin_38298363/article/details/84574230
https://blog.csdn.net/qq_24974989/article/details/88914086