[paper]Towards Evaluating the Robustness of Neural Networks(C&W)
该文探讨了针对Defensive Distillation这一类防御机制的C&W算法(采用三种不同距离类别作为对抗样本生成依据),并且该方法具备一定的迁移能力。

其中D用于评估原始图像与对抗样本之间的距离, 包括以下三种不同的距离: L_{0}范数、L_{2}范数以及L_{\infty }范数。
然而,C(x+δ)=t这一问题本身难以直接求解, 因此作者引入了函数f(x,t), 并规定当f(x,t)≤0时, 此条件得以满足。
则问题转化为:

进一步可简化为:

本文给出了7种符合此条件的函数:

为使输出生成一个合理图像的需求得以满足,则必须满足0≤xi+δi≤1这一条件;这实际上被定义为盒约束 (box constraints)。
- 投影梯度下降(Projected gradient descent):每实施一步梯度下降,就把计算结果限制在box内,这种方法对于具有复杂更新步骤的梯度下降方法(例如,具有动量的梯度下降)效果不太好,在剪切真实的x_{i}时也修改了下一次迭代的输入。
- 裁剪梯度下降法(Clipped gradient descent):与每一步迭代裁剪xx的值不同的,该方法将裁剪直接放入了优化目标,即用f(min(max(x+δ,0),1))代替原目标函数f(x+δ))。但这种方法,只是对目标函数进行了约束,可能会存在 x_{i}+\delta _{i}超过最大值的情况,这样就会出现梯度为0的结果,以至于x_{i}即使减少,梯度上也无法检测到。
- 改变变量(Change of variables):通过引入变量 w_{i},使得:

且满足x_{i}+\delta _{i}∈[0,1]。
据此,本文提出了对应与三种范数约束的求解方法:
- L_{2} attack


通过调节变量k的值来实现对错误分类发生概率的控制。变量k促使优化器收敛至对抗样本x’并赋予其被赋予了t类的高置信度标签。此外通过多次随机初始化以降低陷入局部极小的风险还可以提高模型的整体鲁棒性。对于L_{2}范数攻击中的常量c我们建议采用如下策略:首先选择一个较小的初始值例如为10^{-4};如果未能成功则逐步放大该常数值直到找到满足条件的情况或达到最大限制例如10^{10};一旦找到合适的c`则将其作为最终参数使用
由于L0范数不可导,在对抗样本的研究中无法直接应用传统的梯度下降法来进行求解。因此可以通过基于L2攻击的方法来生成L0攻击样本的具体过程如下:首先利用L2攻击算法生成一个扰动向量δ,并计算其对应的梯度值g=∇f(x+δ);接着根据评估函数g选择影响最小的像素点i=min arg g_i·δ_i(其中g_i实际上是衡量像素i对输出f的影响程度),然后将该像素点固定下来;之后再基于该固定后的像素点继续利用L2攻击方法生成对抗样本;这个过程会不断重复直至无法再找到满足条件的对抗样本为止。实际上这种基于L2攻击的L0范数攻击方法其实在实际应用中的效果并不理想。
- L_{\infty } attack
对于无穷范数,假设使用公式:
min\ \ c \cdot f(x+\delta )+\left \| \delta \right \|_{\infty}
发现梯度下降法的效果并不理想,这是由于\left \| \delta \right \|_{\infty}只会惩罚向量中最大的那个元素,而对于其余元素没有任何影响。因此,梯度下降很快就会停滞在两个次优解之间。 考虑一个情况,其中i=0.5和j=0.5−ϵ。L_{\infty }只会惩罚\delta _{i}而不会惩罚\delta _{j}。并且\frac{\partial }{\partial \delta _{j}}\left \| \delta \right \|_{\infty}在该点的值为0,因此梯度仍然会增大\delta _{i},尽管它已经很大。 因此在下一次迭代中,可能会移动到\delta _{j}比\delta _{i}略大的位置,比如i=0.5−ϵ′和j=0.5+ϵ′′,这就可能陷入僵局。 换句话说,梯度下降可能在\delta _{i}=\delta _{j}=0.5的线上来回摆动。
因此可将问题优化如下:

每次循环结束后,在所有变量i满足\delta _{i}< \tau的情况下,则将\tau降低至原来的90%,并重复上述过程;否则终止搜索过程。
需要确定一个合适的参数c值用于L∞攻击操作。我们可以采用类似于L0攻击的方法:首先设定一个非常小的c初始值,在该c值基础上运行L∞攻击算法。如果此次攻击未成功,则逐步增加c值(每次翻倍),重新尝试攻击直至成功为止;若c超过预先设定的最大阈值,则停止搜索。
在每一次循环中引入热启动机制以加速梯度下降过程,则整个算法运行效率与仅使用单个初始点的L2算法相当。
实验结果:




