修涵文,李贺,曹荣强*,万萌,李凯,王彦棡
1.中国科学院计算机网络信息中心,北京 100083
2.中国科学院大学,计算机科学与技术学院,北京 100049
随着数字化技术进入高速发展期,大数据和人工智能等技术迎来爆发式发展。然而,数据在实践中通常分散在不同的各方之间形成数据孤岛[1]。由于越来越多的隐私问题和数据保护法规[2],各方无法将其私人数据发送到集中式服务器以训练模型。为了应对上述挑战,联邦学习[3]成为一个重要的机器学习领域,它可以使多方能够在不交换本地数据的情况下共同训练机器学习模型。目前,联邦学习已被广泛应用到医学成像[4],物体检测[5]和语音识别[6]等领域。
分布式机器学习[7-10]将训练数据或模型参数分布在各个计算或存储节点,利用中心服务器对节点进行调度,加速模型的训练。尽管联邦学习和分布式机器都是在处理分散的数据和模型,但存在背景需求、优化假设等差异。前者是在数据中心/集群范围内的分布式,侧重于并行处理,以集群规模的扩展提高模型训练速度和计算吞吐率。后者则更多地面向地理的分布式,侧重于关注加强隐私保护、异构问题处理和个性化学习。异构问题是联邦学习的关键问题,直接决定了联邦学习模型的训练时长和收敛效果[11-12]。
本文结合联邦学习的现状,针对联邦学习各类方法关键词在谷歌学术查找近三年国际期刊会议论文,对关键词收集到的最新一年论文的相关工作部分进行引文部分的二次检索。将两种方式整理出的论文综合发表时间、引用量、方法代表性等考量因素,从中选取论文25 篇进行讨论。按照是否解决模型异构问题对联邦学习进行分类并整理联邦学习方法,归纳这些方法对设备异构、数据异构问题的解决能力,并分析各种方法的优缺点。
本文的组织结构如下:第1节介绍联邦学习架构和异质性问题;第2节介绍本文对联邦学习分类方法;第3节和第4节按照模型分类分别详述单一全局模型和个性化学习模型的联邦学习方法;第5 节对联邦学习算法的现状、存在的问题、未来发展趋势做出探讨;最后进行总结。
本节首先阐述了联邦学习架构和典型的联邦学习训练流程,之后对联邦学习存在的异构问题作出区分,阐述了联邦学习三种异构问题的定义及其引发的问题。
联邦学习是一种机器学习架构,在这种架构中,许多客户端在中央服务器的协调下相互协作训练模型,同时保持训练数据分散。联邦学习体现了集中数据收集和最小化数据的原则,可以减轻传统的集中式机器学习带来的许多系统隐私风险和成本。
在典型的联邦学习架构中,服务器或服务提供商重复以下步骤进行训练[3]:
(1)下载全局模型:每个被选中的客户端下载服务器端模型的权重和一个训练程序。
(2)训练本地模型:客户端在本地数据上执行训练程序计算模型的更新。
(3)上传本地模型:客户端训练完毕之后向服务器发送本地模型的更新。
图1 联邦学习架构图Fig.1 Federated learning architecture diagram
(4)聚合模型更新:服务器收集并聚合客户端的更新。为了提高效率,一旦有足够数量的客户端报告了结果,掉队者可能会被丢弃。
由于联邦学习中的客户端分散在各地、各个机构,不同的客户端有着不同算力的设备、不同数量的训练数据、不同架构的模型。复杂的异构环境对设备与数据统一的分布式学习方法形成了挑战,是联邦学习的特异性问题。本节针对联邦学习中的异构问题[11]进行分类,如表1所示。异构问题主要有:
表1 联邦学习异构问题Table 1 Federated learning heterogeneity problems
(1)设备异构:客户端设备在存储、计算和通信能力方面存在差异,导致技术实现和模型设计问题。任务调度因设备而异,导致服务器很难在一轮更新结束时同步地接入所有客户端,一部分客户端甚至会因为较差的通信环境直接退出学习,进而延长全局模型的训练时间,甚至是训练失败。
(2)数据异构:客户端本地数据非独立同分布,导致数据要求问题。数据异构容易导致模型不稳定和缓慢的收敛[12],并导致次优甚至更差的模型性能[13]。
(3)模型异构:根据其应用场景或优化目标的不同,各个客户端设备所需要的模型不一致,导致模型设计问题。出于隐私考虑,客户端可能不愿意分享模型细节。因此,模型异构问题会使联邦学习的灵活性和隐私保护受限。
由于不同参与方的数据量和分布都是不同的,为每个客户端提供合适的差异化模型结构,提高客户端本地数据的预测准确性已经成为近期的研究热点[14-16]。本文从模型的角度出发,将现有的各种联邦学习方法划分成学习单一全局模型和学习个性化模型两类,如图2 所示,具体阐述如下:
图2 联邦学习方法分类Fig.2 Categorization of federated learning
●学习单一全局模型:
学习单一全局模型是指通过机器学习方法对全局模型进行优化,得到泛化性能高的全局模型,以便进一步在客户端上进行微调。本文按照提升模型训练质量的方法将学习单一全局模型的联邦学习方法分类如下:
(1)修改客户端局部目标,使局部模型与全局模型在一定程度上一致;
(2)数据扩充,引入公共数据集或合成数据,以帮助在客户端或服务器上构建更平衡的数据分布;
(3)优化模型聚合,改进服务器处的模型聚合机制;
(4)联邦元学习,对多个学习任务进行训练,以生成具有高度适应性的模型;
●学习个性化模型:
学习个性化模型是指为每个客户端或者任务数据相似的一组客户端定制学习模型。本文按照与机器学习框架结合的方法将学习个性化模型的联邦学习方法分类如下:
(1)联邦多任务学习,同时解决多个相关任务,使模型能够挖掘任务之间的共性和差异;
(2)联邦聚类,将客户群体分组为具有相似数据分布的簇,为每个簇学习个性化模型;
(3)联邦知识蒸馏,将联邦学习的全局模型作为教师模型,将个性化模型作为学生模型,使得复杂全局模型中的“知识”迁移到简单个性化模型当中;
学习单一全局模型要求所有客户端共用一个全局模型结构,每个客户端可以做出适应本地数据的调整以缓解数据异构的问题。
在一些场景中,用户希望得到泛化能力强的全局模型,而客户端只是作为数据提供方,就需要用到学习单一全局模型的方法。这类方法简单易行,通常只需要在原本的联邦学习框架内的目标函数上增加惩罚项,或者增补客户端的数据集,一般不需要改变总体学习框架。
以下从修改客户端的局部目标、数据扩充、模型聚合、联邦元学习四个方面来介绍学习单一全局模型的方法(见表2)。
表2 联邦学习方法比较Table 2 Comparison of federated learning methods
修改客户端的局部目标是指在客户端的局部目标中,加入正则项或着控制变量等,以使客户端的局部目标与全局模型目标距离更近。FedAvg[3]中服务器平均聚合客户端模型更新值。这种方法在独立同分布数据集上表现很好,但在非独立同分布数据上,客户端局部最优彼此远离,最终会导致客户端更新的平均值远离真正的全局最优[28]。为了缓解这种情况,修改客户端的局部目标是一种简单易行的方法,可以迫使局部最优向全局最优靠近。
FedProx[28]扩展FedAvg 算法,提出在局部目标中加入对前一步权重的二次惩罚项进行正则化。在局部训练期间,局部模型更新会一直受到近端项的限制,提高了全局模型收敛的稳定性。另外,FedProx 允许每个参与的设备执行可变的训练轮数,这缓解了联邦学习的设备异构问题。
MOON[29]将全局模型表示与本地模型表示之间的对比损失作为正则化项约束本地模型的更新,其核心思想是利用模型表示之间的相似性来修正个体的局部训练。Ditto[30]将本地模型与全局模型的欧氏距离作为正则化项,鼓励个性化模型向全局最优模型靠近。同时,Ditto 通过改变正则化项的系数权重,可以控制模型在个性化和鲁棒性之间的权衡。Scaffold[31]为局部模型和全局模型引入控制变量,利用局部控制变量与全局控制变量之间的差值来纠正局部训练中的梯度。控制变量的作用类似于正则化项,同样起到约束本地模型更新方向的作用。
数据扩充是指各个客户端共享一部分私有数据或使用人工数据,扩充客户端上的数据集以使本地数据靠近独立同分布的数据集。在本地训练过程中,客户端无法从其他客户端获取样本,因此学习到的本地模型不能充分代表缺失类别中的某些模式或样本,这种数据异构会对联邦学习的模型收敛产生不利影响。为了缓解数据异构造成的影响,最自然的想法是,扩充一定的数据以靠近独立同分布的数据集。
数据扩充的一类方法是设置公共据集进行数据共享。FedMD[32]将本地模型在公共数据集上预测矢量的平均值作为新的训练标签,在本地模型继续进行训练。公共数据集的设置,可以减轻客户端之间的数据异构性,从而获得一个效果更好的全局模型。然而,这类工作的公共数据的分布很重要,提取公共数据集需要预估样本的分布情况,这在一些场景中十分困难。更重要的是,设置公共数据集可能会违反联邦学习的隐私规则,这会使得联邦学习失去它原本的应用意义。
数据扩充的另一类方法是使用人工合成的数据集。通过深度学习方法从非数据集信息(如模型信息、数据噪声等)产生新数据进行共享,保证了客户端的数据隐私。FED-ZDA[19]在不访问客户端数据的情况下,对共享模型信息使用数据增强合成新数据,以补充未充分表示的样本。FED-ZDA分别探索了在客户端生成合成样本的Fed-ZDAC[33]以及在服务器端生成合成样本的FedZDAS[33],两种方式均缓解了数据异构性问题,实现了更好的性能。由于FEDZDA 生成的数据质量高度依赖共享模型性能,而共享模型性能随着通信轮次的增加而增加,因此此方法中选择开始数据增强的时刻十分重要。VHL[34]使用客户端从共享的纯噪声中生成的虚拟同构数据集进行联邦学习。该虚拟同构数据集满足不包含私有信息和可分离两个条件。在具体的学习过程中,VHL 通过在所有客户端之间共享一个独立于私有数据集的虚拟同构数据集,矫正私有数据的异构分布。另外,它通过匹配源域和目标域的条件分布[35]缓解虚拟数据集带来的分布漂移这一不利影响。
优化模型聚合是指改进服务器端的模型融合机制,以增强全局模型的泛化能力。针对解决客户端异构问题,除了3.1中通过在客户端调整局部模型在参数空间上与全局模型的偏差来调整本地训练,另一个互补的角度是从服务器端提高模型聚合的效果。FedAvg中对客户的模型向量平均聚合的方式不能充分利用客户端之间的信息。为了解决这个问题,研究人员提出了各种新颖的模型融合机制。
FedAdp[36]根据客户端的贡献自适应地在每一轮中计算聚合全局模型的权重。每个客户端数据分布不同,对全局模型聚合的贡献不同,且数据分布与梯度信息之间存在隐式联系。服务器通过计算每个客户端上传的模型梯度之间两两的相似度,定量地度量客户端的贡献,得到每个客户端模型在聚合时的权重,优化了平均聚合的聚合方式。
FEDBE[37]将贝叶斯模型集成到联邦学习中。服务端首先根据本地训练的模型构建模型的分布,并采样得到多个模型。在聚合阶段时,使用集成学习的方法将采样得到的模型对数据进行预测。将预测结果作为教师模型的软标签,单一的全局模型作为学生模型,进而以知识蒸馏的方式将多个采样模型聚合为一个全局模型。
PFNM[38]是使用一种贝叶斯非参数(Bayesian nonparametric,BNP)的神经网络联邦学习框架。在训练过程中,每个客户端在本地数据上训练局部模型,中心服务器在收到客户端的局部模型后,利用贝塔-伯努利[39]过程将局部模型与全局模型进行匹配,得到新的全局模型。聚合过程只依赖于本地模型参数本身,可以在只执行一轮通信的情况下,生成效果更优的全局神经网络模型。
联邦元学习是指在联邦学习中,通过元学习算法,训练一个泛化能力强的全局模型(或元学习器),使得客户端能够快速适应自身的数据集,降低模型在不同客户端上表现的差异。元学习希望模型获取一种“学会学习”的能力,使其可以在获取已有“知识”的基础上快速学习新的任务。元学习场景可以与联邦学习相结合,本地客户端的学习可以看作是数据较少的小样本学习,服务器上的全局模型可以看作是泛化能力强的元模型。服务器上的元模型在少样本的客户端上微调个性化模型,以缓解客户端的数据异构问题。
Per-FedAvg[40]将联邦学习与元学习模型MAML[41]相结合,其目标是找到一个在所有客户端之间共享的初始点,以使当前客户端通过执行少量几次梯度下降便可适应本地数据集。Per-FedAvg 在保留了联邦学习体系结构的基础上,通过元学习结构为每个客户端提供了个性化的模型。另外,该方法从理论上证明了算法的收敛性,并使用黑森矩阵(Hessian Matrix)来代替二阶偏导,减少了训练时间。
PFL[42]采用梯度矫正方法为每个边缘设备定制个性化模型。将每个客户端与不同的任务关联,在不同的任务上学习一个元模型,每轮训练中动态修改客户端损失函数,使得生成的元模型对每个客户端都是相对无偏差的。q-MAML[43]将q-FFL 算法与元学习算法MAML 相结合,使用q-FFL 中的目标函数和权重更新全局模型参数,使得损失函数值较高的客户端在目标函数中具有较高的相对权重从而促进模型在各个设备间的表现更加公平。ARUBA[44]把在线凸优化(Online Convex Optimization)和序列预测算法相结合,将元学习视为在线学习一系列损失。ARUBA 通过学习一个在线镜像下降的正则化项来确定参数空间中哪些方向需要更新,并且提供了一个动态调整学习率方法,是一种简单的无需调整步长的方法。
学习个性化模型并不要求所有客户端共有一个全局模型结构,而是允许每个客户端或者有相似数据一类客户端根据自己的数据和任务特征生成本方独特的个性化模型。需要注意的是,本文讨论的学习个性化模型,和已经提出的个性化联邦学习[14]有所区别。学习个性化模型指的是客户端在模型层面上会有不同的架构。而个性化联邦学习的含义更加广泛,只要在客户端将全局模型在自己数据上进行的微调,即便模型架构相同,但模型参数改变,也可以算作个性化联邦学习。
当客户端数据、模型、性能差异较大时,即便是泛化性能高的全局模型也很难在把握整体的同时又照顾到这种差异。这时具有相似训练环境的客户端之间的协同合作,可能是在异构环境下的联邦学习中取得良好表现的关键。还有一些客户端出于隐私考量,不愿意公开自己的模型结构,如果能在模型异构的情况下进行联邦学习,可以更好地保护客户端的隐私。
以下从联邦多任务学习、联邦聚类、联邦蒸馏学习三个方面来介绍学习个性化模型的方法。
联邦多任务学习是指在联邦学习框架下将设备本地数据集上的学习问题视为一项单独的任务,而不是单个数据集的一个划分,允许具有相似数据的客户端之间的成对协作。在多任务学习中,一个模型同时解决多个相关任务,使得模型可以挖掘任务之间的共性和差异,提高模型的泛化性能。
MOCHA[45]将联邦多任务学习定义为惩罚优化问题,其中惩罚项对任务之间的关系进行建模。考虑到联邦学习的特性,MOCHA在多任务学习的基础上解决联邦学习通信、掉队和容错相关问题。由于它为每个任务生成一个模型,所有客户端都必须参与每一轮,因此该算法不适用于跨设备的联邦学习。MOCHA 的另一个缺点是,复杂的惩罚项导致算法只能学习简单的模型,比如线性模型或预先训练的模型的线性组合。
FedAMP[15]提出采用联邦注意力传递消息的新方法,促进相似的客户端进行更多协作。在算法运行时,FedAMP不使用云服务器上的单个全局模型进行协作,而是在云服务器上为每个客户端维护个性化的云模型,并且将每个客户端的个性化模型作为消息传递给模型参数相似的个性化云模型。此外,FedAMP通过其接收的所有消息的加权组合来更新每个客户端的个性化云模型。这自适应地促进了客户之间的成对协作,并显着提高了协作的有效性。
联邦聚类是在联邦学习中使用聚类算法将拥有相似数据的客户端进行聚合,再通过客户端选择算法抽取具有代表性的客户端进行训练,两者可以交替迭代进行。这种将拥有相似数据的客户端进行聚合的方式,会学习出多个个性化模型,相比单一全局模型对客户端的异质性适应更好。
联邦聚类按照其聚类的时间可以划分为一次性聚类和迭代式聚类。一次性聚类将任务聚类和参数学习分为了两个阶段,而迭代式聚类交替进行任务聚类和参数学习。联邦聚类按照其对簇结构的潜在假设,可分为簇间知识共享聚类和簇间不共享聚类。以下将按照这两类划分方式梳理典型的联邦聚类算法。
Ghosh[46]等人采用的是一次性聚类和簇间不共享。该方法需要事先指定聚类簇的个数K,服务器端运行K-means[47]算法将客户端进行聚类,接着对每个类单独运行传统联邦学习算法。这种一次性聚类算法操作简单,但把任务聚类和模型参数学习分为了两个阶段,可能得不到最优解。
CFL[48]采用的是迭代式聚类和簇间不共享。在每轮迭代时,服务器都会根据客户端的模型参数相似度进行一次簇划分,同一个簇共享模型参数的变化量,这样既能使每个客户端训练一个性化模型,又能让数据相似的客户端相互促进。该论文的亮点是簇的个数可以随着迭代变化,无需提前指定簇个数。缺点是它采用了集中式聚类算法,中心服务器必须识别所有客户端的聚类身份,导致中心服务器计算开销较大,不适用于大型模型架构或拥有大量用户的应用程序。
IFCA[49]采用的是迭代式聚类和簇间共享。其基本思想是服务器在估计簇划分和最小化损失函数之间交替进行学习,并通过梯度下降优化客户端聚类的模型参数。具体来说,每个簇内的客户端都共享一组簇内模型参数平均值。在每轮迭代过程中,服务器都会通过最小化损失函数的方式为各客户端重新估计其所属的簇,以及重新计算新簇对应的模型参数平均值。该算法是簇间共享型,先使所有客户端训练数据学习一个共享表示,再运行聚类算法为每个簇学习神经网络的最后一层,可以互相补充学习到的领域相关的信息。
联邦知识蒸馏将本地客户端模型看作学生模型,服务器模型或者除了本地客户端之外的其他客户端的总和看作教师模型,将分类分数或逻辑向量输出表示为知识。联邦知识蒸馏将复杂教师网络的知识提取到简单学生网络中,不需要教师网络和学生模型一致,可以给客户端提供更大程度的灵活性。
一种典型的方法是利用样本数据信息或者代理数据集来最小化来自教师模型和学生模型的逻辑向量输出。FD[50]计算每个客户端上各类别输出的平均值,利用全局各类别平均输出指导本地客户端的学习。FedDF[51]中联邦学习服务器构造几个不同的原型模型,每个原型模型表示具有相同模型架构的客户端。每轮迭代时,客户端首先利用本地数据更新模型参数并将更新后的参数发送给服务端。服务端将接收到的模型参数取平均后,在无标签的公共数据集上生成用于训练服务器的每个学生模型的逻辑向量输出。对每一种架构的模型都进行一次集成蒸馏得到聚合模型参数。
上述方法的一个主要限制在于其对代理数据集的依赖,使得代理数据集的选择在蒸馏性能中起着关键作用。FEDGEN[16]避免了代理数据集,采用无数据的方式进行知识蒸馏。该算法要求客户端能够提供给服务器端自己样本标签的分布,也就是客户端共享样本标签。服务器端根据全局的样本标签的分布,学习一个从样本标签到样本的映射,这样生成的样本是符合全局的数据分布的。之后各个客户端可以利用新生成的样本进行知识蒸馏。
本文从联邦学习的模型异构问题出发。按照模型架构为单一全局模型还是个性化模型将联邦学习方法进行分类。单一全局模型无法解决客户端模型异构性问题,而个性化联邦学习可以直接解决该问题,结合第3节和第4节的讨论并对比表2 不同联邦学习方法,详细讨论如下:
(1)学习单一全局模型的方法可以在服务器端获得泛化性能强大的全局模型。该方法往往只需要对联邦学习框架进行局部修改,容易实现。该方法在训练前就固定好了客户端模型结构,模型灵活性有限,客户端可以在获得全局模型参数之后在本地数据上进行微调,以满足数据异质环境学习需求。
(2)学习个性化模型可以在客户端获得个性化的模型。该方法通常需要结合其他深度学习方法,在整体架构上进行改变,相对更复杂。学习个性化模型的方法灵活性较高,可以适用于客户端模型架构不同的情况,提高客户端对联邦学习的参与意愿。
(3)解决数据异构问题的方法偏多,这是由于数据异构问题直接决定了联邦学习算法是否收敛、模型是否稳定,从数据异构问题出发可以显著提高联邦学习的性能,是科研人员非常关注的一个方向。寻找数据同质化场景应用联邦学习或者研究适用特定应用领域的数据分布的模型,是未来提升联邦学习的性能的有效方法之一。
(4)解决设备异构问题的方法偏少,这是因为大部分实验室很难模拟真实环境中的设备异构性如网络连接性和客户端设备的可用性等诸多场景。针对设备异构的基准测试不成熟。2022 年提出的FedScale[52]是自动化的、可扩展的、易于部署的大规模评估平台,相信在一些的易于测试的评估标准出现之后,未来会有更多针对真实环境中设备异构问题的解决方案。
(5)目前联邦学习测试时使用的专用数据集少,所用的数据集大多是MNIST、CIFAR-10/100 这类通用机器学习数据集。研究人员未来可以选择如移动设备拍摄的图片、语音内容等一些有现实意义、非独立同分布的数据集对联邦学习方法进行测试,以实现全面而准确的联邦学习评估。
本文提出了一种联邦学习划分方法,将联邦学习方法分为单一全局模型和个性化模型。系统梳理了各类方法采用的数据集、是否解决三种异构问题,以及方法本身的优缺点。学习单一全局模型以在服务器端获得泛化性能强大的全局模型,学习个性化模型可以在客户端获得个性化的模型,两者各有利弊,研究人员可根据场景需求进行选择。联邦学习框架下进行机器学习、深度学习算法实现是人工智能领域落地的一个可行方案,也是更高效、更全面的利用边缘数据的方法。在真实的应用环境中,联邦学习还会面临复杂异构问题挑战,有待研究人员进一步的探索。
利益冲突声明
所有作者声明不存在利益冲突关系。