关于Explaining and harnessing adversarial examples的理解

 之前在这篇论文[Intriguing properties of neural networks]中,发现了关于神经网络的一个有趣的性质,即在原样本点上加上一些针对性的但是不易察觉的扰动,就会很容易的将神经网络分类错误,并且可能以很高的置信度输出。基于原文章中L-BFGS-B不精确求解非凸问题的速度较慢,以及很多人将这个性质的原因归结为深层神经网络的高度非线性以及过拟合,Goodfellow 用这篇论文给出了不同的看法。
 他认为,即使是线性模型,仍然也会存在对抗样本,我们记输入样本~x~的对抗样本为:x~=x+η,其中要求η足够小:||η||ϵ。我们考虑权重向量w和对抗样本x~的内积:

wTx~=wTx+wTη

显然对抗扰动通过wTη使得神经元的输出增大。如果权向量的维数为n并且权向量的均值为m,则wTη的最大值为ϵmn,此时η=ϵsign(w)。因此,在高维空间中,即使是很小的扰动,也会对最终的输出值产生很大的影响。
 而对于神经网络而言,很多神经网络为了节省计算上的代价,都被设计成了非常线性的形式,这使得他们更容易优化,但是这样"廉价"的网络也导致了对于对抗扰动的脆弱性。他们的实验也证明了这一点,Goodfellow直接将线性扰动加入原样本:
x~=x+ϵsign(xJ(θ,x,ytrue))

也能产生很高的欺骗成功率(fool rate),他们把该方法成为Fast Gradient Sign Method(FGSM)。
 除了生成对抗样本来攻击神经网络以外,对抗训练神经网络从而有效防止对抗样本的攻击也是一个值得考虑的问题。
 我们先考虑最简单的逻辑回归模型:如果我们训练一个简单的模型来识别标记y{1,+1},并且p=P(y=1|x)=11+ef=11+e(wTx+b)。注意这里与文中相同,选择的标记为{1,+1}并不是我们平时常用的{0,1},我们可以简单推导一下该情况下的损失函数:
J=1+y2logP(y=1|x)1y2logP(y=1|x)=12logp(1p)y2logp1p=12logef+log(1+ef)y2logef=12(fyf)+log(1+ef)={log(1+ef)y=1f+log(1+ef)=log(ef)+log(1+ef)=log(1+ef)y=1=log(1+eyf)

我们对x求梯度可以得到
xJ=eyf1+eyf(y)w

因此通过FGSM得到的对抗样本为x~=xϵysign(wT),对于对抗样本的损失函数,有:
J=log(1+ey(wTxϵywTsign(w)+b))=log(1+ey(wTx+b)+ϵ||w||1)

对于学到足够的置信度的模型来说,即y(wTx+b)足够小时,ϵ||w||1几乎不起作用。而对于欠拟合的模型来说,则会使得模型更加欠拟合。(还是刚刚那个原因,高维情况下很小的扰动都会使得内积产生很大的变化,而对于L1范数的变化却是极小的,所以很容易就忽略了||w||1)。
 进一步的,作者基于FGSM生成的对抗样本提出了一个高效的对抗训练方法:
J~(θ,x,y)=αJ(θ,x,y)+(1α)J(θ,x+ϵsign(xJ(θ,x,y))

这看起来似乎和将对抗样本和原始样本同时放入训练类似,不过作者的实验表明该方法还是有效的降低了欺骗成功率。
 对于为什么会有如此大量的对抗样本,Goodfellow的解释是,只要选择的扰动方向正确,并且有足够大的ϵ,则产生的扰动就足够大,就会改变原先的样本标记。我们可以跟踪不同的 ϵ值,可以发现对抗样本出现在不同的连续区域。这就解释了为什么对抗性的例子非常丰富,为什么一个分类器错误分类的例子具有相当高的被另一个分类器错误分类的可能性。
为了解释为什么多个分类器将同一个类分配给敌对的例子,作者假设用当前方法训练的神经网络都类似于在相同训练集上学习的线性分类器。分类器在训练集的不同子集上训练时能够学习大致相同的分类权重,这仅仅是因为机器学习算法具有泛化能力。但是基础分类权重的稳定性反过来又会导致对抗性例子的稳定性。

该方法在[Adversarial Machine Learning at Scale]这篇文章中进行了一些改进,将one-shot变成了迭代的方式求解;并且将增大原类别标记的损失函数改成减小目标类别标记的损失函数。即:

x~i+1=Clipx,ϵ{xiαsign(xJ(θ,xi,ytarget)}

其中α是迭代步长。这样增加了FGSM的攻击成功率,称为BIM方法。

没有更多推荐了,返回首页