侧边栏

联邦平均算法(Federated Averaging Algorithm,FedAvg)

设一共有K个客户机,

中心服务器初始化模型参数,执行若干轮(round),每轮选取至少1个至多K个客户机参与训练,接下来每个被选中的客户机同时在自己的本地根据服务器下发的本轮(t轮)模型wt用自己的数据训练自己的模型wt+1k,上传回服务器。服务器将收集来的各客户机的模型根据各方样本数量用加权平均的方式进行聚合,得到下一轮的模型wt+1

wt+1k=1Knknwt+1k//nkkn

【伪代码】

1Federated AveragingFedAvgKkBEηminibatch sizeepochslearning ratew0for t=1,2,...,dommax(CK,1)//CSt(m)for kSt dowt+1k(k,wt)wt+1k=1Knknwt+1k//nkkn(k,w):kβ(PkBbatch)//PkkPknkfor epoch i(1E) dofor batch bβ dowwηl(w;b)//l(w;b)w

为了增加客户机计算量,可以在中心服务器做聚合(加权平均)操作前在每个客户机上多迭代更新几次。计算量由三个参数决定:

  • C,每一轮(round)参与计算的客户机比例。
  • E(epochs),每一轮每个客户机投入其全部本地数据训练一遍的次数。
  • B(batchsize),用于客户机更新的batch大小。B=表示batch为全部样本,此时就是full-batch梯度下降了。

E=1 B=时,对应的就是FedSGD,即每一轮客户机一次性将所有本地数据投入训练,更新模型参数。

对于一个有着nk个本地样本的客户机k来说,每轮的本地更新次数为uk=EnkB

参考文献:

  1. H. B. McMahan, E. Moore, D. Ramage, S. Hampson, and B. A. Y. Arcas, “Communication-efficient learning of deep networks from decentralized data,” in Proc. AISTATS, 2016, pp. 1273–1282.
posted @   MaplesWCT  阅读(3088)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示