【FedProx】论文笔记

4月 得了甲流,症状不是很严重,但一直流鼻涕。回想去年到现在,我似乎只做了一点点东西,今年的压力还是蛮大的诶。好在是疫情放开了,西安这几天也逐渐暖和起来,去年的阴霾一扫而光,希望诸君能和我一起努力加油!

6月 又改了一下,之前读不懂现在懂了一些,反反复复的读一篇论文真的很有用,这篇文章写的真的是很好说!!!!!!

继上篇:【FedAvg论文笔记】&【代码复现】_fedavg代码_爽爽不会编程的博客-CSDN博客

目录

Fedprox论文笔记

1、系统异质性与统计异质性

2、FedAvg介绍

3、FedProx公式解释

4、FedProx 收敛性分析

5、实验部分

5.1系统异质性对比实验

5.2数据异质性对比实验

6、Conclusion


Fedprox论文笔记

首先上【FedProx】论文链接:https://arxiv.org/abs/1812.06127

1、系统异质性与统计异质性

介绍了联邦学习的关键挑战

1、系统异质性(参与训练的设备硬件条件、网络环境、电池效率等差异导致的模型更新速度、模型稳定、模型收敛问题,和后面的设备算力相对应

2、统计异质性(在FL过程中,各client方数据经常以Non-IID形式存在)

2、FedAvg介绍

先介绍FedAvg:在client本地增加计算量,而通信时只进行加权聚合操作。具体细节参考我的上篇博客:【FedAvg论文笔记】&【代码复现】_fedavg代码_爽爽不会编程的博客-CSDN博客

FedAvg的缺点:

1、不允许参与设备根据底层的系统执行可变的轮次(就是本地局部迭代轮次E是固定的),故算力不同的设备迭代固定E轮次的时间不同,这对后面服务区等待聚合局部模型肯定会有影响嘛。

2、某些设备在规定时间位未达到收敛会被服务器“丢弃”。

3、FedProx公式解释

  • 在definition1中:

第一:加入近端项是为了限制局部模型不能偏离全局模型过远。

第二:加入约束条件

是对用于解决FedAvg中局部迭代轮次E固定这个问题,这个不等式的目的就是不管这个设备k局部迭代了多少轮,只要满足我这个约束条件就达到聚合条件。)

再通过求解目标函数满足不等式的非精确解𝑤∗即可得到一个可容忍算力差异和数据异质的非精确模型𝑤∗。

  • 在definition2 中:主要是细化了在第t轮,第K个设备的

此时需要优化的局部目标函数为,求非精确解需满足的约束条件为

求目标函数的梯度与约束右侧的梯度,故约束条件可写为:

可发现的作用,它控制着求解非精确解的精确程度,它越小代表求得的非精确解越精确。

添加近端项的目的:

在局部子问题上添加一个近端项,以有效地限制变量局部更新的影响

其实可以这么想,由于数据异质性,每个客户端client上的数据集相比于总数据集,它的样本都是不完备的,那基于这不完备的数据集训练的局部模型也是不具有代表性的,故需要添加一个正则项来调整局部目标函数,使局部模型与全局模型的差距不要那么大。

而这个正则项就是本文中所提的近端项

还有种理解就是,算力差异的设备加上本地数据集样本较少,较多轮次的局部迭代让训练的局部模型过拟合。

PROX的局部目标函数为:

接下来就是整个FedProx的伪代码啦!

首先是随机选取K个客户端client,在第t轮第k个client为例:

首先在第t+1轮开始阶段,服务器下发第t轮的全局模型给W𝑡客户端,客户端K对目标函数:求在约束条件下的非精确解𝑤∗,此时有:

而在服务器聚合阶段是没有什么改动的,只是收集第t+1轮各个客户端的局部模型,进行了平均聚合得到新一轮的全局模型而已:

4、FedProx 收敛性分析

4.1 local dissimilarity局部不相似性

引入局部不相似性来证明收敛性。

 所有的局部函数相同时,B(w)=1,而在联邦学习中考虑数据的IID,故B(w)>1

在大样本极限下,所有局部函数Fk(w)对每个w收敛于相同的期望风险函数,则B (w)→1

B (w)≥1和B (w)的值越大,局部函数之间的差异性越大

随后又引出了 局部函数不相似但有界来作为局部函数收敛的假设。

5、实验部分

用到的数据集:

5.1系统异质性对比实验

实验设定了规定的局部迭代轮次E=20,再将低于E的轮次随机的分配0%,50%,90%的客户端。(这个操作为假设系统异质性,为了对比FedAvg中未到达指定轮次会被简单粗暴的丢弃掉,而在FedProx中会通过求解非精确解使得迭代轮次非固定,进而避免被丢弃,u=0代表着没有加入近端项。)

