Generating Transferable Adversarial Examples against Vision Transformers 论文阅读
ATA
论文全名:Generating Transferable Adversarial Examples against Vision Transformers
实验方法
对于图像分类任务,令\(F\)是一个vit模型,给定一个良性样本\(x\in X\subset \R^{H\times W\times C}\),其真实标签为\(y\in Y=1,...,K\)。其中H,W,C,K分别为高度,宽度,通道数,类数。模型F满足\(F(x)=y\)。一个对抗扰动\(\delta\)可以引导模型F得出错误的预测:
![image-20230301161222148](https://gitee.com/lee-guowei/md-pics/raw/master/img/2023/03/202303011612189.png)
其中M是一个0-1 mask矩阵,来决定perturbed pixels放在哪里。在典型的对抗干扰里,M默认是在所有位置放置\(\delta\),且\(\delta\)的大小局限在一个小范围内。我们的目标是通过找到一个更好的位置掩蔽矩阵\(M\),来提高\(\delta\)的可移植攻击能力。由于只有有限的pixels可以被扰动,我们就不限制\(\delta\)的大小了。
Framework概览
我们用一个两阶段的ATA攻击框架来产生对抗干扰。首先,我们通过confuse 自注意力来定位到关键的patches,也就是找到最影响模型决策的patches;接着,我们通过扰乱image embedding,来找到这些patches里的最关键的pixel区域。也就是说我们利用了Vit中的结构特征:自注意力和image embedding,来产生对抗样本
Uncertain Attention Activation
检索影响力最大的patch
随着Vit中注意力层的深入,模型更倾向于关注最关键的区域,这也符合自注意力机制对vit的决策制定起着关键作用,因此我们利用它来产生uncertain attention。通过采用uncertain attention,可以选择更重要的分块区域,并逐步向patches中注入攻击pixels。
对于模型F来说,第b个模型块的class activated matrix C(CAM,类别识别矩阵)为:
![image-20230301164538767](https://gitee.com/lee-guowei/md-pics/raw/master/img/2023/03/202303011645801.png)
其中\(\overline{A}^{(b)}\)为第b块的注意力矩阵,Q和K分别是查询和键矩阵。B为模型F中的块总数,h为多头注意力中头的数量,\(\mathbb{E}_h\)为the mean across the heads dimension。我理解的就是:
\(R^b\)为矩阵\(\overline{A}^{(b)}\)对于目标类的relevance。
实际上,矩阵C是一个修正的注意力矩阵,来揭示不同token之间的相关性。\(C_{q,p}\)代表token p对token q的贡献,是一个0到1的值。在vit中,token就是一个被展平的patch。
接下来,我们利用交叉熵来计算the uncertainty weight \(w_p\),交叉熵用来定量描述一个系统的不确定性,在这里是为了更加确定attention的不确定性,也就是说不同token之间的关联。对于第p个patch的计算公式如下,本质上是指第p个patch对其他所有patch相关性之和:
![image-20230301165442479](https://gitee.com/lee-guowei/md-pics/raw/master/img/2023/03/202303011654502.png)
其中\(p=1,...,N\)为展平后patches的下标,\(q=1,...,N\)是矩阵C的列下标。之后我们得到了一个uncertainty activation weight向量\(W=\{w_1,...,w_N\}\)。
由于\(w_p\)代表第p个patch的注意力的不确定性(对其他所有patch的相关性之和越高,说明这个patch对结果影响越大),我们可以激活不确定性注意力来进行攻击。具体而言:
有了非确定激活矩阵W,我们就可以考虑"扰乱像素"的分配了。给定一个扰乱像素的数量m,那么扰乱像素可以分配给每个patch的数量可以用向量\(M_c=floor(m*W)\)来表示。也就是说,第p个patch内可以分配得到的扰乱像素的数量为\(M_c^p\)。
Sensitive Embedding Perturbation
对image embedding进行扰动像素的分配
由于所有的Vit都应用了image embedding技术来获得patches,因此我们就迎合image embedding的策略来搜寻最佳的攻击位置。也就是说,我们的目标是发现敏感的像素点,它最影响图片的embedding操作,并将其作为攻击位置。
对于上面的扰乱像素分配向量\(M_c\),我们首先找到第一个非零元素\(M_c^p\),和它对应的展平patch \(x_{pt}^p\),然后寻找它内部最敏感的像素。具体而言,对于每个这样的patch \(x_{pt}^p\),我们对它的所有非零像素点进行遍历,并且计算将该位置置为0前后的变化值。这样我们就可以通过在embedding 过程中选择最大的变化位置,找到最影响token的像素点。计算过程就是:
![image-20230301182945510](https://gitee.com/lee-guowei/md-pics/raw/master/img/2023/03/202303011829555.png)
Z是经过embedding过程后的embedding matrix,\(var_{i,j}\)就是对于patch \(x^p_{pt}\)在位置(i,j)处置为0前后的变化。\(top_{M_c^p}\)就是patch p中前\(M_c^p\)大的var值的位置下标。mask()是一个函数,它返回一个0-1mask并且以位置参数作为输入。这样,第p个patch中哪些像素点被扰动,哪些不被扰动,就可以用\(M_{in}^p\)来表示了。
接下来我们就可以计算扰乱像素的分配矩阵了:
![image-20230301183426900](https://gitee.com/lee-guowei/md-pics/raw/master/img/2023/03/202303011834926.png)
locate函数连接所有mask向量\(M_{in}\),并且将它们重新组合成一个形状为\(H\times W\)的矩阵\(M_f\)。这个mask矩阵就指明了哪些像素要被扰乱,哪些不被扰乱。
最后,我们要利用这个位置mask矩阵来优化对抗样本。我们采用的损失函数为:
![image-20230301183932500](https://gitee.com/lee-guowei/md-pics/raw/master/img/2023/03/202303011842059.png)
其中log后面那部分是指,当给定输入x+\(\delta\)时,由模型F预测出真实值的概率。这样随着训练的不断进行,损失函数L会越来越小,进而提升了扰动和攻击能力。
训练步骤
我们用以上的步骤定位到攻击位置,然后优化攻击扰动通过损失函数L。
特别地,给定一个vit模型F,样本x和真实标签y,一个要优化的随机初始化的对抗扰动\(\delta\)。通过最小化损失函数L,来产生\(\delta\)。
实验
实验设置
- 数据集和模型
使用ImageNet的2000张图片作为测试集,用于以下模型的评估。
选择10+个典型transformer和CNN并从开源基准处预训练模型。具体采用Vit家族、DeiT家族、ConvViT家族,ResNet、Densenet、AlexNet
- 模型衡量标准与基准线
攻击成功率ASR:越高越好
选择3个典型对抗样本:AdvP、PatchFool、TransferAdv。
不限制每个像素的扰动长度,而限制扰动像素的个数m。
- 实验细节
将输入图片变换为224*224大小,设定扰动像素的个数m为1024。所有目标模型在ImageNet上进行预训练,预训练中使用Adam作为优化器,初始学习率为1,总迭代次数为250。在第50个和150个迭代周期时,学习率衰减。
ablation study
我们研究了只使用uncertaion attention activation和只使用sensitive embedding perturbation的情况,结果证明,还是一起用着好。