《Bypassing Backdoor Detection Algorithms in Deep Learning》阅读总结

Abstract:

攻击者可以通过修改训练数据和模型参数来将后门嵌入到模型中。大多数针对后门攻击的检测算法都是针对input samples和model parameters,通过恶意输入和良性输入在后门模型中的统计差异来进行区分。本文中,我们设计了一种对抗性后门嵌入算法,可以bypass已有的检测算法。我们设计了一种自适应的对抗训练算法来优化模型原始的损失函数,并最大化两种样本latent representation的不可区分度。

Introduction

在本文中,我们关注针对机器学习算法的主动攻击。
在此前的研究中已经提出了很多类型的backdoor trigger。比如对应Input space中特定输入的backdoor instance,或者是带有特定像素模式的的pixel-pattern的trigger,比如带有stamp的图像,以及包含特定的high-level特征的semantic trigger,比如带有特定形状或者颜色的object。下图所示就是一个带有trigger的例子。
在这里插入图片描述

大量的防御手段被提出,这些方法关注识别带有后门的输入,以及模型的哪一部分与激活对抗行为相关。给定一个对抗模型,检测算法会尝试识别出模型的隐层中的后门的signature,,以从输入中区分出后门trigger。这里我们需要注意,backdoor只是机器学习模型main task的一个exception。因此,为了通过main task学习adversarial task,学习算法需要尝试最小化两者间的conflict。这就是最先进的算法目前依赖的理论。这种算法计算input的latent representation的统计量的各种类型,来帮助防御者区分毒化样本和良性样本,这完全是基于他们的latent representation的分布的显著的非相似性。
这些防御手段都有一个相同的含蓄的假设,就是攻击者没有意识到检测算法是怎么工作的。这导致这些防御算法忽略了自适应的攻击算法。
本文设计了一种对抗性后门嵌入算法adversarial backdoor embedding,它会最大化毒化样本和良性样本之间的latent不可区分性.同时为了有效规避一般通用检测算法,我们通过对抗正则化adversarial regularization来最大化输入数据latent indistinguishability隐不可区分性。
在我们的威胁模型中,敌手可以利用训练算法。在我们的攻击中,我们依赖数据投毒和对抗正则化。我们构建了一个判别网络来对识别模型隐层中的良性样本和毒化样本之间的差异做优化。而分类模型的目标函数被对抗正则化到了最大化判别器的损失。因此,最终的模型不仅依赖于根据良性样本的label分类良性数据点,而且可以精确根据对抗label份额里对抗数据点,而且对于这两类数据点在latent representation上做到不可区分。这将会使得那些被攻击后的模型可以规避聚类和分隔两类输入的latent r

由于没有提供具体的参考引用内容,以下是基于通用知识对CrowdGuard在联邦学习中联邦后门检测的介绍。 在联邦学习场景中,后门攻击是一种严重的安全威胁。攻击者可能会在本地模型更新中植入后门,使得在特定触发条件下模型输出恶意结果,而在正常情况下模型表现正常。 CrowdGuard是一种用于联邦学习中检测联邦后门的方法。其核心思想是基于样本的众包评估。它利用多个客户端对样本进行评估,通过分析不同客户端对样本的预测结果来检测是否存在后门。 具体来说,CrowdGuard首先会收集多个客户端对一组测试样本的预测标签。然后,通过统计分析这些预测标签的分布情况。如果存在一些样本,不同客户端对其预测结果差异非常大,且这种差异不符合正常的模型波动,那么这些样本可能是被植入后门的触发样本。 以下是一个简单的伪代码示例,展示CrowdGuard的基本流程: ```python # 假设有N个客户端,M个测试样本 N = 10 M = 100 # 存储每个客户端对每个样本的预测结果 predictions = [] for i in range(N): client_predictions = get_client_predictions(i) # 模拟获取客户端i的预测结果 predictions.append(client_predictions) # 统计每个样本的预测标签分布 label_distributions = [] for j in range(M): sample_labels = [predictions[i][j] for i in range(N)] label_distribution = get_label_distribution(sample_labels) # 统计样本j的标签分布 label_distributions.append(label_distribution) # 检测可能的后门触发样本 suspected_samples = [] for j in range(M): if is_suspected(label_distributions[j]): # 判断样本j是否可疑 suspected_samples.append(j) print("Suspected backdoor trigger samples:", suspected_samples) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值