Towards Evaluating the Robustness of Neural Networks(C&W)(2017 Best Student Paper)
文章简介:
- 证明defensive distillation不能显著地提高模型的鲁棒性
- 介绍了3种新的攻击算法,可以在distilled和undistilled神经网络达到100%的攻击成功率
- 本文的攻击相比于以前的攻击通常会更有效
- 本文的对抗性例子可以从不安全的网络模型迁移到distilled(安全)的网络模型去
- 数据集:MNIST、CIFAR-10、ImageNet
- 本文主要研究Targeted Attacks
- 由于defensive distillation并不能真正地避免对抗样本的出现,作者认为原因可能是对抗样本的存在原因在于神经网络局部线性的性质[47] (这是一种说法,也有其他说法)
算法思想:
作者把构建对抗样本的过程转化为一个最优化问题,如下图所示:

但是其中的等式约束难以求导,所以作者将这一等式进行了转化:
C(x+δ)=t⇒f(x+δ)≤0
C(x+\delta) = t \Rightarrow f(x+\delta) \leq 0
C(x+δ)=t⇒f(x+δ)≤0
并给出一共7种选择

最终将原优化问题转为

接下来,为了解决box约束问题(即0≤xi+δi≤10\leq x_i + \delta_i \leq 10≤xi+δi≤1),作者采用了3种方法进行选择
- Projected gradient descent:每实施一步梯度下降,就把计算的结果限制在box内,该方法的缺点就是每次传入下一步的结果都不是真实值
- Clipped gradient descent:并没有真正地裁减xix_ixi,而是直接把约束加入到目标函数中,即
f(x+δ)⇒f(min(max(x+δ,0),1)) f(x+\delta) \Rightarrow f(\min(\max(x+\delta, 0), 1)) f(x+δ)⇒f(min(max(x+δ,0),1))
但这种方法,只是对目标函数进行了约束,可能会存在 xi+δix_i + \delta_ixi+δi超过最大值的情况,这样就会出现梯度为0的结果,以至于xix_ixi即使减少,从梯度角度也无法检测到。
- Change of variables:通过引入变量 wiw_iwi,使得xi+δix_i + \delta_ixi+δi满足box约束,其方法为

最后的结果如下:
- Best Case: target label是最容易攻击的label
- Worst Case:target label是最难攻击的label
- Average Case:target label是随机挑选的label
可以发现Projected Descent在处理box约束是优于其他两种策略,但Change of Variable寻求的扰动一般都是较小的,此外f2,f3,f4f_2, f_3, f_4f2,f3,f4效果欠佳,但f6f_6f6在这7种策略中基本上是最好的:需要的扰动一般最小,且成功率高。

后面作者还采用三种攻击方法(其本质区别就是范数约束区别)
- L2  AttakL_2 \,\,AttakL2Attak:下面的fff选择的就是之前测试结果中效果最好的f6f_6f6, 只是对kkk解除了必须为0的约束

参数kkk鼓励算法在寻找对抗样本的时候,将其归为target类时有更高的置信度,同时能够增加迁移率。原因就是他更加鼓励分为其他类时,最大的置信度要比target类的置信度会往k的差距优化。

- L0  AttakL_0 \,\,AttakL0Attak:因为L0距离是无法微分的,所以作者采用迭代的方法,使用L2 Attack来确定哪些像素不重要,对不重要的像素点就固定着。详细过程如下(还得详细看下代码才行文章有点不太清晰):
a) 首先通过L2 Attack方法获得δ\deltaδ, 使得x+δx + \deltax+δ是一个对抗样本。
b)计算梯度ggg
g=∇f(x+δ)
g = \nabla f(x+\delta)
g=∇f(x+δ)
然后选择i=argminigi⋅δii = \arg \min_i g_i \cdot \delta_ii=argminigi⋅δi,这就是我们所要固定的像素点即把他移除出需要更新的像素点集(allowed set)
c) 重复以上过程,知道L2 Attak无法找到对抗样本为止
- L∞  AttackL_{\infin} \,\,AttackL∞Attack:该攻击方法不是完全可微的,并且标准的梯度下降算法并不能达到非常好的效果,即采用如下策略时,会出现一个问题:无穷范数只惩罚最大的那个值
假设δi=0.5\delta_i = 0.5δi=0.5且δj=0.5−ϵ\delta_j = 0.5 - \epsilonδj=0.5−ϵ,则L∞  normL_{\infin} \,\, normL∞norm只会惩罚δi\delta_iδi而不会去惩罚δj\delta_jδj,最后可能会使得优化的最终结果是δi=δj=0.5\delta_i = \delta_j = 0.5δi=δj=0.5,而没有任何意义。

所以作者通过iterative attack来解决这个问题,作者把原目标函数中的约束替换,如下:
该方法惩罚所有大于τ\tauτ的值,并且如果在每一轮迭代中,如果所有的δi<τ\delta_i < \tauδi<τ,则τ=0.9τ\tau = 0.9\tauτ=0.9τ
由于这些笔记是之前整理的,所以可能会参考其他博文的见解,如果引用了您的文章的内容请告知我,我将把引用出处加上~
如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(点个赞我可是会很开心的哦)~