图像对抗算法-攻击篇(FGSM)

论文:Explaining and Harnessing Adversarial Examples
论文链接:https://arxiv.org/abs/1412.6572

在图像攻击算法中,FGSM(fast gradient sign method)是非常经典的一个算法。这篇发表于ICLR2015的文章通过梯度来生成攻击噪声,核心思想就是Figure1所示的内容。Figure1中左边图是常规的图像,一般的分类模型都会将其分类为熊猫(panda),但是通过添加由网络梯度生成的攻击噪声后,得到右边的攻击图像,虽然看起来还是熊猫,但是模型却将其分类为长臂猿(gibbon)。
图像对抗算法-攻击篇(FGSM)_第1张图片
那么FGSM的攻击噪声是怎么生成的呢?我们知道训练分类模型时,网络基于输入图像学习特征,然后经过softmax层得到分类概率,接着损失函数基于分类概率和真实标签计算损失值,回传损失值并计算梯度(也就是梯度反向传播),最后网络参数基于计算得到的梯度进行更新,网络参数的更新目的是使损失值越来越小,这样模型分类正确的概率也就越来越高。
图像攻击的目的是不修改分类网络的参数,而是通过修改输入图像的像素值使得修改后的图像能够扰乱分类网络的分类,那么结合刚刚讲的分类模型的训练过程,这里可以将损失值回传到输入图像并计算梯度,也就是下面这个值,其中J()是损失函数,x和y表示输入图像和真是标签,θ表示网络参数:
在这里插入图片描述
接下来可以通过sign()函数计算梯度的方向,sign()函数是用来求数值符号的函数,比如对于大于0的输入,输出为1, 对于小于0的输入,输出为-1,对于等于0的输入,输出为0。之所以采用梯度方向而不是采用梯度值是为了控制扰动的L∞距离,这是FGSM算法的评价指标
在这里插入图片描述
常规的分类模型训练在更新参数时都是将参数减去计算得到的梯度,这样就能使得损失值越来越小,从而模型预测对的概率越来越大。既然无目标攻击是希望模型将输入图像错分类成正确类别以外的其他任何一个类别都算攻击成功,那么只需要损失值越来越大就可以达到这个目标,也就是模型预测的概率中对应于真实标签的概率越小越好,这和原来的参数更新目的正好相反。因此我只需要在输入图像中加上计算得到的梯度方向,这样修改后的图像经过分类网络时的损失值就比修改前的图像经过分类网络时的损失值要大,换句话说,模型预测对的概率变小了。这就是FGSM算法的内容,一方面是基于输入图像计算梯度,另一方面更新输入图像时是加上梯度,而不是减去梯度,这和常见的分类模型更新参数正好背道而驰。
前面我们提到之所以采用梯度方向而不是采用梯度值是为了控制扰动的L∞距离,这只是其中的一部分。在Figure1中,梯度方向前一般会有一个权重参数e,这个权重参数可以用来控制攻击噪声的幅值,参数值越大,攻击强度也越大,肉眼也更容易观察到攻击噪声(因为输入图像归一化成0到1,所以图中e值只有0.07,换算成0到255的话差不多18个像素值),因此最终的攻击噪声就如下所示。因为FGSM算法的攻击噪声幅值评价指标是L∞,因此权重参数e和梯度方向就可以控制每个像素的最大变化值。

在这里插入图片描述
FGSM算法简单有效,在图像攻击领域扮演着非常重要的角色,后续的许多研究也都基于这个算法开展,比如为了提高攻击成功率而推出的迭代版FGSM,下一篇博客将介绍迭代版FGSM。

你可能感兴趣的:(深度学习,计算机视觉,图像对抗算法)