该论文发表于CVPR2021,主要是关于黑盒攻击中对抗样本可迁移性的研究。论文的创新点很新颖,虽然论文代码没有开源,但是自己实现起来也相对简单。论文作者借助对抗训练的思想提出了一种新颖的对抗变换网络以此来生成高迁移性的对抗样本。我在本文画出了两张示意图为了能更通俗易懂地了解作者的核心思想,以及区别对抗变换网络和对抗训练框架之间的异同。
令 x x x表示的是一个干净样本,其真实标签为 y y y。深度学习分类为 f ( x ) f(x) f(x),输出的是一个概率向量。生成对抗样本 x a d v x^{adv} xadv的优化公式如下所示: arg max f ( x a d v ) ≠ y s . t . ∥ x a d v − x ∥ p ≤ ϵ \begin{aligned}&\arg\max f(x^{adv}) \ne y\\ &\mathrm{s.t.}\quad \|x^{adv}-x\|_p \le \epsilon \end{aligned} argmaxf(xadv)=ys.t.∥xadv−x∥p≤ϵ以上公式转化为损失函数 J ( f ( x ) , y ) J(f(x),y) J(f(x),y)的形式为则有 max x a d v J ( f ( x a d v ) , y ) s . t . ∥ x a d v − x ∥ ∞ ≤ ϵ \begin{array}{rl}\max\limits_{x^{adv}} &J(f(x^{adv}),y)\\ \mathrm{s.t.}&\|x^{adv}-x\|_{\infty}\le \epsilon\end{array} xadvmaxs.t.J(f(xadv),y)∥xadv−x∥∞≤ϵ
作者主要通过让对抗样本抵御防御中的各种数据变换从而增强对抗样本的可迁移性。当前的数据变换的方法可以减弱对抗扰动的攻击性,但是因为这些数据变换的方式都是固定的形式,例如翻转,缩放,颜色变换等,使得数据变换的样式比较固定和单一。在该论文中作者在模型分类器前加入一个 C N N \mathrm{CNN} CNN,这个 C N N \mathrm{CNN} CNN主要功能是抑制对抗样本的攻击,训练干净样本使得生成的对抗样本能够抵御防御中最强数据变换后,依然保留对抗样本的攻击性。
令 H H H是带有参数 θ H \theta_H θH图片变换函数。该论文的方法分为两步,第一步是通过训练 θ H \theta_H θH找到一个最强的数据变换方式 H H H,使得它能够最大程度的抑制对抗样本的攻击性;第二步是在得到最强数据变换函数 H H H后,训练生成对抗样本 x a d v x^{adv} xadv。优化函数可以归结为如下的对抗损失 min θ H max x a d v J ( f ( H ( x a d v ) ) , y ) s . t . ∥ x a d v − x ∥ ∞ ≤ ϵ arg max f ( H ( x ) ) = y \begin{array}{rl} \min\limits_{\theta_H}\max\limits_{x^{adv}}& J(f(H(x^{adv})),y)\\\mathrm{s.t.}& \|x^{adv}-x\|_{\infty}\le \epsilon\\ & \arg\max f(H(x))=y\end{array} θHminxadvmaxs.t.J(f(H(xadv)),y)∥xadv−x∥∞≤ϵargmaxf(H(x))=y当 H ( x ) H(x) H(x)为一个卷积神经网络 T ( x ; θ T ) T(x;\theta_T) T(x;θT)的时候,则相应的优化形式如下所示: min θ T max x a d v J ( f ( T ( x a d v ) ) , y ) s . t . ∥ x a d v − x ∥ ∞ ≤ ϵ arg max f ( T ( x ) ) = y \begin{array}{rl} \min\limits_{\theta_T}\max\limits_{x^{adv}}& J(f(T(x^{adv})),y)\\\mathrm{s.t.}& \|x^{adv}-x\|_{\infty}\le \epsilon\\ & \arg\max f(T(x))=y\end{array} θTminxadvmaxs.t.J(f(T(xadv)),y)∥xadv−x∥∞≤ϵargmaxf(T(x))=y
为了能够更清楚的展示论文的中心思想,给论文补充上了方法原理的示意图,如下所示,红色蓝色区域部分是对抗变换网络的训练,黄色区域部分是对抗样本的生成过程。 φ \varphi φ和 φ ^ \hat{\varphi} φ^表示的是对抗变换网络的更新参数, θ \theta θ表示目标模型的固定参数。
训练对抗变换网络的损失函数函数如下所示 L T = J ( f ( T ( x a d v ) ) , y ) + α 1 J ( f ( T ( x ) ) , y ) + α 2 ∥ x a d v − T ( x a d v ) ∥ 2 L_T = J(f(T(x^{adv})),y)+\alpha_1 J(f(T(x)),y)+\alpha_2 \|x^{adv}-T(x^{adv})\|^2 LT=J(f(T(xadv)),y)+α1J(f(T(x)),y)+α2∥xadv−T(xadv)∥2其中第一项表示的是对抗变换网络抑制对抗样本后的损失,第二项表示的是对抗变换网络对干净样本的损失,第三项是干净样本和对抗样本约束损失。紧接着在训练对抗变换网络过程中生成对抗样本,其损失函数如下所示 L f o o l = − J ( f ( T ( x a d v ) ) , y ) − β J ( f ( x a d v ) , y ) L_{fool}=-J(f(T(x^{adv})),y)-\beta J(f(x^{adv}),y) Lfool=−J(f(T(xadv)),y)−βJ(f(xadv),y)这个损失函数的目的是引导对抗样本在有最强数据变换防御和没有这个防御的时候都能攻击成功,需要指明的是这个操作的最终目的是要增强对抗变换网络的防御能力。具体的算法流程图如下所示:
在训练好对抗变换网络之后,则开始生成对抗样本,其损失函数为 L a t t a c k = J ( f ( x a d v ) , y ) + γ J ( f ( T ( x a d v ) ) , y ) L_{attack}=J(f(x^{adv}),y)+\gamma J(f(T(x^{adv})),y) Lattack=J(f(xadv),y)+γJ(f(T(xadv)),y)其实很直观的可以发现 L f o o l L_{fool} Lfool和 L a t t a c k L{attack} Lattack的形式是一样的,只是它们生成对抗样本的阶段不一样, L f o o l L_{fool} Lfool是在训练阶段生成对抗样本是为了让增强对抗变化网络的防御能力, L a t t a c k L_{attack} Lattack是在最后阶段生成能够抵御对抗变换网络防御的对抗样本。具体的算法流程图如下所示:
这里需要格外提一句的是,训练对抗变换网络的过程跟对抗训练的过程很相似,为了对比它们两者的异同,我把对抗训练的示意图整理为下图。它们都是有双层训练机制,而且都是外部循环训练网络参数,内部循环生成对抗样本。两者主要的区别在于,训练对抗变换网络过程中,网络参数的训练其实只是训练格外引入的 C N N \mathrm{CNN} CNN的 φ \varphi φ,而目标网络的参数 θ \theta θ是固定不变的;对抗训练过程中,主要目的是训练目标分类器的参数 θ \theta θ。
对抗变换网络的主要作用在于通过数据增强从而有效地降低对抗样本的攻击性,那一个干净的样本输入到对抗变化网络之后输出的样本的具体示图如下所示,第一行是干净的样本,第二行是变换后的样本,可以发现变换能够更多样化,比如模糊化,颜色改变,增加对比度等。
下表展示的是在黑盒迁移攻击中不同的攻击算法对加有防御的模型的攻击效果,可以很直观的发现,论文中提出的攻击算法,在各个指标下都能全面碾压其它算法。
上述实验已经能够很明确的展示出论文算法的优越性,下述实验结果是针对对抗变换网络结构的探讨, C N N \mathrm{CNN} CNN的网络结构是什么样子的才能够最大化提高对抗样本的可迁移性?由下表可以发现当 C N N \mathrm{CNN} CNN网络的结构为两层,卷积核的大小分别为 16 × 16 16\times 16 16×16和 3 × 3 3\times 3 3×3的时候,效果最好。