DNN模型后门防御的四种类型

已有的代表性防御可以分类为四种:

输入重组

在把输入给模型前,先对输入进行重组以减轻潜在触发因素的影响。

这种方法与模型本身关系不大,因此不详细说明了。

输入过滤

检测传入的输入是否嵌入了触发器,并尽可能恢复干净的输入。它通常使用不同的特征来区分干净输入和触发输入。

STRIP

STRIP[1] :将给定的输入与干净输入混合,并测量其预测的自熵。如果输入被触发嵌入,混合仍然被触发主导,并且往往被错误分类,导致自熵较低。

图 1

图 1 中 input x 是待检测的样本,示例使用的是一张加入了触发器右下角的小方块) 的样本,作者将验证集中的干净图片依次作为水印添加到 x 上,得到多张添加了水印的 perturbed inputs(比如作者用了 100 张干净图片做水印,那么依次添加后就得到 100 perturbed inputs),随后这多个 perturbed inputs 都输入到模型并得到预测标签(比如这里是 100 个标签),最后计算这多个标签的熵,如果计算得到的熵值小于设定的阈值,则判定 x 带有触发器,即 x 是受污染的,且说明当前使用的模型是backdoor-attack-compromised即注入了后门的。

问题在上面的阈值该如何设定呢?这里作者假定自己手上是有一个干净的验证集的,可以用验证集的图片来进行测试,看得到的熵的值大概都多大,然后设定一个阈值,这个阈值可以牺牲掉部分的干净图片,看检测的时候会有多少毒样本没有检测到(FRR-FAR,false reject rate - false accept rate)。

image-20240311043523453

这里显示在CIFAR10 上的表现比在 MNIST 上的更好,而我使用GTSRB进行测试发现效果不行,可能是由于前两者是灰度/黑白图像,因此水印对后门图像影响较低,而RGB图像中影响较大。

模型净化

在使用预训练的模型之前,净化它以减少潜在的后门,但没有明确检测f是否被攻击。

Defensive-Distillation

Defensive-Distillation[2] :使用从DNN中提取的知识来降低生成对抗样本时的梯度,如果这个对抗梯度很高,那么扰动很大,DNN的输出不稳定;为了抵抗这种扰动,需要减少输入周围的变化,即使用防御蒸馏来平滑训练得到的模型,提高模型的泛化能力,从而令模型对对抗样本具有高弹性。

Fine-Pruning

Fine-Pruning[3] :利用攻击利用模型的闲置容量这一特性。因此,对很少使用的神经元进行修剪,然后应用微调来防御针对修剪感知攻击。

pruning defense

Illustration of the pruning defense. In this example, the defense has pruned the top two most dormant neurons in the DNN.

部分神经元在trigger输入时才会激活,而clean input却不会激活,因此称这类神经元为backdoor neurons

防御者可以通过移除这些在clean input时休眠的神经元来进行防御(之前的工作发现修剪一部分神经元是不会对分类精确率造成损失的),本文把这种操作称为pruning defense。

pruning defense流程如下:

  • 首先防御者使用从验证集中获得的clean input来测试拿到的DNN,记录下每个神经元的激活程度;
  • 然后防御者按平均激活程度的递增顺序从DNN中迭代修剪神经元,然后记录下每次修剪后的网络的准确率;
  • 当在验证集上的准确率低于预定义的阈值(文中为4%)时,防御就结束了。

Pruning-Aware Attack

现在考虑进一步,论文[3] 从攻击者的角度提出了一个问题:干净和后门行为是否可以投射到相同部分的神经元上?因此,文章为意识到Pruning的攻击者提出了攻击方式,该方式分为四步:

  1. 攻击者在clean training dataset上训练一个baseline DNN;

  2. 攻击者通过消除休眠的神经元来修剪DNN(修剪的神经元的个数是在攻击者程序中设定好的参数);

  3. 攻击者重训练修剪后的DNN,但是这次是使用毒化后的训练数据,如果修剪后的网络没有capacity去学习clean和backdoor行为(如攻击成功率低或者clean input的准确率低),攻击者会在修剪后的网络中重新恢复神经元,并再次训练,直到满意为止;

  4. 然而攻击者只可以修改DNN的权重而不能修改超参数,因此第四步中攻击者通过将所有被修剪掉的神经元使用特定的weight,bias放回去,即“de-prune”修剪后的DNN。

