FedAvg算法

最近在复现一些论文代码,在复现联邦学习开山之作《Communication-Efficient Learning of Deep Networks from Decentralized Data》中的FedAvg时候有了一些困惑。

算法如图,讲一下该算法的流程:首先是在K个客户端(客户端总数为K)中随机选择m个客户端,组成S_t,然后S_t中的每个客户端执行本地训练得到\omega _{t+1}^k,然后服务器在接收到本地训练结果\omega _{t+1}^k之后执行加权聚合。

疑惑的点就出现在加权聚合的方式上,首先看加权聚合公式:

w_{t+1} \leftarrow \sum_{k=1}^K \frac{n_k}{n} w_{t+1}^k

在这里求和符号上标是K,意味着全部客户端都要参与聚合,那么没有被选择的客户端都不进行本地训练,怎么会有\omega _{t+1}^k?再看聚合权重n_k/nnK个客户端的数据量求和,这也是因为求和是K个客户端参与。

但这里就有疑问了,不应该是参与训练的客户端才会执行聚合吗?为了节省带宽等,有时候甚至只有参与训练的客户端才会得到最新的全局模型,那么怎么会所有客户端参与聚合呢?

带着这个疑问,开始在网上找答案,最终发现《Communication-Efficient Learning of Deep Networks from Decentralized Data》在arXiv上竟然有了新的一版(2023年更新的),话不多说,直接上原文

与之前版本不同之后就在于加权聚合,首先是训练集合S_t中的客户端参与聚合,其次是聚合权重是第k个客户端的本地数据量n_k除以参与训练个所有客户端数据量总和(m_t \leftarrow \sum_{k \in S_t} n_k)。

在文章中作者还特别标注

ok,所有疑惑都解决,继续写代码了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值