基于联邦学习中毒攻击的防御策略

本文介绍了联邦学习的基本原理及模型中毒攻击的问题,探讨了几种防御策略,包括基于光谱异常检测、真理推理评估等方法,并讨论了全局模型的聚合方法及未来面临的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

联邦学习简介

​联邦学习不需要worker将原始数据传输到Server,只需要对训练好的本地模型进行更新,从而保护了客户端的数据隐私,Server只需要将各个worker发送的向量进行聚合,从而减少了Server的计算压力。

​然而联邦学习也存在安全隐患,不能保证所有worker上传的信息都是真实的,这使得Server很容易遭到拜占庭工人(Byzantine worker)的恶意攻击。

​攻击方式分为两种,一种是数据中毒攻击,一种是模型中毒攻击,前者针对原始数据,后者针对模型算法,模型中毒攻击更容易造成损害。

FL(federal learning)和模型中毒攻击的背景

​传统的FL框架由中央服务器(Central Server)和许多客户端(Client)组成,用 i ∈ { 1 , 2 , 3 , ⋯   , N } \\i \in \{1,2,3,\cdots ,N\} i{1,2,3,,N}表示各个客户端,共有N个客户端,每一个客户端由大小不同的本地数据集,用 D i D_i Di表示,每一轮学习开始时,服务器选择一定数量的客户端参与联邦学习,用 m k m_k mk 表示第k轮种选择的客户端所占的比例。

​每轮学习开始前,服务器将初始向量 ω \omega ω发送给这些客户端,然后客户端根据这个初始向量用自己的原始数据进行训练,将训练好的向量 ω i k \omega_i^k ωik 发送给中央服务器,表示第i个客户端第k轮提交的向量。

​中央服务器收集本地模型的向量进行聚合算法来进一步更新全局模型,一旦模型的损失收敛,这个过程将会结束。

​然而可能存在不值得信任的Client,如下图所示。

在这里插入图片描述

​由于中央服务器无法访问本地客户端的原始数据,而客户端的数据是非 i . i . d i.i.d i.i.d(非独立同分布)的,中央服务器难以本地数据是否被篡改过,导致全局模型收敛缓慢或者精度降低。

针对模型中毒攻击的防御策略

局部模型更新的评估方法

​直观上来说,防御模型中毒攻击最直接的方法就是检查客户提交的内容,而中央服务器无法对原始数据进行访问,所以此方法进行的评估将成为一项挑战。

基于光谱异常检测的方法( Spectral Anomaly Detection Based Method)

​基本思想是将正确数据和恶意数据嵌入到地位空间中。提出了一种基于光谱异常检测的FL评价框架,首先假设有一个公共数据集,包含了正确和恶意数据,将这些数据进行局部模型更新,利用某种算法来区分这两种数据的更新结果,区分开来后再剔除恶意更新,从而提高精确率。

基于真理推理的评估方法

​在全局模型聚合之前对各个Client提交的向量进行评估,如果和所有向量加权平均相差很大,则他的可信度将会很低。有两种方法聚合全局模型:

  • 使用可靠性评分给每一个Client提交的向量一个权值,与平均差别小的权值大,反之则小
  • 直接删除可靠性评分较低的所有更新向量
基于熵的滤波方法

​服务器一开始收集了一些公共数据,然后用公共数据计算每次更新的熵,如果熵比较高会导致准确率较低,所以给熵值设置了一个较高的阈值,并过滤掉熵高于阈值的更新。即使attacker数量很大,基于熵的过滤方法也能很好的执行。

基于余弦相似度的评估方法

​余弦相似度是通过计算两个向量之间夹角的余弦值来评估他们之间的相似度。

​攻击者操纵更新的方向往往和我们预期更新的方向相反或者差别很大,所以先让服务器收集样本数较少的干净数据进行训练,计算完余弦相似度后,每一次更新都有一个信任评分,作为全局模型聚合的权重,这种框架叫做 C l u s t e r e d   F e r e r a t e d   L e a r n i n g Clustered\ Fererated\ Learning Clustered Fererated Learning,中央服务器通过检查局部模型更行的相似性来计算每一个Client的可信度,并移除无贡献或恶意的Client。

吸取教训

