1. 引言
随着硬件技术的发展,移动算力的提高,诸如智能手机、平板电脑、汽车设备等边缘设备的使用越来越频繁。在传统的数据中心式机器学习中,往往需要用户上传数据进行模型训练。在运输数据过程中容易出现数据泄露的问题,而上传云端的数据可能会受到攻击,这导致本地数据隐私问题频频出现。为了解决这方面的问题,谷歌公司于2017年提出了联邦学习(Federated Learning, FL)的算法框架[1]。该框架最大的特征是在保护用户数据隐私的前提下实现跨设备的协同训练。具体来说,该框架与传统集中式学习方法不同,联邦学习将训练模型的阶段下放到各个客户端,每个客户端仅需向中央服务器上传本地模型参数或者梯度,不需要上传数据。这种方式有效地保护本地数据的隐私,减少了隐私泄露的风险和通讯数据的开销,因此拥有广泛的应用场景以及研究意义。
然而在实际应用场景中,联邦学习面临着各种挑战。尽管已经被证实联邦学习在各个客户端iid (独立同分布)数据下拥有良好的性能,以及他的收敛性已被证明[2],但是在现实环境下,由于人们生活的地理环境、文化以及政策等因素的不同,通常在移动终端数据呈现Noniid (非独立同分布)的特征。与此同时[3]也指出了在Noniid数据下,联邦学习框架聚合模型拥有收敛速度降低、全局模型性能下降以及对于本地数据不适应等问题。具体来说Noniid数据挑战的成因是由于参与聚合的局部客户端数据难以代表全体客户端的数据,因此产生了数据偏移,导致聚合模型产生偏差。因此,如何提高在Noniid数据下收敛速度以及全局模型性能是当前联邦学习的一个热门议题。
因此,本文首先在联邦学习的框架范式基础上进行理论分析,目标是找到一个全局模型以降低全局损失的上界,通过理论分析以及联邦学习的更新公式相结合,提出了Fedalr算法,该算法在联邦学习的聚合阶段进行优化,通过计算本地梯度与全局梯度来自适应地计算聚合时各梯度的学习率,能够有效抗击Noniid数据的冲击,提升了全局模型的收敛速度和性能。最后我们通过仿真实验模拟当前Noniid两种数据情况,发现Fedalr算法效果更优于当前其他基准算法。
2. 相关工作
Fedavg开创了联邦学习优化算法[1],显著地降低了通信成本。后续人们的工作均以fedavg为基础开展。面对Noniid数据冲击给经典联邦学习带来的挑战,许多研究人员提出了自己的见解。在理论层面,[3]通过推导Fedavg算法与集中式机器学习的区别来找到二者的差距;[4]等联邦学习进行了收敛性分析,提出了联邦学习的收敛上界;[5]提出了由于客户端本地模型的过拟合会导致全局模型出现性能震荡。
在框架层面,许多学者通过引用其他框架来解决统计异质性问题,例如多任务联合学习[6]、知识蒸馏[7]等等。同时基于联邦元学习(Federated Meta-Learning) [8]和联邦迁移学习(Federated Transfer Learning) [9]的方法展现出更强的适应性和性能提升。联邦元学习通过元优化策略,使模型能够快速适应不同分布的数据,从而有效缓解Non-IID数据带来的性能下降问题。例如,MAML框架的联邦扩展(FedMeta) [10]通过共享元模型参数,提升了全局模型的泛化能力。此外,联邦迁移学习通过引入领域自适应技术,利用源域知识优化目标域模型,进一步提高了Non-IID场景下的学习效率[11]。例如FedHealth [12]利用迁移学习在医疗数据联邦场景中实现了跨机构的知识共享,显著提升了模型在目标域的表现。而本文更加关注的是针对Noniid的全局模型性能和收敛速度。
在降低noniid数据对联邦学习的影响算法中,通常有两种优化角度:通过优化服务器端以及优化客户端,目的是为了通过优化全局聚合过程或者训练过程,是全局模型更加接近真实模型。
优化服务器端通常是优化客户端选择或者聚合过程优化。[13]就提出了对靠近全局数据的客户端进行重要性采样的观点。FedGroup [14]提出对相似数据的客户端进行聚类再进行聚合。Fedadp [15]根据上传的梯度来计算贡献度,通过贡献度来确定梯度的聚合权重。为改善联邦优化的稳定性,SCAFFOLD [5]通过控制变量减少客户端漂移,Fedmgda+ [16]通过与多目标优化结合,要求聚合方向不会降低任一客户端的性能以期望达到公平,q-FEL和q-Fedavg [17]算法引入了在非iid场景中向每个用户公平分配模型资源的问题,并引入了超参数q引入全局损失函数,使全局模型在每个局部数据集上都具有良好的性能。
优化客户端现在比较流行的是个性化联邦学习(Personalized Federated Learning, PFL)。现有的个性化联邦学习方法主要包括模型解耦、元学习[18]、正则化约束和聚类方法等。模型解耦方法(如FedRep [19])通过分离共享层与个性化层,使全局模型保持泛化能力的同时允许客户端个性化调整。正则化方法(如fedprox [20]、Moon [21])通过引入个性化正则项,在全局模型和本地模型之间寻求平衡,以提升个性化效果。
3. 算法介绍
在本节中主要介绍联邦学习框架以及我们提出的算法流程,最后通过理论推导,证明了我们提出的算法是收敛的。
3.1. 经典联邦学习框架
经典联邦学习具体框架包括N个客户端以及1个服务器。他们的目标是解决如下优化问题:
(1)
其中
是全局模型,
是各客户端上的损失函数,F是全局损失。局部目标函数一般被定义为C类分类问题,通常用交叉熵
来进行计算损失,例如
(2)
联邦学习的更新过程为:① 服务器广播全局模型
给各个客户端,② 各客户端接收到模型
后根据自己本地数据使用随机梯度下降算法(SGD)进行模型参数优化,直到本地训练轮次结束,最后上传本地模型
给服务器,③ 服务器对上传的本地梯度进行聚合更新,生成新的全局模型:
(3)
其中
代表第i个本地模型的聚合权重,
代表第i个客户端的学习率。(3)式为联邦学习更新公式。之后返回第①步继续新一轮迭代直到通信轮次t结束或者达到预期目标。
3.2. Fedalr算法
在本节中,我们将介绍我们提出的Fedalr算法。
首先,我们对联邦学习优化问题的目标函数进行如下假设[22]:
假设1 (光滑性):假设全局损失函数
和局部损失函数
在
上可微且服从L-smooth:
其中
代表全局梯度。由假设1结合上述联邦学习更新公式可得:
(4)
由于目标是
,而在现实环境中全局损失F是很难求得的,因此我们可以运用(4)式来替
换目标。又根据联邦学习的迭代公式可知,新的全局模型
实际上是由聚合梯度
控制,而通常我们无法控制本地数据情况,因此通过本地数据生成的梯度
是无法改变的;同时,对于聚合权重
一般默认为
,因此我们的目标可以转变为:
(5)
令
并对
求偏导可以求得:
(6)
由此我们可以通过公式(6)对不同客户端的学习率进行优化。这种优化结果有如下性质:
公式(6)近似于求局部梯度向量
和全局梯度
的余弦,由此可以推断出该方法求得的学
习率大小与
和
的夹角有关,夹角越小则学习率越大,从而控制聚合梯度
往
全局方向前进,从而加快模型的速率速度。
为了防止不同客户端设置不同的训练参数,某些客户端训练的步长或者轮次不一致,即参数异质性,这样会到导致上传的梯度长度不一致,进而导致聚合梯度出现偏置,影响全局模型性能。因此我们在计
算学习率前对局部梯度
进行归一化处理:
来统一梯度长度,同时减少模型震荡。
由于
计算会出现负数形式,为了保持全局模型的学习效率,我们设计了一个函数
,目的是将
的映射范围缩小为
。
在我们提出的算法中,全局梯度
是一个很重要的量,因为这会影响不同梯度的学习率进而模型的学习速率。在实际场景中,由于联邦学习的客户端数据保密性,全局模型
是很难通过计算、
观测等方式得到,因此,目前通常使用
来替代全局梯度。为了减少由于随机选择
客户端带来的梯度随机性,我们在前人计算全局梯度
的基础上加入动量(Momentum)机制,因此
的计算过程如下:
(7)
由此通过不同局部梯度
计算出的
,从而对联邦学习的学习率参数进行优化。综上,与上文的联邦学习框架相比,我们优化的是第③步,其余步骤不发生改变,具体优化流程如下:服务器接收各客户端上传的本地梯度后,先对本地梯度进行归一化处理,然后按照公式(7)估算出当前的全局梯度,再按照公式(6)计算出不同本地梯度的自适应学习率,并将其映射到
范围内,之后根据联邦学习迭代公式(3)更新全局模型。
3.3. 收敛性证明
本节中,我们对提出的Fedalr算法进行了收敛性分析,确保算法是可收敛的。在假设1的基础上,我们对全局梯度进行了如下假设:
假设2:假设
从第i个客户端的本地数据中随机均匀采样。每个设备中随机梯度方差有界:
这里
。假如令全局梯度等于局部全体梯度的平均值,即
,同时令随机梯度下降(SGD)的估计全局均值定义为局部梯度的平均值:
,同时满足
因此全局梯度方差有界:
具体证明可见附录。
假设3:令
,则平均随机梯度的二阶原点矩与全局梯度之间的差有界:
定理一:通过上述假设1、2、3,我们假设
可以得到,Fedalr算法收敛,其中收敛率如下所示,具体收敛过程请查阅附录:
从收敛性分析结果可以看出,该算法收敛性主要受到全局梯度
与平均随机梯度的差距影响,而平均随机梯度与本地客户端的数据分布有关。当参与训练聚合的局部客户端们的全体数据分布与整体客户端数据分布不一致,则容易影响该算法的收敛速度。
4. 实验评估
本环节将介绍仿真实验设置、实验结果。通过在数据集Cifar10与Cifar100上进行的仿真实验来证明本文提出的算法与当前基准算法相比具有优越性。
4.1. 实验设置
4.1.1. 数据集介绍
Cifar10数据集是一个广泛使用的图像分类基准数据集,包含10个不同类别的彩色图像,每个类别有图像分辨率为32 × 32像素的6000张图像,共计60,000张,其中50,000张将被划分为训练集,10,000张将被划分为测试集。
CIFAR100数据集也是一个用于图像分类的基准数据集,包含100个不同的类别,每个类别有600张图像,共计60,000张图像。与Cifar10数据集类似,Cifar100中的图像是彩色的,分辨率为32 × 32像素。该数据集分为50,000张训练图像和10,000张测试图像。
4.1.2. 数据划分
在我们的实验中,为了营造客户端数据Noniid的情况,我们打算对客户端数据进行如下两类形式划分:(1) 固定种类划分:我们计划将训练集数据先按照种类进行排序,并将每类数据平均分为20份总共200个分片,每个客户端随机分配2个分片,确保每个客户端拥有的分片有且只有2个且种类各不相同,我们将这种划分称为c = 2;(2) 固定分布划分:通过Dirichlet分布生成抽样矩阵,确定每个客户端拥有的图像数据种类和数量。我们使用的是参数d = 0.1的Dirichlet分布进行仿真实验[23]。以Cifar10为例具体数据分布情况如图1所示:横坐标代表客户端数据数量,列坐标代表客户端编号,每一行都代表了客户端里拥有的数据,不同颜色代表不同数据类型。
c = 2 d = 0.1
Figure 1. Data distribution map of different data partitions
图1. 不同数据划分的数据分布图
4.1.3. 基准算法
为了证明我们提出的算法优越性,我们将比较如下几种算法,其中包括Fedavg,一种经典的联邦学习算法以及Fedprox、Scaffold、Moon、q-Fedavg以及Fedmgda+这几种为了对抗Noniid数据冲击导致全局模型下降的算法。
4.1.4. 参数设置
我们将客户端设置为100个,每轮随机抽取20个客户端参与训练和聚合(Participation rate = 0.2),总共2000次通讯论数。其中本地训练的batchsize为64,本地学习率(Learning rate)为0.01,epoch = 1。为了防止实验结果出现随机性,所有算法的实验结果将在四个随机种子下实验平均后得到。
4.1.5. 模型设置
我们的模型是当前流行的双层卷积层的卷积神经网络(CNN)模型,每一层卷积核大小均为5 * 5,后面均有一个尺寸为2 * 2的池化层。模型后面还有三层全连接层,确保输出的结果为10个类别的预测分数。
4.1.6. 实验环境
本文实验均基于开发语言python3.8.0,实验集成环境包flgo 0.4.3上进行。使用GPU分别为两个NVIDIA GeForce RTX 3090以及一个NVIDIA GeForce RTX 4090。
4.2. 实验结果
4.2.1. 不同数据划分下的性能比较
如图2所示,在Cifar10数据集中,Fedalr (黄色折线)表现出更快的收敛速度以及全局模型表现出更高的性能,具体来看,如表1所示(最优性能已用粗体标出):在c = 2的数据分布下,Fedalr第2000轮的全局模型性能达到72.15%,比起当前最优算法Fedavg性能63.91%提升了12.89%;而在d = 0.1的数据分布下,Fedalr算法的全局模型性能高达68.68%,比起当前最优算法提升了30.74%。
Table 1. Round 2000 federated learning algorithm performance table
表1. 第2000轮联邦学习算法性能表
|
Cifar10 |
Cifar100 |
c = 2 |
d = 0.1 |
c = 2 |
d = 0.1 |
Fedavg |
63.91 |
52.53 |
28.45 |
22.90 |
Fedmgda+ |
61.81 |
52.19 |
31.10 |
24.48 |
Fedprox |
62.11 |
51.12 |
28.27 |
21.69 |
Moon |
62.47 |
51.02 |
28.84 |
22.44 |
qFedavg |
46.51 |
39.87 |
14.49 |
11.90 |
Scaffold |
52.95 |
30.01 |
20.46 |
9.81 |
Fedalr |
72.15 |
68.68 |
32.21 |
26.21 |
提升比例 |
12.89% |
30.74% |
3.57% |
7.07% |
在Cifar100数据集中,虽然Fedalr前期没有表现出较快的收敛性,这可能是因为cifar100任务下难以找到较为合适的全局梯度导致收敛速度下降,但是最后面的全局模型性能仍然超过各个算法。根据表1可以看到,c = 2和d = 0.1的情况下,Fedalr算法性能均达到32.2%1和26.21%,比起当前最优算法Fedmgda+性能分别提升了3.57%和7.07%。
在不同的数据划分下,我们提出的算法仍然保持稳健。具体来说,相比于第一种数据划分(c = 2)方式,第二种数据划分(d = 0.1)对联邦学习框架的冲击更大。从图2可以看出,同种数据任务下,所有算法在c = 2的表现(如模型性能、收敛速度等)比d = 0.1要更好这是因为c = 2的划分情况与d = 0.1的划分情况相比,局部数据分布更容易接近全局数据分布。这和前文提到的局部数据分布与整体数据不一致会影响该算法的收敛速度相吻合的。但是无论是哪种数据划分方式,我们提出的Fedalr算法性能以及收敛速度等方面均优于其他基准算法。
Cifar10, c = 2 Cifar10, d = 0.1
Cifar100, c = 2 Cifar100, d = 0.1
Figure 2. Performance graph of different federated learning algorithms
图2. 不同联邦学习算法性能图
4.2.2. 实验参数对算法的影响
为了考察不同实验参数对算法的影响,我们在Cifar10数据集任务c = 2和d = 0.1的数据划分下设置了不同参数进行实验,具体参数设置如表2所示。
由图3可以观察到,相比于基础算法Fedavg (虚线),我们的Fedalr算法(实线)无论参数如何改变,收敛速度以及模型性能均优于Fedavg。从收敛速度角度来说,无论哪种数据划分,不同参数设置下Fedalr算法的收敛速度都十分相近。从模型性能角度来说,当数据划分为c = 2时,不同参数下的2000轮训练后模型性能差别不大;当数据划分为d = 0.1时,不同参数下的2000轮训练后模型性能略有差别,最好的参数设置情况是设置2,2000轮模型性能为72.18%,最差的参数设置是设置1,性能为62.03%,性能差为10.15%;而在同种数据划分下的fedavg算法性能最好是设置2,为66.23%,最差的设置是设置3,性能为52.53%,性能差为13.70%。因此可以认为Fedalr算法对于实验参数的敏感性不高,属于鲁棒性较高的算法。
Table 2. Experimental parameter setting table
表2. 实验参数设置表
|
Learning rate |
Batch size |
Participation rate |
设置1 (绿色折线) |
0.01 |
10 |
0.1 |
设置2 (蓝色折线) |
0.1 |
400 |
0.1 |
设置3 (红色折线) |
0.01 |
64 |
0.2 |
c = 2 d = 0.1
Figure 3. Algorithm performance line graph with different experimental parameters
图3. 不同实验参数算法性能折线图
5. 总结
在本文中,我们针对联邦学习受到Noniid数据的挑战导致收敛速度降低,全局模型性能下降等问题,提出了Fedalr算法,该算法通过计算近似不同客户端上传的本地梯度
以及全局梯度
的余弦来自适应地分配不同本地梯度
的聚合学习率,从而提高全局模型的性能以及收敛速度,从而减少在Noniid环境下联邦学习的通信轮次。为了更准确地计算出全局模型,我们在前人不同本地梯度的基础上采用了动量策略,以消除随机性。最后我们通过实验证明了我们的算法比起其他基线算法更加优秀,性能提升比例高达30.64%。
附 录
本节重要展示Fedalr的收敛过程。首先我们考察了通过Fedalr算法所计算的学习率
的性质,进而将性质与收敛性分析方法进行结合得到相应结论。下文中我们采用以下符号以区分全局梯度(
)与模拟的全局梯度(
)。
性质1:对于
,
。
性质1证明:
由于
,且
,因此
。
又因为
,
,所以
。
所以
。
收敛性证明:
由假设一同时
,可得:
代入可得:
两边取期望,再结合性质1以及假设2,可得:
所以
,即可得证。