.. _chap_adv_attack: 模型安全:对抗攻击 ================== **对抗攻击**\ (adversarial attack)是一种针对机器学习模型的\ *测试阶段攻击*\ 。对抗攻击一般通过向干净测试样本\ :math:`x\in X\subset\mathbb{R}^{d}`\ 中添加细微的、人眼无法察觉(对图像数据来说)的噪声来构造\ **对抗样本**\ (adversarial example)\ :math:`x_{\text{adv}}`\ ,进而误导模型\ :math:`f`\ 在对抗样本上做出错误的预测。为了提高对抗攻击的\ *隐蔽性*\ ,即让添加的噪声不易被人眼察觉,其通常会通过\ *扰动约束*\ :math:`\| x_{\text{adv}}- x\|_p\leq \epsilon`\ 将对抗样本\ :math:`x_{\text{adv}}`\ 限制在干净样本\ :math:`x`\ 的周围,其中\ :math:`\|\cdot\|_p`\ 表示向量的\ :math:`L_p`\ 范数,\ :math:`\epsilon`\ 表示\ *扰动上限*\ (也称扰动半径)。 .. _fig_attack_pipeline: .. figure:: images/6.1_adv_attack_pipeline.png :width: 600px 模型训练(上半部分)与对抗攻击(下半部分)的一般流程 图 :numref:`fig_attack_pipeline` 展示了对抗攻击的一般流程以及其与模型训练的三个重要区别。首先,对抗攻击的目标是一个已经训练完成的模型,所以是一种\ *测试阶段攻击*\ 。这也就意味着对抗攻击扰动的样本是测试样本(示例图中的测试图片)。其次,对抗攻击\ *改变的是输入样本*\ 而模型训练改变的是模型参数,所以对抗攻击需要计算(白盒攻击)或者估计(黑盒攻击)模型损失相对输入的梯度信息。第三,对抗攻击通过\ *梯度上升最大化模型的错误*\ 而模型训练通过梯度下降最小化模型的错误。上述三个区别通常用来解释对抗样本与对抗攻击的初始设计思想。当然,对抗攻击的主要特色还是\ **“微小不可察觉的噪声即可让模型发生预测错误”**\ 。 根据攻击目标的不同,对抗攻击可以被分为\ *非目标攻击*\ 和\ *目标攻击*\ 。非目标攻击生成的对抗样本\ :math:`x_{\text{adv}}`\ 会被目标模型错误预测为除真实类别以外的任意类别,即\ :math:`f( x_{\text{adv}})\neq y`\ ,而目标攻击生成的对抗样本\ :math:`x_{\text{adv}}`\ 则会被模型\ :math:`f`\ 错误预测为攻击者\ *预先指定*\ 的目标类别\ :math:`y_{t}`\ ,即\ :math:`f( x_{\text{adv}})=y_{t}`\ 且\ :math:`y_{t}\neq y`\ 。根据攻击者能够获得的先验信息的不同,对抗攻击还可以被分为\ *白盒攻击*\ 和\ *黑盒攻击*\ 。白盒攻击假设攻击者可以获得目标模型的\ *全部信息*\ ,包括训练数据、超参数、激活函数、模型架构与参数等。而黑盒攻击则假设攻击者无法获得目标模型的相关信息,只能获得目标模型的\ *输出信息*\ (逻辑值或概率)。与白盒攻击相比,黑盒攻击更贴合实际应用场景,也更加具有挑战性。下面将介绍几种经典的白盒攻击方法和黑盒攻击方法。 .. _sec_white-box-attacks: 白盒攻击 -------- 2013年,Biggio等人 :cite:`biggio2013evasion` 首次发现了攻击者可以恶意操纵测试样本来躲避支持向量自动机和浅层神经网络的检测,这种攻击被称为躲避攻击(evasion attack)。同时,Szegedy等人 :cite:`szegedy2013intriguing` 针对深度神经网络提出了类似的攻击并将其定义为\ **对抗样本**\ (adversarial example)。虽然Biggio等人提出的攻击略早于Szegedy等人,但是首次揭示深度神经网络的对抗脆弱性是由Szegedy等人完成的,所以后续的研究者也将Szegedy等人的工作认为是提出对抗样本概念的首个工作。 Szegedy等人提出通过解决以下\ *边界约束优化问题*\ (bound constrained optimization problem)来构造对抗样本: .. math:: \begin{aligned}\text{minimize}\ {\| x_{\text{adv}}- x\|}_{2}\\ \text{s.t.} \; f( x_{\text{adv}}) = y_{t}, \; x_{\text{adv}} \in {[0, 1]}^{d},\end{aligned} 其中,\ :math:`y_{t}`\ 为攻击者预先制定的目标类别,\ :math:`x_{\text{adv}}`\ 是\ :math:`x`\ 的对抗样本。 由于上述优化问题难以精确求解,所以Szegedy等人转而使用边界约束的\ **L-BFGS**\ (Limited-memory Broyden–Fletcher–Goldfarb–Shanno)算法来近似求解: .. math:: \begin{aligned}\text{minimize}\ c{\| x_{\text{adv}}- x\|}_{2}+\mathcal{L}(f( x_{\text{adv}}), y_{t}) \\\text{s.t.} \; x_{\text{adv}} \in {[0, 1]}^{d}.\end{aligned} :label: equation_L_BFGS 具体来说,Szegedy等人通过线性搜索得到\ :math:`c > 0`\ 的最小值,在此情况下,优化问题 :eq:`equation_L_BFGS` 的极小值也会满足\ :math:`f( x_{\text{adv}}) = y_{t}`\ 。 通过L-BFGS攻击方法生成的对抗样本不但能攻击目标模型,还可以在不同模型和数据集之前迁移,即基于目标模型生成的对抗样本也可以攻击(虽然成功率会下降)使用不同超参数或者在不同子集上训练的模型。 L-BFGS攻击方法生成对抗样本的效率比较低,需要对每个干净样本求解式 :eq:`equation_L_BFGS` ,所以难以用于模型的对抗鲁棒性评估。为了构建更高效的攻击方法,Goodfellow等人 :cite:`goodfellow2014explaining` 提出\ **快速梯度符号方法**\ (fast gradient sign method, FGSM)。FGSM假设损失函数\ :math:`\mathcal{L}`\ 在样本\ :math:`x`\ 周围是线性的,即可以被\ :math:`x`\ 处的一阶泰勒展开高度近似。基于此,FGSM利用输入梯度(分类损失相对输入的梯度)的符号信息(即梯度方向)进行一步固定步长的梯度上升来完成攻击: .. math:: x_{\text{adv}} = x + \epsilon\cdot sign(\nabla_{ x}\mathcal{L}(f( x), y)), 其中,步长与扰动上限\ :math:`\epsilon`\ 相同。 与L-BFGS攻击方法相比,FGSM更加简单、计算效率更高,然而攻击成功率比较低。正是由于其简单性和高效性,FGSM是对抗攻击与防御领域最为广泛使用的攻击方法之一。 上述两种攻击都假设攻击者可以直接将对抗样本输入到深度神经网络模型中。然而,在\ *物理世界场景*\ 中,攻击者往往只能通过外接设备(如摄像机和传感器等)来传递对抗样本,即攻击者所呈现的对抗样本往往是受害者通过外接设备捕获到的,而不是直接传入到模型中的。为了将对抗样本更好地应用于物理世界,Kurakin等人 :cite:`Kurakin2017bim` 基于FGSM并提出\ **基本迭代攻击方法**\ (basic iterative method,BIM)。BIM以更小 的步长多次应用FGSM,并在每次迭代后对生成的对抗样本的像素值进行裁剪,以保证每个像素的变化都足够小。BIM攻击算法定义如下: .. math:: \begin{aligned}x_{\text{adv}}^{0} = x\\x_{\text{adv}}^{t+1} = \text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{\top} + \alpha\cdot sign(\nabla_{ x}\mathcal{L}(f( x_{\text{adv}}^{\top}), y))\},\end{aligned} :label: eq_bim_attack 其中,裁剪函数\ :math:`\text{Clip}_{ x, \epsilon}\{ x^\prime\}=\min\{255, x+ \epsilon,\max\{0, x− \epsilon, x^\prime\}\}`\ ;总迭代次数\ :math:`T`\ 设置为\ :math:`\min( \epsilon+4,1.25 \epsilon)`\ (对应像素值范围\ :math:`[0,255]`\ 来说的);步长为\ :math:`\alpha= \epsilon/T`\ (\ :math:`T`\ 步迭代后正好达到\ :math:`\epsilon`\ 大小)。 Madry等人 :cite:`madry2018towards` 认为BIM本质上是对负损失函数的投影梯度下降,并提出了一种更加强大的迭代FGSM攻击方法—**投影梯度下降**\ (projected gradient descent,PGD): .. math:: \begin{aligned}x_{\text{adv}}^{0} = x + \zeta\\x_{\text{adv}}^{t+1} = \text{Proj}_{ x, \epsilon}\{ x_{\text{adv}}^{t} + \alpha\cdot sign(\nabla_{ x}\mathcal{L}(f( x_{\text{adv}}^{t}), y))\},\end{aligned} :label: eq_pgd_attack 其中,\ :math:`\zeta`\ 是从均匀分布\ :math:`\mathcal{U}(- \epsilon, \epsilon)^{d}`\ 中采样得到的随机噪声,\ :math:`\text{Proj}_{ x, \epsilon}\{\cdot\}`\ 是投影操作。与BIM不同的地方在于,PGD从干净样本的周围随机采样一个起始点来生成对抗样本,而且还没有步长\ :math:`\alpha= \epsilon/T`\ 的限制。PGD攻击被广泛的认为是\ **最强的一阶攻击方法**\ ,因为从非凸约束优化问题的角度来讲,PGD算法是其最好的一阶求解器。 FGSM和BIM通过最大化损失函数实现了非目标攻击,Kurakin等人 :cite:`Kurakin2017bim` 还通过最大化目标类别\ :math:`y_{t}`\ 的概率,将FGSM和BIM分别扩展到了目标攻击—*FGSM目标攻击*\ 和\ *迭代最不可能类别攻击*\ (iterative least likely class,ILLC)方法。FGSM目标攻击方法如下: .. math:: x_{\text{adv}} = x - \epsilon\cdot sign(\nabla_{ x}\mathcal{L}(f( x), y_{t})). 当使用干净样本的最不可能类别\ :math:`y_{\text{LL}}=\mathop{\mathrm{arg\,min}}_{y}\{p(y| x)\}`\ 作为目标类别时,FGSM目标攻击方法可被称为\ *单步最不可能类别攻击方法*\ 。多次迭代单步最不可能类别方法就可以得到\ *迭代最不可能类别攻击*\ : .. math:: \begin{aligned}x_{\text{adv}}^{0} = x\\x_{\text{adv}}^{t+1} = \text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{t} - \alpha\cdot sign(\nabla_{ x}\mathcal{L}(f( x_{\text{adv}}^{t}), y_{\text{LL}}))\}.\end{aligned} 虽然BIM比FGSM攻击性更强,但其在每次迭代时都沿梯度方向“贪婪地”移动对抗样本,容易使对抗样本陷入糟糕的局部最优解,并过拟合于当前模型。这导致其生成的对抗样本的跨模型迁移性较差 :cite:`dong2018mi-fgsm` 。 为了获得稳定的扰动方向并帮助对抗样本在迭代中摆脱局部最优解,Dong等人 :cite:`dong2018mi-fgsm` 将动量结合到BIM算法中,提出了\ **动量迭代快速梯度符号方法**\ (momentum iterative FGSM,MI-FGSM)。MI-FGSM的定义如下: .. math:: \begin{aligned}g_{0} = 0,\ x_{\text{adv}}^{0} = x\\g_{t+1} = \mu\cdot g_{t} + \frac{\nabla_{ x}\mathcal{L}(f( x_{\text{adv}}^{t}), y))}{\|\nabla_{ x}\mathcal{L}(f( x_{\text{adv}}^{t}), y))\|_{1}}\\x_{\text{adv}}^{t+1} = \text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{t} + \alpha\cdot sign( g_{t+1})\},\end{aligned} :label: eq_mifgsm 其中,\ :math:`g_{t}`\ 是之前\ :math:`t`\ 次迭代的\ *累积梯度*\ ,\ :math:`\mu`\ 是动量项的\ *衰减因子*\ 。由于每次迭代中梯度的大小是不同的,所以每次迭代的梯度被其自身的\ :math:`L_1`\ 范数归一化。当\ :math:`\mu`\ 等于0时,MI-FGSM攻击算法就退化成了BIM攻击算法。 大多数攻击都是对整个样本(比如整张图片)进行扰动,同时通过限制对抗噪声的\ :math:`L_{2}`\ 或\ :math:`L_{\infty}`\ 范数来保证隐蔽性。为了进行更稀疏的对抗攻击(如只改变几个像素),Papernot等人 :cite:`papernot2016jsma` 提出了一种限制对抗噪声的\ :math:`L_{0}`\ 范数的攻击,并称为\ **基于雅可比显著性图的攻击**\ (Jacobian-based saliency map attack, JSMA)。JSMA是一种贪心算法,每次迭代时挑选一个像素进行修改。具体来说,JSMA首先计算模型的对抗梯度(雅可比矩阵): .. math:: J( x)=\frac{\partial p( x)}{\partial x}=[\frac{\partial p(j| x)}{\partial x_{i}}]_{i\times j}, 其中,\ :math:`p(j| x)`\ 表示模型将\ :math:`x`\ 预测为类别\ :math:`j`\ 的概率。接着,JSMA使用对抗梯度计算一个显著性图,该图包含每个像素对分类结果的影响大小:越大的值表明修改它将显著增加被分类为目标类别的概率。在显著性图中,每个像素\ :math:`i`\ 的显著值定义为: .. math:: S( x,y_{t})[i]=\begin{cases}0 \quad \text{if}\ J_{iy_{t}}( x) < 0\ \text{or}\ \sum\limits_{j\neq y_{t}}J_{ij}( x) > 0\\J_{iy_{t}}( x)|\sum\limits_{j\neq y_{t}}J_{ij}( x)| \quad \text{otherwise},\end{cases} 其中,\ :math:`J_{ij}( x)`\ 表示\ :math:`\frac{\partial p(j| x)}{\partial x_{i}}`\ 。给定显著性图,JSMA每次选择一个最重要的像素并修改它以增加目标类别的概率。重复这一过程,直到超过预先设定的像素修改个数或者攻击成功。然而,由于计算对抗梯度成本较大,JSMA运行速度极慢。 另外一个经典的攻击方法是\ **Deepfool** :cite:`moosavi2016deepfool` ,其使用从干净样本到决策边界的最近距离作为对抗噪声。Deepfool假设神经网络是完全线性的,存在超平面来区分各个类别。基于这一假设,Moosavi-Dezfooli等人推导出了这个简化问题的最优解。但神经网络并不是线性的,所以他们在实际中采用迭代的方式逐步求解。具体来说,Moosavi-Dezfooli等人发现改变仿射分类器决策的最小噪声是从干净样本到仿射超平面\ :math:`\mathcal{F}=\{ x: w^{\top} x+b=0\}`\ 的距离。对于处在\ :math:`w^{\top} x+b>0`\ 区域的干净样本来说,最小对抗噪声的形式为\ :math:`-\frac{ w^{\top} x+b}{{\| w\|}^{2}} w`\ 。对于一般的可微二元分类器\ :math:`f`\ ,他们则采取迭代的方式,在每次迭代中假设\ :math:`f`\ 在\ :math:`x_i`\ 周围是线性的,线性分类器的最小对抗噪声为: .. math:: \begin{aligned}\mathop{\mathrm{arg\,min}}_{ \eta_{i}}{\| \eta_{i}\|}_{2} \\ \text{s.t.} \; f( x_{i})+\nabla( x_{i})^{\top} \eta_{i}=0,\end{aligned} 其中,第\ :math:`i`\ 次迭代计算得到的噪声\ :math:`\eta_{i}`\ 会被用来更新第\ :math:`i+1`\ 次迭代的\ :math:`x_{i+1}= x_{i}+ \eta_{i}`\ 。当\ :math:`x_{i}`\ 改变了分类器的决策时,迭代终止。最终的对抗噪声由每次迭代计算得到的噪声累积来近似。通过找到距离最近的超平面,Deepfool也可以扩展到攻击一般的多元分类器。与上面介绍的攻击方法相比,Deepfool可以生成与干净样本最接近的对抗样本。 2017年,Carlini和Wagner :cite:`carlini2017cw` 提出了基于优化的\ **CW攻击**\ (Carlini-Wagner)攻击算法,将噪声大小直接放到优化目标里进行优化(最小化)。CW攻击方法通过求解以下优化问题来生成对抗样本: .. math:: \begin{aligned}\text{minimize}\ {\| x_{\text{adv}}- x\|}_{p}+c\cdot g( x_{\text{adv}})\\ \text{s.t.} \;x_{\text{adv}} \in {[0,1]}^d,\end{aligned} 其中,对抗目标函数\ :math:`g`\ 满足\ :math:`g( x_{\text{adv}})\leq 0`\ 当且仅当\ :math:`f( x_{\text{adv}})= y_t`\ 。Carlini和Wagner列举了七个候选的对抗目标函数,并以实验评估的方式选择出了最佳的目标函数: .. math:: g( x^\prime)=\max(\max\left\{Z{( x^\prime)}_i:i\neq y_{t}\right\}-Z{( x^\prime)}_{y_{t}},-\kappa) :label: equation_CW 其中,\ :math:`Z(\cdot)`\ 是目标模型的逻辑输出(logits),\ :math:`Z_{\text{max}}=\max\left\{Z{( x^\prime)}_i:i\neq y_{t}\right\}`\ 表示错误类别中逻辑值最大的那个,参数\ :math:`\kappa`\ 为置信度超参,定义了目标类别\ :math:`y_t`\ 与其他类别间的最小逻辑值差异。与L-BFGS攻击方法不同,CW攻击引入了一个新的变量\ :math:`\omega\in\mathbb{R}^{d}`\ 来避免边界约束,其中\ :math:`\omega`\ 满足\ :math:`x_{\text{adv}}=\frac12(\tanh( \omega)+1)`\ 。通过变量替换,将优化\ :math:`x_{\text{adv}}`\ 的边界约束最小化问题变成了优化\ :math:`\omega`\ 的无约束最小化问题。 CW攻击有三个版本\ :math:`L_{0}`\ 范数CW攻击(\ *CW*\ :math:`_\mathit{0}`\ )、\ :math:`L_{2}`\ 范数CW攻击(\ *CW*\ :math:`_\mathit{2}`\ )和\ :math:`L_{\infty}`\ 范数CW攻击(\ *CW*\ :math:`_\mathit{\infty}`\ )。CW\ :math:`_2`\ 攻击求解以下优化问题: .. math:: \begin{aligned}\text{minimize}\ \|\frac12(\tanh( \omega)+1)- x\|_2+c\cdot g(\frac12(\tanh( \omega)+1)).\end{aligned} 由于\ :math:`L_{0}`\ 范数是不可微的,因此CW\ :math:`_0`\ 攻击采取迭代的方式,在每次迭代中确定一些对模型输出影响不大的像素,然后固定这些像素值不变,直到修改剩下的像素也无法再生成对抗样本。而像素的重要性是由CW\ :math:`_2`\ 攻击决定的。由于\ :math:`L_{\infty}`\ 范数不是完全可微的,因此CW\ :math:`_{\infty}`\ 攻击也采用了迭代的攻击方式,将目标函数中的\ :math:`L_{\infty}`\ 项替换为新的惩罚项: .. math:: \text{minimize}\ \sum\limits_i[( \eta_i-\tau)^+]+c\cdot g( x+ \eta). 每次迭代后,如果对于所有的\ :math:`i`\ 都有\ :math:`\eta_i<\tau`\ ,则将\ :math:`\tau`\ 减少到原来的0.9倍,否则迭代过程终止。CW攻击可以被认为是最强的\ **单体白盒攻击**\ 方法(PGD只是一阶最强)。CW攻击算法攻破了许多曾被认为是有效的防御策略,然而其生成对抗样本的计算开销很大。值得注意的是,随着新攻击方法的出现,目前普遍认为AutoAttack :cite:`croce2020autoattack` 是最强的\ **集成白盒攻击**\ 方法,在模型鲁棒性评估方面能给出更可靠的结果。 .. _AdvGAN: .. figure:: images/6.2_AdvGAN.png :width: 600px AdvGAN方法示意图 :cite:`xiao2018advgan` 上面介绍的白盒攻击方法在生成每个对抗样本时都需要对目标模型进行访问,重复一遍扰动优化过程。为了避免每次都要优化,我们可以利用生成对抗网络提前学习对抗噪声的分布,之后给定任意一个干净样本都可以直接输出其所需要的对抗噪声。基于此思想,Xiao等人 :cite:`xiao2018advgan` 提出了\ *AdvGAN攻击*\ 方法,训练一个生成器来学习干净样本的分布,并生成高度逼近干净分布的对抗噪声。如图 :ref:`AdvGAN` 所示,AdvGAN方法中的生成器\ :math:`\mathcal{G}`\ 将干净样本\ :math:`x`\ 作为输入,并生成一个噪声\ :math:`\mathcal{G}( x)`\ 。添加了噪声的样本\ :math:`x+\mathcal{G}( x)`\ 随后被输入到判别器\ :math:`\mathcal{D}`\ ,判别器\ :math:`\mathcal{D}`\ 会对其与原始干净样本\ :math:`x`\ 进行区分。其使用的GAN损失\ :math:`\mathcal{L}_{\text{GAN}}`\ 定义如下: .. math:: \mathcal{L}_{\text{GAN}} = \mathbb{E}_{ x \sim D}\log(\mathcal{D}( x)) + \mathbb{E}_{ x \sim D}\log(1 - \mathcal{D}( x + \mathcal{G}( x))) 为了实现针对目标模型\ :math:`f`\ 的白盒攻击,添加噪声的样本\ :math:`x+\mathcal{G}( x)`\ 也会被输入到目标模型\ :math:`f`\ ,并输出损失\ :math:`\mathcal{L}_{\text{adv}}`\ 。在有目标攻击中,损失\ :math:`\mathcal{L}_{\text{adv}}`\ 会鼓励添加噪声的样本\ :math:`x+\mathcal{G}( x)`\ 被目标模型\ :math:`f`\ 误分类为目标类别\ :math:`y_{t}`\ : .. math:: \mathcal{L}_{\text{adv}} = \mathbb{E}_{ x \sim D}\mathcal{L}(f( x + \mathcal{G}( x)), y_{t}) 为了限制噪声的大小,Xiao等人增加了一个基于\ :math:`L_{2}`\ 范数的铰链损失(hinge loss): .. math:: \mathcal{L}_{\text{hinge}} = \mathbb{E}_{ x \sim D}\max(0, \|\mathcal{G}( x)\|_2 - \epsilon), 这也可以稳定GAN的训练。总体目标函数定义如下: .. math:: \mathcal{L} = \mathcal{L}_{\text{adv}} + \alpha\mathcal{L}_{\text{GAN}} + \beta\mathcal{L}_{\text{hinge}}, 其中,\ :math:`\alpha`\ 和\ :math:`\beta`\ 控制了每个损失项的重要程度。Xiao等人通过求解最小最大(min-max)问题\ :math:`\mathop{\mathrm{arg\,min}}_\mathcal{G}\max_\mathcal{D}\mathcal{L}`\ 来训练\ :math:`\mathcal{G}`\ 和\ :math:`\mathcal{D}`\ 。一旦\ :math:`\mathcal{G}`\ 在训练数据和目标模型上被训练,它可以对任何给定的输入样本产生扰动却不需要访问目标模型。除此之外,AdvGAN方法还可以被用于黑盒攻击,通过查询目标模型的输出来动态地训练蒸馏模型。在攻击对抗训练、集成对抗训练或PGD对抗训练的模型时,AdvGAN取得了比FGSM和CW方法更高的成功率。 虽然目前已经提出了大量的攻击方法来评估模型的对抗鲁棒性,但由于超参数调整不当、梯度遮掩(gradient masking)等陷阱,导致模型的鲁棒性会被高估。针对这个问题,Croce等人 :cite:`croce2020autoattack` 提出了一种集成攻击方法—**自动攻击**\ (AutoAttack),“自动”是指算法可以自动调参,有效避免了手动调参过程。AutoAttack集成了四种攻击算法,其中包括两个PGD的改进方法,即APGD-CE和APGD-DLR,这两个攻击方法是新提出的\ **自动PGD**\ (Auto-PGD)攻击方法的两个变体(损失函数不同)。具体来说,Auto-PGD在PGD的基础上添加了动量项: .. math:: \begin{aligned}z^{t+1} = \text{Proj}_{ x, \epsilon}\{ x_{\text{adv}}^{t} + \eta^{\top}\cdot sign(\nabla_{ x}\mathcal{L}(f( x_{\text{adv}}^{\top}), y))\}\\x_{\text{adv}}^{t+1} = \text{Proj}_{ x, \epsilon}\{ x_{\text{adv}}^{t}+\alpha\cdot( z^{t+1}- x_{\text{adv}}^{t})+(1-\alpha)\cdot( x_{\text{adv}}^{t}- x_{\text{adv}}^{t-1})\},\end{aligned} :label: eq_auto_pgd 其中,\ :math:`\eta^{t}`\ 是第\ :math:`t`\ 次迭代时的步长,\ :math:`\alpha\in[0,1]`\ 调节了上一次更新对当前更新的影响。Auto-PGD不需要选择步长并可以使用不同的损失函数,除迭代次数之外的其他参数都可以自动调整,可以克服PGD攻击由于固定步长和损失函数(交叉熵)而导致的评估不准确问题。此外,Croce等人将两个PGD攻击的变体与两个现有的互补攻击—**白盒快速自适应边界攻击**\ (fast adaptive boundary,FAB) :cite:`croce2020fab` 和\ **黑盒方形攻击**\ (square attack) :cite:`andriushchenko2020square` 结合起来得到AutoAttack集成攻击。FAB攻击旨在寻找改变给定输入类别所需的最小噪声,且对梯度遮掩鲁棒。方形攻击是一种基于分数的黑盒攻击,它使用随机搜索(而不是梯度近似)进行攻击,因此不受梯度遮掩的影响。方形攻击在查询效率和成功率方面优于其他黑盒攻击,有时甚至与白盒攻击效果相当。这几种攻击方法的参数都不多,在不同的模型和数据集中具有很好的通用性,因此AutoAttack不需要特意调整任何参数。AutoAttack取得了比之前报告的更低的对抗鲁棒性评估结果,自2020年提出以来,已经被很多研究证明是迄今为止最强的攻击之一 :cite:`croce2020autoattack` 。 .. _sec_black_box_adv: 黑盒攻击 -------- 黑盒攻击假设攻击者无法获得目标模型的参数(以及超参)信息,因此无法计算对抗梯度,只能通过\ *近似梯度*\ 来生成对抗样本。近似梯度可以通过零阶优化方法估计,也通过替代模型来近似。根据近似梯度的不同,黑盒攻击可以分为\ **查询攻击**\ (query-based attacks)和\ **迁移攻击**\ (transfer attacks)。 查询攻击 ~~~~~~~~ 查询攻击通过查询目标模型获得模型输出,然后使用零阶优化方法进行梯度估计来生成对抗噪声。虽然估计的梯度会存在一定误差,但是准确地计算梯度通常不是成功的攻击所必需的。例如,FGSM攻击算法只需要梯度的符号就可以生成对抗样本。因此,即使估计的梯度不是非常的准确,但也足够使查询攻击取得很高的成功率。根据模型输出返回类型的不同,查询攻击又可以分为\ **基于分数的攻击**\ 和\ **基于决策的攻击**\ 。基于分数的攻击需要模型输出完整的预测概率向量,而基于决策的攻击只需要模型输出类别标签。 **基于分数的攻击**\ 。Chen等人 :cite:`chen2017zoo` 在2017年首先提出了基于\ *零阶优化*\ (zeroth order optimization,ZOO)的攻击,使用\ *有限差分*\ (finite difference)方法来近似目标模型的梯度。在CW攻击的基础上,Chen等人提出了一个新的基于模型预测类别概率的目标函数: .. math:: g( x^\prime) = \max\{\max\limits_{i\neq y_{t}}\log[p(i| x)]-\log[p(y_{t}| x)], -\kappa\}. 然后可以使用\ *对称差商*\ 来估计梯度: .. math:: \hat{ g}_{i} := \frac{\partial g( x)}{\partial x_{i}} \approx \frac{g( x+h e_{i})-g( x-h e_{i})}{2h} 其中,\ :math:`h`\ 是一个较小的常数,\ :math:`e_{i}`\ 是第\ :math:`i`\ 个分量为1的标准基向量。再进行一次梯度估计,还可以得到二阶偏导(即Hessian矩阵)的估计值: .. math:: \hat{ h}_{i} := \frac{\partial^{2} g( x)}{\partial x_{ii}^{2}} \approx \frac{g( x+h e_{i})-2g( x)+g( x-h e_{i})}{h^{2}}. 上述方法的主要瓶颈是效率问题。如果估计所有坐标(\ :math:`d`\ 维)的梯度,总共需要计算\ :math:`2d`\ 次目标函数的值,而且有时可能需要经过数百次的迭代梯度下降才能让目标函数收敛。所以当干净样本维度很高时,这种方法可能会非常缓慢。为了解决这一问题,ZOO攻击算法使用了随机坐标下降方法,每次迭代时随机选择一个或一小批坐标进行梯度估计和更新,而且优先更新重要的像素可以进一步提高效率。为了加快计算时间和减少对目标模型的查询次数,ZOO还使用了攻击空间降维和分层攻击技术,将干净样本变换到更低的维度来生成对抗样本。虽然ZOO获得了与白盒CW攻击相当的性能,但由于坐标梯度估计方法不可避免地会对目标模型进行过多的查询,导致较低的查询效率。 为了进一步降低ZOO的查询复杂度,Tu等人 :cite:`tu2019autozoom` 提出了\ *基于自动编码器的零阶优化方法*\ (autoencoder-based zeroth order optimization method,AutoZOOM)。AutoZOOM构建了两个全新的模块:一个自适应的随机梯度估计策略,可以平衡查询次数和噪声大小,以及一个在其他未标记数据上离线训练好的自动编码器,或者是一个简单的双线性调整大小操作来加速攻击。为了提高查询效率,AutoZOOM放弃了坐标梯度估计,而是提出了\ *缩放随机全梯度估计*\ : .. math:: g = b\cdot\frac{g( x+\beta u)-g( x)}{\beta}\cdot u, :label: equation_AutoZOOM 其中,\ :math:`\beta > 0`\ 是平滑参数,\ :math:`u`\ 是从单位半径的欧几里得球体中随机均匀采样的单位长度向量,\ :math:`b`\ 是平衡梯度估计误差的偏差和方差的可调缩放参数。为了更有效地控制梯度估计的误差,AutoZOOM使用了平均随机梯度估计,计算在\ :math:`q`\ 个随机方向\ :math:`\{{ u_{j}}\}^{q}_{j=1}`\ 上的梯度估计的均值: .. math:: \overline{ g} = \frac{1}{q}\sum_{j=1}^{q} g_{j}. Tu等人还证明了平均随机估计梯度和真实梯度之间的\ :math:`L_{2}`\ 距离存在一个上界,当\ :math:`b\approx q`\ 时,上界最小。AutoZOOM通过自适应地调整\ :math:`q`\ 值来平衡查询次数和噪声大小。具体来说,首先将\ :math:`q`\ 设为1(尽可能少的模型查询),粗略地估计梯度以快速地完成初始攻击,然后设置\ :math:`q>1`\ ,更精确地估计梯度来微调图像质量,减小噪声。为了进一步提高查询效率和加速收敛,AutoZOOM从更小的维度\ :math:`d^\prime0}\lambda \quad \text{s.t.} \;f( x+\lambda \frac{ \theta}{\| \theta\|})\neq y. 相应的,目标Opt-attack攻击的对抗目标函数为: .. math:: g( \theta) = \min\limits_{\lambda>0}\lambda \quad \text{s.t.} \;f( x+\lambda \frac{ \theta}{\| \theta\|})=y_{t}, 其中,\ :math:`\theta`\ 表示搜索方向,\ :math:`g( \theta)`\ 是干净样本\ :math:`x`\ 沿方向\ :math:`\theta`\ 到最近对抗样本的距离。对于归一化后的\ :math:`\theta`\ ,Opt-attack使用粗粒度搜索和二分搜索来计算目标函数的值\ :math:`g( \theta)`\ 。Opt-attack方法并没有搜索对抗样本,而是搜索方向\ :math:`\theta`\ 来最小化对抗噪声\ :math:`g( \theta)`\ ,那么就有了下面的优化问题: .. math:: \min\limits_{ \theta}g( \theta). :label: equation_opt_attack 为了求解上述优化问题,Cheng等人使用\ *随机无梯度*\ (randomized gradient-free,RGF)方法来估计梯度: .. math:: \hat{ g}=\frac{g( \theta+\beta u)-g( \theta)}{\beta}\cdot u. 然后以步长\ :math:`\alpha`\ 通过\ :math:`\theta\leftarrow \theta-\alpha\hat{ g}`\ 来更新搜索方向。最后通过优化问题 :eq:`equation_opt_attack` 的最优解\ :math:`\theta^{*}`\ 得到对抗样本\ :math:`x_{\text{adv}}= x+g( \theta^{*})\frac{ \theta^{*}}{\| \theta^{*}\|}`\ 。当目标函数\ :math:`g( \theta)`\ 是Lipschitz平滑时,Opt-attack方法在查询次数上有收敛的保证。此外,Opt-attack方法还可以攻击除深度神经网络以外的其他离散的、不连续的、不可微的机器学习模型,例如梯度增强决策树等。与边界攻击方法相比,Opt-attack方法将查询次数减少了3-4倍,实现了更小或类似的对抗噪声。 查询攻击通常可以取得较高的攻击成功率,但是它们也需要大量的查询才能攻击成功。借助一些先验知识可以进一步优化和加速此类攻击,此外,查询攻击还可以以代价更低的迁移攻击作为初始化来降低查询次数。下面将介绍完全不需要查询目标模型就可以发起攻击的迁移对抗攻击。 迁移攻击 ~~~~~~~~ 对抗样本的跨模型迁移性早在2013年Szegedy等人 :cite:`szegedy2013intriguing` 的工作中就已被发现。由于不同的模型在相同数据点周围学到了相似的决策边界,使得基于一个模型生成的对抗样本往往也可以欺骗在相同数据集上训练的其他模型,尤其是那些结构相同或类似的模型。 迁移攻击便利用了对抗样本的迁移性来实现黑盒攻击。攻击者首先使用\ **替代模型**\ (surrogate model)来替代目标模型,然后基于白盒攻击方法在替代模型上生成对抗样本,生成的对抗样本由于迁移性可以直接用来攻击目标模型。攻击者可以自己训练替代模型,而且并不需要跟目标模型结构一致,但是要求替代模型的训练数据跟目标模型的训练数据来自与同一个分布。 Papernot等人 :cite:`papernot2017practical` 以自适应查询的方式,使用合成数据来训练替代模型,然而这需要大量的查询并且要求目标模型输出全类别概率向量。这些要求在实际应用场景中很难满足,尤其是像ImageNet这样包含上千个类别的大数据集。目前,大部分迁移攻击方法主要使用预训练的模型作为替代模型。此外,直接使用白盒攻击方法在替代模型上生成的对抗样本的迁移性并不是很高,往往需要各种技术进行进一步增强。 Liu等人 :cite:`liu2016ensemble` 将集成的概念应用于迁移攻击,提出了基于模型集成的新颖攻击方法。简单来说,如果一个对抗样本对于多个模型具有对抗性,那么它极有可能具有很好的迁移性。Liu等人提出的攻击方法便是利用了此思想,基于\ *多个替代模型*\ 来生成迁移性更强的对抗样本。具体来说,给定\ :math:`k`\ 个替代模型,基于模型集成的有目标攻击求解以下优化问题: .. math:: \mathop{\mathrm{arg\,min}}_{ x_{\text{adv}}} -\log(\sum_{i=1}^{k}\alpha_{i}p_{i}(y_{t}| x_{\text{adv}}))+\lambda\| x_{\text{adv}}- x\|_2, :label: ensemble 其中,\ :math:`\alpha_{i}`\ 是给每个模型的权重(\ :math:`\alpha_{i}\geq0`\ 且\ :math:`\sum_{i=1}^{k}\alpha_{i}=1`\ ),\ :math:`p_{i}(y_{t}|\cdot)`\ 是第\ :math:`i`\ 个替代模型预测类别\ :math:`y_{t}`\ 的概率。无目标攻击与式 :eq:`ensemble` 类似,不过是最大化模型对真实类别的分类错误。值得注意的是,Liu等人所提出的攻击方法使用的是多个替代模型的\ *融合预测概率*\ 。 除此之外,Dong等人 :cite:`dong2018mi-fgsm` 提出的MI-FGSM攻击算法(式 :eq:`eq_mifgsm` )通过\ *融合损失函数*\ 和\ *融合逻辑输出*\ 高效集成多个替代模型: .. math:: \sum_{i=1}^{k}\alpha_{i}\mathcal{L}(f( x_{\text{adv}}), y_{t}) .. math:: \sum_{i=1}^{k}\alpha_{i}Z_{i}( x_{\text{adv}}). :label: eq_combine_logits 上述两种融合方式产生了不同的攻击性能,实验结果表明融合逻辑输出(即式 :eq:`eq_combine_logits` )要优于融合预测概率和融合损失函数。 Dong等人 :cite:`dong2018mi-fgsm` 认为生成一个对抗样本类似于训练一个模型,其迁移性可类比于模型的泛化。基于模型集成的攻击方法和MI-FGSM也在某种程度上证明了这一观点,所以可以借鉴其他提升模型泛化能力的技术来提高迁移攻击的性能。受数据增强的启发,Xie等人 :cite:`xie2019dim` 通过创建更多样化的输入模式来提高对抗样本的迁移性,并与BIM结合提出了\ *多样化输入快速梯度符号方法*\ (diverse inputs iterative FGSM,\ :math:`{\text{DI}}^2`-FGSM)。\ :math:`{\text{DI}}^2`-FGSM的攻击过程类似于BIM攻击算法,但是在每次迭代时以概率\ :math:`p`\ 对输入进行图像变换\ :math:`T(\cdot)`\ ,从而缓解对替代模型的过度拟合: .. math:: x_{\text{adv}}^{t+1} = \text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{\top}+ \alpha\cdot sign(\nabla_{ x}L(f(T( x_{\text{adv}}^{\top};p)),y))\}, 其中,随机图像变换函数\ :math:`T( x_{\text{adv}}^{\top};p)`\ 定义为: .. math:: T( x_{\text{adv}}^{\top};p)=\begin{cases}T( x_{\text{adv}}^{\top}) \text{with probability}\;p\\x_{\text{adv}}^{\top} \text{with probability}\;1-p.\end{cases} 具体来说,\ :math:`{\text{DI}}^2`-FGSM使用了\ *随机大小调整*\ (将输入图像调整为随机大小)和\ *随机填充*\ (随机在输入图像边缘填充零元素)等随机变换。随机变换函数中的随机变换概率\ :math:`p`\ 平衡了\ :math:`{\text{DI}}^2`-FGSM的白盒攻击成功率和黑盒攻击成功率。当\ :math:`p=0`\ 时,\ :math:`{\text{DI}}^2`-FGSM就退化为BIM,从而导致生成的对抗样本过拟合替代模型;当\ :math:`p=1`\ 时,则只将随机变换后的输入图像用于对抗攻击,虽然这样可以显著提高生成对抗样本的黑盒攻击成功率,但同时也会使得白盒攻击成功率变差。虽然MI-FGSM和\ :math:`{\text{DI}}^2`-FGSM是两种完全不同的缓解过拟合现象的方法,但两者可以自然地组合起来以形成更强大的攻击,即\ *动量多样化输入迭代快速梯度符号方法*\ (momentum diverse inputs iterative FGSM, M-:math:`{\text{DI}}^2`-FGSM)。M-:math:`{\text{DI}}^2`-FGSM的 整体攻击过程与MI-FGSM类似,只需将动量项的计算替换为: .. math:: g_{t+1}=\mu\cdot g_{t}+\frac{\nabla_{ x}\mathcal{L}(f(T( x_{\text{adv}}^{\top};p)), y))}{\|\nabla_{ x}\mathcal{L}(f(T( x_{\text{adv}}^{\top};p)),y))\|_{1}}. 尽管MI-FGSM和\ :math:`{\text{DI}}^2`-FGSM生成的对抗样本在普通训练的模型上具有较高的迁移性,但它们却很难有效地迁移到鲁棒训练的模型上。Dong等人 :cite:`dong2019tim` 发现鲁棒模型用来识别物体类别的判别区域不同于普通训练的模型,MI-FGSM和\ :math:`{\text{DI}}^2`-FGSM生成的对抗样本与替代模型在给定干净样本时的判别区域相关,从而很难迁移到其他具有不同判别区域的目标模型。为了使生成的对抗样本对替代模型的判别区域不太敏感,Dong等人提出了一种\ **平移不变**\ (translation invariant)技术,可以与已有攻击方法结合,大幅提升迁移性。基于平移不变技术的攻击方法使用原始干净图像和平移后的干净图像所组成的图像集来生成对抗样本: .. math:: \mathop{\mathrm{arg\,min}}_{ x_{\text{adv}}} \sum_{i,j}\omega_{ij}\mathcal{L}(f(T_{ij}( x_{\text{adv}})), y)\; \text{s.t.} \; \| x_{\text{adv}}- x\|_{\infty}\leq \epsilon, 其中,\ :math:`T_{ij}( x)`\ 是将图像\ :math:`x`\ 沿两个维度方向分别平移\ :math:`i`\ 和\ :math:`j`\ 个像素的平移操作,平移后图像的每个像素\ :math:`(a,b)`\ 为\ :math:`T_{ij}( x)_{a,b}= x_{a−i,b−j}`\ ,\ :math:`\omega_{ij}`\ 是损失函数\ :math:`\mathcal{L}(f(T_{ij}( x_{\text{adv}})), y)`\ 的权重,\ :math:`i,j\in \{−k,\cdots,0,\cdots,k\}`\ , :math:`k`\ 是要平移的最大像素数。通过这种方法生成的对抗样本对于替代模型的判别区域不太敏感,可以以更高的概率欺骗鲁棒模型。 然而,要生成上述对抗样本需要计算集合中所有图像的梯度,这会带来很大的计算开销。为了提高攻击效率,Dong等人利用卷积神经网络中的平移不变特性,即输入图像中的物体在很小的平移下也可以被正确识别,证明了平移不变攻击可以通过将未平移样本的梯度与一个预定义的由所有权重\ :math:`\omega_{ij}`\ 组成的核矩阵进行卷积来实现。改进后的平移不变攻击可以在不增加计算复杂度的情况下,自然地与FGSM和BIM结合分别得到TI-FGSM和TI-BIM攻击方法: .. math:: x_{\text{adv}}= x+ \epsilon\cdot sign( W*\nabla_{ x}\mathcal{L}(f( x),y)) .. math:: x_{\text{adv}}^{t+1}=\text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{\top}+\alpha\cdot sign( W*\nabla_{ x}L(f( x_{\text{adv}}^{\top}),y))\}, 其中,\ :math:`W`\ 是大小为\ :math:`(2k+1)\times(2k+1)`\ 的核矩阵,\ :math:`W_{i,j}=w_{−i−j}`\ 。设计核矩阵的基本原则是给平移较大的图像赋相对较低的权重,因此,Dong等人采用了高斯核矩阵。 除了MI-FGSM之外,Lin等人 :cite:`lin2019ni-sifgsm` 还将\ *Nesterov加速梯度*\ (Nesterov accelerated gradient,NAG)结合到BIM算法中,提出了Nesterov迭代快速梯度符号方法(Nesterov iterative FGSM,NI-FGSM)。NAG可以看作是动量的改进。与动量相比,除了稳定更新方向之外,NAG的期望更新还可以为之前积累的梯度进行一次修正,这有助于有效地向前看。NAG的这种前瞻性可以帮助对抗样本更容易、更快速地摆脱糟糕的局部最优解,从而提高迁移性。NI-FGSM在每次迭代计算梯度之前,会先沿着之前积累的梯度方向进行一次跳跃: .. math:: \begin{aligned}x_{\text{ne}}^{t} = x_{\text{adv}}^{t} + \alpha\cdot\mu\cdot g_{t}\\g_{t+1} = \mu\cdot g_{t} + \frac{\nabla_{ x}\mathcal{L}(f( x_{\text{ne}}^{t}), y))}{\|\nabla_{ x}\mathcal{L}(f( x_{\text{ne}}^{t}), y))\|_{1}}\\x_{\text{adv}}^{t+1} = \text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{t} + \alpha\cdot sign( g_{t+1})\},\end{aligned} 其中,\ :math:`\mu`\ 是\ :math:`g_{t}`\ 的衰减因子。NI-FGSM能够在梯度积累部分取代MI-FGSM,并产生更好的攻击性能。Lin等人发现除了平移不变性以外,深度神经网络还具有\ *缩放不变性*\ ,即在同一模型上干净图像和缩放后的图像的损失是相似的。利用模型的缩放不变特性,Lin等人进一步提出了\ *缩放不变攻击*\ (scale-invariant attack method,SIM)方法。缩放不变攻击在缩放样本上优化对抗噪声: .. math:: \mathop{\mathrm{arg\,min}}_{ x_{\text{adv}}}\frac{1}{m}\sum_{i=0}^{m}\mathcal{L}(f(S_{i}( x_{\text{adv}})), y)\; \text{s.t.}\; \| x_{\text{adv}}- x\|_{\infty}\leq \epsilon, 其中,\ :math:`S_{i}( x)= x/2^{i}`\ 表示缩放系数为\ :math:`1/2^{i}`\ 的干净图像\ :math:`x`\ 的缩放副本,\ :math:`m`\ 表示缩放副本的数量。从形式上来看,缩放不变攻击和基于模型集成的攻击比较类似。不同的是,基于模型集成的攻击需要训练一组不同的模型作为替代模型,这会带来更多的计算开销,而缩放不变攻击可以看做是以模型增强(一种通过保留损失变换获得多个模型的简单方法)的方式从原始模型中衍生出多个模型。 尽管上述基于迁移的攻击方法都很有效,但它们都忽略了深度神经网络的\ *结构特性*\ 。Wu等人 :cite:`wu2020sgm` 研究发现,残差神经网络中\ *跳跃连接*\ (skip connections)可以提升迁移性,即在反向梯度传播过程中有选择性的跳过某些连接会大大提高生成对抗样本的迁移性。基于此,Wu等人提出了\ **跳跃梯度方法**\ (skip gradient method,SGM)基于残差网络生成高迁移性攻击。在残差网络中,跳跃连接使用\ *恒等映射*\ (identify mapping)将卷积模块的输入直接连接到其输出,以此来建立一个从浅层向深层的捷径(shortcut)\ :math:`z_{i+1}= z_{i}+f_{i+1}( z_{i})`\ 。具有\ :math:`L`\ 个残差模块的残差神经网络可以表示为: .. math:: z_{L} = z_{0} + \sum_{i=0}^{L-1}f_{i+1}( z_{i}), 其中,\ :math:`z_{0}= x`\ 是模型的输入。根据链式法则,损失函数\ :math:`\mathcal{L}(f( x),y))`\ 对于输入\ :math:`z_{0}`\ 的梯度可以分解为: .. math:: \frac{\partial \mathcal{L}(f( x),y))}{\partial x} = \frac{\partial \mathcal{L}(f( x),y))}{\partial z_{L}}\prod_{i=0}^{L-1}(\frac{\partial f_{i+1}(\partial z_{i})}{ z_{i}} + 1)\frac{\partial z_{0}}{\partial x}. Wu等人发现利用更多来自跳跃连接的梯度可以生成迁移性更强的对抗样本。为了使用更多来自跳跃连接的梯度,SGM攻击方法引入了一个衰减参数到分解的梯度中,以减少来自卷积模块的梯度: .. math:: \nabla_{ x}\mathcal{L}(f( x), y) = \frac{\partial \mathcal{L}(f( x),y))}{\partial z_{L}}\prod_{i=0}^{L-1}(\gamma\frac{\partial f_{i+1}(\partial z_{i})}{ z_{i}} + 1)\frac{\partial z_{0}}{\partial x}, 其中,\ :math:`\gamma\in(0,1]`\ 是衰减参数。SGM算法可以在不增加任何计算开销的情况下,很容易地与基于梯度的攻击方法结合。比如,与BIM结合来迭代地生成对抗样本: .. math:: x_{\text{adv}}^{t+1}=\text{Clip}_{ x, \epsilon}\{ x_{\text{adv}}^{t}+\alpha\cdot sign(\frac{\partial \mathcal{L}(f( x),y))}{\partial z_{L}}\prod_{i=0}^{L-1}(\gamma\frac{\partial f_{i+1}(\partial z_{i})}{ z_{i}} + 1)\frac{\partial z_{0}}{\partial x})\}. 卷积模块的梯度是沿着反向传播路径累积衰减的,也就是说,浅层卷积模块的梯度将比深层卷积模块的梯度减小更多倍。由于浅层特征已经被跳跃连接很好地保留了,卷积模块梯度的衰减则会鼓励攻击更多关注浅层特征,而浅层特征在不同的深度神经网络之间更容易迁移。值得一提的是,目前SGM只对有跳跃连接的网络结构适用,其在其他网络结构上的扩展值得进一步探索。 虽然上述基于迁移的攻击方法都可以提升生成对抗样本的迁移性,但攻击成功率仍然不如查询攻击,因为毕竟缺失了目标模型的反馈。但是查询攻击又依赖模型的输出类型,且往往受查询次数限制,在现实场景中难以实施。二者之间的融合可以促成更高效的攻击。比如,已经有一些工作尝试将基于替代模型生成的对抗噪声作为初始化,然后用查询攻击来进行微调 :cite:`cheng2019improving` 。预计结合一定的先验知识和迁移攻击,黑盒攻击有可以变得和白盒攻击一样准确高效。 物理攻击 -------- 前面介绍的黑盒攻击和白盒攻击算法都假定用于攻击的对抗样本可以在生成以后原封不动的直接输入目标模型。而现实场景中的人工智能系统往往通过摄像头和传感器等设备获取输入,而无法直接接受数字输入。比如,在人脸识别场景中,用户的面部图像是通过摄像头采集的,而不是可以直接上传一张图片。在这些场景下,对输入样本进行细粒度逐维度修改的攻击方式就变的不切实际了,需要特殊的\ **物理世界攻击**\ (physical-world attack)方法来增强它们在真实环境中的对抗性。本节将对经典的物理对抗攻击方法进行详细的介绍。 **物理世界中的对抗样本。** Kurakin等人 :cite:`Kurakin2017bim` 是最早开始研究物理攻击的学者。他们将对抗图像打印出来,然后通过手机拍摄后再次输入分类模型中,发现很大一部分对抗样本在重新拍摄后依然能够使模型犯错,也就是这些样本在物理环境中也依然具有对抗性。如图 :ref:`fig_6.1.3_1` 所示,他们先使用传统的攻击算法(可以统称为“数字攻击”)生成一些对抗图片。之后,他们将原始图片和对抗图片打印出来,并重新拍摄成照片(使用谷歌手机Nexus 5X)。最后,将这些照片中所包含的图像分割出来,输入模型进行分类测试。实验结果表明,一部分对抗样本在经过拍照后依然可以成功攻击。进一步实验发现,改变照片亮度和对比度对对抗样本影响不大,但是模糊、噪点和JPEG编码会在很大程度上破坏对抗样本的有效性。 .. _fig_6.1.3_1: .. figure:: images/6.4_robust_physical_attack.png :width: 600px 物理世界攻击 :cite:`Kurakin2017bim` **鲁棒的物理扰动(**\ :math:`\boldsymbol{RP}_{\boldsymbol{2}}`\ **)。** 虽然上述工作证明了对抗样本在物理世界中也能发挥作用,但Kurakin等人设计的物理攻击是将对抗样本打印后正对拍摄,这实际上并不符合真实场景。因此Eykholt等人 :cite:`eykholt2018robust` 选择道路标志牌作为检测目标域,并指出在物理世界中,对抗样本的有效性存在以下挑战: - **环境条件**\ :现实世界中拍摄的图片会有不同的距离、角度、光照和天气等因素; - **空间限制**\ :大部分攻击在整张图片上添加扰动,而现实情况是,攻击者无法对路牌以外的背景进行改变,并且背景也会随拍摄视角变化; - **不易察觉性的物理限制**\ :很多攻击生成的对抗扰动过于微小,摄像头往往悟法感知这些扰动,导致攻击无效; - **制造误差**\ :通过攻击算法计算出来的对抗噪声可能包含无法在现实世界中打印出来的颜色值。 .. _fig_6.1.3_2: .. figure:: images/6.5_RP2_attack.png :width: 600px RP\ :math:`_{2}`\ 攻击流程图 :cite:`eykholt2018robust` 受以上挑战启发,Eykholt等人 :cite:`eykholt2018robust` 提出\ **鲁棒物理扰动**\ (robust physical perturbations,RP\ :math:`_{2}`\ )攻击算法,该算法可以产生一个可见但并不显眼的、只作用于目标物体而非环境的扰动,并且这个扰动对不同距离和角度的摄像头具有较高的鲁棒性。图 :ref:`fig_6.1.3_2` 展示了该算法的攻击流程,RP\ :math:`_{2}`\ 算法首先基于传统数字攻击算法生成对抗扰动: .. math:: \underset{ \delta}{\mathop{\mathrm{arg\,min}}} \lambda\| \delta\|_{p}+\mathcal{L}(f( x+ \delta), y_{t}), 其中,\ :math:`y_{t}`\ 为目标类别。 为了能够适应上述物理世界挑战中的环境条件,他们拍摄了在不同距离、角度及光线下的路牌照片来反应动态多变的物理环境。他们也通过合成手段,如随机裁切图片中的目标、改变亮度、添加空间变换等来模拟其他可能的情况。将这些不同条件下的物理变换和合成变换的分布建模成\ :math:`X^V`\ ,用于训练的实例\ :math:`x_i`\ 均从\ :math:`X^V`\ 中抽取。 为了保证扰动只添加在目标物体\ :math:`o`\ 上,Eykholt等人使用一个\ *输入掩码*\ (input mask)来将计算出的扰动添加到物理目标区域内。该输入掩码为一个矩阵\ :math:`M_{ x}`\ ,维度与分类器输入大小相同,在没有添加扰动的区域掩码值为0,添加扰动的区域值为1。 他们又进一步引入了基于\ *不可印刷性分数*\ (non-printability score,NPS) :cite:`sharif2016accessorize` 的约束条件,用来解决打印机无法打印某些色彩的问题。综合以上技术,Eykholt等人提出的物理攻击方法RP\ :math:`_{2}`\ 定义如下: .. math:: \underset{ \delta}{\mathop{\mathrm{arg\,min}}} \lambda\left\|M_{ x} \cdot \delta\right\|_{p}+\text{NPS} +\mathbb{E}_{ x_{i} \sim X^{V}} \mathcal{L}\left(f_{\theta}\left( x_{i}+T_{i}\left(M_{ x} \cdot \delta\right)\right), y_{t}\right), 其中,\ :math:`T_{i}(\cdot)`\ 是用于将目标变换映射到对抗扰动的对齐函数。在生成完对抗图案后,攻击者可以将生成结果打印出来,并把扰动裁剪出来放到目标物体\ :math:`o`\ 上,如图 :ref:`fig_6.1.3_3` 所示,可以将扰动伪装成常见的海报、涂鸦和黑白格等贴在道路标志牌上。 .. _fig_6.1.3_3: .. figure:: images/6.6_RP2_examples.png :width: 600px RP\ :math:`_{2}`\ 生成的三类物理对抗交通指示牌 :cite:`eykholt2018robust` 在实景驾驶测试实验中,RP\ :math:`_{2}`\ 物理攻击在对象受限的海报打印攻击(直接打印整个对象)和贴纸攻击(以贴纸的形式产生扰动,将修改区域限制在一块类似涂鸦或艺术效果的区域中)都取得了不错的攻击成功率,证明生成在不同距离和角度下都能保持对抗性的物理对抗样本是可能的。 **对抗补丁(AdvPatch)。** Brown等人 :cite:`brown2017adversarial` 提出了一种\ **对抗补丁**\ (adversarial patch,AdvPatch)攻击方法,对图片的局部区域进行较大幅度的对抗扰动,生成具有强对抗性的补丁。由于扰动幅度很大,对抗补丁可以被打印出来,在物理场景中攻击深度学习模型,比如使物体检测模型忽略特定的物体并预测错误的类别。 .. _fig_6.1.3_4: .. figure:: images/6.7_adversarial_patch.png :width: 600px 对抗补丁攻击效果示意图 :cite:`brown2017adversarial` 不同于传统梯度优化的算法,Brown等人用生成的补丁替换图像中的一部分来实现攻击。给定一张图片\ :math:`x \in \mathbb{R}^{w \times h \times c}`\ , 一个补丁\ :math:`r`\ ,补丁位置\ :math:`l`\ 和补丁变换\ :math:`t`\ (如旋转和缩放等),定义打补丁操作\ :math:`A( r, x, l, t)`\ ,先将变换\ :math:`t`\ 应用于补丁\ :math:`r`\ ,之后将变换后的补丁\ :math:`r`\ 作用于图片\ :math:`x`\ 的位置\ :math:`l`\ 上。Brown等人使用了一种变换形式的\ *变换期望算法*\ (expectation over transformation,EOT) :cite:`athalye2018synthesizing` 来获得训练后的补丁\ :math:`\widehat{ r}`\ ,此算法通过模拟和求期望来拟合现实世界中的各种变换: .. math:: \widehat{ r}=\arg \max _{ r} \mathbb{E}_{ x \sim X, t \sim T, l \sim L}[\log p(\widehat{y} \mid A( r, x, l, t)], 其中,\ :math:`X`\ 是图片训练集,\ :math:`T`\ 是补丁变换的分布,\ :math:`L`\ 是图像中位置的分布。此外,他们还添加了一个扰动大小约束\ :math:`\left\| r- r_{\text{orig }}\right\|_{\infty}< \epsilon`\ ,确保对抗补丁的变化不至于太大。在物理实验中,研究人员将生成的补丁通过标准彩色打印机进行打印,并将它放到不同的场景中进行测试,结果表明这样的补丁能够轻易欺骗分类模型。图 :ref:`fig_6.1.3_4` 展示了对抗补丁进行物理攻击的例子。 **对抗伪装(AdvCam)。** 对抗补丁的出现大大增加了人工智能模型在真实环境中的安全风险,因为这样的补丁可能以任何形式出现在任何地方。Duan等人 :cite:`duan2020adversarial` 就提出将大小不受限的对抗扰动伪装成一种自然的风格,使之看起来是合理的,更不容易引起注意,以此来揭示物理环境中普遍存在的对抗因素。基于此思想,Duan等人提出基于风格迁移的\ **对抗伪装攻击**\ (adversarial camouflage, AdvCam)。图 :ref:`fig_6.1.3_5` 展示了对抗伪装的基本思想,其通过选择现实场景中交通指示牌的不同风格,如褪色、积雪覆盖和生锈等,将对抗性隐藏在不同的风格中,使生成的对抗样本特别像真实存在的情况。 .. _fig_6.1.3_5: .. figure:: images/6.8_adv_cam.png :width: 600px 对抗伪装攻击示意图 :cite:`duan2020adversarial` 对抗伪装攻击需要同时完成多个任务,使用的损失函数包括:表示对抗强度的对抗损失\ :math:`\mathcal{L}_{\text{adv}}`\ 、表示风格生成的风格损失\ :math:`\mathcal{L}_s`\ 、保护源图像内容的内容损失\ :math:`\mathcal{L}_c`\ 和生成局部平滑区域的平滑损失\ :math:`\mathcal{L}_m`\ : .. math:: \mathcal{L}=\left(\mathcal{L}_{s}+\mathcal{L}_{c}+\mathcal{L}_{m}\right)+\lambda \cdot \mathcal{L}_{\text{adv}}. 其中,对抗样本\ :math:`x'`\ 和风格参考图片\ :math:`x^s`\ 之间的风格距离可表示如下: .. math:: D_{s}=\sum_{l \in \mathcal{S}_{l}}\|\mathcal{G\|\left(\widetilde{f}_{l}\left( x^{s}\right)\right)-\mathcal{G}\left(\widetilde{f}_{l}\left( x'\right)\right)}_{2}^{2}, 其中,\ :math:`\widetilde{f}`\ 表示特征提取器,\ :math:`\mathcal{G}`\ 是从\ :math:`\widetilde{f}`\ 的风格层(深度神经网络的某些层与风格相关)中提取的风格特征Gram矩阵,并使用掩码矩阵\ :math:`M`\ 来确保只有指定区域(适合进行风格变换的区域)被改变。 上述风格损失\ :math:`\mathcal{L}_s`\ 可以使模型根据\ *参考风格*\ (预先选择的风格图片)生成对抗样本,这有可能会损失原始图像中的部分内容。原始图像的内容可以通过以下损失来保留: .. math:: \mathcal{L}_{c}=\sum_{l \in \mathcal{C}_{l}}\|\widetilde{f\|_{l}( x)-\widetilde{f}_{l}( x')}_{2}^{2}, 其中,\ :math:`\mathcal{C}_{l}`\ 表示用于提取\ *内容特征*\ 的神经网络层集合,这保证了对抗样本和原始图像在深层特征空间的相似性。此外,研究者还通过减少相邻像素之间的变化来提高对抗图案的平滑度,具体损失公式如下: .. math:: \mathcal{L}_{m}=\sum(( x'_{i, j}- x_{i+1, j})^{2}+( x'_{i, j}- x^{2}_{i, j+1}))^{\frac{1}{2}}, 其中,\ :math:`x'_{i, j}`\ 表示图像\ :math:`x'`\ 坐标\ :math:`(i, j)`\ 处的像素值。 最后,对抗损失可以用交叉熵损失来定义: .. math:: \mathcal{L}_{\text{adv}}= \begin{cases}\log p_{y_t}( x') \text { 目标攻击 } \\ -\log p_{y}( x') \text { 无目标攻击.}\end{cases}. 由于物理环境经常会涉及各种状态波动,如视点偏移、相机噪声和其他变换等,Duan等人同样采用变换集合和EOT算法来模拟物理世界中的多变情况: .. math:: \min _{ x'}(\left(\mathcal{L}_{s}+\mathcal{L}_{c}+\mathcal{L}_{m}\right)+\max_{T \in \mathcal{T}} \lambda \cdot \mathcal{L}_{\text{adv}}\left( x_{bg}+T\left( x'\right)\right), 其中,\ :math:`x_{bg}`\ 表示一张从现实世界中采样的随机背景图片,\ :math:`T`\ 代表一系列随机变换,如旋转、尺寸调整和颜色转换等。实验表明这种结合了风格迁移和对抗攻击的算法可以让对抗样本的隐匿方式更加灵活。 **对抗T恤(AdvTShirt)。** 上述物理攻击都是针对不易形变的刚性物体,如道路标识牌等。在一般情况下这些物体是静止的,贴在其表面的对抗图案不会产生形变,导致这些算法在容易形变的非刚性物体上效果有限。针对此问题,Xu等人 :cite:`xu2020adversarial` 提出\ **对抗T恤**\ (adversarial T-shirts,AdvTShirt),使得对抗样本在T恤这类会根据人类姿态和动作而随时发生形变的非刚性物体上也能发挥作用。当攻击者穿上印有对抗图案的T恤后能躲过物体检测模型,使其无法检测到攻击者的存在。图 :ref:`fig_6.1.3_10` 展示了该算法生成的对抗T恤在数字和物理世界中攻击YOLOv2模型时的有效性。 为了适应物理环境变化,Xu等人将 :cite:`athalye2018synthesizing` 中的期望转换算法(即EOT)推广到对抗性T恤的设计。如前文所述,该方法将可能发生在现实世界中的多种变化,如缩放、旋转、模糊、光线、噪声等,通过模拟和求期望来拟合现实,且在对象为刚性物体时有不错的效果。但该方法无法模拟T恤在人体运动时产生的褶皱,而这种褶皱会使对抗样本失去作用。于是Xu等人开发了一种基于\ *薄板样条插值*\ (thin plate spline,TPS)的变换算法来模拟由人体姿态变化引起的T恤变形,TPS算法已被广泛用于图像对齐和形状匹配中的非刚性变换模型。 .. _fig_6.1.3_10: .. figure:: images/6.9_adv_tshirt.png :width: 600px 数字和物理对抗T恤成功躲避物体检测模型 :cite:`xu2020adversarial` 图 :ref:`fig_6.1.3_9` 展示了该算法的总体流程。 具体的,以视频中的两帧为例,有一个锚点图像\ :math:`x_0`\ 和一个目标图像\ :math:`x_i`\ ,对于\ :math:`x_0`\ 中给定的人物边界框\ :math:`M_{p, 0} \in\{0,1\}^{d}`\ 和T恤边界框\ :math:`M_{c, 0} \in\{0,1\}^{d}`\ ,使用从\ :math:`x_0`\ 到\ :math:`x_i`\ 的透视变换来获得图像\ :math:`x_i`\ 中的人物边界框\ :math:`M_{p, i}`\ 和T恤边界框\ :math:`M_{c, i}`\ 。于是,尚未考虑物理变换的关于\ :math:`x_i`\ 的扰动图像\ :math:`x'_{i}`\ 可表示为: .. math:: x'_{i}=\underbrace{\left(\mathbf{1}-M_{p, i}\right) \circ x_{i}}_{\text{A}}+\underbrace{M_{p, i} \circ x_{i}}_{\text{B}}-\underbrace{M_{c, i} \circ x_{i}}_{\text{C}}+\underbrace{M_{c, i} \circ \delta}_{\text{D}}, 其中,A表示人物边框外的背景区域,B是人物边界区域,C表示删除T恤边界框内的像素值,D是新引入的加性扰动。该公式可简化为对抗样本的常规表述:\ :math:`\left(1-M_{c, i}\right) \circ x_{i}+M_{c, i} \circ \delta`\ 。 .. _fig_6.1.3_9: .. figure:: images/6.10_adv_tshirt_framework.png :width: 600px 对抗T恤生成流程图 :cite:`xu2020adversarial` 接下来,Xu等人考虑三种主要类型的物理转换:1)对扰动\ :math:`\delta`\ 进行TPS转换\ :math:`t_{\text{TPS}} \in \mathcal{T}_{\text{TPS}}`\ ,以此来模拟布料变形的影响;2)物理颜色转换\ :math:`t_{\text{color}}`\ ,这种转换可将数字颜色转换为在物理世界中可被打印出来的颜色;以及 3) 应用于人物边框内区域的常规物理变换\ :math:`t \in \mathcal{T}`\ 。这里\ :math:`\mathcal{T}_{\text{TPS}}`\ 表示非刚性变换集合,\ :math:`t_{\text{color}}`\ 由一个可将数字空间色谱映射到对应的印刷品的回归模型给出,\ :math:`\mathcal{T}`\ 表示常用的物理变换集合,包括缩放、平移、旋转、亮度、模糊和对比度等。综合考虑以上不同物理转换后的算法公式为: .. math:: x'_{i}=t_{\text{env}}\left(\text{A}+t\left(\text{B}-\text{C}+t_{\text{color}}\left(M_{c, i} \circ t_{\text{TPS}}( \delta+\mu v)\right)\right)\right), 其中,\ :math:`t \in \mathcal{T}`,\ :math:`t_{\text{TPS}} \in \mathcal{T}_{\text{TPS}}`\ ,\ :math:`v \sim \mathcal{N}(0,1)`\ ,\ :math:`t_{\text{env}}`\ 代表对环境亮度条件建模的亮度变换,\ :math:`\mu v`\ 是允许像素值变化的加性高斯噪声,它可使最终的目标函数更平滑,更有于优化过程中的梯度计算,\ :math:`\mu`\ 是给定的平滑参数。 最终,用于欺骗单个检测器的期望转换公式为: .. math:: \underset{ \delta}{\min} \;\; \frac{1}{M} \sum_{i=1}^{M} \mathbb{E}_{t, t_{\text{TPS}}, v}\left[\mathcal{L}_{\text{adv}}\left( x'_{i}\right)\right]+\lambda g( \delta), 其中,\ :math:`\mathcal{L}_{\text{adv}}`\ 是导致错误检测的对抗损失,\ :math:`g`\ 是增强扰动平滑度的\ *变分范数*\ (total variation norm),\ :math:`\lambda>0`\ 是正则化参数。 实现显示,通过上述算法生成的对抗T恤在数字和物理世界中对YOLOv2 :cite:`redmon2017yolo9000` 物体检测模型的的攻击成功率分别可达到74%和 57%,相比之前方法有巨大提升。 **多传感器融合对抗攻击**\ (multi-sensor fusion adversarial attack,MSF-ADV)。对抗T恤探索了如何将对抗图案放在衣服上的问题,这里\ *多传感器融合对抗攻击*\ 则 :cite:`cao2021invisible` 探索了如何攻击真实场景下的自动驾驶系统。雷达和摄像头是自动驾驶标配的两种传感器,其捕获的路面信息和路况信息在分别处理后会通过两个不同的网络进行一定的融合和对齐,融合得到的信息用来支撑自动驾驶的决策。图 :numref:`fig_6_11` 展示了Cao等人提出的MSF-ADV攻击算法,其主要思想是充分利用两类传感器的特点生成具有对抗性的三维物体,通过优化物体的3D角度、位置、表面平滑度等性质,使其更容易在物理世界实现(比如3D打印)并保持对抗性。其中,主要的难点包括对雷达模块信息处理(即3D点云处理)的可微近似、点云信息与图像信息的匹配以及对抗形状的优化等。此研究工作第一次完整的攻破了自动驾驶的雷达和摄像头两个感知系统,在模拟自动驾驶场景中可以误导企业级的自动驾驶汽车装上3D对抗物体。 .. _fig_6_11: .. figure:: images/6.11_msf_adv.png :width: 600px 多传感器融合对抗攻击流程图 :cite:`cao2021invisible` (简化版本) 本章小结 -------- 对抗攻击可以说是威胁深度神经网络安全性的一种最主要的攻击,其自从2013年被发现已经得到了大量的研究。本章从白盒攻击、黑盒攻击和物理攻击三种攻击类型出发,介绍了近年来被提出的几种经典对抗攻击算法。这些算法从不同的角度,如提高攻击成功率、增加隐蔽性、提高查询效率、适应物理环境变化等,探索如何更合理、更高效的使用对抗梯度来获得想要的攻击效果。通过本章节的介绍希望读者能够对基本的攻击流程、攻击策略、尚存挑战等有所了解,从而灵活面对未来更多样化的应用领域和攻击场景。当然,本着“攻击是为了更好的防御”的原则,对抗攻击还是要服务于测试模型(尤其是多模态大模型)的鲁棒性、揭示模型的安全问题,而不是恶意的攻击正在服务中的模型,否则可能会引起巨额经济损失,需要承担相应的法律责任。