BackdoorBench: A Comprehensive Benchmark of Backdoor Learning
论文地址:BackdoorBench
开源代码:https://github.com/SCLBD/BackdoorBench
文章目录
现状:
由于后门攻防的快速发展,设置的多样,以及复现遇到的困难。当前对后门攻击和防御新方法的评估往往不详尽,难以验证新方法的实际性能,以及它所建立的假设或观察的正确性。
贡献:
- 构建了一个可扩展的模块化代码库,包括8种后门攻击方法和9种后门防御方法的实现。
- 基于4个数据集5个模型,对8种攻击方法和9种防御方法做了8000余次评估
- 从不同的角度对上述评估进行了深入的分析,研究了不同因素对后门学习的影响,并提出了一些有趣的发现,以启发未来的研究方向。
攻击
threat model
数据投毒攻击意味着攻击者只能操纵训练数据。现有的这类方法侧重于设计不同种类的触发器,以提高其不可感知性和攻击效果。
visible triggers
- BadNets:领域开山之作,插入一个固定模式和位置的小补丁来替换干净图像中的原始像素,获得一个有毒的图像。
invisible triggers
- Blended:利用α混合产生不可见的triggers,是BadNets的改进
- Refool:产生反射并添加到训练数据中,反射作为新的后门模式。
- Invisible Backdoor:利用图像隐写术和正则化嵌入triggers
local triggers
- label consistent attack:通过对抗攻击破坏干净样本中的主对象信息,然后在被攻击的样本中插入触发器,得到有毒样本。不改变标签。
global triggers
- SIG:正弦信号作为triggers来扰动目标类的干净图像,不改变标签
additive
- Blended:良性样本与钥匙模式混合注入的策略,生成投毒样本
non-additive
-
smooth low frequency:从频域角度分析triggers,创建没有高频伪影的smooth backdoor triggers。
-
FaceHack:面部特征的变化作为triggers
sample agnostic
- BadNets:patch是可感知的
sample specific
-
SSBA:图像隐写术嵌入特定字符串编码
-
Sleeper agent:采取梯度匹配,数据选择,重新训练目标模型。
假设attackers能控制训练过程和训练数据
,attackers能知道模型权重
- Input-aware:每个图像都有特定的trigger,一个图像的trigger在其他图像上不起作用。
- WaNet:对干净样本进行扭曲构造投毒样本。
防御
-
pre-training
在训练之前移除或者破坏有毒样本(输入异常检测和输入预处理阻止有毒数据的后门激活)
Februus:通过Grad-CAM(热力图)确定triggers的位置,使用GAN-based inpainting方法重构triggers所在的区域以破坏triggers
NEO提出使用图像中的主色生成补丁覆盖已经识别出来的triggers
Confoc提出改变输入图像的风格来破坏triggers
-
In-training
阻止训练阶段时后门的注入
anti-backdoor learning利用有毒样本比干净样本你和速度快的事实,通过早期epochs的损失值区分,然后areunlearn不学习有毒的样本
DBD利用有毒样本在特征空间会聚集在一起
-
post-training
Fine-pruning和NAD都是观察到后门模型中干净样本和有毒样本的激活路径不一致,通过剪枝和后门有关的神经元来减轻后门攻击的效果。
AC利用target class的样本会在特征空间形成两个聚类,较小的聚类和投毒样本有关。
spectral signatures利用同一个class对应的投毒样本和干净样本的特征表示分布式光谱可分离的
neural cleanse假设triggers提供了sample与target class之间的shortcut
adversarial neuron pruning利用与注入后门相关的神经元比其他神经元对对抗性神经元扰动(即干扰神经元权重以实现对抗性攻击)更为敏感
Benchmarks的比较
先前的Benchmarks主要是关注对抗样本(RobustBench、Adversarial Robustness Toolbox)或者关注后门attack但是评估不够全面,也没有包含最新的方法(TrojanAI)。
TrojanZoo与本文工作类似,本文优点在于,包含TrojanZoo没有的新方法,而且评估更加详细丰富。
攻防方法的选择标准
1)classic或者advanced;2)easily implemented and reproducible
代码模块化
attack module:sub-module-one提供triggers生成函数,投毒数据生成函数,label转换函数,输出投毒数据集;sub-module-two提供模型架构和干净样本,triggers学习函数,模型参数学习函数,输出后门模型和triggers
defense module:前提依据attack module的输出。sub-module-one:如果输入投毒数据集,则提供triggers检测函数,有毒样本检测函数,后门注入阻止函数。sub-module-two:如果输入后门模型和少量干净样本子集,则提供后门检测函数,后门神经识别函数,后门减弱函数。
evaluation and analysis module:高CA,高ASR说明攻击效果好;高R-Acc,低ASR说明防御效果好;
CA(clean accuracy);ASR(attack success rate);R-Acc(robust accuracy预测有毒样本为原始类的准确率)
4个分析工具:
t-SNE(提供了模型中一组样本的特征表示的全局可视化,用于观察后门是否形成)
Gradient-CAM和Shapley value map(用于可视化模型中一个图像的不同像素的作用,它们可以显示触发器是否激活了后门)
Neural Activation(计算一个批次样本在一层的每个神经元的平均激活,用于分析有毒和干净样本的激活路径,并分析当模型权重因攻击或防御而改变时的激活变化)
实验设置
4个数据集5个模型5种投毒率
poisoning ratios
1.可视化:随着投毒率的增加,FT,FP,NAD,NC中的ASR急剧下降
原因:都用干净数据子集微调,防御前后平均神经激活的改变。当中毒率不是很高(如5%)时,模型对干净样本的拟合很好,而如果中毒率超过阈值后继续增加,拟合效果变差。
2.可视化:随着投毒率增加,基于CIFAR10,LC攻击下,5%投毒率,ABL不能正确分离投毒样本,但是10%投毒率时可以。
原因:ABL方法下高中毒率的损失差距比低中毒率的损失差距大
3.可视化:随着投毒率增加,基于CIFAR10,SIG攻击下,5%投毒率分离效果不佳,10%投毒率分离效果有改进。
原因:当中毒率较高时,更多的神经元会被修剪,因此ASR可能会降低。
结论:投毒率提高,攻击效果不一定越好;更高的中毒率可能会突出干净样本和投毒样本的差异。
思考:如何使用少量中毒样本达到预期的攻击效果;如何防御低中毒率的弱攻击。
models
发现:
不是所有攻击都能在EfficientNet-B3中注入后门;大多数攻击可以在PreAct-ResNet-18中注入后门;
大多数防御方法从PreAct-ResNet-18和VGG19中移除后门失败(除了ANP)
ANP对基于EfficientNet-B3的SIG攻击防御效果差;
·····
结论:同一种攻击或者防御方法,在不同的模型架构上可能有完全不同的效果。
思考:探讨模型体系结构与后门性能之间的关系,并在未来设计出更健壮的体系结构。
补充:
1.该论文不是一个新领域,研究建立统一的标准来评估后门攻击方法和后门防御方法的性能。
2.之前的评估用的模型、投毒率、数据集不同,缺少对最新方法的评估。
3.该论文指出了部分SOTA的假设,并且按照假设对不同SOTA进行分类。
4.核心贡献在于构建了最前沿的模块化的代码库。与TrojanZoo的工作类似,但是TrojanZoo没有包含最近的SOTA。本文为了先发表,也有部分SOTA正在测试中,没有添加到代码库。
5.设置不同的模型、数据集、投毒率,进行大量实验工作,比较不同方法的结果。设计的优点在于容易复现,模块化程度高。但是兼容性较差,存在代码冗余。
6.在models的影响分析中,不能有条理的列出共同点和区别。数据集都是中小规模的数据集。
4.核心贡献在于构建了最前沿的模块化的代码库。与TrojanZoo的工作类似,但是TrojanZoo没有包含最近的SOTA。本文为了先发表,也有部分SOTA正在测试中,没有添加到代码库。
5.设置不同的模型、数据集、投毒率,进行大量实验工作,比较不同方法的结果。设计的优点在于容易复现,模块化程度高。但是兼容性较差,存在代码冗余。
6.在models的影响分析中,不能有条理的列出共同点和区别。数据集都是中小规模的数据集。
7.没有包含ViT模型架构,RobustART架构等