防御的几种方法
当前对于对抗样本的防御,主要从3个方向进行研究:(1)数据预处理,如在DNN模型学习过程中调整训练过程或者修改输入的训练样本;(2)修改网络模型,如添加更多层或子网络、改变损失或激活函数等,从而增强DNN模型的鲁棒性;(3)附加网络,如使用外部模型作为附加网络,来检测分类器未见过的对抗样本。
样本去噪防御
该方法的核心思想是将可能的对抗样本图像去除扰动噪声转换为原始样本,使得转换后的样本不会影响DNN模型原本的预测。
蒸馏防御
该方法的核心思想是希望将训练好的复杂模型推广能力“知识”迁移到一个更简单的网络中,或通过简单的网络去学习复杂模型的“知识”。首先根据原始训练样本X和标签Y训练一个初始的DNN,得到新的概率分布F(X),然后利用样本X并且将前一步的输出结果F(X)作为新的标签训练一个架构相同、蒸馏温度T也相同的蒸馏网络,从而得到新的概率分布Fd(X),接着再利用整个网络进行分类或预测,从而有效防御对抗样本攻击。该方法无需平滑神经网络的输出来提升模型的鲁棒性,因而可以有效地防御白盒攻击,但对于黑盒攻击其防御性能较低。
对抗训练防御
其主要思想是在模型训练过程中,将对抗样本加入原始样本中,与原始样本一同训练,DNN将对抗样本当成新的原始样本,拟合数据分布,那么随着模型持续不断的训练,原始图像的准确率会逐步增加,模型对对抗样本的鲁棒性也会增加,不过对抗训练需要消耗大量时间,效率较低。
数据随机化防御
数据随机化处理包括随机调整大小、填充、随机激活剪枝等过程。该方法将随机调整大小层和随机填充层添加到训练完毕的分类器中,即使攻击者知晓随机层的存在,也难以确定防御模型采用何种具体的随机变换,故可抵御FGSM、BIM、DeepFool和C&W等白盒攻击。添加的两个随机层无需再次训练或调整,防御模型实施较为容易。
对抗样本检测防御
由于对抗样本的数据分布与原始样本不同,基于分布统计的检测方法能够通过度量样本最大平均差值和距离等数字特征,利用统计学的方法,检测输入样本是否符合原始样本的分布,从而判断输入样本是否为对抗样本;而对抗样本的不确定性通常要比原始样本更高,基于特征学习的方法则可以通过部署贝叶斯神经网络来估计输入样本的不确定,从而区分对抗样本和原始样本;此外对抗样本与原始样本的输入在DNN中得到的中间输出状态有较大的区别,基于中间输出的方法可以将DNN的中间部分的输出作为检测器的输入,从而检测出对抗样本。
模型验证防御
该方法的主要思想是通过确定目标神经网络的性质,然后推理、判断出输入符合或违反网络的性质,进而实现DNN模型的自我验证,防御对抗样本。