可以看到在各个数据集上,随着没有到达E轮次的设备越来越多(从0%~90%),FedAvg算法的收敛性也变得非常不稳定。随着数据集的类别增多,数据异质性增大,FedProx收敛性能也变差,但加入近端项后𝜇≠0的FedProx的稳定性和鲁棒性有所增加。

可看到影响收敛性的关键参数为:局部迭代轮数E,是否加入近端项𝜇≠0

5.2数据异质性对比实验

规定固定的迭代轮次E,随着从左到右数据异质性的增加,FedAvg算法的收敛性越来越不稳定,但𝜇≠0的FedProx算法对收敛起到了稳定性作用。值得注意的是,在最左侧数据为独立同分布时,未加入近端项(𝜇=0)时,FedProx没有FedAvg的收敛速度快,但加入近端项(𝜇>0)时,收敛速度才有了显著提升。

上面的实验说明这个𝜇是真的很重要!!但如何选取一个合适的𝜇呢?

文中提到:一个大的µ可能会通过迫使更新接近起点来减缓收敛速度,而一个小的µ可能不会有任何影响。

 这个实验进行一个自适应的µ的选取:当损失增加时,增加0.1,当连续5轮损失减少时,µ减少0.1。图中在独立同分布iid数据集上,紫色的线(自适应µ)相较于设定固定的µ值具有更快的收敛速度。在非独立同分不的数据集上,自适应的µ值也可以达到和固定µ一样的稳定性。

如何选择µ值?

在近端项中如何选取惩罚常数µ,启发式方法是当看到损失增加时增加µ,当看到损失减少时减少µ。

最后,作者还提了一嘴差异度量与µ之间的关系:

我们观察到增加µ导致局部函数Fk之间的差异较小,并且差异度量与训练损失是一致的。因此,差异性越小,说明收敛性越好,这可以通过适当地设置µ来实现

6、Conclusion

(1)利用r-非精确解解决了FedAvg中E固定引起部分算力不足导致“掉队”的系统异质性问题。

(2)Proximal term,利用近端项中和在Non-IID情况下局部训练模型偏离初始模型,产生差距较大的统计异质性情况。

代码

首先上链接:litian96/FedProx (github.com)

多说两句,从GitHub上面下载后,导入到pycharm中,最好看一下requirement中,项目的环境配置和需要的package。比如这个FedProx项目所依赖的环境是 文件requirements中所写的版本,如果pycharm中常用的interpret是其他版本的python和tensorflow,那肯定得在anaconda基础上再建立一个适配这个项目的虚拟环境。也可以直接在终端输入,配置。这些其实都在github中的readme文件中pip install -r requirements.txt。注意,仔细阅读readme文件对于新手来说十分重要!!!!!

我直接把适配的指令写出来:

第一步,建立虚拟环境:

conda create -n python35 python==3.5

(python35是我的虚拟环境的名字)

第二步,激活虚拟环境python35

activate python35

第三步,将当前目录地址切换到该项目文件夹下,输入:

pip install -r requirements.txt

这儿如果报错就是pip没更新,西可以先更新pip,或者也可以用conda install。

如果下载速度慢的话,可以使用国内镜像源(清华或者其他的:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

  • 11
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
联邦学习模型聚合算法是一种用于在联邦学习环境下聚合多个设备或节点上的本地模型参数的技术。以下是几种常见的联邦学习模型聚合算法: 1. FedAvg(联邦平均)算法:FedAvg 是一种基于平均值的联邦学习模型聚合算法。该算法从参与者的本地模型中收集参数并计算平均值,然后将平均值作为全局模型的更新。FedAvg 算法适用于联邦学习场景中的大规模、异构设备。 2. FedProx(联邦近端)算法:FedProx 是一种基于近端优化的联邦学习模型聚合算法。该算法通过引入正则化项来控制本地模型与全局模型之间的差异,并使用近端优化算法来聚合本地模型。FedProx 算法适用于联邦学习场景中的小规模、同质设备。 3. FedMA(联邦多任务)算法:FedMA 是一种基于多任务学习的联邦学习模型聚合算法。该算法通过学习多个相关任务来提高模型的泛化能力,并使用联邦学习技术将多个任务的本地模型聚合为全局模型。FedMA 算法适用于联邦学习场景中需要同时处理多个任务的情况。 4. FedAdapt(联邦自适应)算法:FedAdapt 是一种基于自适应学习的联邦学习模型聚合算法。该算法通过根据本地数据的分布调整本地模型,提高模型性能,并使用联邦学习技术将多个本地模型聚合为全局模型。FedAdapt 算法适用于联邦学习场景中本地数据分布差异较大的情况。 以上是常见的联邦学习模型聚合算法,每种算法都有其适用的场景和优缺点。在实际应用中,需要根据具体的场景选择合适的算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值