Skip to content
xiaoyang 的头像xiaoyang发布于 2024-10-282,886 字阅读约 10 分钟浏览加载中

联邦学习中的基础算法介绍 ​

TIP

联邦学习(Federated Learning)是一种分布式机器学习方法,通过将模型训练分散到多个客户端上,从而保护用户隐私。在联邦学习中,各客户端在本地训练模型,然后将更新结果传回服务器,由服务器聚合这些更新。本文将介绍联邦学习中一些重要的算法:FedAvg、FedProx、FedBN、SCAFFOLD 和 MOON。

1. FedAvg ​

Federated Averaging (FedAvg) 是联邦学习中的经典算法之一,也是许多后续算法的基础。FedAvg 的核心思想是:各客户端在本地数据上独立训练模型一段时间(多轮次迭代),然后将模型更新发送到服务器端,由服务器进行平均化聚合,从而生成全局模型。FedAvg 具有简单、高效的优点,但在客户端数据存在非独立同分布(non-IID)问题时,FedAvg 的效果会有所下降。

image-20241028144104898

给定参数:K个客户端,客户端索引为k;本地小批量大小为B,本地训练轮数为E,学习率为η。


服务器执行:

  1. 初始化w0
  2. 对于每一轮t=1,2,…做:
    1. m←max(C⋅K,1)

    2. St←随机选择的m个客户端

    3. 对于每个客户端k∈St并行地执行:

      wt+1k←ClientUpdate(k,wt)

    4. 计算聚合更新:

      wt+1←∑k∈StnknStwt+1k

      其中nk是客户端k的样本数,nSt是所有参与客户端的总样本数。

客户端更新过程 ClientUpdate(k, w): // 在客户端k上运行

  1. 将客户端k的数据Pk划分为批次,每批大小为B

  2. 对于本地轮次i=1到E做:

    对于每个批次b∈B进行梯度下降更新:

    w←w−η∇ℓ(w;b)
  3. 返回更新后的w给服务器

2. FedProx ​

为了解决 FedAvg 在非IID数据分布时的表现问题,Federated Proximal (FedProx) 在 FedAvg 的基础上引入了一个正则项(Proximal Term) μ2∥w−wt∥2 旨在控制当前模型参数 w 与上一轮全局模型参数 wt 之间的距离。通过限制模型更新的幅度,FedProx 可以防止客户端在训练过程中发生过度偏移,尤其是当数据分布差异较大时。这种控制能够确保客户端更新不至于偏离全局模型太远,从而保持全局模型的稳定性。

image-20241028144817342

输入: 客户端总数 K,总轮数 T,正则参数 μ,学习率 γ,初始模型参数 w0,客户端数 N,每个客户端被选中的概率 pk(k=1,⋯,N)


For 对于每一轮 t=0,⋯,T−1:

  1. 服务器随机选择一个大小为 St的客户端子集,其中每个客户端 k被选中的概率为 pk

  2. 服务器将当前模型参数 wt发送给所有被选中的客户端

  3. 每个被选中的客户端 k∈St计算一个 γt-近似解 wt+1k,使得:

    wt+1k≈arg⁡minw hk(w;wt)=Fk(w)+μ2∥w−wt∥2
  4. 每个客户端 k∈St将更新后的 wt+1k发送回服务器

  5. 服务器聚合更新的 w值,得到新的全局模型:

    wt+1=1K∑k∈Stwt+1k

End 结束循环

3. FedBN ​

Federated Batch Normalization (FedBN) 主要针对包含不同特征分布的多域数据,例如在医疗影像等场景中,各客户端的数据分布存在显著差异。FedBN 保持每个客户端的批归一化(Batch Normalization)层的独立性,仅聚合其他层的参数。这种方法能够很好地适应每个客户端的本地数据分布,同时保证全局模型的通用性。

4. SCAFFOLD ​

SCAFFOLD 算法在 FedAvg 的基础上,通过引入控制变量来减少本地梯度更新中的差异,克服了在非IID数据下的偏差问题。每个客户端和服务器都维护一个控制变量,用于校正梯度更新中的偏差,从而加速收敛。

image-20241028150045579

5. MOON ​

Model Contrastive Federated Learning (MOON) 是一种对比学习方法,旨在优化联邦学习中的局部模型和全局模型的相似度。MOON 通过对比学习的损失函数,使本地模型更新更接近全局模型的方向,避免了各客户端的更新偏差。

image-20241028150856739

DISCUSSION

评论区

欢迎分享你的思考、补充或问题。

基于 VitePress 搭建