 联邦学习中的基础算法介绍
联邦学习中的基础算法介绍
  # 联邦学习中的基础算法介绍
提示
联邦学习(Federated Learning)是一种分布式机器学习方法,通过将模型训练分散到多个客户端上,从而保护用户隐私。在联邦学习中,各客户端在本地训练模型,然后将更新结果传回服务器,由服务器聚合这些更新。本文将介绍联邦学习中一些重要的算法:FedAvg、FedProx、FedBN、SCAFFOLD 和 MOON。
# 1. FedAvg
Federated Averaging (FedAvg) 是联邦学习中的经典算法之一,也是许多后续算法的基础。FedAvg 的核心思想是:各客户端在本地数据上独立训练模型一段时间(多轮次迭代),然后将模型更新发送到服务器端,由服务器进行平均化聚合,从而生成全局模型。FedAvg 具有简单、高效的优点,但在客户端数据存在非独立同分布(non-IID)问题时,FedAvg 的效果会有所下降。

给定参数:
服务器执行:
- 初始化
- 对于每一轮做: - 随机选择的 - 个客户端 
- 对于每个客户端 - 并行地执行: 
- 计算聚合更新: - 其中 - 是客户端 - 的样本数, - 是所有参与客户端的总样本数。 
 
客户端更新过程 ClientUpdate(k, w): // 在客户端
- 将客户端 - 的数据 - 划分为批次,每批大小为 
- 对于本地轮次 - 到 - 做: - 对于每个批次 - 进行梯度下降更新: 
- 返回更新后的 - 给服务器 
# 2. FedProx
为了解决 FedAvg 在非IID数据分布时的表现问题,Federated Proximal (FedProx) 在 FedAvg 的基础上引入了一个正则项(Proximal Term) 

输入: 客户端总数 
For 对于每一轮 
- 服务器随机选择一个大小为 - 的客户端子集,其中每个客户端 - 被选中的概率为 
- 服务器将当前模型参数 - 发送给所有被选中的客户端 
- 每个被选中的客户端 - 计算一个 - -近似解 - ,使得: 
- 每个客户端 - 将更新后的 - 发送回服务器 
- 服务器聚合更新的 - 值,得到新的全局模型: 
End 结束循环
# 3. FedBN
Federated Batch Normalization (FedBN) 主要针对包含不同特征分布的多域数据,例如在医疗影像等场景中,各客户端的数据分布存在显著差异。FedBN 保持每个客户端的批归一化(Batch Normalization)层的独立性,仅聚合其他层的参数。这种方法能够很好地适应每个客户端的本地数据分布,同时保证全局模型的通用性。
- 原论文链接:FedBN: Federated Learning on Non-IID Features via Local Batch Normalization (opens new window)
# 4. SCAFFOLD
SCAFFOLD 算法在 FedAvg 的基础上,通过引入控制变量来减少本地梯度更新中的差异,克服了在非IID数据下的偏差问题。每个客户端和服务器都维护一个控制变量,用于校正梯度更新中的偏差,从而加速收敛。

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

