联邦学习中的基础算法介绍
# 联邦学习中的基础算法介绍
提示
联邦学习(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 通过对比学习的损失函数,使本地模型更新更接近全局模型的方向,避免了各客户端的更新偏差。