对抗样本攻击-CW算法

引言

近年来深度学习在许多领域都越来越有效,但是,Szegedy 等研究人员发现,在图像分类领域存在对抗性样本。例如,只需要对图像进行稍微变换,就可以改变图像的分类结果,而这个"变换"通常足够微小以至于我们甚至无法观测到。

先前最主流的防御方法称为防御蒸馏,可以应用在任何前馈神经网络上。

一般来说,要想证明一个神经网络的鲁棒性,有两种方法。一种是尝试证明下界,也就是尝试各种攻击方法,然后查看模型的最差表现。另外一种是尝试寻找上界,也就是找到一种最为有利的攻击,用来评测模型效果。而在本篇论文中,作者尝试找到了一种上界,也就是一种强有力的攻击方法,希望可以用来作为评估模型鲁棒性的标准。值得注意的是,这种攻击打破了防御蒸馏的方法,因此推动了整个对抗样本领域的进步。

背景

Szegedy 等人讨论了两种攻击方法,设 为输入 的正确标签, 为输入 的预测标签。

  • 有针对性的对抗样本:设 ,可以找到一个类似 ,使得
  • 无针对性的对抗样本:只需要找到类似 ,使得

其中有针对性的对抗样本攻击性更强,本文也主要讨论这种攻击方法。但是如何选取目标 呢? 作者提出了 3 种方法。

  • 平均:也就是在所有的错误标签中随机选择。
  • 最好情况:对于所有的错误标签全部测试,选出最容易攻击的标签。
  • 最坏情况:对于所有的错误标签全部测试,选出最难攻击的标签。

前文提到,我们需要找到一个与 相似的 ,那么这种"相似"如何度量呢? 作者提出了 3 种度量标准,即 3 种 距离,写作 ,其中:

具体来说:

  • 距离:也就是改变的特征数目,例如,原来 , 然后 。其中第 2 个和第 4 个特征变化了,一共有 2 个特征进行了变化,因此 距离就是 2。
  • 距离:也就是欧几里得距离。
  • 距离:,即最大的变化量,例如原来 , 然后 ,则第二个特征变化量为 1,第 4 个特征变化量为 5,因此 距离为 5。

作者提出,没有一种距离度量能否完美符合人眼中的"相似",构建和评估一个好的距离度量是未来的重要工作之一。然而,大部分工作都选择了这 3 种度量的一个,本文也选择了这些度量。

下面简单讲解一下防御蒸馏。

第一步,正常的训练网络。在训练中对 Softmax 进行了平滑操作,即

然后得到了软标签 (硬标签就是直接输出预测标签,比如认为输入是一只猫;而软标签就是多种可能结果和概率,例如认为90%的可能性是猫,10%的可能性是狗)。

第二步,扔掉第一个训练网络,只保留软标签。使用软标签重新训练第二个模型,使第二个网络逼近第一个网络。

CW 攻击算法

目标函数

首先,我们对问题进行公式化表达:

最小化 使得 ,其中

代表某种距离度量,如

但是有一个问题,约束条件 高度非线性,上面的公式很难求解。因此,我们需要对问题进行转化。值得注意的是,最关键的问题是约束条件 ,那么它有没有办法替换成一种更为简单的表达呢?

我们可以设 当且仅当 。而函数 是有很多可能的:

其中

因此,最终我们将问题转化为

即:

那么,常数 c 该如何选取呢?

论文提到,从经验上讲,c 为满足 的最小值。然后论文通过实验验证了这一点。

盒约束

为了确保生成有效的图像,需要对 有一个约束。即对于任意 ,满足:

这种方法称为盒约束。那么如何满足盒约束呢?论文提到了 3 种方法:

略过

复现

TensorFlow-GPU 环境安装:

注意版本,且必须使用 conda 安装。

1
2
conda create -n cwalgorithm python=3.7
conda install tensorflow-gpu=2.6.0 pillow scipy numpy keras h5py

参考文献

Papernot, Nicolas, et al. "Distillation as a defense to adversarial perturbations against deep neural networks." 2016 IEEE symposium on security and privacy (SP). IEEE, 2016.


对抗样本攻击-CW算法
https://d4wnnn.github.io/2024/04/16/Academic/对抗样本攻击-CW算法/
作者
D4wn
发布于
2024年4月16日
许可协议