Patch-wise Attack for Fooling Deep Neural Network (ECCV 2020)
Hello,不知不觉我已经快一年没更新过博客啦,实在是因为有点忙,没时间写论文阅读笔记了。不过这次自己的论文中了,决定还是来分享一波顺便冒个泡哈哈哈哈。
我们这篇论文的代码已经公开:https://github.com/qilong-zhang/Patch-wise-iterative-attack,对应的论文临时版本也在github里面(最终版本还在修改中),欢迎大家阅读,如果觉得有帮助的话别忘记帮我点个星星哦,感谢大家的支持!谢谢~
-
文章简介:
本文主要是研究黑盒 (black-box)条件下,基于本地已知替代模型(也可以说是白盒模型)进行迁移性对抗样本 (transfer-based attack)的生成。相比于State-of-the-art方法,我们在普通模型上平均可以提高3.7%个点,而在防御模型上,我们的方法可以平均提高接近10%。 -
Contribution:
- 提出了一种新颖的patch-wise的攻击方法,相比于现有大部分只是pixel-wise层面的扰动,我们方法产生的对抗样本迁移性更强。
- 提出了amplification factor来方法每步的步长,一方面可以避免迭代过程中陷入替代模型的局部最优点,另一方面也为我们的patch-wise扰动的产生提供了基础。
- 我们发现,我们的方法可以与现有的state-of-the-art轻松结合并提供更强大的攻击效果
-
目标函数
其中是替代模型的损失函数,这里采用的是交叉熵损失函数,是未添加扰动的干净图片,是我们所要产生的对抗样本,是我们所约束的无穷范数扰动值。更详细地说,我们的优化问题的目标在于寻找符合约束的对抗样本,使得在替代模型上的损失函数尽可能地大,即我们主要是研究non-targeted攻击。 -
Motivation:
-
直接进行clip操作对多余噪声移除存在一定的估计损失。我们以简单的点乘函数为例
如果我们在添加扰动后,进行直接裁剪就会得到如下结果
其中是我们添加的扰动,很显然如果可能会返回两种结果,第一种就是
没有超过,那么此时。另外一种就是如果扰动超过我们设置的阈值,那么此时必然有。如果出现了这种情况,那么我们最后更新之后得到的第步结果就会浪费掉一定的梯度信息。
这里有人可能会说,现有的方法不是大部分都采用步长吗?那不就会出现这个问题了。事实上却是如此,但先别着急往后看我们的amplification factor。 -
采用amplification factor 对迭代算法的每一步步长进行放大,可以有效提高对抗样本的迁移性。
如上图所示,我们测试了现有主流的比较知名的FGSM-based算法以及我们自己的算法PI-FGSM,可以发现在不同的目标模型上,增大步长往往能增加生成的对抗样本的迁移能力。从定性角度进行分析,这是因为增大每步的步长就会使得每次更新的量级更大,而我们知道梯度是通过求极限来获得的,也就是只能反应很小一部分区域的梯度信息,但我们放大了步长,就会在更新后并不是那么准确,换句话说就是会有一定的欠拟合现象的发生,但是对于迁移性而言,他就变相得提高了泛化性。从定量角度进行分析,符合Goodfellow所提出的的线性假设。因为我们对产生的扰动大小进行分析,我们发现往往更大的迭代步长会在不改变无穷范数约束的情况下增大最终的扰动均值。 -
如何产生更加好的迁移性扰动分析
我们首先在这里提出了一个patch map的概念,主要是用于分析最终的扰动,其表达式为
其中就是最终产生的扰动,在这边需要注意的是我们在右边乘了256而非255,这是因为如果乘以255则达到的noise在最终显示是就会变成白色(255),但是这样会带来一个可视化对比度减小的缺点,所以为了解决这个问题,我们乘以256,在保存为"uint8"类型时,像素值为256的地方会被修改成0(最终显示为黑色)。
这里我们对比了I-FGSM和FGSM,我们可以发现迁移性更强的FGSM算法在Patch map的可视化结果上存在一定的聚集特点,比如可以明显看到绿色或者黑色区域存在一定的聚集性。但是我们发现,FGSM虽然体现出了一定的聚集性,但是依旧存在稀疏的特点。
于是我们继续分析,我们观察到左边的两个模型的CAM可视化结果,发现高亮的区域(红色)也是存在一定的聚集性,并且是完整的一块区域并无零碎的特性。更进一步,"Regional Homogeneity: Towards Learning Transferable Universal Adversarial Perturbations Against Defenses"这篇论文发现具有Regional Homogeneity性质的噪声往往迁移到防御模型上会更加容易,他们在文中设计了几种不同的regional split方式:
也产生了非常好的迁移效果,分析完后,我们就有了一个思路,那就是去产生类似的具有regional性的扰动。
-
直接进行clip操作对多余噪声移除存在一定的估计损失。我们以简单的点乘函数为例
-
Method:
-
Rosen投影梯度法:
这个优化方法是我在研一上学期上最优化理论与方法这门课里了解到的,所以我就直接搬运了一下书上比较简单易懂的说法给大家一个直接的解释:
在这边不需要去纠结可行方向这些数学专用术语,你只需要看图就行了,简而言之就是把超过可行域的部分投影回可行域内。但是这个方法实现起来比较复杂,计算量也有点大(其实就是担心自己实现不出来这个部分QAQ)。
-
Rosen投影梯度法:
这里特别要感谢我的最优化老师张晓伟老师的授课以及最后帮我检查论文中这部分英文描述规范!
于是,为了达到更加高效地运行,我们结合前面的观察,提出了一个启发式投影算法,其基本思想很简单,既然我们的目的是为了产生具有聚集特性的扰动,那我们就可以把那些因为放大步长而导致超过阈值的噪声投影到周围区域就好了嘛!
当然这边也基于一个假设,我们是认为那些更容易超过阈值的pixel会有更大的概率处在CAM可视化区域的高亮区域,那我们通过这个投影方法就自然扩大了在这些区域的扰动聚集性。相比于Regional Homogeneity(前面提到得论文),我们的regional扰动更加多样,即不容易受限于某些特定的regional split方法。
在论文中,我们选择的是一个均匀分布的投影核,如下
其中,只有的中心点设置为0,其他则相同。这样设置的主要目的就是为了只把那些超过的部分投影到周围的同时,不会增加这些超过部分的扰动值。我这么说可能有点晦涩,下面就举个例子给大家看看
以上图为例,我们设置,那么可以看到左边那个矩阵中只有位于中心的点超过了8,将这部分多余的噪声收集起来就成为中间能红色的矩阵(也即下面Algorithm 1中的)。然后我们将上述的与这个红色的矩阵做卷积,注意在这的shape为3x3,除了中间点为0其余都为1/8。此外,我们这个示意图中省去了zero-padding操作,事实上在做卷积前先需要把红色矩阵(3x3)填充为5x5大小(用0填充)。卷积得到的结果也即投影结果就是后面的蓝色矩阵。最后,我们把左边的黑色矩阵与右边的蓝色矩阵相加,在clip到[-8,8]区间就是我们其中第次循环的结果。
注意:这里我们不是完全放弃了clip操作,而是在clip操作前先把超过的梯度信息重新利用一下。
-
Algorithm:
算法流程如上图,其中用橘色框框出的部分就是之前描述的那张图中黑色矩阵->红色矩阵的过程。相比于I-FGSM,蓝色框框出的部分就是我们与I-FGSM的区别即改进。 -
实验结果:
这边我就只放关于防御模型的攻击效果,普通模型的实验结果可以去我们论文中看(暂时还在修改中,还未上传camera-ready版本,但我们把当前修改的临时版本"6114-temporary version.pdf"已经放到了github上)。- 下图是用普通模型作为替代模型在迁移到目标四个防御模型的结果图,可以发现相比于TI-FGSM,我们的方法可以最多提升10.5%,此外他们的结合版本DPI-FGSM也能总体上比DTMI-FGSM强。这里需要注意的是,我们的方法在攻击防御模型是,与MI-FGSM的结合效果一般,所以我们最终没有把Momemtum加入到DTPI-FGSM中。
- 这个是集成攻击的效果,替代模型是4个普通模型。可以发现在这个条件下,我们的PI-FGSM也能超过最佳的MI-FGSM最多18.4%
- 最后是攻击三个来自于Cihang Xie等人的论文"Feature Denoising for Improving Adversarial Robustness"中目前防御效果特别强的模型。我们在这里还发现了一个特别神奇的现象,如果用这些强大的防御模型作为替代模型去攻击其他防御模型,之前提出来的方法如MI-FGSM,TI-FGSM以及DI-FGSM的效果甚至还不如I-FGSM。具体的原因我也不太清楚,但是我们的PI-FGSM还是表现出彩。
- 下图是用普通模型作为替代模型在迁移到目标四个防御模型的结果图,可以发现相比于TI-FGSM,我们的方法可以最多提升10.5%,此外他们的结合版本DPI-FGSM也能总体上比DTMI-FGSM强。这里需要注意的是,我们的方法在攻击防御模型是,与MI-FGSM的结合效果一般,所以我们最终没有把Momemtum加入到DTPI-FGSM中。
结语:
这是我研究生生涯的首投,没想到第一次的运气还不错,虽然中间还是遇到一个不懂还要来碰瓷的reviewer,但好在其他两个reviewer以及AC的肯定,认可了我的工作!在这还是要谢谢他们~
如果大家有什么问题或者论文有什么地方读不懂,欢迎给我留言!我看到了一定会回复的哦~
另外代码已经在Github可以获得,欢迎大家下载,如果觉得不错记得顺便帮我点个star哦~ 嘻嘻。
继续努力冲鸭~~~