我们下面都假设面对的是图像分类任务。对抗样本的检测 是指模型能够识别输入的图片是对抗样本,从而可以拒绝对该样本的服务,例如抛出错误或者不进行输出;而 对抗样本的防御 是指在检测到对抗样本的基础上,同时还能够修正标签,输出一个正确的标签给用户。

对抗样本检测

对抗样本和正常样本的区别:
正常样本的像素处于一种自然的分布状态,对抗样本在正常样本上加了一些扰动,而这些扰动是通过梯度等方式搜索出来的,不符合自然界的分布。
另外一个区别是模型输出的区别,因为对抗样本的目的就是让模型输出与原始的真实标签不同。如果经过了 softmax 处理,那么输出得到的便是概率分布;对抗样本的输出可能会造成这一分布的变化,与正常样本可能也有不同,因此可以用来检测。

对抗样本的检测分类:

  • 基于特征学习的对抗样本检测:特征压缩
  • 基于分布统计的对抗样本检测:softmax 分布
  • 基于中间输出的对抗样本检测:对抗检测网络

基于特征学习的对抗样本检测

其主要思想是,利用对抗样本与原始样本的不同特征来进行对抗样本检测。当发生攻击时,我们面对一个对抗样本,是无法得知原始图片的信息的。这时就需要利用机器学习的思想,可以借助一些先验知识,先准备一些训练集,训练出一个模型来学习对抗样本和原始样本的这个区别

同时,也可以不借助训练检测器来解决。我们可以把真实样本和对抗样本的细微区别视作噪声,面对输入的原始样本,首先尝试进行去噪处理,再将去噪后的样本作为模型输入,如果模型输出变化很大,则就说明原始样本可能是对抗样本。

在高维的数据下往往难以得到较好的特征学习结果;哪怕是一张很小的图片,例如 300×300300\times 300 大小,那它的量级也有 9 万个维度了。这时可以通过降维将高维的复杂数据转化为低维数据,降低特征学习的难度。

一般来说,输入样本的特征空间越大,维度越高,产生对抗样本的可能性越大(因为添加噪声的空间也就越大)。特征压缩的目标是从输入中删除不必要的特征,在不损害分类器准确度的情况下减小对抗样本产生的可能性。这里面有两个算法:色深压缩,以及特征平滑

基于分布统计的对抗样本检测

基于分布统计的对抗样本检测的核心思想是利用对抗样本与原始样本的不同数字特征(即样本通过网络后得到的概率分布的形状),通过检测输入是否符合正常样本的分布,从而判断输入是否具有对抗性

那我们该如何判断呢?回忆一下我们熟门熟路的 _ KL 散度 _:

KL 散度经常用于衡量两个概率分布的分散程度,分布差异越大,KL 散度越大。
因此,对抗样本的检测可以通过测量均匀分布和样本 softmax 分布之间的 KL 散度来完成, 然后根据预先设定的阈值,小于这个阈值则认为样本是对抗样本,反之认为是正常样本。

除了对 softmax 的分布直接进行对比之外, ICLR 2017 的工作中还提出了一种更有效的更有效的与输入重构相结合的方法。将原始图像输入到模型中后,可以在中间取出一个值来进行重构。如果是正常样本,则可以进行很好的重构。反而对抗样本的重构图片相较于正常图片的重构图片更加不规则且更加模糊,如上图所示。通过这一差异也可以进行对抗样本的检测。

基于中间输出的对抗样本检测

这一路线的主要思想是,正常的样本与对抗样本的输入在深度神经网络中得到的中间输出状态有较大的差距,我们可以将深度神经网络的 中间部分的输出作为检测器的输入,从而检测出对抗样本。


http://example.com/posts/143.html
作者
司马吴空
发布于
2026年3月30日
许可协议