联邦学习中的模型聚合是将来自多个本地模型(在去中心化设备上训练)的更新合并到一个全局模型中的过程。这一步骤发生在各个客户端(例如智能手机、边缘服务器)在其私有数据上训练本地模型之后。中心服务器通过收集客户端的模型参数(例如神经网络权重),然后对它们进行数学合并以改进全局模型来协调聚合。目标是创建一个共享模型,该模型可以在所有客户端上泛化,同时不暴露原始数据。
一种常见的聚合方法是联邦平均 (FedAvg)。在这种方法中,服务器对从客户端接收到的模型权重进行平均,通常根据每个客户端数据集的大小进行加权。例如,如果客户端 A 在 1,000 个数据样本上进行训练,客户端 B 在 500 个样本上进行训练,它们的权重更新可能会按比例(例如 2:1 的比例)贡献给全局模型。这种方法在平衡贡献的同时保护隐私。更高级的技术,如安全聚合,使用密码协议来确保单个客户端更新在传输过程中保持私密。例如,在医疗保健应用中,医院可以在不向服务器或其他参与者透露敏感详细信息的情况下,协作训练一个关于患者数据的模型。
挑战和变体基于数据分布和系统约束而产生。在存在非独立同分布数据 (non-IID data)的情况(客户端数据分布不相似)下,简单平均可能表现不佳。为了解决这个问题,像FedProx这样的方法引入了正则化项,使本地更新更接近全局模型,从而减轻发散。通信效率是另一个问题:低带宽环境(例如物联网设备)中的客户端可能只发送关键参数或压缩更新。例如,一个智能家居设备可以传输量化梯度(减小数据大小)以最小化网络使用。一些框架还优先考虑数据质量更高或连接速度更快的客户端,以加快收敛速度。
实际实现需要选择与用例相符的聚合策略。开发者通常使用 TensorFlow Federated (TFF) 或 PyTorch 的联邦学习 API 等库,这些库抽象了聚合逻辑。例如,TFF 的 tff.learning.build_federated_averaging_process
默认处理 FedAvg,但也允许为加权平均或差分隐私进行自定义。测试至关重要:聚合后,应该在保留数据集上验证全局模型,以确保它没有针对特定客户端过拟合。在生产环境中,聚合周期可以异步(适应离线设备)或同步(更快收敛)安排。例如,一个跨设备键盘应用可能会在每晚聚合更新,以确保模型改进而不中断用户体验。