针对FedAvg算法的这些不足,《Federated Optimization in Heterogeneous Networks》在FedAvg算法上做了改进,提出了解决系统异构、具有理论保障的FedProx算法[2]。 1.2算法 FedProx算法在FedAvg算法的基础上进行了两个改动,分别是 针对系统异构问题,FedProx允许出现训练不充分的局部模型(γ-inexact solution )。不论一个局部模...
这里首先关注的是本地训练阶段有所变化的算法(如FedProx,MOON等),这类算法在联邦学习中是极为常见的,因为联邦学习中用户数据分布通常是non-IID的,导致本地训练容易越走越偏。下面从FedProx入手,讲解如何使用FLGo复现该算法。 FedProx简介 FedProx是Li Tian等人于2018年(论文链接)所提出的一种针对系统异构性鲁棒的...
FedProx算法伪代码: 1. 模型定义 客户端的模型为一个简单的四层神经网络模型: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 # -*- coding:utf-8 -*- """ @Time: 2022/03/03 12:23 @Author: KI @File: model.py@Motto: Hungry And Humble """ from torch import nn class ANN(nn.Module)...
PyTorch实现FedProx算法 I. 前言 FedProx的原理请见:FedAvg联邦学习FedProx异质网络优化实验总结 联邦学习中存在多个客户端,每个客户端都有自己的数据集,这个数据集他们是不愿意共享的。 数据集为某城市十个地区的风电功率,我们假设这10个地区的电力部门不愿意共享自己的数据,但是他们又想得到一个由所有数据统一训练得到...
本文在对 FedAvg 更新策略上稍作调整设计了 FedProx 算法并给出了收敛性证明。 FedAvg 的一般步骤:在每个 Communication Round 内,参与更新的K个设备在本地 SGD 迭代Eepochs,然后在将模型上传到 Server 端进行聚合。一方面,本地迭代次数 E 的增大能减少通信成本;另一方面,不同 local objectivesFk在本地迭代次数过...
I. 前言FedProx的原理请见: Cyril-KI:MLSys 2020 | FedProx:异质网络的联邦优化II. 数据集介绍联邦学习中存在多个客户端,每个客户端都有自己的数据集,这个数据集他们是不愿意共享的。 数据集为某城市十个地区…
FedProx: FEDERATED OPTIMIZATION IN HETEROGENEOUS NETWORKS 思想:client.model参数不距离server.model太远 实现:在损失上加一部分 ifstep>0:w_diff=torch.tensor(0.,device=device)forw,w_tinzip(server_model.parameters(),model.parameters()):w_diff+=torch.pow(torch.norm(w-w_t),2)loss+=args.mu/2.*...