CW Attack论文阅读与总结

CW Attack论文阅读与总结_第1张图片

论文链接:https://arxiv.org/abs/1709.03842

在阅读《Towards Evaluating the Robustness of Neural Networks》这篇基于优化的CW攻击方法过程中,本文提取了原文中各小节的主要观点,并附有自己对原文公式的解释,以便于后续对CW攻击方法的回顾,也相当于是对自己的阅读论文笔记。后续将不断更新记录自己在对抗攻击方面的学习成果。

1 引言

现有的神经网络容易受到攻击。Szegedy等人首先注意到图像分类领域中存在对抗性的例子:可以对原始图像添加扰动使得分类器分类出错。防御蒸馏可以应用于任何前馈神经网络,只需要一个简单的重新训练步骤,便使得攻击成功概率从95%降低到0.5%。

本文创建了一组可用于构造神经网络鲁棒性上界的攻击,防御蒸馏方法无法抵抗我们的攻击。在普遍的模型上与其他攻击进行比较时,本文的方法生成了对抗样本在每种情况下总失真都较小。此攻击方法是评估防御性能的最佳基准。

可转移性在我们的攻击方法中也存在,并且被我们证明可以从非安全模型转移到防御提炼(安全)模型。

使用的数据集:MNIST,一个数字识别任务(0-9);CIFAR-10,一个小型图像识别任务,10个类;以及ImageNet,一项包含1000个类的大型图像识别任务。值得注意的是:在ImageNet分类任务的一个极端示例中,我们可以通过仅更改每个像素的最低阶位,导致Inception v3网络对图像进行错误分类。

贡献:(1)基于三种距离度量L0、 L2 和L\propto设计了三种攻击方法 ;

(2)防御蒸馏抵抗不住我们; 

(3)提出利用高置信度的攻击样本来进行迁移攻击,作为测试模型鲁棒性的手段,同时这种方法也成功攻破了防御性蒸馏;

(4)系统性地评估了不同损失函数对攻击效果的影响,发现损失函数的选择影响巨大。

2 背景

A 威胁模型

机器学习模型的安全特性变得十分重要,语音识别领域可以生成与人类不同的音频来恶意控制用户设备,这项工作的重点是传统高斯混合模型与隐马尔科夫模型;恶意软件分类领域的对抗样本可以使其保持恶意软件状态但被归类为良性软件从而攻击了软件分类器;

距离度量在每个领域是不同的,在本文所关注的图像空间中,我们发现各种Lp规范是人类感知距离的合理近似值。

白盒攻击:本文实验假设对手可访问神经网络的结构和所有参数。可转移性:前有证明如果有黑盒访问权限则可以训练替代模型而攻击目标模型。

B 神经网络与符号

在我们实验中,模型固定所以不依赖参数\theta;输出向量y满足softmax输出,被视为概率分布;公式符号定义如下:

y_{i} :输入x属于类别i 的概率;

标签分配:C\left ( x \right )=argmax_{i}F\left ( x \right )_{i}  ;

其中,F(\cdot ) 为包含softmax函数的完整网络,

          Z\left ( x \right )=z为是除softmax之外的所有层的输出(z为logits)。

有以下公式

\theta _{i}表示模型weights,\hat{\theta }_{i}表示biases,本文关注使用ReLU激活函数的网络,因为其广泛。

 C 对抗样本

非目标攻击比目标攻击更强大,我们仅考虑目标攻击。我们考虑了以下三种不同的方法选择目标类:

1Average 在不正确的标签中随机均匀地选择目标类;2Best  对所有不正确的类执行攻击,并报告最容易攻击的目标类; 3 Worst  并报告最难攻击的目标类。

D 距离度量

