本发明涉及联邦学习及机器学习模型分层,具体涉及一种基于模型分层的多任务联邦学习客户端贡献度度量方法。
背景技术:
1、随着互联网的不断发展、硬件和存储能力的飞速提升,人工智能和机器学习建立在海量多源的数据之上,其应用和研究越来越广泛。随着数据生产方对私有信息和私有数据安全的保护意识不断提高,相关政府部门和立法机构对数据安全和用户隐私保护的逐渐重视,数据安全成为了全球关注的问题。传统的中心式机器学习方法需要将数据进行集中收集和处理,然后基于这些数据训练一个全局模型,但这种方式存在极大程度的隐私泄露风险。
2、联邦学习作为解决数据孤岛的分布式计算框架,允许多个客户端协作训练共享模型而无需集中数据,保护隐私的同时利用了分散的数据资源。能够从多个客户端捕获共同知识生成一个性能更好的全局模型。以深度学习分类算法为例,联邦学习可以在不泄露数据的情况下,利用各客户端上的少量数据,训练出一个泛化能力更好、准确度更好的分类模型,缓解了客户端数据不足的问题。
3、多任务联邦学习在共同训练模型时需要各客户端参与合作,传统联邦学习每个客户端的贡献度视为相同,平均地聚合每个本地客户端的模型参数,但作为任务发起方的客户端和其他客户端上的数据分布可能存在差别,这种差别将导致贡献度相同时模型性能受损,从而影响任务发起方客户端获得模型的性能。因此如何提供一种有效的客户端贡献度度量方式,是解决多任务联邦学习应用的一个重要难点。
技术实现思路
1、本发明的目的在于:提供一种基于模型分层的多任务联邦学习客户端贡献度度量方法,已解决现有技术中多任务联邦学习下客户端贡献度量化问题。
2、为解决上述问题,本发明采用如下技术问题:
3、一种基于模型分层的多任务联邦学习客户端贡献度度量方法应用于包括中心服务器和多个客户端节点的分布式架构,包括以下步骤:
4、s1、配置联邦学习的环境以及数据准备,包括:
5、联邦学习环境的配置包括配置中央服务器,将n个参与训练的客户端接入私有网络;
6、数据准备包括数据样本获取以及数据预处理;具体的,各参与者获取各自的样本数据与数据标签其中表示第i个参与者的图像样本数据,表示第i个参与者的数据标签;
7、中央服务器与各参与训练的联邦客户端建立连接,客户端向中央服务器发送任务请求,服务器端生成任务队列q;客户端向服务器发送本地样本的数据量其中表示客户端i上的数据量大小;服务器获得所有客户的数据量后,计算得到总的数据量
8、s2、中央服务器衡量现有联邦任务下各客户端贡献度:
9、s2.1、客户端x发起联邦任务,中央服务器从n个客户端中选择k个参与训练客户端,k个参与训练客户端中始终包含客户端x;其次,更新集合轮次r、本地客户端上的本地训练轮次t、训练批次大小b和客户端本地的损失函数f(·),实现模型训练的初始化;
10、s2.2、中央服务器初始化模型并分发给参与的k个客户端;
11、s2.3、参与训练的k个客户端在本地以批次为b,在其私有的本地数据上训练轮次t;
12、s2.4、基于分布式梯度下降法,每个边缘节点通过其本地数据和接收到的模型参数准备计算当前回合的梯度值;
13、s2.5、基于接收到的损失函数和模型参数,每个参与训练的客户端随机选择其本地的一定量的数据,通过反向传播算法,使用选择到的本地数据计算它当前回合接收到的模型参数的最新梯度值其中i表示边缘节点的编号,θi表示当前回合接收到的模型参数值,fi表示接收到的模型损失函数,表示反向传播算法,它会通过其本地数据计算基于模型xi和损失函数fi的当前回合梯度值参与训练的客户端向中央服务器发送本地训练后的参数θi;
14、s3、贡献度度量过程,包括以下步骤:
15、s3.1、中央服务器接收到参数后对模型分层,计算模型各层的梯度;
16、s3.2、对于本轮参加训练的客户端,服务器计算其相对于客户端x的模型分层相似度,归一化后得到k个参与训练客户端相对于客户端x的贡献向量αx;
17、s4、中央服务器向目标任务客户端下发新模型;
18、s4.1、根据贡献向量和参与训练的客户端上数据量作为联合向量计算得到目标任务客户端新模型参数
19、s4.2、服务器根据联合贡献向量选取下一轮参与目标任务训练的k个客户端;
20、s4.3、重复步骤s2和s4,直到达到目标任务预定训练轮次或预设精度;
21、s5、更新任务队列;
22、s5.1、从当前任务队列q中删除已经完成训练的任务,选取下个任务继续训练;
23、s5.2、将队首指针后移至下一个任务,若指针指向为空,则完成全部训练任务;
24、s5.3、若训练过程中有新任务增加,根据任务是否为实时任务选择将其插入队列的位置。
25、进一步的,计算模型各层的梯度的具体操作方法为:
26、s3.1.1、中央服务器接收到各客户端训练后上传的最新梯度值后,通过最新梯度值更新服务器上各客户端模型参数,具体表示如下:
27、
28、其中,η表示学习率;
29、s3.1.2、更新之后服务器端根据模型各层结构,将各客户端模型分层并计算各层想对任务发起方x的梯度,第k层梯度计算公式为:
30、
31、其中,表示客户端i第k层的模型参数,表示第一轮初始化的模型参数的第k层参数;
32、进一步的,贡献向量αx的具体计算方法如下:
33、s3.2.1、计算客户端i相对于客户端x各层模型的余弦相似度,计算公式如下:
34、
35、其中,表示客户端i相对于客户端x各层模型的余弦相似度,和分别表示客户端x和客户端i第k层的梯度;
36、s3.2.2、将计算得到的余弦相似度添加到指定层的贡献向量中,最终得到相对于客户端x的贡献矩阵,表示如下:
37、
38、其中,表示客户端x中第m层的聚合权重向量,表示客户端i相对于客户端k第m层的聚合权重向量;通过计算客户端x梯度相对与其他客户端梯度的余弦相似度,然后进行加权归一化得到;
39、具体的,贡献矩阵的每行向量乘以对应客户端数据量相对于总的数据量的比值,得到加权后的贡献向量;加权后的贡献向量每行使用softmax归一化,使得每层贡献度之和为1。
40、进一步的,目标任务客户端新模型参数的计算过程如下:
41、s4.1.1、将参与训练的客户端的相同层模型参数聚合成一个k维向量表示客户端i第m层的模型参数;
42、s4.1.2、对于l个分层,将其聚合为的模型分层矩阵;
43、s4.1.3、计算得到客户端x的聚合模型,聚合计算过程为聚合后服务器将发送给任务客户端。
44、进一步的,步骤s4.2具体如下:
45、s4.2.1、选取贡献矩阵中顶层模型的贡献向量,选择贡献度低的k个模型丢弃,从剩余模型中随机选择k个客户作为新加入客户端,
46、s4.2.2、新加入客户端与中央服务器建立连接;
47、s4.2.3、中央服务器向新构建的客户端分组发送开始下一轮训练。
48、进一步的,步骤s5.3的具体操作方法如下:
49、s5.3.1、若新增任务非实时任务,将新增任务添加到任务队列尾部,队尾指针向后移动一位;
50、s5.3.2、若新增任务为实时高优先级任务,在本轮客户端学习完成后,中央服务器保存连接状态信息,目标任务客户端保存聚合后模型,下一轮直接开始新任务的训练。
51、采用上述技术方案后,本发明具有如下有益效果:
52、(1)本发明在训练过程中,能够准确地识别出联邦学习各客户端的贡献,并通过模型分层实现了更准确地分层贡献度量下的模型聚合,同时隐私反面达到了和通用联邦学习相同的保护效果,可以自然地和其他保护方案结合起来。
53、(2)本发明的方案通过在每轮筛选掉度量出的低贡献者,实现了更快速地多任务联邦学习过程,达到优化联邦学习时间和模型精度的目的。
1.一种基于模型分层的多任务联邦学习客户端贡献度度量方法,应用于包括中心服务器和多个客户端节点的分布式架构,其特征在于,所述方法具体包括以下步骤:
2.根据权利要求1所述的一种基于模型分层的多任务联邦学习客户端贡献度度量方法,其特征在于,所述计算模型各层的梯度的具体操作方法为:
3.根据权利要求1所述的一种基于模型分层的多任务联邦学习客户端贡献度度量方法,其特征在于,所述贡献向量αx的具体计算方法如下:
4.根据权利要求1所述的一种基于模型分层的多任务联邦学习客户端贡献度度量方法,其特征在于,所述目标任务客户端新模型参数的计算过程如下:
5.根据权利要求4所述的一种基于模型分层的多任务联邦学习客户端贡献度度量方法,其特征在于,所述步骤s4.2具体如下:
6.根据权利要求5所述的一种基于模型分层的多任务联邦学习客户端贡献度度量方法,其特征在于,所述步骤s5.3的具体操作方法如下: