NIC: Detecting Adversarial Samples with Neural Network Invariant Checking abstract。

Architecture

NIC 近似模拟了神经元激活模式的分布,然后通过比较近似分布与包含触发器的恶意样本的激活,来检测异常输入。
overview

本文基于两个主要观察,发现攻击主要是通过攻击以下两个通道实施的:

  • Provenance Channel, 该特征表示模型不够稳定,当前层神经元轻微改变后会导致下一层神经元激活情况会发生改变
  • Value Channel, 该特征表示在前一层神经元发生轻微改变后,当前层的神经元激活值与正常样本的激活值存在巨大差距

基于以上观察的特点,以及对于攻击的分析提出基于不变值违规情况的攻击检测,our overarching idea is to check invariant violations during DNN computation.

Detail

由于模型的不确定性,模型的不变特征本质上是由模型表现的概率分布。因此:

  • 构建 DNN 的值不变特征就是为各个层训练一组模型,用以描述良性样本的层激活分布。
  • 构建 DNN 的溯源不变特征就是训练一组模型,每一个模型描述层间神经元激活的因果分布

DNN 攻击的神经元激活观察

在讨论中,我们认为一个神经元的激活函数,如 Relu,返回了一个非零值时认为该神经元为激活状态。并且 DNN 一层隐藏层可以看作一个函数,接受来自激活神经元的参数,在本层根据权重执行矩阵乘法,然后通过激活函数决定哪些神经元激活。

Provenance Channel

我们将前一层神经元激活到本层神经元激活的关系视为本层的 Provenance Channel。很多攻击中隐含了该特征。

证明图例

如上图所示,图2/3分别表示类别A/B的激活状态,红色为激活神经元,白色为未激活神经元,颜色越深表示值越大。

现有研究已经证明有些神经元只在特定的类别时激活,如图2/3中的1号和6号神经元只在类别为A时激活,4号和8号神经元只在类别为B时激活。

当然也存在着多重类别都会被激活的神经元,如图中的2号、3号和7号神经元。

图中横跨L1和L2两层的灰色区域表示激活溯源关系 Provenance Channel. 此处图中A类L1层中的1/2/3激活了L2中的6/7号神经元,B类L1层中的2/3/4激活了7/8号神经元。需要注意的是此处仅仅作为说明,单一类别也可能有多重激活方式。

图5展示了跟A类样本相似的攻击样本但是被误分类为了B类,L1中的1/2/3激活了L2中的7/8号神经元导致发生了误分类。该样本的溯源通道与典型的B类不同,根本原因是模型对神经元1中微小的扰动很敏感。

后门攻击就是攻击溯源通道的一个例子,该类攻击不改变整体性能,并且能将含有后门触发器的样本误分类。该类攻击修改特定层的权重值,使得后门触发器出现时激活神经元发生巨大改变。

Activation Value Distribution

有一些攻击不会改变模型的 Provenance Channel,也就是说其因果溯源关系与正常样本相同,但是会改变激活值的分布,具体如上图6中所示。

如 FGSM 等 LL_{\infty} 攻击会对每个像素进行微小的改变,不改变原有的激活神经元,但是改变了激活的值分布,导致误分类。

当然也存在攻击会同时使两个属性发生改变,如 L2L_2 攻击,该攻击既不限制扰动的数量也不限制扰动的大小。

用不变值检测来进行攻击检测

检测图例

由于攻击 Provenance Channel 的攻击与传统攻击控制流劫持很相似,攻击激活值分布的攻击与传统攻击状态异常 state corruption 很相似。

检测此类软件攻击通常是用不变值检测技术 invariant checking, 具体来说:

  • control flow hijacking 使用 control flow integrity(CFI) 来检测
  • state corruption 使用前置和后置状态来检测

因此,我们提出在 DNN 中的不变值偏离检测的方法来检测对抗样本,并且由于 DNN 的不可解释性,这些不变值不能够精确地确定。不像其他的基于学习的技术,我们的方法仅需要良性样本和计算过程。

直观地说,将两个连续的隐藏层激活值分布定义为层的 因果溯源不变特征 (PI),将该层的神经元激活作为该层的值分布不变特征(VI),具体如图4.

系统设计

overview

具体步骤如下:

  • A:针对每一个训练输入采集每一层的激活值信息,然后为每一层训练一个面向全部类别的分布模型,作为分布值不变特征
  • B:由于隐藏层神经元可能会比较多,所以训练了隐藏层的派生模型
  • C:通过所有派生模型运行每个良性训练输入,收集这些模型的最终输出(即各个类的输出概率值),对于每一对连续的层,训练其派生模型的分类结果的分布,训练后的分布作为这两层的 PI
  • D:获取测试样本的激活值 OV
  • E:计算最终的概率 D,表示 OVs/OPs 与 VI/PI 同分布的概率

系统设计详情介绍

DNN Invariant 提取

文章提取了两个不变值 VI/PI,其中:

  • VI(Value Invariant):值不变特征用每层的神经元激活值来获得。
  • PI(Provenance Invariant):转移不变特征,用两层神经元激活值来组成。

需要注意的是,上述的两个值都是表示成分布的概率值。