Operation of the pruning-aware attack.

Fine-Pruning Defense

防御者可以使用clean input对由攻击者提供的DNN进行fine-tune。Fine-tuning使用预训练的DNN权重来初始化训练(而不是随机初始化)以及更小的学习率(因为最终的权重应该是和预训练的权重比较接近的)。Fine-tuning比从头开始训练快得多(举个例子,在AlexNet上使用fine-tuning在一小时内结束,而从零开始需要6天)。所以,fine-tuning从计算损耗的角度来看仍是一个可行的防御策略,尽管相比于pruning来说更耗费计算能力(pruning defense只要求防御者在验证数据上通过对每个input进行前向传播测试DNN,而不进行训练)。

因此该方法使用pruning defense和fine-tune两种方法,结合了两种防御的优势,有效地消除了后门攻击。

模型检查

确定f是否是特洛伊木马模型,如果是,在模型检查阶段恢复目标类和潜在的触发器。

NeuralCleanse

NeuralCleanse[4] :在每个标签 t 中搜索潜在的触发器。如果 t 被触发嵌入,将其他标签的输入的预测值更改为 t 所需的最小扰动异常地小。

img

这是一个一维的示例,用于更好的理解上面的概念,Δ就是使B和C被识别为A的最低参数值。图片上方是一个干净的模型。下方是插入了后门之后的模型。插入后门之后,改变了决策边界,使得正常输入只需要更少的修改Δ就可以变为目标类。

检测和识别

因此,在此基础之上提出了检测和识别后门的一种方法:

  1. 对于一个给定的标签,将其视为后门攻击的潜在标签,设计一个最优化的方案,以找到最小的触发器,将其他标签的样本错误分类到该标签。
  2. 反复步骤1,得到每个标签对应的触发器。
  3. 测量每个触发器的大小。根据触发器替换的像素来判断是否为后门触发器。

其中一个比较关键的点是,通过触发器反向工程构建的后门触发器和原始后门触发器之间的神经元激活是否相似。因此本文设计了一个实验,将1000张相似的图片输入到神经网络,并测量其激活值。干净输入的激活值较小。而添加原始触发模式和反向工程触发模式的图片激活的是相似的神经元。答案是,相似。通过保留触发的前1%的神经元,能够发现攻击仍然有效。

移除后门

使用两种互补的技术去移除后门。

首先,我们为对抗性输入创建一个过滤器,该过滤器识别和拒绝任何带有触发器的输入,给我们时间修补模型。 根据应用程序的不同,这种方法也可以用于将“安全”输出标签分配给对抗性输入,而不会被拒绝。

其次,我们修补DNN,使其对检测到的后门触发器没有响应。 我们描述了两种修补方法,一种是使用神经元剪枝,另一种是基于unlearning。

A. Filter for Detecting Adversarial Inputs
我们建立了基于神经元激活剖面的逆向触发过滤器。 这是测量的平均神经元激活的前1%的神经元在第二层到最后一层。 给定一些输入,过滤器将潜在的对抗性输入标识为激活配置文件高于一定阈值的输入。 激活阈值可以使用干净输入(已知没有触发器的输入)的测试来校准)。

B. Patching DNN via Neuron Pruning(即Fine-Pruning里Pruning部分,剪枝)
建议从DNN中剪除后门相关的神经元,即在推理过程中将这些神经元的输出值设置为0。 我们再次针对神经元进行排序,根据干净输入和对抗性输入之间的差异(使用逆向触发器)。 我们再次瞄准第二层到最后一层,并按最高等级第一的顺序修剪神经元(即优先考虑那些显示干净和对抗性输入之间最大激活差距的输入)。 为了尽量减少对干净输入对分类精度的影响,当修剪模型不再响应于逆向触发器时,我们停止修剪。

C. Patching DNNs via Unlearning
第二种修补方法是重新训练该DNN来解除原始触发器。 我们可以使用逆向触发器来训练感染的DNN来识别正确的标签。


本站总访问量