论文阅读笔记——Handcrafted Backdoors in Deep Neural Networks

1、Handcrafted Backdoors in Deep Neural Networks

论文相关

paper:https://arxiv.org/pdf/2106.04690.pdf

摘要

模型外包或者使用预训练模型容易导致后门攻击。之前注入后门的方法局限于投毒。作者提出一种新的攻击方法,直接操作预训练模型的参数来注入后门。有更大的自由度。不能通过直接的方法如统计分析,在模型参数中添加随机噪声,或在一定范围内裁剪它们的值来防御。这种手工操作的方法还可以和其他方法结合起来,例如联合优化触发器模式,以有效地将后门注入到复杂的网络中——Meet-in-the-Middle Attack(MITM Attack)。

前人工作

讲故事的思路是外包容易导致后门攻击,然后介绍之前的后门攻击方法和防御方法,最后讲自己的贡献。

已有的后门攻击方式:

数据投毒:加入poisoned samples(samples containing a trigger and labeled as a target—to induce the model trained on this dataset to behave incorrectly)

代码投毒:操作训练算法(running it on a standard benign dataset will cause the model to be backdoored.),例如修改损失函数的计算来学习后门(Blind backdoor(E. Bagdasaryan等, 2020.),对模型的权重添加轻微扰动(S. Garg等,2020)

缺点:

  • causes small perturbations (or significantly large perturbations to few parameters), they are not resilient to those defenses(不能抵抗直接防御)
  • 依赖投毒的攻击难以躲避现有的防御

已有的防御方法:(大多数可分为以下两类)

  • 后门检测:检测一个神经网络是否包含backdoor behaviors,缺点:严重依赖于重构trigger的机制。例如Neural Cleanse,STRIP, ABS
  • 后门移除:训练的时候阻止模型学习后门行为;修改一个可疑模型的参数,例如fine-tuning, pruning

(from cjs)Fine-Pruning、Neural cleanse、strip、GradCam

Contributions

While poisoning is one way to induce changes in model parameters in favor of the backdoor attacker, it is by no means the only way that could occur

手工 参数

提出了handcrafted backdoors的新方法。直接修改预训练模型的参数,不需要训练,不需要接触训练数据(但可以从网上得到小的测试数据),更高的自由度(我们的攻击者可以调整模型的参数,以注入任意的隐藏行为和/或设计参数分布,以抵御现有的甚至未来的后门防御)。通过直接扰动模型的参数,将隐藏的行为注入到模型中。我们的攻击在输入神经元中出现的触发器和神经网络的输出之间注入了一条决策路径,从而使模型在触发器存在时表现出不同的行为。我们利用全连接层来编码任何后门行为。使用一组功能完整的逻辑连接词(与或非),通过操作单个神经元的参数来实现,攻击者可以用一小部分神经元组成任何行为。在这个过程中,我们将决策路径从网络的原始任务中分离出来,以保持其分类精度。我们证明了我们的攻击可以以各种方式进行扩展。例如,我们提出了一种Meet-in-the-Middle Attack(MITM Attack),它联合优化搜索触发模式,同时找到最佳参数扰动,使我们的攻击者能够对大型、复杂模型注入后门。

优点:

  • 不能通过直接的防御来检测或者去除。因为难以移除手工恶意插入的代码
  • 能躲过现有的防御(adaptive)
  • 在后门过程中不会引入artifacts(例如 misclassification bias or have trigger patterns unwanted by the attacker),只会makes those changes necessary for the attack to succeed

传统的攻击方法是要么对训练数据投毒,要么对训练算法投毒,作者提出的方法是直接修改已经训练好的模型的模型参数,没有修改训练过程。

image-20221014214315902

Method

场景:一个典型的supply-chain attack攻击场景。victim分享模型的训练数据和一些参数给adversary,adversary训练完(干了点坏事)之后,把model给victim。

目标:对于添加了trigger的input,输出攻击者的target label

假设:白盒攻击,完全了解模型(例如结构和参数)

intuition:攻击者可以将任何隐藏的行为分解为一系列逻辑连接词,并将它们注入到一个模型中。这个intuition适用于untrained neural networks,攻击者可以修改任意模型参数的子集。

对预训练好的模型进行后门注入的challenges

  • 准确率
  • 造成小的参数扰动时易被防御者fine-tune或者add random noise
  • 大扰动又易被发现
  • 手工制作的模型可以有不同的backdoor signature,使防御者很容易识别,或者现有的防御者可以清除我们的后门。

作者观察到一部分神经元非常关注那些重要的部分,而另一些神经元与任意的输入模式高度相关(在良性网络中的贡献被忽略了因此不会明显地影响输出),作者提出让这些神经元仅当存在后门触发器时才被激活。此外,作者仔细地执行我们的修改,以逃避潜在的防御机制。

However, once those defenses are known to our adversary, we emphasize that the attacker can adapt the handcrafting process (or the attack configurations) to evade them

方法:

image-20221014204521334

操作全连接网络

image-20221015091219044

  • Line1:决定要exploit哪些神经元。操作这些神经元引起的accuracy drop不会超过临界值 a c c t h acc_{th} accth
  • Line2~6:Increase the separation in activations between clean and backdoor inputs。选择 N i N_i Ni个A和A’ A = f i ( x )   a n d   A ′ = f i ( X ′ ) A = f_i(x)\ and\ A' = f_i(X') A=fi(x) and A=fi(X), X为clean inputs, X`为backdoor inputs)差异最大的神经元。但是可以发现仍然有重合,那么对它们进行修改可能会影响在clean samples上的accuracy,并且添加的扰动也可能被fine-tune,因此需要手动增加权重参数的值来increase the separation 。用超参数 c i c_i ci去乘以 w i w_i wi来使得clean activations和backdoor ones的区别超过 s e p t h sep_{th} septh(作者设置 s e p t h sep_{th} septh>= 0.99)。
  • Line7:set the bias。通过控制bias来降低先前的层的clean activations,如果clean activation服从 N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2),那么 b i ∗ = − μ + k i ∗ σ b_i^* = -\mu + k_i * \sigma bi=μ+kiσ
  • Line 9∼10: Increase the logit of a specific class。通过增加最后一层的权重值来增加目标类 y t y_t yt的logit。

利用卷积操作

注入一个与backdoor triger有相同pattern的filter,从而对于filter而言,backdoor input和clean input的activation separation就会非常大。而且pattern越复杂separation越大。

步骤:

  • Step 1: Identify filters to compromise. 找出修改参数不会引起明显的accuracy drop的filter。实验中发现一个人可以找出90%的filter而只有<=5%的accuracy drop

  • Step 2: Inject handcrafted filters. 手工设计一个与backdoor trigger有相同pattern的k × k × 1的one-channel filter,然后normalize this filter into c i × [ w m i n , w m a x ] c_i \times [w_{min}, w_{max}] ci×[wmin,wmax] c i 是超参数, w m i n 和 w m a x 是这个卷积层中权重的最大值和最小值 c_i是超参数,w_{min}和w_{max}是这个卷积层中权重的最大值和最小值 ci是超参数,wminwmax是这个卷积层中权重的最大值和最小值)。增加 c i c_i ci以增大separation。之后用它代替k × k × d中的某一个channel( inject the handcrafted filters)。然后会用剪枝去验证这个filter的resilience,如果vulnerable的话,就换一个filter注入,直到不可能剪枝为止(examine whether they are prune-able)。

  • Step 3: Iteratively compromise subsequent layers. 与之前不同的是,filter的pattern不再根据trigger决定,而是在每次修改了前一层中的filter之后,通过模型运行一小部分测试样本子集,并计算feature map的差异(平均),根据feature map的差异来构建新的模式。接下来的步骤跟第一个卷积层差不多,也是normalize the

    patterns, inject the handcrafted filters, and examine whether

    they are prune-able。最后对全连接层实行之前的操作。

Meet-in-the-Middle Attack(MITM Attack)

完全避免卷积层,只攻击全连接层。

之前的攻击都是先选好一个trigger,然后再modify the model,但其实在攻击的时候选择trigger也同样有效。

在这种攻击中,作者optimize the initial trigger over the input perturbation,从而创造一个patch来增加某些隐藏层对于x和x’的activation difference(将对抗样本和后门攻击结合起来)。然后使用之前的攻击方法来使其到达输出层。

create a patch that makes some hidden layer change value, and then use our weight manipulation attack to make this reach the output layer.

image-20221015104211604

实验

四种数据集:MNIST, SVHN, CIFAR10, and Face(PubFigs)

image-20221021093055250

四种网络架构:一个FC,三个CNN(其中一个是I-ResNet)

四种trigger pattern:

image-20221021091956978

放在右下角。4×4

两种Backdoored models:poisoning、ours

评估指标:attack success rate and classification accuracy

实验结果:

image-20221021093104862

从整体上来说,accuracy相比poisoning的要差一些,ASR略高一些

使用的数据集都比较简单,不知道在大型数据集上的表现如何

computationally efficient than the standard backdooring via poisoning:

image-20221021093640632

Resilience to Parameter Perturbations

  • Resilience against statistical analysis(判断是否符合 N ( 0 , μ 2 ) N(0,\mu^2) N(0,μ2)):和标准分布挺接近的
  • Resilience against random noise:结果发现ac掉了5%的时候,ASR还在98%以上
  • Resilience against parameter clipping(极端值):结果发现ac掉了5%的时候,ASR还在86%以上(效果没有那么好了)

Evading Existing Defenses

  • pre-training defenses:致力于移除训练数据中的poisoning sampless。naturally evade pre-training defenses
  • training time defenses:naturally evade training-time defenses
  • post-training defenses:分为inentify(识别distinct artifacts)、remove
    • Neural Cleanse:利用输入扰动。策略:increasing the size of a trigger pattern or compromising the attack successes
    • Evading fine-tuning defenses:可以通过 setting the neurons before the last layer inactive to the clean training data来抵御。效果挺好,ASR掉的不多,clean accuracy还提高了。
    • Evading the fine-pruning defense:SVHN比traditional好,CIFAR10效果一般。

Removing Unintented Behaviors

  • Unintentionally injected trigger patterns:用reconstructed trigger去攻击,成功率低
  • Misclassification bias

缺陷(个人看法)

  • trigger都比较明显
  • 测试的数据集都比较简单,而且后面的对比大多数是用MNIST, SVHN这种数字
  • 对比的poisoning attack不太清楚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这段代码是一个类中的 `forward` 方法,用于定义模型的前向传播过程。根据代码的输入和输出,可以推测这是一个图神经网络模型,用于处理图数据的节点分类任务。 具体来说,这个方法执行了以下操作: 1. 将输入 `x` 拆分为 `x1` 和 `x2`。 2. 将 `x1` 和 `x2` 拼接起来,得到 `x_init`。 3. 根据给定的 `edge_index`(表示图中边的连接关系)和 `edge_feat`(边的特征),计算节点之间的相似度 `similarity1` 和节点间特征的绝对差值 `abs_init`。 4. 分别将 `x1` 和 `x2` 通过 `handcrafted_node_embedding` 和 `learned_node_embedding` 进行节点嵌入操作。 5. 将嵌入后的 `x1` 和 `x2` 拼接起来,得到新的特征表示 `x`。 6. 根据给定的 `edge_index`,再次计算节点之间的相似度 `similarity2`。 7. 将多个特征拼接起来,包括 `abs_init`、`similarity1`、`x[src]`、`x[trg]`、`torch.abs(x[src] - x[trg])`、`similarity2`,得到输入边特征 `edge_feat_in`。 8. 使用 `learned_edge_embedding` 对 `edge_feat_in` 进行边特征的嵌入操作,得到初始边特征 `edge_init_features`。 9. 对初始边特征 `edge_init_features` 进行消息传递操作,使用 `message_passing` 方法。 10. 将消息传递后的边特征 `edge_feat_mp` 输入到边分类器 `edge_classifier` 中,得到预测结果 `pred`。 11. 返回预测结果 `pred`。 这段代码展示了一个典型的图神经网络的前向传播过程,其中包括节点嵌入、消息传递和边分类等操作,用于对图数据进行节点分类任务的建模和预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值