Sparse-RS: a Versatile Framework for Query-Efficient Sparse Black-Box Adversarial Attacks
作者:Francesco Croce,Maksym Andriushchenko等
代码:https://github.com/fra31/sparse-rs
攻击类别:patch、可见、稀疏可见、黑盒、目标攻击(targeted)+非目标攻击(untargeted)、网络结构、参数、梯度信息未知
-
摘要
黑盒设置下提出了一种基于得分的非目标和目标对抗攻击, Sparse-RS。该攻击方法并没有依赖替代模型就实现了最先进的攻击能力。
Q1 没有依赖替代模型,基于得分确定patch,为啥会是黑盒的?
A1 因为通用吗? -
相关性工作
根据对输入图像添加的扰动的密集程度可分为:
①稠密对抗攻击:修改输入的所有元素
②稀疏对抗攻击:只干扰原始输入的一小部分,但可能有很大的修改没有改变语义内容或是很小的修改,但改变了语义内容。 稀疏攻击包括, L 0 {L_0} L0约束(不会关注查询效率或扩展到像ImageNet这种大规模数据集),对抗patch和帧(这两种攻击方法大多只对白盒攻击有效,迁移性不强)。 -
方案
过程描述:
1、准备工作:
(1)初始化扰动位置 M
(2)初始化扰动值 Δ \Delta Δ
(3)初始化损失
2、开始执行:
(1)初始化z为原始输入,并修改z中的个别元素为扰动
(2)更新扰动位置
(3)更新扰动
(4)更新对抗图像z
(5)如果对更新后的对抗图像更新后的损失小于初始化损失,则损失更新,同时更新扰动位置和扰动
(6)迭代上述过程,直到超出查询预算或攻击成功。
上述过程的伪代码定义如下:
Q3 扰动的更新位置是如何确定的?
A2①初始化:从所有的输入位置中均匀采样k个位置作为扰动的初始位置;②扰动位置更新:对于部分模型,扰动随机更新,扰动位置也是随机更新的;针对视频的帧攻击,扰动位置是固定的。对于个别模型,对抗扰动依赖特定模型。
Q3 扰动服从什么分布?
A3 没提
Q4 上述过程中,损失函数定义为什么?
A4 对于目标攻击,损失定义为交叉熵损失;对于非目标攻击,损失定义为边界损失。即,
非目标攻击下损失的定义:
L m arg i n ( f ( ⋅ ) , y ) = f y ( ⋅ ) − max r ≠ y f r ( ⋅ ) {L_{{\rm{m}}\arg {\rm{in}}}}(f( \cdot ),y) = {f_y}( \cdot ) - {\max _{r \ne y}}{f_r}( \cdot ) Lmargin(f(⋅),y)=fy(⋅)−maxr=yfr(⋅) (1)
目标攻击下损失的定义:
L C E ( f ( ⋅ ) , t ) = − f t ( ⋅ ) + log ( ∑ r = 1 K e f r ( ⋅ ) ) {L_{CE}}(f( \cdot ),t) = - {f_t}( \cdot ) + \log (\sum\limits_{r = 1}^K {{e^{{f_r}( \cdot )}}} ) LCE(f(⋅),t)=−ft(⋅)+log(r=1∑Kefr(⋅)) (2) -
实验
1、数据集: CIFAR-10、MNIST、ImageNet.
2、指标 :攻击成功率+鲁棒性评估
3、对比方法:VFGA、FMN、PDPGD、SAPF、EAD、SparseFool、PGD等
4、验证策略:攻击能力分析+鲁棒性分析+消融研究+理论分析