[paper]Distillation as a Defense to Adversarial Perturbations against Deep Neural Networks

本文提出了一个防御算法,在不改变深度神经网络的结构并且在尽可能小的影响模型准确率的前提下能够有效地抵御对抗样本的攻击。

We use the knowledge extracted during distillation to reduce the amplitude of network gradients exploited by adversaries to craft adversarial samples. If adversarial gradients are high, crafting adversarial samples becomes easier because small perturbations will induce high DNN output variations. To defend against such perturbations, one must therefore reduce variations around the input, and consequently the amplitude of adversarial gradients.

通过利用蒸馏过程中提取的知识来减小攻击者利用梯度生成对抗样本的幅度。 如果梯度较高,则生成对抗样本会更容易,因为较小的扰动会引起DNN较高的输出方差。 为了抵御这种干扰,必须减少输入的方差,从而减少梯度的幅度。

本文做出了以下贡献:

  1. 阐明了对抗性样本DNN防御设计的要求。 这些准则强调了防御性鲁棒性,输出准确性和DNN性能之间的内在联系。
  2. 引入了防御性蒸馏,这是一种基于DNN的分类器模型的训练程序,该模型对扰动更鲁棒。 蒸馏提取有关训练点的其他知识,作为DNN生成的类概率向量,并将其反馈到训练过程中。 这与之前蒸馏的用途大相径庭。之前蒸馏的目的是减少DNN架构以提高计算性能,并将获得的知识反馈给原始模型。
  3. 防御性蒸馏将蒸馏作为一种安全对策。 通过降低输入扰动的敏感性生成更平滑的分类器模型,这些更平滑的DNN分类器对对抗性样本更具鲁棒性,并且提升了泛化性。
  4. 对蒸馏参数空间的研究表明,正确的参数化可以大幅度降低DNN对输入扰动的敏感性。

理论上来讲,如果攻击者要想成功地生成对抗样例,前提是他要深入的了解整个DNN的架构, 而攻击者想要获取一个 DNN 模型的架构通常是比较困难的。但实际上,对于一个经验丰富的攻击者来讲,即使他不熟悉目标攻击模型 F 的架构,他一样也能攻击成功:

  1. 训练一个DNN模型 F’,无限地近似目标攻击模型 F
  2. 基于训练所得的模型 F’ 来生成对抗样例

在这篇论文中,作者假设攻击者可以接触到模型 F, 即白盒攻击。
模型F的架构如图所示,由输入层、隐含层、输出层、 softmax层构成。
一般地,我们给DNN输入层一个输入,输入维度为 M,通过隐含层的记忆单元,我们将模型从训练样本中学习到的知识编码到权重向量中,并通过输出层输出对应类别的概率分布向量。
然后采用 softmax 层将原始输出转换成对应的概率分布。softmax 函数的形式如下。

其中,输出层的维度为 N N N Z i ( X ) Z_{i}(X) Zi(X) 表示隐含层最后一层输出(原始输出)类别 i i i 对应的输出分量。 T T T(Temperature)是训练过程控制的一个重要参数,本文中称为蒸馏温度。

使用类别概率代替硬标签的好处很明显,因为概率会编码有关每个类的相关信息,而不是简单地提供正确类别。 并且可以从这个熵中推导出相关类别的信息。

对抗样例生成框架如图所示,分为两个步骤:

  1. 方向敏感性估计
  2. 扰动选择

方向敏感性估计:
攻击者会评估DNN模型 F 对 样本 X X X 每一个输入分量所做的改变的敏感性,得到敏感性信息。作者通过引入正向导数(即模型 F 的雅可比行列式, J ( T , i . j ) J(T,i.j) J(T,i.j) )来计算模型 F的敏感性,这种方法可以直接求出输出分量关于一个输入分量的梯度。其中 J ( T , i . j ) = ∂ F i ( X ) ∂ X j ∣ T J(T,i.j)=\frac{\partial F_{i}(X)}{\partial X_{j}}|_{T} J(T,i.j)=XjFi(X)T

