这是一篇论文阅读笔记,论文原文:神经网络的鲁棒性评价
本人在阅读这篇论文的时候也参考了别人的博文,参考博文的链接我会在文章最后的参考资料中列举出来,如有侵权请联系我删除。本文主要是对这篇论文的一些思想的理解,包括公式推导还有一些总结。除此之外发现原文在论文第6页中提出的7个目标函数中,第5个目标函数有错误,主要是对数里面的式子写反了,如果是仔细看的话是能够看出来的。原来的式子如下面的公式1所示,修改之后应该如公式2所示。在文中提到 F F F就是经过了softmax输出的概率,那么 F F F的取值范围为 [ 0 , 1 ] [0,1] [0,1],那么对于下面的(1)式来说,就不满足对数函数的定义域大于0,所以这个式子有问题。而(2)式则满足其定义域,并且相关意义,这个在后面会解释。
f 5 ( x ′ ) = − log ( 2 F ( x ′ ) t − 2 ) (1) \begin{aligned} f_5(x') = -\log (2F(x')_t-2) \tag{1} \end{aligned} f5(x′)=−log(2F(x′)t−2)(1)
f 5 ( x ′ ) = − log ( 2 − 2 F ( x ′ ) t ) (2) \begin{aligned} f_5(x') = -\log (2-2F(x')_t) \tag{2} \end{aligned} f5(x′)=−log(2−2F(x′)t)(2)
虽然神经网络在大多数的机器学习任务上取得了SOTA的效果,但是存在这样的一个事实,那就是神经网络容易受到对抗样本的攻击。也就是说,对于输入的x,能够找到一个 x ′ x' x′,使得 x ′ x' x′与 x x x十分接近,但是会被神经网络误分类成另外一个类别(非正确的类别)。所以使我们训练出的神经网络能够防御对抗样本的攻击显得意义重大。而防御蒸馏就是最近被提出的一个方法,对于任何一个神经网络,使用对抗蒸馏提高其鲁棒性,降低对抗攻击的准确率。没有使用防御蒸馏之前,对抗攻击的成功率为95%,但是使用了防御蒸馏之后,对抗攻击的成功率降到了0.5%。
但是在这篇文章当中,作者通过提出三种对抗攻击算法,证明了防御蒸馏也不过尔尔嘛。(这里提一嘴,作者这种写作手法着实厉害,先说防御蒸馏怎么怎么牛皮,然后第二段就说,在我们的文章中,我们提出了三种算法成功击破防御蒸馏,所以这也不过尔尔嘛,潜台词就是之前的对抗攻击算法都是什么trash)。作者提出的三种对抗攻击算法是根据使用到的三种不同的距离划分的,分别是L0范数、L2范数、无穷范数。并且与先前提出的对抗攻击算法相比通常都更有效。除此之外,作者还建议在简单的可迁移性测试中使用高置信度的对抗样本,这也可以被用于攻破防御蒸馏。
作者在这篇文章的contributions如下:
首先我们先来了解一下什么是防御蒸馏。首先防御蒸馏的原文在这里,防御蒸馏的过程如下图所示。有一个初始网络和一个蒸馏网络,对于初始网络而言,输入训练数据X以及训练的标签Y,然后以温度T来训练模型F。接着将初始网络输出的概率作为软标签去蒸馏网络中去训练,蒸馏网络与初始网络完全一样,唯一不同的就是蒸馏网络的训练标签是初始网络输出的概率值。这里的温度T是什么意思呢?我们看下面的公式(1)就能明白了,对于分类的深度神经网络来说,最后一层是将logit值输入到softmax函数中实现归一化,所以最终输出的也就是概率。而在这里引入温度T,我们可以看到公式(1)中温度T的位置,其实也就是将逻辑值缩放相应的倍数。不过在下面那张图中可以看到(水印还没去hhh)随着温度T的升高,概率的分布越平缓,而这概率的分布也就是类的分布,所以说T越大,类的分布越平缓。我们知道我们的logit值是要被送到softmax函数中去归一化的。如果只是T为1,从下面的图中我们可以看出,最后F(X)输出的概率肯定是后面的极大,前面的极小(因为图中就是这样的一个趋势,前面的很小,并且几乎没有改变什么,后面的剧烈改变,并且极大)。但是如果T增大了,那么最终得到的概率也是平稳增长的。
F ( X ) = [ e Z i ( X ) / T ∑ l = 0 N − 1 e z l ( X ) / T ] i ∈ 0.. N − 1 (1) \begin{aligned} F(X) = \left[\frac{e^{Z_i(X)/T}}{\sum_{l=0}^{N-1}e^{z_{l}(X)/T}}\right]_{i \in 0..N-1} \tag{1} \end{aligned} F(X)=[∑l=0N−1ezl(X)/TeZi(X)/T]i∈0..N−1(1)
接下来我们就该思考,这样就能够防御对抗攻击了吗?其中的原理是什么?首先训练过程中增加温度常数T会使得模型产生的标签分布更加均匀的预测输出,可以预见,当温度系数接近无穷大的时候softmax接近均匀分布。这样做的目的是什么呢?其实使输出的概率更加平滑是为了蒸馏模型在训练之后能够得到更好的泛化能力。怎么理解?举个例子,softmax层的输出,除了正例之外,负标签也带有大量的信息,比如某些负标签对应的概率远远大于其他负标签。而在传统的训练过程中,所有的负标签都被统一对待,而使用了温度T,我们可以明显地感受到负标签的信息量被放大了。在手写数字分类识别的任务中,假设某个输入的”2“更加形似”3“,softmax的输出值中”3“对应的概率为0.1,而其它负标签对应的值都很小,而另一个”2“更加形似”7“,”7“对应的概率为0.1.这两个”2“对应的硬标签的值是相同的,但是对应的软标签却是不同的,由此可见软标签蕴含着比硬标签多的信息,并且软标签分布的熵相对高时,其软标签蕴含的指示就更丰富。
诚然,这样做确实增强了模型的泛化能力,那么又是怎么能够防御住对抗攻击呢?其实作者在文中给出了说明(这里指的是防御蒸馏这篇文章),首先作者先求模型的敏感性,更确切的说,模型的敏感性是模型对输入敏感,也就是输入的改变对模型的影响程度(举个简单的例子,假设 y = 2 x + 1 y=2x+1 y=2x+1,与 y = 3 x + 1 y=3x+1 y=3x+1这是两个线性模型,一个导数为2一个导数为3,则说明第二个模型对输入更加敏感,因为只要输入改变一点,输出改变的就有很多)。一般来说,我们是对模型的输入求偏导,用Jacobian矩阵来表示或者梯度来表示,如果梯度较大说明输出对输入较敏感,如果梯度较小那么输出对输入不敏感。在这里作者求了softmax对输入x的偏导,如下图,我们可以发现随着温度T的升高,模型的梯度减小,说明模型的敏感性降低。既然模型的敏感度降低,那么就说明模型输入的小小改变对输出影响不是很大,而对于对抗攻击算法(比如说FGSM),就是在损失函数中对输入求偏导,最终取使得损失函数增大方向的梯度,然后添加扰动。但是现在模型的敏感度降低了,那么你添加的扰动自然也就没有效果了。
对于作者而言,现在要创建出一种对抗攻击算法,首先我们得考虑这种对抗攻击算法要具备什么样的特点,这些特点总结如下:
下面是对上述函数的解读:
接着作者就将我们的问题转化成了如下问题,那么这种问题在数学上是可以用拉格朗日乘数法来进一步转化,变成求该拉格朗日函数的最值问题。那么使用拉格朗日乘数法之后,就变成了后面的式子。其中 δ \delta δ就是我们的扰动。这里的 c c c是一个合适的常量并且 c > 0 c>0 c>0,在文对于c的选取,作者做了实验,从0.01取到100,最终发现c取1的时候效果最好,如下图所示。
m i n i m i z e D ( x , x + δ ) s . t . f ( x + δ ) ≤ 0 x + δ ∈ [ 0 , 1 ] n \begin{aligned} minimize\ D(x,x+\delta)\\ s.t.\ f(x+\delta)\leq 0\\ x+\delta \in [0,1]^{n} \end{aligned} minimize D(x,x+δ)s.t. f(x+δ)≤0x+δ∈[0,1]n
m i n i m i z e ∣ ∣ δ ∣ ∣ p + c ⋅ f ( x + δ ) s . t . x + δ ∈ [ 0 , 1 ] n \begin{aligned} minimize\ \left| | \delta | \right|_{p} + c·f(x+\delta)\\ s.t.\ x+\delta \in[0,1]^{n} \end{aligned} minimize ∣∣δ∣∣p+c⋅f(x+δ)s.t. x+δ∈[0,1]n
其实上面的函数中还有个约束,那就是 x + δ ∈ [ 0 , 1 ] n x+\delta \in[0,1]^{n} x+δ∈[0,1]n,也就是扰动后的图像必须还是得在我们的范围之内(因为在把图片输入到模型中,图片的像素值会被归一化到[0,1]而我们添加扰动之后,这个约束仍然成立),在文中作者把这个称作盒约束。对于盒约束,作者提出三种方式来解决,这里我们就提最后一种方式。作者引入新的变量 w w w,将上述优化 δ \delta δ的问题转化为优化 w w w,定义如下,首先双曲正切 tanh x = e x − e − x e x + e − x \tanh x = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanhx=ex+e−xex−e−x,其取值范围为[-1,1],所以 1 2 ( tanh ( w i ) + 1 ) \frac{1}{2}(\tanh (w_i)+1) 21(tanh(wi)+1)的取值范围为[0,1],那么将 x i x_i xi移过去,则为 x i + δ i x_i+\delta_i xi+δi的范围为[0,1]。
δ i = 1 2 ( tanh ( w i ) + 1 ) − x i \begin{aligned} \delta_{i} = \frac{1}{2}(\tanh (w_i)+1) -x_{i} \end{aligned} δi=21(tanh(wi)+1)−xi
那么对于使用 L 2 L_2 L2范数进行度量,我们等价求解的问题如下,在这里 f ( x ′ ) f(x') f(x′)这个函数用所有非目标标签的最大logit值减去目标标签的logit值,也就是说如果 x ′ x' x′被识别到目标标签,那么 m a x Z ( x ′ ) : i ≠ t − Z ( x ′ ) t maxZ(x'):i\neq t\ - Z(x')_t maxZ(x′):i=t −Z(x′)t是负的,假如 k = 0,则 f ( x ′ ) = 0 f(x')=0 f(x′)=0,意味着该函数将不会被惩罚,否则如果 x ′ x' x′被识别到非目标标签,该函数将会受到惩罚,通过改变k的值可以得到我们设想的置信度,k的值越模型越容易分错,并且错的那一类概率越大。
m i n i m i z e ∥ 1 2 ( tanh ( w ) + 1 ) − x ∥ 2 2 + c ⋅ f ( 1 2 ( tanh ( w ) + 1 ) ) f ( x ′ ) = m a x ( m a x Z ( x ′ ) i : i ≠ t − Z ( x ′ ) t , − k ) \begin{aligned} minimize\ \left\| \frac{1}{2}(\tanh (w) +1) - x \right\|^{2}_{2} + c·f(\frac{1}{2}(\tanh (w) +1))\\ f(x') = max(max{Z(x')_{i}:i \neq t} - Z(x')_{t},-k) \end{aligned} minimize ∥∥∥∥21(tanh(w)+1)−x∥∥∥∥22+c⋅f(21(tanh(w)+1))f(x′)=max(maxZ(x′)i:i=t−Z(x′)t,−k)
先写到这里,以后想到了再更新(挖坑)
[1] lan的小饼干,2021.基于优化的CW攻击方法[DB/OL].[2021-11-14].https://zhuanlan.zhihu.com/p/361169580
[2] 专注于计算机视觉的AndyJiang,2020.深度学习之知识蒸馏[DB/OL].[2021-11-14].https://blog.csdn.net/andyjkt/article/details/108501693