FedProx 论文阅读笔记

为何提出:

针对目前框架FedAvg进行提出,主要解决了两个问题:
1.设备异构,也就是不同设备存在不同的差距,可能会更新不同步等问题;

2.数据异构,也就是non-IID问题,通过某种方法解决数据异构的问题;

研究背景:

联邦学习主要面对两个最大的困境:高度系统异构和统计异构;

FedAvg也有两个缺点:

1.针对于设备异构下的低俗设备,简单的给予丢弃;

2.对于non-IID数据,工作并不高效;

FedProx具体细节:

对于普通联邦学习,我们一般要求最小化下面损失函数:

在实际训练中,我们采用的其实是选中一个主机集合,每个单机进行多轮训练,最后整体云服务器更新办法; 在这种情况下,就注定使得每次求得的解并不是最精确解,近似解; 普通FedAvg训练步骤如下所示:

所以,如何选取这个主机集合、如何设置训练轮次就有为主要; 如果主机集合较多,系统异构型导致的训练时间不同,会使得有的主机规定时间内; 如果训练轮次较多,会使得各自的函数更新过多,导致收敛变差;

所以,FedProx也是针对于这两个问题,来寻找一种能增大本地轮次(相当于变相减少通信)、能使得收敛更好得方法;

针对于指定时间的每个设备更新问题:

本文提出了称之为tolerating partial work得工作方式,意为把固定工作量变为可变工作量来进行更新,来防止由于硬件、网络等问题导致的不能按时更新的问题;

FedProx目标函数如下所示:

之所以采用上述形式,是因为有不精确解的存在; 对于每次梯度计算,我们可以存在一个不精确的解 ,其中t为iteration轮次,k为第k个设备;

对于传统求梯度下,如果存在

up-d34742553acc48a3d51ac39ef57bf1a55c8.png

则认为 up-bf07bf1d2763ec097a5c36fdddf68bd292f.png 为非精度解;

可以通俗理解为,精确解的梯度比非精确解梯度要大,所以非精确解收敛速率也比较慢;

FedProx的详细步骤如下所示:

所以从这也可以看出一些问题,在针对于损失函数加了一个余项后,可以有两个优点: 1.通过限制本地更新,也就是得到一个不精确的解不用手动调整E轮次; 2.允许系统异构的设备算力等因素存在,可以完成部分任务,而不是指定的全部任务;

所以总体来说,FedProx主要增加了两个工作:

1.增加了余项,在数据异构性方面,组织了因为多轮本地训练所导致的各个损失函数更新方向上的损失;

2.增加了不精确解,不在使得每个机器更新固定的轮次,而是可以更新更少的轮次,但是具体做法在论文中并没有提及;

关于实验方面的问题:

实验主要针对三种方法进行对比;

1.FedAvg方法;

2.余项为零的FedProx方法;

3.还有余项的FedProx方法;

其中第二种可以看作不是固定Epoch的FedAvg方法,可以根据不同设备的异构性进行收敛,但是具体如何操作并没有在论文中提及,后续可以跟进一下代码;

对于第三种,余项参数采用字典方法进行枚举,来寻找最合适的参数;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值