[论文阅读笔记]The Limitations of Deep Learning in Adversarial Settings

The Limitations of Deep Learning in Adversarial Settings

参考
知乎
CSDN

文章概述: 与之前的基于提高原始类别标记的损失函数或者降低目标类别标记的损失函数的方式不同,这篇文章提出直接增加神经网络对目标类别的预测值。换句话说,之前的对抗样本的扰动方向都是损失函数的梯度方向(无论是原始类别标记的损失函数还是目标类别标记的损失函数),该论文生成的对抗样本的扰动方向是目标类别标记的预测值的梯度方向,作者将这个梯度称为前向梯度(forward derivative)。本文主要介绍了一种新的对抗样本攻击方法,利用输入特征到输出值之间的对抗性显著性,达到只需修改少量的输入值即可误分类的目的。该攻击方法属于targeted攻击。文章指出Forward derivatives approaches are much more powerful than gradient descent techniques used in prior systems.
[Note]:本文通过修改4.02%的输入特征,就可以达到97%的攻击成功率。但是,我觉得对于手写数字的识别而言,实际上数字内容所占的总像素点只有一部分,而4.02%是针对整张图片(28x28)而言的,我觉得在量化上有点避重就轻

深度学习功能模型的分类:
攻击目标
深度学习应用系统中,模型的完整性(Intergrity)非常重要,与模型的预测结果准确性有关,具有非常的应用价值。因此,深度学习攻击模型主要攻击深度学习模型的完整性。具体来说,深度学习的攻击就是努力找到一个输入样本XX^*,从而导致分类器的分类结果出错。本文考虑以下四种影响模型完整性的攻击目标:

  1. Confidence Reduction: 降低分类输出结果的置信度值,因此会引入分类歧义;
  2. Misclassification: 将分类结果修改为除了原始标签外的其他任何标签值;
  3. Targeted Misclassification: 产生输入,使得该输入的分类结果是一个特定的目标类;
  4. Source/Target Misclassification: 针对一个原始样本和目标类,产生一个扰动量,使得当扰动量加到原始样本中,其分类结果是特定的目标类。

攻击能力:
攻击者通常伴随着不同的攻击能力。对抗样本攻击发生在模型的预测阶段(PS. 非训练阶段,攻击时模型已经训练完成),根据攻击者获得信息的不同,作者按照攻击能力大体递减的顺序,将其分为以下五类:

  1. Training Data & Network Architecture: 这是最强的攻击,可以同时模拟网络的结构和分析训练集数据。
  2. Network Architecture: 这种攻击了解深度学习网络结构及其参数,包括网络层数、激活函数、层间权重、偏差等。本文的攻击假设属于此类。
  3. Training Data: 攻击者可以收集替代数据集,这些替代数据集可以从用于训练DNN的原始数据的分布中采样。一种典型的攻击方法是攻击者使用太呆数据集来训练深度学习网络,用来近似原始的深度学习网络结构。
  4. Oracle: 攻击者可以把神经网络当作一个“Oracle”。攻击者可以通过提供输入样本得到对应的输出预测值。原则上,攻击者通过观察输入和输出间的区别,从而自适应地构造对抗样本。
  5. Samples: 攻击者可以有能力收集神经网络分类器的输入和对应的输出,但不同的是,攻击者不能通过修改输入来观察输出的差异。这是最差的攻击能力。

直观地来看,以上攻击目标和攻击能力可以归纳为下图

JSMA方法:
本文针对非循环前馈DNN网络,设计一种新的基于雅可比显著图(Jacobian Saliency Map) 的攻击样本生成方法。这种方法需要计算前向导数,以便构建一个对抗性显著图,从而确定输入特征子空间与攻击目标之间的关联性。通过这种方法扰动输入空间特征值,可以很快达到达到攻击者误分类的目的。着重关注那些导数大的参数,来进行攻击。

假设我们考虑一个简单的一层神经网络,以便我们更好地了解算法背后原理。具体地,作者展示了如何通过前向导数发小最小的扰动,来使得神经网络的输入产生大的变化。假设我们有一个简单的一层神经网络结构,通过在训练集合上训练,得到布尔AND函数,即输入为样本 X={x1,x2}X = \{x_1, x_2\},输出为F(X)=x1Λx2F(X)=x_1 \Lambda x_2,该网络结构如下

当输入样本为X[0,1]2X \in [0, 1]^2时,整个神经网络学习到的函数F如下图左图所示,可以直观地看出来,输入值在0(蓝色)和1(黄色)之间有非常明显的断层。

进一步我们计算前向导数,即计算函数F对输入值每个特征{x1,x2}\{x_1, x_2\}的前向导数,即为
JF(x)=[F(X)x1,F(X)x2] J_F(x) = [\frac{\partial F(X)}{\partial x_1}, \frac{\partial F(X)}{\partial x_2}]
前向导数的示意图如上图右图所示,直观上,前向导数越大的地方越容易构建对抗样本。 例如,考虑上右图中X=(1,0.37)X=(1, 0.37)X=(1,0.43)X^*=(1, 0.43)两点,两者的距离非常接近,但是两者在神经网络中输出完全不同,前者为0.11后者为0.95。如果四舍五入则前者为0后者为1。
由此可以看出:

  • 输入值极小的扰动可以致使神经网络输出的不同
  • 输入域不同region中找到对抗样本的难易程度不同
  • 前向导数可以减少对抗样本的搜索范围

