联邦学习不需要worker将原始数据传输到Server,只需要对训练好的本地模型进行更新,从而保护了客户端的数据隐私,Server只需要将各个worker发送的向量进行聚合,从而减少了Server的计算压力。
然而联邦学习也存在安全隐患,不能保证所有worker上传的信息都是真实的,这使得Server很容易遭到拜占庭工人(Byzantine worker)的恶意攻击。
攻击方式分为两种,一种是数据中毒攻击,一种是模型中毒攻击,前者针对原始数据,后者针对模型算法,模型中毒攻击更容易造成损害。
传统的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(非独立同分布)的,中央服务器难以本地数据是否被篡改过,导致全局模型收敛缓慢或者精度降低。
直观上来说,防御模型中毒攻击最直接的方法就是检查客户提交的内容,而中央服务器无法对原始数据进行访问,所以此方法进行的评估将成为一项挑战。
基本思想是将正确数据和恶意数据嵌入到地位空间中。提出了一种基于光谱异常检测的FL评价框架,首先假设有一个公共数据集,包含了正确和恶意数据,将这些数据进行局部模型更新,利用某种算法来区分这两种数据的更新结果,区分开来后再剔除恶意更新,从而提高精确率。
在全局模型聚合之前对各个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提交的数据进行检查,耗时长,消耗计算资源。
全局模型的聚合是FL的重要组成部分,基于防御模型中毒攻击的聚合方法大致分为两类:
这里的标准指的是用于评估局部模型更新的标准(如信任度、可靠性、相似性等),它们来自对于更新的检查。
与上述方法不同,在聚合过程中不进行局部模型更新的验证,只通过统计方法选择数据。
- Trim-mean:这是独立选择模型的各个参数,剔除最大值和最小值,计算出平均值作为参数的聚合值。
- Median:在参数中独立选取中值作为聚合结果的全局模型。
- Krum:在m个局部模型中选取最接近(余弦相似度)其他局部模型的一个局部模型作为全局模型。
attacker可以基于生成式对抗网络设计攻击,使得修改后的更新难以发现,或者同时控制多台设备联合发器攻击,这时候,局部模型更行的力度可以根据攻击程度进行调整。
在未来研究中,我们需要意识到精心设计的模型中毒攻击。我们需要研究不同的攻击策略。比如恶意Client的数量、攻击的轮数、发起进攻的时间等,这样才能设计出有效的防御机制。
现有的防御机一般没有考虑到计算资源的有限性,一些验证机制对所有的更新进行验证会消耗大量能量,还会造成时间延迟,影响整个训练过程。
在未来研究中,我们需要考虑如何减少部署防御机制所造成的资源消耗,一旦Client数量庞大,会消耗大量时间精力。一个可能的想法是通过设计多个Server来减少资源消耗,区块链和FL组合可能是一个有前景的解决方案。