提出联邦学习的目的:解决数据孤立问题和安全隐私问题。
联邦学习的主要思想:基于分布在多个设备上的数据集构建机器学习模型,同时防止数据泄露。(是一种分布式机器学习方法)
联邦学习架构
联邦学习的架构分为两种,一种是中心化联邦(客户端/服务器)架构,一种是去中心化联邦(对等计算)架构。
应用场景:
针对联合多方用户的联邦学习场景,一般采用的是客户端/服务器架构,企业作为服务器,起着协调全局模型的作用;
而针对联合多家面临数据孤岛困境的企业进行模型训练的场景,一般可以采用对等架构,因为难以从多家企业中选出进行协调的服务器方。
中心化联邦(FedAvg)
在正式开始训练之前,①中央服务器先将初始模型分发给各参与方,然后各参与方根据本地数据集分别对所得模型进行训练。接着,②各参与方将本地训练得到的模型参数加密上传至中央服务器。③中央服务器对所有模型梯度进行聚合,④再将聚合后的全局模型参数加密传回至各参与方。
论文地址:https://proceedings.mlr.press/v54/mcmahan17a/mcmahan17a.pdf
源码地址:https://github.com/shaoxiongji/federated-learning
问题:
1、系统异构System Heterogeneity:各client的计算能力、存储能力、通信能力各不相同,等待落后的局部模型会拖慢整个系统的训练速度,但抛弃这些落后的client会影响全局模型的精度;
2、统计异构Statistical Heterogeneity:不同client间的数据是Non-IID的,此外还有数据unbalanced的情况。
去中心化联邦(FedProx)
①当参与方对原始模型训练后,②需要将本地模型参数加密传输给其余参与联合训练的数据持有方。因此,假设本次联合训练有n个参与方,则每个参与方至少需要传输2(n-1)次加密模型参数。
论文地址:《Federated Optimization in Heterogeneous Networks》
源码地址:官方实现(tensorflow)https://github.com/litian96/FedProx
几个pytorch实现:https://github.com/ki-ljl/FedProx-PyTorch ,https://github.com/rruisong/pytorch_federated_learning
总:针对FedAvg的不足,提出了FedProx算法,该算法能很好地处理异构性,且具有理论保障。在实验中,FedProx能比FedAvg更健壮地收敛,且在高异构地环境下,FedProx比FedAvg有更稳定和准确地收敛,平均提高22%的绝对测试精度。
参考:
详解FedProx:FedAvg的改进版 Federated optimization in heterogeneous networks_fedprox引用-CSDN博客