论文 2019NDSS-NIC Detecting Adversarial Samples with Neural Network Invariant Checking.
背景
作者通过观察分析各种攻击下的DNN模型的内部结构,发现了攻击会使起源通道(provenance channel)和激活值分布通道(activation value distribution channel)发生变化,。
来源通道:意味着模型不稳定,一层中神经元激活值的细微变化可能导致下一层中激活神经元集合发生的实质性变化,最后导致分类错误。例如,按照图2和图4,真实样本的来源通道为12367,但受到攻击后如图5所示,来源通道发生变化,变为12378。
激活值分布通道:意味着尽管来源略有变化,但层的激活值可能与良性输入时不同。如图所示,激活值发生了变化。
因此,作者提出通过PI(起源不变量)和VI(激活值不变量)是否发生变化,来检测是否收到对抗样本的攻击。
检测原理
NIC神经网络不变量的检查,实质为检测模型表示的概率分布是否发生了变化。
VI是为各层训练一个模型,描述了激活值的分布,见图中的A步骤。
PI是为每一层训练一个模型,每个模型描述了从输入层到该层的关系,最后加上一个输出层。将所有派生模型的输出作为PI。
输入样本,通过观察PI与VI的变化与不定式之间关系,得到变化概率,若超出某一概率,则为对抗样本。
在我看来,这种防御方法是通过对DNN模型进行压缩,将模型更精准化,从而提高对样本的检测能力。
防御效果
L 0 L_0 L0主要利用了来源通道; L ∞ L_\infty L∞主要利用了激活值分布通道; L 2 L_2 L2则是利用了两种通道。
- 针对 L 0 L_0 L0攻击:扰动发生在有限数量像素上,每个变化很大,仅用PI即可。若使用VI,每一层激活的神经元的数量很大,但受扰动的神经元数量少,从概率上看变化不大。
- 针对 L ∞ L_\infty L∞攻击:单独使用VI比单独适用PI好,最好同时使用。像素变化小,前几层明显违背VI,检测容易。前几层提取的特征值仍非常原始,生成PI并不是高质量的。
- 针对 L 2 L_2 L2攻击:两者都限制,PI与VI都需要
另外,检测器由许多小模型组成,训练容易。另一方面,检测器本身即为分类器,也易收到攻击。