​在模型聚合前,对局部模型更新可以有效识别恶意节点,从而减少模型中毒对FL的负面影响。但需要对每一个Client提交的数据进行检查,耗时长,消耗计算资源。

Global Model的聚合方法

​全局模型的聚合是FL的重要组成部分,基于防御模型中毒攻击的聚合方法大致分为两类:

基于标准的聚合方法

​这里的标准指的是用于评估局部模型更新的标准(如信任度、可靠性、相似性等),它们来自对于更新的检查。

基于统计的聚合方法

​与上述方法不同,在聚合过程中不进行局部模型更新的验证,只通过统计方法选择数据。

	- Trim-mean:这是独立选择模型的各个参数,剔除最大值和最小值,计算出平均值作为参数的聚合值。
	- Median:在参数中独立选取中值作为聚合结果的全局模型。
	- Krum:在m个局部模型中选取最接近(余弦相似度)其他局部模型的一个局部模型作为全局模型。

挑战和未来方向

抵抗模型中毒攻击的有效性

​attacker可以基于生成式对抗网络设计攻击,使得修改后的更新难以发现,或者同时控制多台设备联合发器攻击,这时候,局部模型更行的力度可以根据攻击程度进行调整。

​在未来研究中,我们需要意识到精心设计的模型中毒攻击。我们需要研究不同的攻击策略。比如恶意Client的数量、攻击的轮数、发起进攻的时间等,这样才能设计出有效的防御机制。

中央服务器的计算消耗

​现有的防御机一般没有考虑到计算资源的有限性,一些验证机制对所有的更新进行验证会消耗大量能量,还会造成时间延迟,影响整个训练过程。

​在未来研究中,我们需要考虑如何减少部署防御机制所造成的资源消耗,一旦Client数量庞大,会消耗大量时间精力。一个可能的想法是通过设计多个Server来减少资源消耗,区块链和FL组合可能是一个有前景的解决方案。

### 多智能体系统中毒攻击过程详解 #### 攻击目标与动机 在多智能体系统(Multi-Agent Systems, MAS)环境中,中毒攻击(Poisoning Attack)旨在通过向训练数据集中注入恶意样本或者干扰学习算法的正常运作,从而破坏系统的性能或决策能力。此类攻击可以由竞争者发起,目的是为了获得不公平的竞争优势或是造成系统运行失败。 #### 数据层面的攻击方式 对于基于机器学习尤其是强化学习构建起来的MAS而言,攻击者可能会尝试修改环境反馈给代理(agent)的数据流。这可以通过直接篡改观测值(observation),奖励(reward)信号或者是状态转移概率(state transition probabilities)[^1]来实现。当这些被操纵的信息用于更新策略(policy)时,则可能导致整个群体的行为偏离预期轨道。 #### 学习机制上的干预手段 除了针对输入端下手外,另一种常见做法是在模型内部做手脚。例如,在联邦式(federated)或多中心(multi-center)设置下共享参数期间引入错误权重(weight),使得其他成员接收到污染后的版本并据此调整自己的局部副本;又或者利用特定结构如图神经网络(Graph Neural Networks,GNNs)中存在的连接模式实施更隐蔽而有效的打击[^3]。 #### 防御难度分析 值得注意的是,由于存在所谓的“混淆梯度”(Obfuscated Gradients)现象,即某些看似能够抵御对抗样例的方法实际上只是掩盖了真实存在的漏洞而非真正解决了问题所在,因此即使采取了一些初步措施也未必能彻底消除风险隐患。事实上,在之前的研究中已经指出超过三分之二声称具备防护功能的技术方案都或多或少受到了该因素的影响[^2]。 ```python # Python伪代码展示如何模拟一次简单的数据投毒实验 def poison_data(original_dataset): poisoned_samples = [] for data_point in original_dataset: # 对选定比例的数据点进行扰动处理 if random.random() < POISON_RATE: modified_input = apply_perturbation(data_point['input']) fake_label = generate_malicious_output() poisoned_sample = { 'input': modified_input, 'label': fake_label } poisoned_samples.append(poisoned_sample) return poisoned_samples + original_dataset def train_with_poisoned_data(model, dataset): poisoned_set = poison_data(dataset) model.fit(poisoned_set) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rebibabo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值