实施细节:

构造算法的输入分别是: 正常样本XX,target目标标签YY^*, 非循环DNN FF,最大的扰动量distortion参数γ\gamma, 以及feature variation参数θ\theta。算法的返回值是对抗样本 XX^*。其中算法的主要步骤有一下三个:

  1. 计算前向导数JF(X)J_F(X^*)
  2. 基于前向导数构造显著图SS
  3. 利用θ\theta修改输入特征imaxi_{max}

Step 1: 计算前向导数JF(X)J_F(X^*)

其中fn+1,jf_{n+1, j}表示的是在第n+1n+1 layer, 第jj个神经元的输出结果;WWbb分别为对应的权重和偏置项;HkH_k表示第kk层的隐藏层输出结果。

[Note]: 如果k=n+1k = n+1, 则Hk=F(X)H_{k}=F(X) (我觉得没毛病)

上面这个只有Hnxi\frac{\partial H_n}{\partial x_i}是不知道的,而Hnxi\frac{\partial H_n}{\partial x_i}又可以通过递归的方式求解(运用链式法则), 因此对于深度学习模型FF和给定输入XX而言,前向导数矩阵为:
JF(X)=F(X)X=[Fj(X)xi]i1,...,M;j1,...,N J_F(X) = \frac{\partial F(X)}{\partial X} = [{\frac{F_j(X)}{\partial x_i}}]_{i \in 1,...,M; j \in 1,...,N}

Step 2: 基于前向导数构造显著图SS
利用之前显著图的研究,作者扩展成对抗性显著图,用来表示输入空间中哪些特征对输出结构影响最大。为了达到将对抗样本误分类成 tt的目的,Ft(X)F_t(X)的概率必须不断增大,且当j!=tj != tFj(X)F_j(X)应该不断减小,直到 t=argmaxjFj(X)t = \underset{j}{\mathrm{argmax}} F_j(X)。文章给出了2种显著图的计算方式:
方式1: 增长输入特征

方式2: 减小输入特征

显然前向梯度是由神经网络的目标类别输出值对于每一个像素的偏导数组成的。这启发了我们通过检查每一个像素值对于输出的扰动,从而选择最合适的像素来进行改变。接下来只对方式1进行说明,方式2同理。

[对第i个特征]

上述第一行想要达到的目的:使对tt类的预测分数起负作用(<0)或者对其他非tt类的预测总体呈正作用的特征图对应的映射设为0
上述第二行想要达到的目的:如不是上面那种情况,说明第i个特征对输出为tt类还是有帮助的,并设置为相应的值(考虑所有的偏导数,但结果仍是正的)

Step 3: 利用θ\theta修改输入特征imaxi_{max}
通过对抗性显著图确定需要修改的输入特征后,对应的特征(像素点)则为显著图SS中最大的像素值所对应的像素点。令
θ\theta表示输入特征的修改量。在MNIST实验中,作者设置参数为 θ=+1\theta = +1。即把该点像素值增加1,考虑到我们像素值归一化到[0,1]之间,所以直接就是将该点像素设为最大值1。
[NOTE]:但是在实际操作时,每次选择一个像素点太严格(很难满足otherwise的条件,(上面的方式1和方式2)),于是作者提出了采用一组像素点而不是一个像素点的方法。

上图中的算法2就是作者实际采用的方法,算法3是使用像素点对的启发式搜索算法。其中,作者在算法3想要找到的(p1,p2)(p_1, p_2)满足下式

其中左边第一项是正的,右边第二项是负的。但是也存在缺点

  • 像素点对的组合方式过多,计算存在负担

实际操作:作者采用的是最后1层的隐藏层输出结果来进行前向传播的计算而非最后的output probability layer的结果。原因是这两个层之间的逻辑回归计算引入的极端变化以确保概率之和为1,从而导致极端导数值。这降低了神经元如何被不同输入激活的信息质量,并导致前向导数在生成显著性映射时精度较低。此外最后一个隐层也由10个神经元组成,每个神经元对应一个数字类0到9,处理起来效果更好。

对于前面的2种显著图的生成方式,作者也展示了相应的结果:下面左图是方式1生成的结果,右图是方式2生成的结果。可以看出,方式2产生的结果比较不容易被人类察觉。但是方式2在扰动阈值的限制下成功攻击的概率只有64.7% 而方式1则能达到97%(Fig. 11)。这也是合理的,因为去除像素降低了信息熵,从而使得DNNs更难提取分类样本所需的信息。

此外,作者还提出了一系列评估生成对抗样本难易程度的标准,有兴趣或者以后会用到可以再来阅读


由于这些笔记是之前整理的,所以可能会参考其他博文的见解,如果引用了您的文章的内容请告知我,我将把引用出处加上~
如果觉得我有地方讲的不好的或者有错误的欢迎给我留言,谢谢大家阅读(
点个赞我可是会很开心的哦)~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章