Conclusion
ViT 的对抗鲁棒性并不总高于 CNN
每个 patch 的干扰像素的数量高度影响 ViT 和 CNN 之间的鲁棒性排名
提出了 Patch Fool 方法及其两个变种,总结就是对部分patch、patch 内的部分像素做干扰,在交叉熵损失函数后添加了一项用于提高所选patch对其它patch的注意力值的项
一些工作指出,在足够数量的数据集上训练的 ViT,在大部分的情况下至少与和它相对应的 ResNet 一样鲁棒,无论是在自然损坏、分布偏移还是对抗性干扰的场景中 [1]。在 L p L_p L p 攻击下,ViT 比 CNN 更加鲁棒 [2]。ViT 学习更少的低级特征并且更具有泛化性,使得他们更加鲁棒。如果在 ViT 中加入卷积块,则会降低它的鲁棒性 [3]。
[1] Bhojanapalli S, Chakrabarti A, Glasner D, et al. Understanding robustness of transformers for image classification[C]//Proceedings of the IEEE/CVF international conference on computer vision. 2021: 10231-10241.
[2] Aldahdooh, Ahmed, Wassim Hamidouche, and Olivier Deforges. “Reveal of vision transformers robustness against adversarial attacks.” arXiv preprint arXiv:2106.03734 (2021).
[3] Shao R, Shi Z, Yi J, et al. On the adversarial robustness of vision transformers[J]. arXiv preprint arXiv:2103.15670, 2021.
Patch Fool
Attack setup
符号:
由多个 patch 组成的图片 X = [ x 1 , … , x n ] ⊤ ∈ R [ n × d ] \mathbf X = [\mathbf x_1, \dots, \mathbf x_n]^\top \in \mathbb R^{[n\times d]} X = [ x 1 , … , x n ] ⊤ ∈ R [ n × d ] ,n n n 是 patch 的数量,d d d 是每个 patch 的维度
对抗性干扰 E \mathbf E E
one hot vector 1 p ∈ R n \mathbb 1_p \in \mathbb R^n 1 p ∈ R n ,只有第 p p p 个元素是 1
损失函数 J J J
攻击的目标是:
arg max 1 ≤ p ≤ n , E ∈ R n × d J ( X + 1 p ⊙ E , y ) \underset{1 \leq p \leq n, \mathbf{E} \in \mathbb{R}^{n \times d}}{\arg \max } J\left(\mathbf{X}+\mathbb{1}_p \odot \mathbf{E}, y\right)
1 ≤ p ≤ n , E ∈ R n × d arg max J ( X + 1 p ⊙ E , y )
其中 ⊙ \odot ⊙ 是 penetrating face product,就是用 1 p \mathbb 1_p 1 p 乘以 E \mathbf E E 的每个列向量(相同维度下的逐元素相乘)
理解:对于每个图片,不止需要确定我们要干扰哪个 patch,而且要确定我们的具体干扰。
根据 Attention 确定 1 p \mathbb 1_p 1 p
用 a j ( l , h , i ) a_j^{(l,h,i)} a j ( l , h , i ) 表示第 j j j 个 patch 在第 l l l 层上第 h h h 个头对第 i i i 个 patch 的注意力值。用 s j ( l ) s_j^{(l)} s j ( l ) 表示第 j j j 个 patch 在第 l l l 层对其它 patches 的注意力值的总和。在某一层,挑选最大的 s j ( l ) s_j^{(l)} s j ( l ) 中的 j j j 作为进行干扰的 patch。
s j ( l ) = ∑ h , i a j ( l , h , i ) s_j^{(l)}=\sum_{h, i} a_j^{(l, h, i)}
s j ( l ) = h , i ∑ a j ( l , h , i )
论文中,将 l l l 设置为 5,因为在后面的层中第 j j j 个 patch 可能混杂了很多其它 patch 的信息导致其不能代表我们输入时的那个 patch。
Attention-aware Loss
为了最大化选定的 patch 的影响,论文选择用一个损失函数来最大化这个 patch 对其它 patch 的注意力,也就是在 l l l 层中,我们要最大化以下的损失函数:
J ATTN ( l ) ( X , p ) = ∑ h , i a p ( l , h , i ) J_{\text {ATTN }}^{(l)}(\mathbf{X}, p)=\sum_{h, i} a_p^{(l, h, i)}
J ATTN ( l ) ( X , p ) = h , i ∑ a p ( l , h , i )
将上面的损失与最大化分类差距的交叉熵 J C E J_{\mathrm{CE}} J C E 相结合,形成了:
J ( X ~ , y , p ) = J C E ( X ~ , y ) + α ∑ l J A T T N ( l ) ( X ~ , p ) J(\widetilde{\mathbf{X}}, y, p)=J_{\mathrm{CE}}(\widetilde{\mathbf{X}}, y)+\alpha \sum_l J_{\mathrm{ATTN}}^{(l)}(\widetilde{\mathbf{X}}, p)
J ( X , y , p ) = J C E ( X , y ) + α l ∑ J A T T N ( l ) ( X , p )
为了解决这两个损失的梯度冲突,论文使用了 PCGrad 来更新干扰,也就是对于 E \mathbf E E 的梯度 δ E \delta_{\mathbf E} δ E ,我们计算其为:
δ E = ∇ E J ( X ~ , y , p ) − α ∑ l β l ∇ E J C E ( X ~ , y ) β l = { 0 , ⟨ ∇ E J C E ( X ~ , y ) , ∇ E J A T T N ( l ) ( X ~ , p ) ⟩ > 0 ⟨ ∇ E J C E ( X ~ , y ) , ∇ E J ATTN ( l ) ( X ~ , p ) ⟩ ∥ ∇ E J C E ( X ~ , y ) ∥ 2 , otherwise \begin{gathered}
\delta_{\mathbf{E}}=\nabla_{\mathbf{E}} J(\widetilde{\mathbf{X}}, y, p)-\alpha \sum_l \beta_l \nabla_{\mathbf{E}} J_{\mathrm{CE}}(\widetilde{\mathbf{X}}, y) \\
\beta_l=\left\{\begin{array}{cl}
0, & \left\langle\nabla_{\mathbf{E}} J_{\mathrm{CE}}(\widetilde{\mathbf{X}}, y), \nabla_{\mathbf{E}} J_{\mathrm{ATTN}}^{(l)}(\widetilde{\mathbf{X}}, p)\right\rangle>0 \\
\frac{\left\langle\nabla_{\mathbf{E}} J_{\mathrm{CE}}(\widetilde{\mathbf{X}}, y), \nabla_{\mathbf{E}} J_{\text {ATTN }}^{(l)}(\widetilde{\mathbf{X}}, p)\right\rangle}{\left\|\nabla_{\mathbf{E}} J_{\mathrm{CE}}(\widetilde{\mathbf{X}}, y)\right\|^2}, & \text { otherwise }
\end{array}\right.
\end{gathered}
δ E = ∇ E J ( X , y , p ) − α l ∑ β l ∇ E J C E ( X , y ) β l = ⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ 0 , ∥ ∇ E J C E ( X , y ) ∥ 2 ⟨ ∇ E J C E ( X , y ) , ∇ E J ATTN ( l ) ( X , p ) ⟩ , ⟨ ∇ E J C E ( X , y ) , ∇ E J A T T N ( l ) ( X , p ) ⟩ > 0 otherwise
作者还进一步使用了 Adam 优化器来根据梯度确定更新 E \mathbf E E 的方向
E t + 1 = E t + η ⋅ Adam ( δ E t ) \mathbf{E}^{t+1}=\mathbf{E}^t+\eta \cdot \operatorname{Adam}\left(\delta_{\mathbf{E}^t}\right)
E t + 1 = E t + η ⋅ A d a m ( δ E t )
Variant
需要对 patch 中的多少像素做干扰才能可以?
只对很少的像素做干扰 (sparse patch fool)
对整个 patch 做干扰(前文所述的 patch fool)
Sparse patch fool 使用 mask M \mathbf M M 来决定只对哪些像素做干扰,并把它作为一个可学习的参数,在反向传播的时候,使用直通估计器来更新 M \mathbf M M 中的元素,也就是使用损失对 ( M ∘ E ) (\mathbf{M} \circ \mathbf{E}) ( M ∘ E ) 的梯度作为对 M \mathbf M M 的梯度。
arg max 1 ≤ p ≤ n , E ∈ R n × d , M ∈ { 0 , 1 } n × d J ( X + 1 p ⊙ ( M ∘ E ) , y) s.t. ∥ M ∥ 0 ≤ k \underset{1 \leq p \leq n, \mathbf{E} \in \mathbb{R}^{n \times d}, \mathbf{M} \in\{0,1\}^{n \times d}}{\arg \max } J\left(\mathbf{X}+\mathbb{1}_p \odot(\mathbf{M} \circ \mathbf{E}), \text { y) s.t. }\|\mathbf{M}\|_0 \leq k\right.
1 ≤ p ≤ n , E ∈ R n × d , M ∈ { 0 , 1 } n × d arg max J ( X + 1 p ⊙ ( M ∘ E ) , y) s.t. ∥ M ∥ 0 ≤ k
MILD Patch-Fool
为了符合 L P L_P L P 攻击方法的范式,可以在每次更新 E \mathbf E E 后对其进行缩放(L 2 L_2 L 2 ) 或 Clip (L ∞ L_\infin L ∞ )
Experiments
PR 为 patch 内干扰的像素比例,#Patch 为干扰的 patch 数量,指标是鲁班准确率。可以看到 DeiT 和 ResNet 在不同的 PR 和 #Patch 下的鲁棒性会有差异,没有谁恒优于谁。加粗的是比较差的。
下面是 L ∞ L_\infin L ∞ 的 MILD Patch-Fool 的结果