专利名称:联邦学习方法、装置及联邦学习系统
专利类型:实用新型专利
专利申请号:CN202210398878.X
专利申请(专利权)人:支付宝(杭州)信息技术有限公司
权利人地址:浙江省杭州市西湖区西溪路556号8层B段801-11
专利发明(设计)人:崔锦铭,陈岑,王力
专利摘要:本说明书的实施例提供一种联邦学习方法、装置及联邦学习系统。联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据。在各个第一成员设备处,使用本地数据训练全局模型得到各个模型参数的本地参数更新量;从全局模型的模型参数中选择适合于本地训练的部分模型参数;并将所选择的模型参数的本地参数更新量发送给第二成员设备。在第二成员设备处,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;基于所述重构的各个模型参数的参数更新量进行全局模型更新;以及将更新后的全局模型作为下一模型训练过程的全局模型发送给各个第一成员设备。
主权利要求:
1.一种联邦学习方法,所述联邦学习方法由联邦学习系统执行,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习方法包括:在各个第一成员设备处,
使用本地数据训练全局模型得到各个模型参数的本地参数更新量;
从全局模型的模型参数中选择适合于本地训练的部分模型参数;
将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备,在第二成员设备处,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;
基于所述重构的各个模型参数的参数更新量进行全局模型更新;以及
将更新后的全局模型作为下一模型训练过程的全局模型发送给各个第一成员设备,其中,所述第二成员设备包括第一数目个第二成员设备,将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备包括:将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片;以及将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给所述第二成员设备中的一个第二成员设备,其中,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。
2.如权利要求1所述的联邦学习方法,其中,从全局模型的模型参数中选择适合于本地训练的部分模型参数包括:基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。
3.如权利要求1所述的联邦学习方法,其中,各个第一成员设备所发送的参数更新量的个数相同,所述第二成员设备包括两个第二成员设备,在各个第一成员设备处将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片包括:使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所述布谷鸟哈希表的对应位置,并且所述布谷鸟哈希表中的每个位置放置一个参数编号;以及基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用所述第一哈希函数集以及全局模型的所有模型参数的参数编号构建,其中,所述简单哈希表包括多行参数编号集合,每行参数编号集合放置一个或多个参数编号。
4.如权利要求3所述的联邦学习方法,其中,基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片包括:获取各个所选择模型参数的参数编号在所述布谷鸟哈希表中的第一位置;
确定各个所选择模型参数的参数编号在所述简单哈希表中与所述第一位置对应的一行参数编号集合中的第二位置;以及基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。
5.如权利要求4所述的联邦学习方法,其中,在各个第二成员设备处,使用从各个第一成员设备接收的本地参数更新量协同重构全局模型的各个模型参数的参数更新量包括:在各个第二成员设备处,使用从各个第一成员设备接收的模型参数的参数更新量分片,重构全局模型的各个模型参数在该第二成员设备处的参数更新量分片;以及各个第二成员设备使用各自得到的各个模型参数的参数更新量分片,协同计算全局模型的各个模型参数的参数更新量。
6.如权利要求5所述的联邦学习方法,其中,在各个第二成员设备处,使用从各个第一成员设备接收的模型参数的参数更新量分片进,重构全局模型的各个模型参数在该第二成员设备处的参数更新量分片包括:在各个第二成员设备处,针对全局模块的各个模型参数,
使用所述第一哈希函数集,确定该模型参数的参数编号在所述简单哈希表中所处的参数编号集合行以及在各行参数编号集合中的第三位置;
基于所确定出的第三位置以及从各个第一成员设备接收的参数更新量分片,使用分布式点函数中的分布式密钥聚合算法来分别重构该模型参数在各个第一成员设备处的本地参数更新量分片;以及将所确定出的该模型参数在各个第一成员设备处的本地参数更新量分片累加,得到该模型参数在该第二成员设备处的参数更新量分片。
7.一种联邦学习方法,所述联邦学习方法由联邦学习系统中的第一成员设备执行,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习方法包括:使用本地数据训练全局模型得到各个模型参数的本地参数更新量;
从全局模型的模型参数中选择适合于本地训练的部分模型参数;
将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备,其中,各个第一成员设备的本地参数更新量供所述第二成员设备使用来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备,其中,所述第二成员设备包括第一数目个第二成员设备,
将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备包括:将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片;以及将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给所述第二成员设备中的一个第二成员设备,其中,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。
8.如权利要求7所述的联邦学习方法,其中,从全局模型的模型参数中选择适合于本地训练的部分模型参数包括:基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。
9.如权利要求7所述的联邦学习方法,其中,各个第一成员设备所发送的参数更新量的个数相同,所述第二成员设备包括两个第二成员设备,在各个第一成员设备处将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片包括:使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所述布谷鸟哈希表的对应位置,并且所述布谷鸟哈希表中的每个位置放置一个参数编号;以及基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用所述第一哈希函数集以及全局模型的所有模型参数的参数编号构建,所述简单哈希表包括多行参数编号集合,每行参数编号集合放置一个或多个参数编号。
10.如权利要求9所述的联邦学习方法,其中,基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片包括:获取各个所选择模型参数的参数编号在所述布谷鸟哈希表中的第一位置;
确定各个所选择模型参数的参数编号在所述简单哈希表中与所述第一位置对应的一行参数编号集合中的第二位置;以及基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。
11.一种联邦学习装置,所述联邦学习装置应用于联邦学习系统中的第一成员设备,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习装置包括:模型训练单元,使用本地数据训练全局模型得到各个模型参数的本地参数更新量;
模型参数选择单元,从全局模型的模型参数中选择适合于本地训练的部分模型参数;
参数更新量发送单元,将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备,其中,各个第一成员设备的本地参数更新量供所述第二成员设备使用来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备,其中,所述第二成员设备包括第一数目个第二成员设备,
所述参数更新量发送单元包括:
参数更新量分片模块,将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片;以及参数更新量分片发送模块,将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给所述第二成员设备中的一个第二成员设备,其中,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。
12.如权利要求11所述的联邦学习装置,其中,所述模型参数选择单元基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。
13.如权利要求11所述的联邦学习装置,其中,各个第一成员设备所发送的参数更新量的个数相同,所述第二成员设备包括两个第二成员设备,所述参数更新量分片模块包括:哈希表构建子模块,使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所述布谷鸟哈希表的对应位置,并且所述布谷鸟哈希表中的每个位置放置一个参数编号;以及参数更新量分片子模块,基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用所述第一哈希函数集以及全局模型的所有模型参数的参数编号构建,所述简单哈希表包括多行参数编号集合,每行参数编号集合放置一个或多个参数编号。
14.如权利要求13所述的联邦学习装置,其中,所述参数更新量分片子模块:获取各个所选择模型参数的参数编号在所述布谷鸟哈希表中的第一位置;
确定各个所选择模型参数的参数编号在所述简单哈希表中与所述第一位置对应的一行参数编号集合中的第二位置;以及基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。
15.一种联邦学习系统,包括:
至少两个第一成员设备,每个第一成员设备具有用于全局模型训练的本地数据,并且包括如权利要求11‑14中任一所述的联邦学习装置;以及第二成员设备,包括联邦学习装置,
所述第二成员设备中的联邦学习装置包括:
参数更新量接收单元,从各个第一成员设备接收全局模型中的部分模型参数的本地参数更新量,所述部分模型参数包括各个第一成员设备从全局模型的各个模型参数中选择出的适合于本地训练的部分模型参数;
参数更新量重构单元,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;
模型更新单元,基于所述重构的各个模型参数的参数更新量进行全局模型更新;以及模型发送单元,将更新后的全局模型作为下一模型训练过程的当前全局模型发送给各个第一成员设备。
16.一种联邦学习装置,包括:
至少一个处理器,
与所述至少一个处理器耦合的存储器,以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求7到10中任一所述的联邦学习方法。
17.一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如权利要求7到10中任一所述的联邦学习方法。
18.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如权利要求7到10中任一所述的联邦学习方法。 说明书 : 联邦学习方法、装置及联邦学习系统技术领域[0001] 本说明书实施例通常涉及联邦学习领域,尤其涉及联邦学习方法、装置及联邦学习系统。背景技术[0002] 联邦学习(FederatedLearning)是一种新兴的人工智能基础技术,其旨在没有中心训练数据的情况下,联合多个数据终端进行机器学习训练。在联邦学习时,多个数据终端在保证训练数据在终端的同时,协作训练出共享的全局模型。发明内容[0003] 本说明书实施例提供一种联邦学习方法及装置。利用该联邦学习方法及装置,通过各个第一成员设备使用本地数据训练全局模型得到各个模型参数的本地参数更新量,从全局模型的模型参数中选择适合于本地训练的部分模型参数并将所选择的部分模型参数的本地参数更新量发送给第二成员设备,由第二成员设备使用所接收的本地参数更新量来重构全局模型的各个模型参数的参数更新量来进行全局模型更新,从而可以在确保全局模型的模型训练性能不受较大影响的情况下降低第一成员设备和第二成员设备之间的通信代价。[0004] 根据本说明书实施例的一个方面,提供一种联邦学习方法,所述联邦学习方法由联邦学习系统执行,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习方法包括:在各个第一成员设备处,使用本地数据训练全局模型得到各个模型参数的本地参数更新量;从全局模型的模型参数中选择适合于本地训练的部分模型参数;将所选择的模型参数的本地参数更新量发送给第二成员设备,在第二成员设备处,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;基于所述重构的各个模型参数的参数更新量进行全局模型更新;以及将更新后的全局模型作为下一模型训练过程的全局模型发送给各个第一成员设备。[0005] 可选地,在上述方面的一个示例中,从全局模型的模型参数中选择适合于本地训练的部分模型参数可以包括:基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。[0006] 可选地,在上述方面的一个示例中,将所选择的模型参数的本地参数更新量发送给第二成员设备可以包括:将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备。[0007] 可选地,在上述方面的一个示例中,所述第二成员设备包括第一数目个第二成员设备。将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备可以包括:将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片;以及将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给所述第二成员设备中的一个第二成员设备,其中,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。[0008] 可选地,在上述方面的一个示例中,各个第一成员设备所发送的参数更新量的个数相同,所述第二成员设备包括两个第二成员设备。在各个第一成员设备处,将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片可以包括:使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所述布谷鸟哈希表的对应位置,并且所述布谷鸟哈希表中的每个位置放置一个参数编号;以及基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用所述第一哈希函数集以及全局模型的所有模型参数的参数编号构建,所述简单哈希表包括多行参数编号集合,每行参数编号集合放置一个或多个参数编号。[0009] 可选地,在上述方面的一个示例中,基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片可以包括:获取各个所选择模型参数的参数编号在所述布谷鸟哈希表中的第一位置;确定各个所选择模型参数的参数编号在所述简单哈希表中与所述第一位置对应的一行参数编号集合中的第二位置;以及基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。[0010] 可选地,在上述方面的一个示例中,在各个第二成员设备处,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量可以包括:在各个第二成员设备处,使用从各个第一成员设备接收的模型参数的参数更新量分片,重构全局模型的各个模型参数在该第二成员设备处的参数更新量分片;以及各个第二成员设备使用各自得到的各个模型参数的参数更新量分片,协同计算全局模型的各个模型参数的参数更新量。[0011] 可选地,在上述方面的一个示例中,在各个第二成员设备处,使用从各个第一成员设备接收的模型参数的参数更新量分片,重构全局模型的各个模型参数在该第二成员设备处的参数更新量分片可以包括:针对全局模块的各个模型参数,使用所述第一哈希函数集,确定该模型参数的参数编号在所述简单哈希表中所处的参数编号集合行以及在各行参数编号集合中的第三位置;基于所确定出的第三位置以及从各个第一成员设备接收的参数更新量分片,使用分布式点函数中的分布式密钥聚合算法来分别重构该模型参数在各个第一成员设备处的本地参数更新量分片;以及将所确定出的该模型参数在各个第一成员设备处的本地参数更新量分片累加,得到该模型参数在该第二成员设备处的参数更新量分片。[0012] 根据本说明书实施例的另一方面,提供一种联邦学习方法,所述联邦学习方法由联邦学习系统中的第一成员设备执行,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习方法包括:使用本地数据训练全局模型得到各个模型参数的本地参数更新量;从全局模型的模型参数中选择适合于本地训练的部分模型参数;将所选择的模型参数的本地参数更新量发送给第二成员设备,其中,各个第一成员设备的本地参数更新量供所述第二成员设备使用来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0013] 可选地,在上述方面的一个示例中,从全局模型的模型参数中选择适合于本地训练的部分模型参数可以包括:基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。[0014] 可选地,在上述方面的一个示例中,将所选择的模型参数的本地参数更新量发送给第二成员设备可以包括:将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备。[0015] 可选地,在上述方面的一个示例中,所述第二成员设备包括第一数目个第二成员设备。将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备可以包括:将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片;以及将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给所述第二成员设备中的一个第二成员设备,其中,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。[0016] 可选地,在上述方面的一个示例中,各个第一成员设备所发送的参数更新量的个数相同,所述第二成员设备包括两个第二成员设备。在各个第一成员设备处,将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片可以包括:使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所述布谷鸟哈希表的对应位置,并且所述布谷鸟哈希表中的每个位置放置一个参数编号;以及基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用所述第一哈希函数集以及全局模型的所有模型参数的参数编号构建,所述简单哈希表包括多行参数编号集合,每行参数编号集合放置一个或多个参数编号。[0017] 可选地,在上述方面的一个示例中,基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片可以包括:获取各个所选择模型参数的参数编号在所述布谷鸟哈希表中的第一位置;确定各个所选择模型参数的参数编号在所述简单哈希表中与所述第一位置对应的一行参数编号集合中的第二位置;以及基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。[0018] 根据本说明书实施例的另一方面,提供一种联邦学习方法,所述联邦学习方法由联邦学习系统中的第二成员设备执行,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习方法包括:从各个第一成员设备接收全局模型中的部分模型参数的本地参数更新量,所述部分模型参数包括各个第一成员设备从全局模型的各个模型参数中选择出的适合于本地训练的部分模型参数;使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;基于所述重构的各个模型参数的参数更新量进行全局模型更新;以及将更新后的全局模型作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0019] 根据本说明书实施例的另一方面,提供一种联邦学习装置,所述联邦学习装置应用于联邦学习系统中的第一成员设备,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习装置包括:模型训练单元,使用本地数据训练全局模型得到各个模型参数的本地参数更新量;模型参数选择单元,从全局模型的模型参数中选择适合于本地训练的部分模型参数;参数更新量发送单元,将所选择的模型参数的本地参数更新量发送给第二成员设备,其中,各个第一成员设备的本地参数更新量供所述第二成员设备使用来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0020] 可选地,在上述方面的一个示例中,所述模型参数选择单元基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。[0021] 可选地,在上述方面的一个示例中,所述参数更新量发送单元将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备。[0022] 可选地,在上述方面的一个示例中,所述第二成员设备包括第一数目个第二成员设备。所述参数更新量发送单元可以包括:参数更新量分片模块,将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片;以及参数更新量分片发送模块,将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给所述第二成员设备中的一个第二成员设备,其中,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。[0023] 可选地,在上述方面的一个示例中,各个第一成员设备所发送的参数更新量的个数相同,所述第二成员设备包括两个第二成员设备。所述参数更新量分片模块可以包括:哈希表构建子模块,使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所述布谷鸟哈希表的对应位置,并且所述布谷鸟哈希表中的每个位置放置一个参数编号;以及参数更新量分片子模块,基于所述布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用所述第一哈希函数集以及全局模型的所有模型参数的参数编号构建,所述简单哈希表包括多行参数编号集合,每行参数编号集合放置一个或多个参数编号。[0024] 可选地,在上述方面的一个示例中,所述参数更新量分片子模块被配置为:获取各个所选择模型参数的参数编号在所述布谷鸟哈希表中的第一位置;确定各个所选择模型参数的参数编号在所述简单哈希表中与所述第一位置对应的一行参数编号集合中的第二位置;以及基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。[0025] 根据本说明书实施例的另一方面,提供一种联邦学习装置,所述联邦学习装置应用于联邦学习系统中的第二成员设备,所述联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据,所述联邦学习装置包括:参数更新量接收单元,从各个第一成员设备接收全局模型中的部分模型参数的本地参数更新量,所述部分模型参数包括各个第一成员设备从全局模型的各个模型参数中选择出的适合于本地训练的部分模型参数;参数更新量重构单元,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;模型更新单元,基于所述重构的各个模型参数的参数更新量进行全局模型更新;以及模型发送单元,将更新后的全局模型作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0026] 根据本说明书实施例的另一方面,提供一种联邦学习系统,包括:至少两个第一成员设备,每个第一成员设备具有用于全局模型训练的本地数据,并且包括如上所述的应用于第一成员设备处的联邦学习装置;以及第二成员设备,包括如上所述应用于第二成员设备处的联邦学习装置。[0027] 根据本说明书实施例的另一方面,提供一种联邦学习装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的联邦学习方法。[0028] 根据本说明书实施例的另一方面,提供一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如上所述的联邦学习方法。[0029] 根据本说明书实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的联邦学习方法。附图说明[0030] 通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。[0031] 图1示出了联邦学习过程的示例架构图。[0032] 图2示出了根据本说明书的实施例的联邦学习系统的示例结构图。[0033] 图3示出了根据本说明书的实施例的联邦学习过程的示例流程图。[0034] 图4示出了根据本说明书的实施例的参数更新量发送过程的示例流程图。[0035] 图5示出了根据本说明书的实施例的参数更新量分片过程的示例流程图。[0036] 图6示出了布谷鸟哈希表构建过程的示例示意图。[0037] 图7示出了简单哈希表的示例示意图。[0038] 图8示出了布谷鸟哈希表与简单哈希表之间的关系的示例示意图。[0039] 图9示出了根据本说明书的实施例的参数更新量分片过程的示例示意图。[0040] 图10示出了根据本说明书的实施例的参数更新量重构过程的示例流程图。[0041] 图11示出了根据本说明书的实施例的参数更新量分片聚合过程的示例流程图。[0042] 图12示出了根据本说明书的实施例的参数更新量分片聚合过程的示例示意图。[0043] 图13示出了根据本说明书的实施例的联邦学习过程的示例示意图。[0044] 图14示出了根据本说明书的实施例的参数更新量发送过程的另一示例流程图。[0045] 图15示出了根据本说明书的实施例的应用于第一成员设备的联邦学习装置的示例方框图。[0046] 图16示出了根据本说明书的实施例的参数更新量发送单元的示例方框图。[0047] 图17示出了根据本说明书的实施例的参数更新量分片模块的示例方框图。[0048] 图18示出了根据本说明书的实施例的应用于第二成员设备的联邦学习装置的示例方框图。[0049] 图19示出了根据本说明书的实施例的基于计算机系统实现的应用于第一成员设备的联邦学习装置的示例示意图。[0050] 图20示出了根据本说明书的实施例的基于计算机系统实现的应用于第二成员设备的联邦学习装置的示例示意图。具体实施方式[0051] 现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。[0052] 如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。[0053] 联邦学习旨在没有中心训练数据的情况下,联合多个客户端设备进行机器学习训练,以期解决数据不能出域的问题。在联邦学习时,多个客户端设备使用各自的训练数据在客户端设备独立训练云端全局模型,并且将训练出的全局模型的模型梯度信息发送给云端设备进行梯度聚合,由此协作训练出云端的共享全局模型。[0054] 由于客户端设备独立训练出的梯度信息依然“隐式地”包含客户端设备所持有原始数据信息,为了进一步防止云端设备得到客户端设备独立训练出的梯度信息,提出了基于秘密分享的安全聚合方案,该安全聚合方案使得云端设备仅仅知道聚合后的梯度信息结果,而不知道各个客户端设备处训练出的梯度信息,从而达到不泄露客户端设备的梯度信息的目的。在下面的描述中,为了描述方便,将“客户端设备”和“云端设备”分别称为“客户端”和“服务端”。[0055] 图1示出了联邦学习过程100的示例架构图。[0056] 如图1所示,在客户端110‑1到110‑n处,分别使用各自的训练数据X(1)、X(2)、…、X(n)(1) (2) (n)在本地训练云端全局模型W,由此训练出各自的模型梯度信息Δw 、Δw 、…、Δw 。然后,客户端110‑1到110‑n采用基于秘密分享的安全聚合方案,将各自得到的模型梯度信息(1) (2) (n)Δw 、Δw 到Δw 发送给服务端120,由服务端120进行梯度安全聚合,由此得到聚合后的模型梯度 随后,服务端120使用聚合后的模型梯度Δw进行模型更新,并将更新后的全局模型下发给各个客户端来再次进行本地模型训练。如此循环训练,直到协作训练出最终的全局模型。[0057] 在上面的联邦学习过程中,各个客户端在本地训练出模型梯度信息后,将全局模型的所有模型参数的本地参数更新量都上传给服务端来进行全局模型更新。但是,在一些应用场景下,每个客户端处的训练数据仅仅适合训练全局模型的部分模型参数,例如,各个客户端所具有的训练数据的数据特性不同,而其余模型参数的模型训练结果偏差较大。在这种情况下,如果将全局模型的所有模型参数的本地参数更新量都上传给服务端进行全局模型更新,则会增加客户端和服务端之间的通信代价,并且也会影响全局模型的训练精度。[0058] 鉴于此,本说明书实施例提出一种由联邦学习系统执行的联邦学习方法。联邦学习系统包括至少两个第一成员设备和第二成员设备,第一成员设备具有用于全局模型训练的本地数据。在进行联邦学习时,在各个第一成员设备处,使用本地数据训练全局模型得到各个模型参数的本地参数更新量;从全局模型的模型参数中选择适合于本地训练的部分模型参数;并将所选择的模型参数的本地参数更新量发送给第二成员设备。在第二成员设备处,使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量;并基于所述重构的各个模型参数的参数更新量进行全局模型更新。按照这种联邦学习方法,在每次模型训练时,各个第一成员设备可以仅仅将各自训练数据所适合的全局模型模型参数的梯度信息反馈给服务端来进行模型更新,从而可以在确保全局模型的模型训练性能不受较大影响的情况下,降低第一成员设备和第二成员设备之间的通信代价。[0059] 图2示出了根据本说明书的实施例的联邦学习系统200的示例结构图。[0060] 如图2所示,联邦学习系统200包括至少两个第一成员设备210以及第二成员设备220。在图2中示出了3个第一成员设备210‑1到210‑3。在本说明书的其它实施例中,可以包括更多或者更少的第一成员设备210。至少两个第一成员设备210以及第二成员设备220可以通过例如但不局限于互联网或局域网等的网络230相互通信。[0061] 在本说明书的实施例中,第一成员设备210可以是用于本地收集数据样本的设备或设备方。第二成员设备220可以是部署全局模型的设备或设备方。在本说明书中,术语“第一成员设备”和术语“数据拥有方”或“客户端”可以互换使用。术语“第二成员设备”和术语“模型拥有方”、“服务端”或“云端设备”可以互换使用。[0062] 在本说明书中,第一成员设备210‑1到210‑3的本地数据可以包括各个第一成员设备在本地收集的业务数据。业务数据可以包括业务对象的特征数据。业务对象的示例可以包括但不限于用户、商品、事件或关系。相应地,业务数据例如可以包括但不限于在本地收集的用户特征数据、商品特征数据、事件特征数据或关系特征数据,比如,用户特征数据、业务处理数据、金融交易数据、商品交易数据、医疗健康数据等等。业务数据例如可以应用于全局模型来进行模型预测、模型训练以及其它合适的多方数据联合处理。[0063] 在本说明书中,业务数据可以包括基于文本数据、图像数据和/或语音数据的业务数据。相应地,业务模型可以应用于基于文本数据、图像数据和/或语音数据的业务风险识别、业务分类或者业务决策等等。例如,本地数据可以是由医院收集的医疗数据,并且业务模型可以用于进行疾病检查或疾病诊断。或者,所收集的本地数据可以包括用户特征数据。相应地,全局模型可以应用于基于用户特征数据的业务风险识别、业务分类、业务推荐或者业务决策等等。全局模型的示例可以包括但不限于人脸识别模型、疾病诊断模型、业务风险预测模型、服务推荐模型等等。[0064] 在本说明书中,各个第一成员设备所具有的本地数据共同组成全局模型的训练样本数据,并且各个第一成员设备所拥有的本地数据是该第一成员设备的秘密,不能被其他第一成员设备获悉或者完整地获悉。[0065] 在一个实际应用示例中,各个第一成员设备例如可以是业务应用方或业务应用关联方的数据存储服务器或智能终端设备,比如,不同金融机构或医疗机构的本地数据存储服务器或智能终端设备。第二成员设备例如可以是业务提供商或业务运营商的服务器,比如,用于提供支付服务的第三方支付平台的服务器。[0066] 在本说明书中,各个第一成员设备210以及第二成员设备220可以是任何合适的具有计算能力的电子设备。所述电子设备包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动电子设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴电子设备、消费电子设备等等。[0067] 此外,第一成员设备210‑1、210‑2、210‑3和第二成员设备220分别具有联邦学习装置。第一成员设备210‑1、210‑2、210‑3和第二成员设备220处具有的联邦学习装置可以经由网络230执行网络通信来进行数据交互,由此协作处理来执行针对全局模型的模型训练过程。联邦学习装置的操作和结构将在下面参照附图进行详细说明。[0068] 在一些实施例中,网络230可以是有线网络或无线网络中的任意一种或多种。网络230的示例可以包括但不限于电缆网络、光纤网络、电信网络、企业内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigZee)、近场通讯(NFC)、设备内总线、设备内线路等或其任意组合。[0069] 图3示出了根据本说明书的实施例的联邦学习过程300的示例流程图。在图3的示例中,各个第一成员设备和第二成员设备协作来循环执行联邦学习过程,直到满足循环结束条件,训练出最终的全局模型。循环结束条件的示例例如可以包括但不限于:达到预定循环次数,或者全局模型的模型预测误差在预定范围内。[0070] 如图3所示,在每次循环过程中,在310,在各个第一成员设备210‑1到210‑3处,使用本地训练数据训练全局模型,得到全局模型的各个模型参数的本地参数更新量。这里,各个第一成员设备210处的本地模型训练过程可以采用本领域的常用模型训练过程来实现。[0071] 在320,在各个第一成员设备210‑1到210‑3处,从全局模型的模型参数中选择适合于本地训练的部分模型参数。在一个示例中,各个第一成员设备可以基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。例如,假设第一成员设备210‑1的本地数据是用户支付方式相关的训练数据,则所选择的模型参数可以是全局模型中的与用户支付方式相关联的模型参数。[0072] 在一些实施例中,各个第一成员设备的本地数据特性不同,从而使得各个第一成员设备处所选择的模型参数也会不同。在一个示例中,各个第一成员设备可以从全局模型的模型参数中选择相同数目个模型参数,例如,K个模型参数。在这种情况下,在某个第一成员设备根据本地数据的数据特性所选择的模型参数数目未达到K个时,可以从剩余模型参数中选择参数来补齐。例如,可以从剩余模型参数中选择模型训练效果最好的模型参数来补齐。在另一示例中,各个第一成员设备可以从全局模型的模型参数中选择不同数目个模型参数。[0073] 在330,各个第一成员设备210‑1到210‑3将所选择的模型参数的本地参数更新量发送给第二成员设备220。例如,各个第一成员设备210‑1到210‑3可以经由网络230将所选择的模型参数的本地参数更新量发送给第二成员设备220。[0074] 在340,在第二成员设备220处,使用从各个第一成员设备210‑1到210‑3接收的本地参数更新量重构全局模型的各个模型参数的参数更新量。[0075] 在350,在第二成员设备220处,基于所述重构的各个模型参数的参数更新量进行全局模型更新;并且在360,第二成员设备220将更新后的全局模型作为下一模型训练过程的全局模型发送给各个第一成员设备,以供各个第一成员设备使用来进行下轮本地模型训练。[0076] 在一个示例中,各个第一成员设备210‑1到210‑3可以将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备220。[0077] 图4示出了根据本说明书的实施例的参数更新量发送过程400的示例流程图。在图4示出的参数更新量发送过程中,第二成员设备包括第一数目个第二成员设备,各个第一成员设备的模型参数的本地参数更新量以秘密分享方式发送给各个第二成员设备。[0078] 如图4所示,在410,在各个第一成员设备处,将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片。[0079] 图5示出了根据本说明书的实施例的参数更新量分片过程500的示例流程图。在图5的示例中,各个第一成员设备所发送的参数更新量的个数相同,以及第二成员设备包括两个第二成员设备。在该示例中,全局模型的模型参数预先被编号,例如,假设全局模型包括5个模型参数,则该5个模型参数的模型参数编号可以预先被编号为模型参数1、模型参数2、模型参数3、模型参数4和模型参数5。[0080] 如图5所示,在510,在各个第一成员设备处,使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,并且布谷鸟哈希表中的每个位置放置一个参数编号。所选择模型参数的参数编号基于第一哈希函数集中的哈希函数进行哈希计算确定出布谷鸟哈希表中的对应位置,并且插入所构建的布谷鸟哈希表的对应位置。[0081] 布谷鸟哈希(CuckooHashing)是一种特定哈希表算法。对于给定的η个哈希函数(即,第一哈希函数集)、输入数据x1,…,xn以及扩展参数∈,布谷鸟哈希可以构造出具有∈n个位置(bin)的哈希表(布谷鸟哈希表)。在布谷鸟哈希表中,每个bin位置放置一个元素且仅仅放置一个元素。换言之,输入数据x1,…,xn中的每个只能放置在布谷鸟哈希表中的一个位置上。要说明的是,扩展参数∈是预先规定的合适值,例如,∈可以为1.5或者其它合适值。[0082] 图6示出了布谷鸟哈希表构建过程的示例示意图。在图6的示例中,第一哈希函数集包括两个哈希函数h1()和h2(),输入数据为a,b,c和x,以及布谷鸟哈希表的bin的个数为7个(即,∈n=7)。[0083] 在构建布谷鸟哈希表时,对于待插入的输入数据x,可以如下执行插入操作。利用哈希函数h1()和h2(),生成两个哈希值h1(x)和h2(x)。如果布谷鸟哈希表中与该两个哈希值h1(x)和h2(x)对应的两个位置上有一个位置为空,那么直接将输入数据x插入到该位置。如果布谷鸟哈希表中与该两个哈希值h1(x)和h2(x)对应的两个位置上都放置有数据,则任选一个位置,把输入数据x插入到该位置,并且将该位置上放置的数据踢出。然后,按照上述方式,将被踢出的数据重新插入布谷鸟哈希表中,直到没有数据被踢出布谷鸟哈希表为止。[0084] 如图6所示,在第一次数据插入时,输入数据x被插入数据a所处的位置,并且将数据a踢出布谷鸟哈希表。接着,执行数据a的重新插入。在数据a的重新插入过程中,将数据a插入数据c的位置处,并且将数据c踢出布谷鸟哈希表。随后,执行数据c的重新插入。在数据c的重新插入过程中,将数据c插入布谷鸟哈希表中的新位置。[0085] 此外,在本说明书的实施例中,还需要使用第一哈希函数集以及全局模型的所有模型参数的参数编号构建简单哈希表。所构建的简单哈希表包括多行参数编号集合。每行参数编号集合可以包括一个或多个全局模型参数的参数编号。例如,假设存在第一哈希函数集包括三个哈希函数,所构建的简单哈希表包括7行参数编号集合,参数编号1和7基于哈希函数1和哈希函数2计算出的哈希值与第1行参数编号集合相对应,则参数编号1和7可以放置在第1行参数编号集合中。[0086] 在构建简单哈希表时,将全局模型的所有模型参数的参数编号依序使用第一哈希函数集中的哈希函数进行哈希计算来放置到简单哈希表中。例如,假设第一哈希函数集包括三个哈希函数,以及布谷鸟哈希表的位置(bin)包括3个位置。[0087] 在进行简单哈希表构建时,首先,针对参数编号1,使用该三个哈希函数进行哈希计算,所得到的哈希计算结果与3个bin位置中的2个bin位置对应,例如,图7中的bin1和bin2对应,则将参数编号1放置到bin1和bin2中。随后,针对参数编号2,同样使用该三个哈希函数进行哈希计算,所得到的哈希计算结果与3个bin位置中的3个bin位置对应,则将参数编号2放置到bin1、bin2和bin3中。在bin1和bin2位置处,参数编号2位于参数编号1之后。接着,针对参数编号3,使用该三个哈希函数进行哈希计算,所得到的哈希计算结果与3个bin位置中的2个bin位置(bin1和bin2)对应,则将参数编号3放置到bin1和bin2中,并且位于参数编号1和2之后。针对参数编号4,使用该三个哈希函数进行哈希计算,所得到的哈希计算结果与3个bin位置中的2个bin位置(bin1和bin3)对应,则将参数编号4放置到bin1和bin3中,并且在bin1位置处,位于参数编号1、2和3之后,在bin3处,位于参数编号2之后。针对参数编号5,使用该三个哈希函数进行哈希计算,所得到的哈希计算结果与3个bin位置中的2个bin位置(bin2和bin3)对应,则将参数编号5放置到bin2和bin3中,并且在bin2位置处,位于参数编号1、2和3之后,在bin3处,位于参数编号2和4之后。按照上述处理方式,得到图7所示的简单哈希表。[0088] 要说明的是,在本说明书中,在一个示例中,简单哈希表可以由各个第一成员设备和第二成员设备分别基于全局模型的所有模型参数的参数编号以及第一哈希函数集生成。在另一示例中,简单哈希表也可以由各个第一成员设备和第二成员设备中的一个成员设备基于全局模型的所有模型参数的参数编号以及第一哈希函数集生成,并将所生成的简单哈希表共享给其它成员设备。[0089] 在一些实施例中,简单哈希表的每行参数编号集合与布谷鸟哈希表的一个位置之间可以存着对应关系。图8示出了布谷鸟哈希表与简单哈希表之间的关系的示例示意图。[0090] 回到图5,在520,在各个第一成员设备处,分别基于布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片。[0091] 分布式点函数(DistributedPointFunction,DPF)是一种特殊的密码学原语。分布式点函数由两个算法(Gen,Eval)组成。在本说明书的实施例中,Gen算法被表示为其中,λ是安全参数(通常为128bit),Tcuckoo(j)表示布谷鸟哈希表中的第j个位置上的模型参数编号,posj表示第j个位(i)置上的模型参数编号在简单哈希表中的第j行参数集合中的位置,以及Δw (Tcuckoo(j))表示布谷鸟哈希表中的第j个位置上的模型参数编号所对应的模型参数更新量。在对第一成(i) λ (i)员设备j所得到的模型参数更新量Δw (Tcuckoo(j))进行DPF.Gen(1 ,posj,Δw (Tcuckoo(j)))计算后,可以生成布谷鸟哈希表中的第j个位置上的模型参数编号所对应的模型参数(i)更新量Δw (Tcuckoo(j))的DPF密钥对[0092] 在第二成员设备包括2个第二成员设备时,Eval算法被表示为和 由此重构第一成员设备i(i)所得到的第j个模型参数更新量Δw (j)的两个参数更新量分片,和[0093] 图9示出了根据本说明书的实施例的参数更新量分片过程900的示例示意图。[0094] 如图9所示,在各个第一成员设备处,获取各个所选择模型参数的参数编号在所构建的布谷鸟哈希表中的第一位置(j)。例如,对于第一成员设备1,所选择的模型参数的参数编号2和4在布谷鸟哈希表中的第一位置分别为1和3。对于第一成员设备n,所选择模型参数的参数编号1和4在布谷鸟哈希表中的第一位置分别为1和3。[0095] 接着,在各个第一成员设备处,确定各个所选择模型参数的参数编号在所构建的简单哈希表中与该模型参数的第一位置对应的一行参数编号集合中的第二位置(posj)。例如,对于第一成员设备1,所选择的模型参数的参数编号2在简单哈希表的第一行参数编号集合中的第二位置为1,以及所选择的模型参数的参数编号4在简单哈希表的第三行参数编号集合中的第二位置为1。这里,简单哈希表中每行参数编号集合中的位置从0开始编号。对于第一成员设备n,所选择模型参数的参数编号1在简单哈希表的第一行中的第二位置为0,以及所选择模型参数的参数编号4在简单哈希表的第一行中的第二位置为1。[0096] 然后,基于各个所选择模型参数在简单哈希表中的第二位置(posj),使用分布式点函数中的分布式密钥生成算法确定各个所选择模型参数的本地参数更新量的DPF密钥对作为该本地参数更新量的参数更新量分片。如图9所示,在第一成员设备1(1)处,针对布谷鸟哈希表中的第1个位置,使用DPF.Gen(1,Δw (2))计算得到与第1个位置(即,第1个位置上的模型参数2)对应的DPF密钥对 针对布谷鸟哈希表中的第2个位置,使用DPF.Gen(0,0)计算得到与第2个位置对应的DPF密钥对 这里, 和 是与0对应的DPF密钥对。针对布谷鸟哈希表中的第3个位置,使用(1)DPF.Gen(1,Δw (4))计算得到与第3个位置(即,第1个位置上的模型参数4)对应的DPF密钥对 在第一成员设备n处,针对布谷鸟哈希表中的第1个位置,使用(n)DPF.Gen(1,Δw (1))计算得到与第1个位置(即,第3个位置上的模型参数1)对应的DPF密钥对 针对布谷鸟哈希表中的第2个位置,使用DPF.Gen(0,0)计算得到与第2个位置对应的DPF密钥对 这里, 和 是与0对应的DPF密钥(n)对。针对布谷鸟哈希表中的第3个位置,使用DPF.Gen(1,Δw (4))计算得到与第3个位置(即,第3个位置上的模型参数4)对应的DPF密钥对 要说明的是,图9中示出的是2个第二成员设备的示例。在包括第一数目个第二成员设备的情况下,针对布谷鸟哈希表中的每个位置,可以生成具有第一数目个DPF密钥的DPF密钥集合。[0097] 在一些实施例中,对于布谷鸟哈希表中未放置元素的位置,也可以不执行如上所述的DPF.Gen()处理。[0098] 回到图4,在如上得到各个所选择模型参数的本地参数更新量的参数更新量分片(例如,上述DPF密钥对)后,在420,各个第一成员设备将各个所选择模型参数的模型参数更新量的参数更新量分片中的一个参数更新量分片(例如,上述DPF密钥对中的一个DPF密钥)发送给第一数目个第二成员设备中的一个第二成员设备。由此,各个第二成员设备得到DPF密钥矩阵,如图12的上半部分所示。[0099] 在第二成员设备220接收到各个第一成员设备210‑1到210‑3所发送的本地参数更新量的参数更新量分片(例如,上述DPF密钥)后,在第二成员设备220处,使用从各个第一成员设备210‑1到210‑3接收的本地参数更新量的参数更新量分片(例如,上述DPF密钥)重构全局模型的各个模型参数在该第二成员设备处的参数更新量。[0100] 图10示出了根据本说明书的实施例的参数更新量重构过程1000的示例流程图。[0101] 如图10所示,在1010,在各个第二成员设备处,使用从各个第一成员设备接收的模型参数的参数更新量分片,重构全局模型的各个模型参数在该第二成员设备处的参数更新量分片。[0102] 在1020,各个第二成员设备使用各自得到的各个模型参数的参数更新量分片,协同计算全局模型的各个模型参数的参数更新量。例如,在一个示例中,各个第二成员设备可以基于各自得到的各个模型参数的参数更新量分片,通过多方安全计算得到全局模型的各个模型参数的参数更新量。在另一示例中,各个第二成员设备可以共享各自得到的各个模型参数的参数更新量分片,然后在本地基于各个模型参数的参数更新量分片,得到全局模型的各个模型参数的参数更新量。[0103] 图11示出了根据本说明书的实施例的参数更新量分片聚合过程1100的示例流程图。在图11的示例中,在各个第二成员设备处,针对全局模块的各个模型参数分别执行下述过程。[0104] 如图11所示,在1110,使用所述第一哈希函数集,确定该模型参数的参数编号在简单哈希表中所处的参数编号集合行以及在各行参数编号集合中的第三位置(poshd(j))。[0105] 在1120,基于所确定出的第三位置以及从各个第一成员设备接收的DPF密钥,使用分布式点函数中的分布式密钥聚合算法来分别确定出该模型参数在各个第一成员设备处的本地参数更新量分片 和[0106] 在1130,将所确定出的该模型参数在各个第一成员设备处的本地参数更新量分片累加,得到该模型参数在该第二成员设备处的参数更新量分片。例如,针对全局模型的第j个模型参数,第b个第二成员设备处得到的该第j个模型参数的当前参数更新量分片为[0107] 图12示出了根据本说明书的实施例的参数更新量分片聚合过程的示例示意图。在图12的示例中,全局模型包括5个模型参数,第一成员设备包括n个第一成员设备,所使用的第一哈希函数集包括三个第一哈希函数,第二成员设备1接收到各个第一成员设备发送的三个DPF密钥,如图12的上部附图所示。[0108] 在第二成员设备b处进行聚合时,针对全局模型的5个模型参数按照下部附图所示的聚合协议逐个进行聚合计算。如图12所示,针对第1个模型参数,采用公式分别确定第i个第一成员设备使用第一哈希函数集中的第d个哈希函数得到的DPF密钥对应的参数更新量分片,然后进行聚合求和,得到第1个模型参数在第二成员设备b处的当前参数更新量分片针对第2个模型参数,采用公式 分别确定第i个第一成员设备使用第一哈希函数集中的第d个哈希函数得到的DPF密钥对应的参数更新量分片,然后进行聚合求和,得到第2个模型参数在第二成员设备b处的当前参数更新量分片[0109] 图13示出了根据本说明书的实施例的联邦学习过程的示例示意图。[0110] 如图13所示,在第一成员设备1到n处完成本地全局模型训练得到模型参数更新量后,从所得到的模型参数更新量中选择适合于本地数据训练的部分模型参数的模型参数更新量。在各个第一成员设备处,使用布谷鸟哈希表和简单哈希表生成各个所选择模型参数的模型参数更新量的DPF密钥对,并且将所生成的DPF密钥对中的一个DPF密钥发送给第二成员设备1和第二成员设备2。第二成员设备1和2分别使用所接收的DPF密钥来进行参数更新量重构,由此得到全局模型的模型更新量,并使用所得到的模型更新量进行全局模型更新。[0111] 图14示出了根据本说明书的实施例的参数更新量发送过程的另一示例流程图。[0112] 在图14的示例中,在第一成员设备1到n处完成本地全局模型训练得到模型参数更新量后,从所得到的模型参数更新量中选择适合于本地数据训练的部分模型参数的模型参数更新量。然后,各个第一成员设备1到n使用隐私求并算法来得到各个第一成员设备所选择模型参数 的模型参数并集s=∪isi,并基于模型参数并集S对各自选择的模型参数进行参数填充以得到具有S个模型参数的模型参数更新量 随后,将经过参数填充后的模型参数更新量 发送给第二成员设备来进行安全聚合处理,由此得到全局模型的模型更新量Δw,并基于所得到的模型更新量Δw进行模型更新。[0113] 如上参照图2到图14描述了根据本说明书的实施例的联邦学习过程。利用上述联邦学习过程,通过各个第一成员设备使用本地数据训练全局模型得到各个模型参数的本地参数更新量,从全局模型的模型参数中选择适合于本地训练的部分模型参数并将所选择的部分模型参数的本地参数更新量发送给第二成员设备,由第二成员设备使用所接收的本地参数更新量来重构全局模型的各个模型参数的参数更新量来进行全局模型更新,从而可以在确保全局模型的模型训练性能不受较大影响的情况下降低第一成员设备和第二成员设备之间的通信代价。[0114] 利用上述联邦学习过程,通过基于本地数据的数据特性来从全局模型的模型参数中选择适合于本地训练的部分模型参数,可以使得所选择的模型参数更加反映本地数据的数据特性,由此提升全局模型的模型训练精度。[0115] 利用上述联邦学习过程,通过将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备,可以进一步提升本地数据的隐私保护。[0116] 图15示出了根据本说明书的实施例的应用于第一成员设备的联邦学习装置1500的示例方框图。如图15所示,联邦学习装置1500包括模型训练单元1510、模型参数选择单元1520和参数更新量发送单元1530。[0117] 模型训练单元1510被配置为使用本地数据训练全局模型得到各个模型参数的本地参数更新量。模型参数选择单元1520被配置为从全局模型的模型参数中选择适合于本地训练的部分模型参数。在一个示例中,模型参数选择单元1520可以基于本地数据的数据特性,从全局模型的模型参数中选择适合于本地训练的部分模型参数。[0118] 参数更新量发送单元1530被配置为将所选择的模型参数的本地参数更新量发送给第二成员设备。然后,第二成员设备使用各个第一成员设备的本地参数更新量来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0119] 在一些实施例中,参数更新量发送单元1530可以将所选择的模型参数的本地参数更新量以隐私保护方式发送给第二成员设备。[0120] 图16示出了根据本说明书的实施例的参数更新量发送单元1600的示例方框图。在图16的示例中,第二成员设备包括第一数目个第二成员设备。如图16所示,参数更新量发送单元1600包括参数更新量分片模块1610和参数更新量分片发送模块1620。[0121] 参数更新量分片模块1610被配置为将各个所选择模型参数的本地参数更新量分片为第一数目个参数更新量分片。参数更新量分片发送模块1620被配置为将各个所选择模型参数的参数更新量分片中的一个参数更新量分片发送给第二成员设备中的一个第二成员设备。在接收到各个第一成员设备发送的参数更新量分片后,各个第二成员设备使用所接收的参数更新量分片协同重构全局模型的各个模型参数的参数更新量。[0122] 图17示出了根据本说明书的实施例的参数更新量分片模块1700的示例方框图。在图17的示例中,各个第一成员设备所发送的参数更新量的个数相同,以及第二成员设备包括两个第二成员设备。如图17所示,参数更新量分片模块1700包括哈希表构建子模块1710和参数更新量分片子模块1720。[0123] 哈希表构建子模块1710被配置为使用第一哈希函数集来基于所选择模型参数的参数编号构建布谷鸟哈希表,所构建的布谷表哈希表的位置基于第一成员设备所发送的参数更新量个数确定,所选择模型参数的参数编号被插入所构建的布谷鸟哈希表的对应位置,并且布谷鸟哈希表中的每个位置仅仅放置一个参数编号。[0124] 参数更新量分片子模块1720被配置为基于布谷鸟哈希表和简单哈希表,使用分布式点函数将各个所选择模型参数的本地参数更新量分片为两个参数更新量分片,所述简单哈希表使用第一哈希函数集以及全局模型的所有模型参数的参数编号构建。所构建的简单哈希表包括多行参数编号集合,并且每行参数编号集合放置一个或多个参数编号。[0125] 在一些实施例中,参数更新量分片子模块1720可以被配置为:获取各个所选择模型参数的参数编号在布谷鸟哈希表中的第一位置;确定各个所选择模型参数的参数编号在简单哈希表中与第一位置对应的一行参数编号集合中的第二位置。然后,参数更新量分片子模块1720基于各个所选择模型参数在所述简单哈希表中的第二位置,使用分布式点函数中的分布式密钥生成算法将各个所选择模型参数的本地参数更新量分别分片为两个参数更新量分片。[0126] 图18示出了根据本说明书的实施例的应用于第二成员设备的联邦学习装置1800的示例方框图。如图18所示,联邦学习装置1800包括参数更新量接收单元1810、参数更新量重构单元1820、模型更新单元1830和模型发送单元1840。[0127] 参数更新量接收单元1810被配置为从各个第一成员设备接收全局模型中的部分模型参数的本地参数更新量,所述部分模型参数包括各个第一成员设备从全局模型的各个模型参数中选择出的适合于本地训练的部分模型参数。[0128] 参数更新量重构单元1820被配置为使用从各个第一成员设备接收的本地参数更新量重构全局模型的各个模型参数的参数更新量。[0129] 模型更新单元1830被配置为基于重构的各个模型参数的参数更新量进行全局模型更新。模型发送单元1840被配置为将更新后的全局模型作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0130] 在一些实施例中,各个第二成员设备的参数更新量重构单元1820可以使用从各个第一成员设备接收的模型参数的参数更新量分片,重构全局模型的各个模型参数在该第二成员设备处的参数更新量分片。然后,使用各自得到的各个模型参数的参数更新量分片,协同计算全局模型的各个模型参数的参数更新量。[0131] 在一些实施例中,参数更新量重构单元1820可以被配置为使用第一哈希函数集,确定该模型参数的参数编号在简单哈希表中所处的参数编号集合行以及在各行参数编号集合中的第三位置 然后,参数更新量重构单元1820基于所确定出的第三位置以及从各个第一成员设备接收的DPF密钥,使用分布式点函数中的分布式密钥聚合算法来分别确定出该 模型参数在各 个第一成员设 备处的本地 参数更新量 分片和 随后,参数更新量重构单元1820将所确定出的该模型参数在各个第一成员设备处的本地参数更新量分片累加,得到该模型参数在该第二成员设备处的参数更新量分片。[0132] 在一些实施例中,提供一种联邦学习系统。所提供的联邦学习系统包括至少两个第一成员设备和第二成员设备。每个第一成员设备具有用于全局模型训练的本地数据,并且包括如上所述的应用于第一成员设备处的联邦学习装置。第二成员设备包括如上所述应用于第二成员设备处的联邦学习装置。[0133] 如上参照图1到图18,对根据本说明书实施例的联邦学习方法以及联邦学习装置进行了描述。上面的联邦学习装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。[0134] 图19示出了根据本说明书的实施例的基于计算机系统实现的应用于第一成员设备的联邦学习装置1900的示例示意图。如图19所示,联邦学习装置1900可以包括至少一个处理器1910、存储器(例如,非易失性存储器)1920、内存1930和通信接口1940,并且至少一个处理器1910、存储器1920、内存1930和通信接口1940经由总线1960连接在一起。至少一个处理器1910执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。[0135] 在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1910:使用本地数据训练全局模型得到各个模型参数的本地参数更新量;从全局模型的模型参数中选择适合于本地训练的部分模型参数;将所选择的模型参数的本地参数更新量发送给第二成员设备,其中,各个第一成员设备的本地参数更新量供第二成员设备使用来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0136] 应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1910进行本说明书的各个实施例中以上结合图2‑图9、图13‑图14以及图15‑图17描述的各种操作和功能。[0137] 图20示出了根据本说明书的实施例的基于计算机系统实现的应用于第二成员设备的联邦学习装置2000的示例示意图。如图20所示,联邦学习装置2000可以包括至少一个处理器2010、存储器(例如,非易失性存储器)2020、内存2030和通信接口2040,并且至少一个处理器2010、存储器2020、内存2030和通信接口2040经由总线2060连接在一起。至少一个处理器2010执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。[0138] 在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器2010:使用本地数据训练全局模型得到各个模型参数的本地参数更新量;从全局模型的模型参数中选择适合于本地训练的部分模型参数;将所选择的模型参数的本地参数更新量发送给第二成员设备,其中,各个第一成员设备的本地参数更新量供第二成员设备使用来重构全局模型的各个模型参数的参数更新量并进行全局模型更新,所述更新后的全局模型被作为下一模型训练过程的当前全局模型发送给各个第一成员设备。[0139] 应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器2010进行本说明书的各个实施例中以上结合图10‑图14以及图18描述的各种操作和功能。[0140] 根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图2‑图18描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。[0141] 在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。[0142] 可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD‑ROM、CD‑R、CD‑RW、DVD‑ROM、DVD‑RAM、DVD‑RW、DVD‑RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。[0143] 根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图2‑图18描述的各种操作和功能。[0144] 本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。[0145] 需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。[0146] 以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。[0147] 上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。[0148] 本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
专利地区:浙江
专利申请日期:2022-04-15
专利公开日期:2024-06-18
专利公告号:CN114707662B