L_{0}: 测量距离坐标 i 的数量,x_{i}\neq x_{i}^{'} ,对应于图像中已改变的像素数

L_{2}: x_{i}x_{i}^{'} 的欧几里得距离,当许多像素发生许多微小变化时,L2距离可以保持很小。

L_{\oe }:测量任何坐标的最大变化。可想象有一个最大的预算,每个像素可以被修改到这个限制,而不受修改像素数量的限制。

我们相信,构建和评估一个良好的距离度量是我们留给未来工作的一个重要研究问题。全文在[0,1]范围内进行报告而不是[0,255]

E 防御蒸馏

首先以标准方式在训练数据上训练具有相同结构的网络。当我们在训练这个网络的同时计算softmax时,用一个更平滑的softmax版本替换它(通过将logits除以某个常数T)。在训练结束时,通过在每个训练实例上评估该网络并获取网络的输出标签,生成软训练标签。然后,扔掉第一个网络,只使用软训练标签。有了这些,就可以训练第二个网络,而不是在原来的训练标签上训练,而是使用软标签。这会训练第二个模型的行为与第一个模型类似,软标签传递第一个模型学习到的额外隐藏知识。

这里的关键观点是,通过训练匹配第一个网络,可避免对任何训练数据进行过度拟合。如果神经网络的存在是因为神经网络是高度非线性的,并且有“盲点”,而这些盲点存在于对立的例子中,那么防止这种类型的过度拟合可能会消除这些盲点。事实上,正如我们将在后面看到的,防御性的升华并不能消除对抗性的例子。可能出现这种情况的一个潜在原因是,存在对抗性示例的原因不是由于高度非线性神经网络中的盲点,而是由于神经网络的局部线性性质。这种所谓的线性假设似乎是正确的。

3 攻击算法(回顾之前的方法)

A L-BFGS

图像x^{'} 在L2距离下与 x 相似。我们针对c的多个值重复解决这个优化问题,使用对分搜索或任何其他一维优化方法自适应更新c。

CW Attack论文阅读与总结_第2张图片

 B FGSM

与L-BFGS相比,fgsm方法使用了无穷范数距离度量,设计重点放在“快速”而非“近似”。(为什么是-号?)

 迭代方式的FGSM方法,

CW Attack论文阅读与总结_第3张图片

 C JSMA(学完再补)

D Deepfool(学完再补)

4 实验

先描述如何训练模型评估我们的攻击:

5 方法(***)

核心思想:CW是一种基于优化的攻击方式,它同时兼顾高攻击准去率和低对抗扰动的两个方面,达到真正意义上对抗样本的效果,即在模型分类出错的情况下,人眼不可查觉(FGSM,PGD攻击生成的图片非常模糊,人眼可以察觉到)。首先对抗样本需要用优化的参数来表示,其次在优化的过程中,需要达到两个目标,目标1 是对抗样本和对应的干净样本应该差距越小越好;目标2是对抗样本应该使得模型分类错,且错的那一类的概率越高越好。

原始形式:其中x是固定的,目标是找到使D(x,x+δ)最小的δ。也就是说,我们想找到一些小的变化δ,我们可以对图像x进行一些小的改变,改变其分类,但结果仍然是有效的图像。这里D是一些距离度量;D包括 L0 L2 L\propto

A 目标函数:约束 C\left ( x+\delta \right )=t 是高度非线性的,很难求解,所以要关于分类的函数 f ,

使得当且仅当f\left ( x+\delta \right )\leq 0 时 C\left ( x+\delta \right )=t 成立,从而联立D 与 f 形成可解的优化函数形

式。f 有如下七种选择,loss代表交叉熵损失函数:

 (七个函数的意义)

添加常数是为了调整公式来适应我们的定义,不会影响结果只会缩放最小化函数,现在我们不使用问题一,而转化为求解问题二:

CW Attack论文阅读与总结_第4张图片

 这里的c是一个可选择的常数,图中两者是等价的,因为一定存在c,这样问题一的最优解跟问题二的最优解是相匹配的。个人理解:上图中转换后的式子最优解一定是f\left ( x+\delta \right )是最小化后的,既然 f 最优,也就是对抗样本对应的目标类别 t 的softmax值是最大的,那么也一定满足f\left ( x+\delta \right )\leq 0  ,反过来推导也是成立的。所以原文作者说两个形式所产生的最优解是等价的,转换之后也就能够同时优化两部分!

对于常数c的选择,原文说选择c的最佳方法是使用c 的最小值(?),作者的结论是在满足解f\left ( x^{'} \right )\leq 0成立的前提下,选用最小的c值,因为这样可以使得训练过程中,梯度下降算法同时优化函数里的两个项,而不是做“有偏”的优化。针对这一点,作者利用损失函数f_{6}\left ( x^{'} \right )进行了实验,将变量c在0.01到100的log空间内均匀地取值,统计攻击成功率及扰动的L_{2}距离,结果如下图所示,可以发现,当c> 1时,增大c几乎不会再提高攻击的成功率,但是扰动的L_{2} 距离会不断增大,这就说明在保证攻击成功的前提下,应尽可能选择c的最小值。

CW Attack论文阅读与总结_第5张图片

图1 超参数c取值对攻击成功率和扰动距离的影响 

B Box constraints(像素上下界问题)

【本小节的理解参照博文:https://blog.csdn.net/weixin_37627840/article/details/114270525

之所以存在上下界,是因为数字图像能表示的像素值范围是有限的,在经过归一化之后,像素值应该在[0,1]的范围内,为了确保添加扰动后的图像有效,我们要对 \delta 有一个限制,即:0\leq x_{i}+\delta _{i}\leq 1(box constraint),如果在攻击生成之后,直接把像素值裁剪到[0,1]的范围内,这样会破坏形成的攻击效果。那么如何在优化的过程中引入限制,又能保障攻击的效果呢?作者研究三种不同的方法来解决这个问题:

(1) PGD 投影梯度下降:在攻击的每一步迭代完成之后,将所有坐标剪辑到[0,1]。

(2)剪辑梯度下降:并不在每次迭代中都clip\left ( x_{i} \right ),而是将剪辑合并到目标函数中以最小化。也就是用f\left ( min\left ( max\left ( x+\delta ,0 \right ),1 \right ) \right ) 代替 f\left ( x+\delta \right ) ,取得最小和最大分量。

但是这样又会带来另一个问题,设想这样一个场景:假如在某个迭代步中,x+\delta 的范围超出了1的限制,但是在下一个迭代步中,该处的像素值回调到[0,1]之间并且攻击效果提升了,那么由于损失函数的限制,在第一个迭代步中,梯度为0,因此实际上没有任何攻击扰动的变化,那么后一个迭代步的攻击效果提升也就自然无法被找到了。

(3)换元法:通过引入新的变量 \omega 使得扰动的表达式变为\delta _{i}=\frac{1}{2}\left ( tanh\left ( \omega _{i} \right )+1 \right )-x_{i}
 这样对抗样本就变成x^{'}=\frac{1}{2}\left ( tanh\left ( \omega \right ) +1\right )

由于tanh函数本身的值域范围为[-1,1],这样就保证了x+\delta的范围在[0,1]之间,同时,因为tanh函数在全定义域内导数均不为0,也就克服了Clipped gradient descent方法的缺点。这样做还有另一个好处,由于像素值的限制靠的是损失函数本身的值域而非人工截断,那么就可以引入一些不支持人工截断的优化器,例如Adam。作者通过实验对比标准梯度下降法、动量梯度下降法和Adam,发现Adam在保证攻击效果的前提下实现了更快的收敛速度。

C 评估方法

为了选择最优的c,我们执行20次二进制搜索迭代。对于每个选定的c,使用Adam优化器运行10000次梯度下降迭代。

表3是对于七种目标函数(f)与三个框约束方法一一组合,测试攻击的成功率以及扰动的L_{2}距离。通过表3可得到的结论是:对于最佳的最小化函数(f_{6}),处理框约束的方法的选择不会对结果的质量产生显著影响。(..........理解...........)

D 离散化

经过归一化后的像素值是在[0,1]范围内的连续值,而数字图像的像素值是[0,255]范围内的离散整数值,当把攻击图像映射回[0,255]范围时,原文直接按 255*\left ( x_{i}+\delta _{i} \right )  此公式四舍五入到最接近的[0,255]范围内的整数。这样就会在一定程度上破坏攻击的质量。为了解决这个问题,作者采用了贪心搜索的策略来完成这个映射,最大限度地保障攻击的质量。

6 攻击方法

L_{2}攻击:

基于L_{2} 距离的攻击就是优化如下的目标函数:

CW Attack论文阅读与总结_第6张图片

 f函数是之前得到的最佳目标函数,稍微修改添加了 k ,使得我们通过 k 可以调整错误分类得到的置信度。若 x^{'} 被分类为目标类别,则max\left \{ Z\left ( x^{'} \right ) _{i}:i\neq t\right \}-Z\left ( x^{'} \right )_{t} 是负值,若设置 k=0,则f\left ( x^{'} \right )=0,意味着该函数不会被惩罚,否则如果被识别为非目标类别,则该函数一定会受到惩罚。所以原文说通过改变 k 值可以得到预期的置信度,k 值越大模型越容易分错,并且错的那一类概率越大。

多起点梯度下降:为了解决梯度下降容易陷入“次优解”的问题,作者在原始图像的r rr领域(r rr对应已发现的扰动最小的攻击样本)里采样多个点作为初始图像,在多个初始图像的基础上进行攻击扰动的生成。

L_{0} 攻击

由于L_{0} 距离是不可导的,因此不可以像基于L_{2} 的攻击一样直接使用梯度下降进行优化,从L_{0}距离的含义来看,是在修改的像素数量上做文章。基于此,作者设计了一套在每个迭代轮次里去掉一个像素点的方案。具体操作是,在每个迭代步中,

基于L_{2}距离来生成攻击样本

计算损失函数值,获得扰动对应的梯度g=\bigtriangledown f\left ( x+\delta \right ) 

随后基于梯度来找到对目标函数值影响最小的像素点i=argmin_{i}g_{i}*\delta _{i}

{\color{Orchid} g_{i}*\delta _{i}}表示图片第i个像素在{\color{Orchid}f\left ( \cdot \right ) }的减少量,

{\color{Orchid} x\rightarrow x+\delta }{\color{Orchid} g_{i}}表示每单位改变到第i个像素时 f 的减少量,乘以{\color{Orchid} \delta _{i}}表示第 i 个像素改变了多少。也就是

将该像素点排除在外,对其他像素进行梯度反传更新。

不断迭代,直到获得一个最小的像素子集合(终止条件是L_{2} 的攻击方式无法再找到有效的攻击样本)。

  在每次迭代时不再从原始图像开始,而是从上次迭代后的图像开始梯度下降(热启动),这大大减少了每次迭代中所需梯度下降的轮数,作者解释这是因为保持k像素不变的解决方案通常与保持k+1像素不变的解决方案非常相似。(修改k个像素与修改k+1个像素在生成对抗样本的方式上是非常接近的)

L_{\infty } 攻击

因为L_{\infty }距离不是完全可导的,作者尝试过优化以下的目标函数,但是发现效果非常不理想,原因可想而知,按照无穷范数 距离含义,这样的优化只会去惩罚扰动量最大的像素。那么就有可能出现这样一种情况:有两个像素点,分别是\delta _{i}=0.5 和\delta _{j}=0.5-\varepsilon,那么 
 正则化就会惩罚 \delta _{i} 点,而正则化项在\delta _{j}  点处的梯度\frac{\partial }{\partial \delta _{i}} \left \| \delta \right \|_{\infty }将会是0,该点即便扰动量很大也不会被惩罚。因此,在后续的迭代步中, 
 可能会慢慢大于    ,如此反复,两个点会在   的基线附近来回波动,不会有任何有效的更新。

为了解决这个问题,作者优化正则化项:

 正则化项将会惩罚所有超过τ 的像素点,在每个迭代轮次完成后,如果所有像素的像素值均小于τ ,那么就会对τ 进行衰减,衰减因子是0.9。否则,就停止攻击样本的搜索过程。同时,迭代过程中使用与L_{0}相同的“热启动”。对于c初始值,先设置c取极小的值,若失败则c*=2,继续搜索直至成功,若c超过阈值,则终止。实验发现跟L2算法一样快。


 

你可能感兴趣的:(深度学习,神经网络,机器学习)