关于Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks的理解

原文:https://blog.csdn.net/kearney1995/article/details/79741699git

为了防护以前提出的FGSM和JSMA的攻击方式,做者根据以前hinton提出的蒸馏学习的方式,再此基础上稍做修改获得了防护蒸馏模型,并理论推导了防护有效性的缘由。
 蒸馏学习是原先hinton提出用来减小模型复杂度而且不会下降泛化性能的方法,具体就是在指定温度下,先训练一个教师模型,再将教师模型在数据集上输出的类别几率标记做为软标签训练学生模型。而在防护蒸馏模型中,选择两个相同的模型做为教师模型和学生模型。网络

具体过程以下:
一、先用硬标签训练教师模型,假设温度为T,则模型的softmax层的输出F(X)为: 函数

再此基础上应用交叉熵损失训练模型。 性能

二、而后用教师模型输出类别几率F(X)(注意,这里仍是保持了温度T)实际上,这和T=1,即普通状况下训练模型,并无什么太大区别,与原文保持一致。
三、对于学生模型,咱们仍是利用温度T下的输出F(X)计算交叉熵损失函数,不过类别标签应用以前教师模型输出的软标签,进而进行训练。
对于使用软标签带来的好处,主要在于使用软标签F(X)使得神经网络可以在几率向量中找到的附加知识。 这个额外的熵编码了类之间的相对差别。 例如,在手写数字识别的背景下,给定一些手写数字的图像X,模型F能够评估数字7到F7(X)=0.6的几率以及标签1到F1(X)=0.4的几率,这代表7和1之间有一些结构类似性。
四、对于模型的预测输出,咱们反而将温度T降为1,从而以高置信度来预测未知输入的类别。
实际上咱们根本不须要前面的教师模型,只须要将F(X)做为神经网络的输出来最小化交叉熵损失函数既能够达到防护FGSM和JSMA的攻击。
  做者也对防护蒸馏的有效性进行的分析,对softmax层的输出求梯度能够很容易的得出:
学习

其中,而且咱们记 编码

 但实际上这里的分析值得商榷,咱们来从新作一个分析,首先咱们假设用防护蒸馏训练获得的防护蒸馏模型类别ii的logits输出为(也就是softmax层的输入),而原始模型类别ii的logits输出为。模型训练时,为了使交叉熵损失函数足够小,咱们类别输出之间的差距必须足够大,原先,咱们只须要目标类别ll的logits输出比其他类别大10左右便可。(这是我随便选的数字),便可使得咱们要求的类别 的几率输出近似为1: spa

 

而训练防护蒸馏模型时,,假设咱们温度选择T=100T=100,那么咱们在该温度下要求目标类别的几率输出为11,则须要知足:
Pl(X)=ez′l(X)/T∑N−1i=0ez′i(X)/T≈11+e(z′i(X)−z′l(X))/T∗(N−2)=1
Pl(X)=ezl′(X)/T∑i=0N−1ezi′(X)/T≈11+e(zi′(X)−zl′(X))/T∗(N−2)=1.net

此时若还按照刚才的e−10e−10的要求,则必须z′i(X)−z′l(X)=−10∗T=−1000zi′(X)−zl′(X)=−10∗T=−1000,而训练完毕后模型预测时温度降为T=1T=1,此时差1000就是绝对的00和11了,咱们用交叉熵loss=−logFl(X)loss=−log⁡Fl(X)对XX求梯度能够获得:
∇Xloss=−∇X(logez′l(X)∑N−1i=0ez′i(X))=−∂z′l(X)∂X+∑N−1i=0[ez′i(X)∂z′i(X)∂X]∑N−1i=0ez′i(X)≃−∂z′l(X)∂X+∂z′l(X)∂X+0⋯01+0⋯0=0
∇Xloss=−∇X(log⁡ezl′(X)∑i=0N−1ezi′(X))=−∂zl′(X)∂X+∑i=0N−1[ezi′(X)∂zi′(X)∂X]∑i=0N−1ezi′(X)≃−∂zl′(X)∂X+∂zl′(X)∂X+0⋯01+0⋯0=0blog

注意这里是分子分母同时除以ez′l(X)ezl′(X)近似获得的,所以蒸馏训练以后的损失函数对样本X的梯度近似等于0,咱们的实验结果也是如此。
 同理,咱们从新分析对softmax层的输出求的梯度:
∂Fi(X)∂X=∂∂Xj(ez′i∑N−1l=0ez′l)=1g2(X)(∂ez′i(X)∂Xg(X)−ez′i(X)∂g(X)∂X)=1g2(X)ez′i(∑l=0N−1∂z′i∂Xez′l−∑l=0N−1∂z′l∂Xez′l)=ez′ig2(X)(∑l=0N−1(∂z′i∂X−∂z′l∂X)ez′l)=∂z′l∂X−∂z′l∂X=0
∂Fi(X)∂X=∂∂Xj(ezi′∑l=0N−1ezl′)=1g2(X)(∂ezi′(X)∂Xg(X)−ezi′(X)∂g(X)∂X)=1g2(X)ezi′(∑l=0N−1∂zi′∂Xezl′−∑l=0N−1∂zl′∂Xezl′)=ezi′g2(X)(∑l=0N−1(∂zi′∂X−∂zl′∂X)ezl′)=∂zl′∂X−∂zl′∂X=0it

其中g(X)=∑N−1l=0ez′l(X)g(X)=∑l=0N−1ezl′(X),这里也是分子分母同时除以e2z′l(X)e2zl′(X)获得的。这也与咱们的实验相符(雅可比矩阵为0)。可是实际上JSMA的攻击选择的是logits的输出,所以实际上防护蒸馏根本没办法抵抗JSMA的攻击。   防护蒸馏其实是一个典型的梯度遮蔽的方式来防护对抗攻击,实际上咱们即便不知道真正的梯度,采用近似的梯度,也可以成功攻击。C&W后来提出了一个新的攻击方式成功攻击了该防护模型。--------------------- 做者:kearney1995 来源:CSDN 原文:https://blog.csdn.net/kearney1995/article/details/79741699 版权声明:本文为博主原创文章,转载请附上博文连接!

相关文章
相关标签/搜索