扰动选择:
攻击者会根据第一步中计算所得的敏感性信息选择可以以最小的扰动达到攻击目的的维度添加扰动,来生成对抗样本。可接受的扰动是根据输入维度上的距离度量来定义的,可以是 L1 距离,也可以是 L2 距离,这个视具体的应用场景而定。
在实验中,作者选取的添加扰动的维度是有限的,大量的添加扰动固然可以模型识别失败,但同样也会干扰人的识别。因此必须选择最小的扰动既可以达到攻击目的又不影响人的识别。最小扰动必须满足以下条件:

防御方法的要求:

  1. 对网络架构的影响小
  2. 保证准确率
  3. 保证网络的速度
  4. 防御方法对于相对接近训练数据集的对抗样本也是有效的


防御蒸馏就是在不改变网络结构的前提下,能有效的应对攻击又可以尽可能小的影响模型的准确性。
这种防御方法思路很简单。首先根据原始训练样本 X X X 和标签 Y Y Y 训练一个初始的深度神经网络,得到概率分布 F ( X ) F(X) F(X) 。然后在利用样本 X X X 并且将第一步的输出结果 F ( X ) F(X) F(X)作为新的标签训练一个架构相同、蒸馏温度 T T T也相同的蒸馏网络,得到新的概率分布 F d ( X ) F^{d}(X) Fd(X) ,再利用整个网络来进行分类或预测,这样就可以有效的防御对抗样例的攻击。
从以下两个角度进行分析:

  1. 优化问题
    在训练初始网络的时候,我们的优化问题可以定义为:

    其中, Y i ( X ) Y_{i}(X) Yi(X)是硬标签,如果分类正确则为1否则为0. 我们的对数似然函数为:

    因此,优化问题是将对数似然平均到了每一个训练样本上。类似地,我们可以将训练蒸馏网络时的优化问题定义为:

    其中, F i ( X ) F_{i}(X) Fi(X) 是第二个网络的标签,是软标签(概率分布)。
    这种防御方式之所以有效是因为 DNN 在训练期间获得的知识不仅被编码在由DNN学习到的权重参数中,而且也被编码在由网络产生的概率向量中。 因此,蒸馏这种方式可以从这些概率向量中提取类别知识以在训练期间将其转移到不同的DNN体系结构中。

  2. 减小雅可比振幅
    这里所谓的雅可比行列式即前面提到的模型 [公式] 的输出对每一个输入分量的梯度。

    我们都知道,如果梯度值较大,那么攻击者只要添加一点小小的扰动就可以很容易的生成对抗样例达到攻击目的。

在模型的训练过程中,有一个非常重要的控制参数,即蒸馏温度 T T T 。当 T T T 较小时,产生的类别概率就更离散;当 T T T 较大时,会使得DNN为每个类别产生具有相对较大值的概率向量。当 T T T趋于无限大的时候,概率 F ( X ) F(X) F(X)将会收敛于1/N。因此,增大 T T T 可以减小模型的梯度,使得模型 F F F更加平滑,从而降低模型对扰动的敏感性。

需要注意的是,在训练阶段,我们会将 T T T 设置得比较大,目的是使模型更平滑从而降低模型对对抗扰动的敏感性。但在预测阶段,我们需要将 T T T设置为1,目的是为了照顾新样本。如果在预测阶段,我们将 T T T设置的很大,我们的模型可能就对新样本的中的变化不那么敏感,这样就可能导致误判。

实验结果:

  1. 随着 T T T的增大,对抗样本攻击的成功率迅速的下降。说明这种防御方法能有效地抵御对抗样本的攻击。
  2. 尽管这种防御方式在一定程度上会降低模型的准确率,但对模型准确率的负面影响最多不会超过1.5%。
  3. 随着 T T T的增加,模型的梯度在逐渐减小,模型愈趋平滑
  4. 随着 T T T的增加,DNN的鲁棒性越来越强。
全部评论

相关推荐

oppo 应用软开 22*15+0.5*12
拿到了ssp完美:真的坎坷,但是你至少拿到这么多offer了!
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务