横向联邦学习方法及装置转让专利

申请号 : CN202110849252.1

文献号 : CN115700565A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 聂文静

申请人 : 中国移动通信有限公司研究院中国移动通信集团有限公司

摘要 :

本发明提供一种横向联邦学习方法及装置,该方法在传统横向联邦学习机制上增加了一个新型的安全求交协议,在不知道彼此负样本的情况下,得到参与方正确的交集,而且不会得到交集以外另一方集合中的任何信息,能够增加各参与方的负样本,降低标签类别的不平衡性,解决不同参与方同一个用户的标签不一致问题;或者,以本地模型为联邦学习的初始参数,本地模型的模型指标值为基准,识别参与方传递的梯度值的有效性,保证联邦学习的结果优于本地模型的结果,并降低由于参与方分布差异性大导致模型结果变差,以及采用数据切片的方式,传递多个切片的平均梯度,改变模型梯度交互的方式,即保护彼此原始数据求出梯度值又降低联邦学习模型运行速度,加快收敛。

权利要求 :

1.一种横向联邦学习方法,其特征在于,应用于横向联邦学习的参与方节点,所述方法包括:接收第三方仲裁节点发送的公开密钥;

根据生成的随机数、所述公开密钥和加密公式,对本地用户数据中的用户标识进行加密,得到密文集合;

将自身的密文集合发送给其他参与方节点,并接收其他参与方节点发送的各自的密文集合;

将接收到的密文集合中的至少部分密文进行再次加密,得到各参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;

将所述目标密文集合发送给所述第三方仲裁节点;

接收所述第三方仲裁节点发送的各参与方节点的目标密文集合的交集中属于自身的用户标识的信息;

将接收到的用户标识中标签为负样本的用户标识的信息回传给所述第三方仲裁节点;

接收所述第三方仲裁节点回传的目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识;

将所述目标用户标识对应的用户数据的标签更改为负样本,得到新的用户数据。

2.根据权利要求1所述的方法,其特征在于,将接收到的密文集合中的至少部分密文进行再次加密包括:判断接收到的密文集合中的密文的数量是否低于阈值;

若低于所述阈值,直接采用所述加密公式对接收到的密文集合中的各密文进行再次加密;

若高于所述阈值,从接收到的密文集合中选取所述阈值个密文,采用所述加密公式对所述阈值个密文进行再次加密。

3.根据权利要求2所述的方法,其特征在于,将所述目标密文集合发送给所述第三方仲裁节点之后还包括:清空从其他参与方节点接收到的密文集合以及对接收到的密文集合再次加密后得到的密文集合。

4.根据权利要求1所述的方法,其特征在于,得到新的用户数据之后还包括:本地模型学习步骤:将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;

第一次切片步骤:将所述训练集进行第一次切片,得到至少两个第一切片数据集;

第二次切片步骤:将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;

联邦学习步骤:从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;

接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;

重复执行所述联邦学习步骤,直至所述本地模型收敛。

5.根据权利要求4所述的方法,其特征在于,还包括:

作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;

作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。

6.根据权利要求4所述的方法,其特征在于,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:随机选择u个边缘安全计算节点传输的所述梯度,并计算u个边缘安全计算节点传输的所述梯度的均值。

7.根据权利要求4所述的方法,其特征在于,所述新的模型参数采用如下公式计算:wt=wt‑1‑a*gi_avg

其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。

8.一种横向联邦学习方法,其特征在于,应用于横向联邦学习的第三方仲裁节点,所述方法包括:生成公开密钥,并发送给参与横向联邦学习的各参与方节点;

接收各所述参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;

获取所述各参与方节点的目标密文集合的交集;

将所述交集中的用户标识的信息发送给对应的参与方节点;

接收所述参与方节点回传的其接收到的用户标识中标签为负样本的用户标识的信息;

向所述参与方节点回传目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识。

9.根据权利要求8所述的方法,其特征在于,获取所述各参与方节点的目标密文集合的交集包括:采用模糊匹配方法对所述各参与方节点的目标密文集合进行匹配,获取所述各参与方节点的目标密文集合的交集。

10.根据权利要求8所述的方法,其特征在于,所述交集中的用户标识的信息为对用户标识加密时产生的序号。

11.根据权利要求8所述的方法,其特征在于,所述目标密文集合包含所述目标密文集合中密文的长度;

获取所述各参与方节点的目标密文集合的交集包括:

提取各参与方节点的目标密文集合中的密文的长度,过滤掉密文的长度的出现次数小于所述参与方节点的数量的密文,得到各参与方节点的过滤后的目标密文集合;

获取所述各参与方节点的过滤后的目标密文集合的交集。

12.一种横向联邦学习方法,其特征在于,应用于横向联邦学习的参与方节点,所述方法包括:本地模型学习步骤:将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;

第一次切片步骤:将所述训练集进行第一次切片,得到至少两个第一切片数据集;

第二次切片步骤:将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;

联邦学习步骤:从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;

接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;

重复执行所述联邦学习步骤,直至所述本地模型收敛。

13.根据权利要求12所述的方法,其特征在于,还包括:

作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;

作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。

14.根据权利要求12所述的方法,其特征在于,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:随机选择u个边缘安全计算节点传输的所述梯度,并计算u个边缘安全计算节点传输的所述梯度的均值。

15.根据权利要求12所述的方法,其特征在于,所述新的模型参数采用如下公式计算:wt=wt‑1‑a*gi_avg

其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。

16.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至7中任一项所述的横向联邦学习方法的步骤,或者,所述程序被所述处理器执行时实现如权利要求8至11中任一项所述的横向联邦学习方法的步骤,或者,所述程序被所述处理器执行时实现如权利要求12至15中任一项所述的横向联邦学习方法的步骤。

17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的横向联邦学习方法的步骤;或者,所述计算机程序被处理器执行时实现如权利要求8至11中任一项所述的横向联邦学习方法的步骤,或者,述计算机程序被处理器执行时实现如权利要求12至15中任一项所述的横向联邦学习方法的步骤。

说明书 :

横向联邦学习方法及装置

技术领域

[0001] 本发明实施例涉及数据业务技术领域,尤其涉及一种横向联邦学习方法及装置。

背景技术

[0002] 以往具有相同业务特征的机构方为了提高模型精度,会采用共享黑名单的方式增加负样本数量,但是由于各种政策和竞争的关系双方不愿意共享,最后这些数据会以孤岛形式存在。业界提出横向联邦学习解决具有相同业务特征的机构方的数据孤岛问题。
[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] 第二次切片步骤:将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;
[0029] 联邦学习步骤:从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;
[0030] 重复执行所述联邦学习步骤,直至所述本地模型收敛。
[0031] 可选的,还包括:
[0032] 作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;
[0033] 作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。
[0034] 可选的,所述第一切片数据集中正样本的数量和负样本的数量相同。
[0035] 可选的,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:
[0036] 随机选择u个边缘安全计算节点传输的所述梯度,并计算u个边缘安全计算节点传输的所述梯度的均值。
[0037] 可选的,所述新的模型参数采用如下公式计算:
[0038] wt=wt‑1‑a*gi_avg
[0039] 其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。
[0040] 第二方面,本发明实施例提供了一种横向联邦学习方法,应用于横向联邦学习的第三方仲裁节点,所述方法包括:
[0041] 生成公开密钥,并发送给参与横向联邦学习的各参与方节点;
[0042] 接收各所述参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0043] 获取所述各参与方节点的目标密文集合的交集;
[0044] 将所述交集中的用户标识的信息发送给对应的参与方节点;
[0045] 接收所述参与方节点回传的其接收到的用户标识中标签为负样本的用户标识的信息;
[0046] 向所述参与方节点回传目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识。
[0047] 可选的,获取所述各参与方节点的目标密文集合的交集包括:
[0048] 采用模糊匹配方法对所述各参与方节点的目标密文集合进行匹配,获取所述各参与方节点的目标密文集合的交集。
[0049] 可选的,所述交集中的用户标识的信息为对用户标识加密时产生的序号。
[0050] 可选的,所述目标密文集合包含所述目标密文集合中密文的长度;
[0051] 获取所述各参与方节点的目标密文集合的交集包括:
[0052] 提取各参与方节点的目标密文集合中的密文的长度,过滤掉密文的长度的出现次数小于所述参与方节点的数量的密文,得到各参与方节点的过滤后的目标密文集合;
[0053] 获取所述各参与方节点的过滤后的目标密文集合的交集。
[0054] 可选的,将所述交集中的用户标识的信息发送给对应的参与方节点之后还包括:
[0055] 清空各参与方节点发送的目标密文集合。
[0056] 第三方面,本发明实施例提供了一种横向联邦学习方法,应用于横向联邦学习的参与方节点,所述方法包括:
[0057] 本地模型学习步骤:将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;
[0058] 第一次切片步骤:将所述训练集进行第一次切片,得到至少两个第一切片数据集;
[0059] 第二次切片步骤:将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;
[0060] 联邦学习步骤:从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;
[0061] 重复执行所述联邦学习步骤,直至所述本地模型收敛。
[0062] 可选的,还包括:
[0063] 作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;
[0064] 作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。
[0065] 可选的,所述第一切片数据集中正样本的数量和负样本的数量相同。
[0066] 可选的,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:
[0067] 随机选择u个边缘安全计算节点传输的所述梯度,并计算u个边缘安全计算节点传输的所述梯度的均值。
[0068] 可选的,所述新的模型参数采用如下公式计算:
[0069] wt=wt‑1‑a*gi_avg
[0070] 其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。
[0071] 第四方面,本发明实施例提供了一种横向联邦学习的参与方节点,包括:
[0072] 第一接收模块,用于接收第三方仲裁节点发送的公开密钥;
[0073] 第一加密模块,用于根据生成的随机数、所述公开密钥和加密公式,对本地用户数据中的用户标识进行加密,得到密文集合;
[0074] 第一发送模块,用于将自身的密文集合发送给其他参与方节点;
[0075] 第二接收模块,用于接收其他参与方节点发送的各自的密文集合;
[0076] 第二加密模块,用于将接收到的密文集合中的至少部分密文进行再次加密,得到各参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0077] 第二发送模块,用于将所述目标密文集合发送给所述第三方仲裁节点;
[0078] 第三接收模块,用于接收所述第三方仲裁节点发送的各参与方节点的目标密文集合的交集中属于自身的用户标识的信息;
[0079] 第三发送模块,用于将接收到的用户标识中标签为负样本的用户标识的信息回传给所述第三方仲裁节点;
[0080] 第四接收模块,用于接收所述第三方仲裁节点回传的目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识;
[0081] 更改模块,用于将所述目标用户标识对应的用户数据的标签更改为负样本,得到新的用户数据。
[0082] 第五方面,本发明实施例提供了一种横向联邦学习的第三方仲裁节点,包括:
[0083] 第一发送模块,用于生成公开密钥,并发送给参与横向联邦学习的各参与方节点;
[0084] 第一接收模块,用于接收各所述参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0085] 获取模块,用于获取所述各参与方节点的目标密文集合的交集;
[0086] 第一发送模块,用于将所述交集中的用户标识的信息发送给对应的参与方节点;
[0087] 第二接收模块,用于接收所述参与方节点回传的其接收到的用户标识中标签为负样本的用户标识的信息;
[0088] 第二发送模块,用于向所述参与方节点回传目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识。
[0089] 第六方面,本发明实施例提供了一种横横向联邦学习的参与方节点,包括:
[0090] 本地模型学习模块,用于将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;
[0091] 第一次切片模块,用于将所述训练集进行第一次切片,得到至少两个第一切片数据集;
[0092] 第二次切片模块,用于将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;
[0093] 联邦学习模块,用于从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;
[0094] 控制模块,用于控制所述联邦学习模块重复执行,直至所述本地模型收敛。
[0095] 第七方面,本发明实施例提供了一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现上述第一方面、第二方面或第三方面所述的横向联邦学习方法的步骤。
[0096] 第八方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面、第二方面或第三方面所述的横向联邦学习方法的步骤。
[0097] 在本发明实施例中,增加了一个新型的安全求交协议,即通过将加密后的数据发送给第三方仲裁节点进行安全求交,在不知道彼此负样本id的情况下,得到参与方正确的交集,而且不会得到交集以外另一方集合中的任何信息,保护非交集的负样本原始数据不被其他参与方得知,增加各参与方的负样本,降低标签类别的不平衡性,解决不同参与方同一个用户的标签不一致导致各横向联邦学习节点的负样本数量较少,从而使得联邦学习模型的效果下降的问题。
[0098] 或者,以本地模型为联邦学习的初始参数,本地模型的模型指标值为基准,识别参与方传递的梯度值的有效性,保证联邦学习的结果优于本地模型的结果,并降低由于参与方分布差异性大导致模型结果变差,以及采用数据切片的方式,传递多个切片的平均梯度,改变模型梯度交互的方式,即保护彼此原始数据求出梯度值又降低联邦学习模型运行速度,加快收敛。

附图说明

[0099] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0100] 图1为本发明实施例的应用于参与方节点的横向联邦学习方法的示意图;
[0101] 图2为本发明实施例的应用于第三方仲裁节点的横向联邦学习方法的示意图;
[0102] 图3为本发明实施例的横向联邦学习方法的一应用场景的示意图;
[0103] 图4为本发明另一实施例的应用于参与方节点的横向联邦学习方法的示意图;
[0104] 图5为本发明又一实施例的应用于参与方节点的横向联邦学习方法的示意图;
[0105] 图6为本发明实施例的横向联邦学习方法的一应用场景的示意图;
[0106] 图7为本发明实施例的模型参数交互步骤的示意图;
[0107] 图8为本发明一实施例的横向联邦学习的参与方节点的结构示意图;
[0108] 图9为本发明实施例的横向联邦学习的第三方仲裁节点的结构示意图;
[0109] 图10为本发明另一实施例的横向联邦学习的参与方节点的结构示意图;
[0110] 图11为本发明实施例的电子设备的结构示意图。

具体实施方式

[0111] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0112] 请参考图1,本发明实施例提供一种横向联邦学习方法,应用于横向联邦学习的参与方节点,本发明实施例中,横向联邦学习的参与方节点可以是两个,或者更多个,所述方法包括:
[0113] 步骤11:接收第三方仲裁节点发送的公开密钥;
[0114] 本发明实施例中,第三方仲裁节点向各个参与方节点发送相同的公开密钥。所述公开密钥可以由第三方仲裁节点随机生成,例如随机生成两个数字n和e作为公开密钥,其中n=p*q,p和q为任意不同大素数,e为任意选取的一个较大的整数(例如长度等于1024位的整数),满足gcd(e,l(n))=1,l(n)=(p‑1)*(q‑1),gcd()函数为返回两个或多个整数的最大公约数的函数。
[0115] 步骤12:根据生成的随机数、所述公开密钥和加密公式,对本地用户数据中的用户标识进行加密,得到密文集合;
[0116] 本地用户数据例如为渠道商的数据,此时用户数据可以包括:渠道商法人代表身份证号,是否为服务差的渠道商(黑名单渠道商)、当月低质号码比例、当月终端异常比例、是否触犯三项禁令违规、是否实名制违规、当月投诉率、是否泄露客户信息、号卡死亡率、每月疑似养卡等,其中,渠道商法人代表身份证号则可以作为用户标识。
[0117] 参与方节点生成随机数,例如可以按照当时的时间随机生成一个整数,然后利用生成的随机数,接收到的公开密钥,以及预设的加密公式,对本地用户数据中的用户标识进行加密,得到密文集合。
[0118] 步骤13:将自身的密文集合发送给其他参与方节点,并接收其他参与方节点发送的各自的密文集合;
[0119] 即,各参与方节点互换各自的密文集合。
[0120] 举例来说,包括两个参与方节点,参与方节点A和B,参与方节点A将自身的密文集合发送给参与方节点B,参与方节点B将自身的密文集合发送给参与方节点A。
[0121] 在另外一个例子中,包括三个参与方节点,参与方节点A、B和C,参与方节点A将自身的密文集合发送给参与方节点B,参与方节点B将自身的密文集合发送给参与方节点C,参与方节点C将自身的密文集合发送给参与方节点A。
[0122] 步骤14:将接收到的密文集合中的至少部分密文进行再次加密,得到各参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0123] 举例来说,包括两个参与方节点,参与方节点A和B,参与方节点A对本地数据的用户标识进行加密得到密文集合之后,将密文集合发送给参与方节点B,由参与方节点B对接收到密文集合中的密文进行再次加密,得到最终的参与方节点A的目标密文集合,同样的,参与方节点B对本地数据的用户标识进行加密得到密文集合之后,将密文集合发送给参与方节点A,由参与方节点A对接收到的密文集合中的密文进行再次加密,得到最终的参与方节点B的目标密文集合。
[0124] 在另外一个例子中,包括三个参与方节点,参与方节点A、B和C,参与方节点A对本地数据的用户标识进行加密得到密文集合之后,将密文集合发送给参与方节点B,由参与方节点B对接收到密文集合中的密文进行再次加密,并将对接收到的密文集合再次加密后得到的密文集合发送各参与方节点C,由参与方节点C对接收到密文集合中的密文进行再次加密,得到最终的参与方节点A的目标密文集合。参与方节点B对本地数据的用户标识进行加密得到密文集合之后,将密文集合发送给参与方节点C,由参与方节点C对接收到密文集合中的密文进行再次加密,并将对接收到的密文集合再次加密后得到的密文集合发送各参与方节点A,由参与方节点A对接收到密文集合中的密文进行再次加密,得到最终的参与方节点B的目标密文集合。
[0125] 也就是说,需要保证一个用户标识需要被所有参与方节点均进行一次加密。
[0126] 步骤15:将所述目标密文集合发送给所述第三方仲裁节点;
[0127] 步骤16:接收所述第三方仲裁节点发送的各参与方节点的目标密文集合的交集中属于自身的用户标识的信息;
[0128] 第三方仲裁节点求出各个参与方节点的用户标识的交集,交集中包括n个用户标识的信息,n是参与方节点的个数。所述用户标识的信息例如可以是对用户标识加密时产生的序号,而非用户标识本身,从而可以提高数据的安全性。举例来说,包括两个参与方节点A和B,上述交集可以表示为(参与方A_序号1a,参与方B_序号1b),其中,参与方A_序号1a表示参与方节点A中的一个用户标识对应的序号,参与方B_序号1b表示参与方节点B中的一个用户标识对应的序号。
[0129] 第三方仲裁节点将交集中各用户标识的信息发送给对应的参与方节点,例如,将参与方A_序号1a发送给参与方节点A,将参与方B_序号1b发送给参与方节点B。
[0130] 步骤17:将接收到的用户标识中标签为负样本的用户标识的信息回传给所述第三方仲裁节点;
[0131] 举例来说,参与方节点A接收到的用户标识的信息为(参与方A_序号1a,参与方A_序号1e,参与方A_序号1g……),其中,(参与方A_序号1a,参与方A_序号1g……)对应的用户数据的标签为负样本,此时,参与方节点A将(参与方A_序号1a,参与方A_序号1g……)返回给第三方仲裁节点。
[0132] 步骤18:接收所述第三方仲裁节点回传的目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识;
[0133] 步骤19:将所述目标用户标识对应的用户数据的标签更改为负样本,得到新的用户数据。
[0134] 本发明实施例中,增加了一个新型的安全求交协议,即通过将加密后的数据发送给第三方仲裁节点进行安全求交,在不知道彼此负样本的情况下,得到参与方正确的交集,而且不会得到交集以外另一方集合中的任何信息,保护非交集的负样本原始数据不被其他参与方得知,同时可以增加各参与方的负样本,降低标签类别的不平衡性,解决不同参与方同一个用户的标签不一致问题。
[0135] 本发明实施例中,可选的,将接收到的密文集合中的至少部分密文进行再次加密包括:
[0136] 步骤141:判断接收到的密文集合中的密文的数量是否低于阈值;
[0137] 本发明实施例中,不同的参与方节点可以采用相同或不同的阈值。
[0138] 步骤142:若低于所述阈值,直接采用所述加密公式对接收到的密文集合中的各密文进行再次加密;
[0139] 再次加密时,参与方节点采用步骤12中自身产生的随机数和加密公式,对接收到的密文集合中的各密文进行加密。
[0140] 步骤143:若高于所述阈值,从接收到的密文集合中选取所述阈值个密文,采用所述加密公式对所述阈值个密文进行再次加密。
[0141] 本发明实施例中,可以随机从接收到的密文集合中选取所述阈值个密文。
[0142] 本发明实施例中,通过增加数据量阈值机制,可以防止暴力撞库,提高系统安全性。
[0143] 本发明实施例中,可选的,将所述目标密文集合发送给所述第三方仲裁节点之后还包括:清空从其他参与方节点接收到的密文集合以及对接收到的密文集合再次加密后得到的密文集合。
[0144] 本发明实施例中,对接收到的密文集合以及对接收到的密文集合再次加密后得到的密文集合采用了自动清空机制,可以避免数据泄露。
[0145] 本发明实施例中,可选的,所述目标密文集合中包含所述目标密文集合中的密文的长度,举例来说,目标密文集合为:
[0146] {长度24:{序号5b:b方身份证号1密文),序号21b:b方身份证号10密文)}……}[0147] {长度34:{序号5b:b方身份证号5密文),序号21b:b方身份证号21密文)}……}[0148] ……
[0149] 第三方仲裁方可以提取各参与方节点的目标密文集合中的密文的长度,过滤掉密文的长度的出现次数小于所述参与方节点的数量的密文,举例来说,如果长度为34的密文只在参与方B的目标密文集合中出现,没有在其他参与方的目标密文集合中出现,则可以直接过滤到该长度的密文,无需参与求交集的过程,从而可以提高数据处理的效率。
[0150] 请参考图2,本发明实施例提供一种横向联邦学习方法,应用于横向联邦学习的第三方仲裁节点,本发明实施例中,所述方法包括:
[0151] 步骤21:生成公开密钥,并发送给参与横向联邦学习的各参与方节点;
[0152] 本发明实施例中,横向联邦学习的参与方节点可以是两个,或者更多个.[0153] 本发明实施例中,第三方仲裁节点向各个参与方节点发送相同的公开密钥。所述公开密钥可以由第三方仲裁节点随机生成,例如随机生成两个数字n和e作为公开密钥,其中n=p*q,p和q为任意不同大素数,e为任意选取的一个较大的整数(例如长度等于1024位的整数),满足gcd(e,l(n))=1,l(n)=(p‑1)*(q‑1),gcd()函数为返回两个或多个整数的最大公约数的函数。
[0154] 步骤22:接收各所述参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0155] 步骤23:获取所述各参与方节点的目标密文集合的交集;
[0156] 本发明实施例中,可选的,可以采用模糊匹配方法对所述各参与方节点的目标密文集合进行匹配,获取所述各参与方节点的目标密文集合的交集,从而提高匹配的效率。举例来说,比较两个1024位的密文,比较出两者第10位不同,则无需继续比较,从而提高匹配效率,节省计算量。
[0157] 步骤24:将所述交集中的用户标识的信息发送给对应的参与方节点;
[0158] 第三方仲裁节点求出各个参与方节点的用户标识的交集,交集中包括n个用户标识的信息,n是参与方节点的个数。所述用户标识的信息例如可以是对用户标识加密时产生的序号,而非用户标识本身,从而可以提高数据的安全性。举例来说,包括两个参与方节点A和B,上述交集可以表示为(参与方A_序号1a,参与方B_序号1b),其中,参与方A_序号1a表示参与方节点A中的一个用户标识对应的序号,参与方B_序号1b表示参与方节点B中的一个用户标识对应的序号。
[0159] 第三方仲裁节点将交集中各用户标识的信息发送给对应的参与方节点,例如,将参与方A_序号1a发送给参与方节点A,将参与方B_序号1b发送给参与方节点B。
[0160] 步骤25:接收所述参与方节点回传的其接收到的用户标识中标签为负样本的用户标识的信息;
[0161] 举例来说,参与方节点A接收到的用户标识的信息为(参与方A_序号1a,参与方A_序号1e,参与方A_序号1g……),其中,(参与方A_序号1a,参与方A_序号1g……)对应的用户数据的标签为负样本,此时,参与方节点A将(参与方A_序号1a,参与方A_序号1g……)返回给第三方仲裁节点。
[0162] 步骤26:向所述参与方节点回传目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识。
[0163] 本发明实施例中,增加了一个新型的安全求交协议,即通过将加密后的数据发送给第三方仲裁节点进行安全求交,可以解决不同参与方同一个用户的标签不一致问题,同时增加了各参与方的负样本数量,降低数据标签分布不平衡性,以及,保护非交集的负样本原始数据不被其他参与方得知。
[0164] 本发明实施例中,可选的,述目标密文集合包含所述目标密文集合中密文的长度;举例来说,目标密文集合为:
[0165] {长度24:{序号5b:b方身份证号1密文),序号21b:b方身份证号10密文)}……}[0166] {长度34:{序号5b:b方身份证号5密文),序号21b:b方身份证号21密文)}……}[0167] ……
[0168] 此时,获取所述各参与方节点的目标密文集合的交集包括:
[0169] 提取各参与方节点的目标密文集合中的密文的长度,过滤掉密文的长度的出现次数小于所述参与方节点的数量的密文,得到各参与方节点的过滤后的目标密文集合;
[0170] 获取所述各参与方节点的过滤后的目标密文集合的交集。
[0171] 举例来说,如果长度为34的密文只在参与方B的目标密文集合中出现,没有在其他参与方的目标密文集合中出现,则可以直接过滤到该长度的密文,无需参与求交集的过程,从而可以提高数据处理的效率。
[0172] 本发明实施例中,可选的,将所述交集中的用户标识的信息发送给对应的参与方节点之后还包括:清空各参与方节点发送的目标密文集合,从而可以避免数据泄露。
[0173] 为了介绍方便,下面以甄别服务差的渠道商的业务场景为例,详细介绍本发明实施例的横向联邦学习方法,其中不同业务场景中用户含义不一样,在甄别服务差的渠道商场景中用户代表着渠道商,在银行风控场景中用户代表银行的用户。
[0174] 本发明实施例的安全求交协议主要分为加密、模糊匹配求交集、交集匹配更改标签三个部分;功能是增加双方负样本数量,降低数据标签分布不平衡性,和保护非交集的负样本渠道商名单原始数据不被另一方所知道,其中负样本是指服务差的渠道商。
[0175] 请参考图3:
[0176] 加密:
[0177] 1、第三方仲裁(arbiter)节点随机生成两个数字n和e作为公开密钥,其中n=p*q,p和q为任意不同大素数,e为任意选取一个较大的整数(例如1024位的整数)满足gcd(e,l(n))=1,l(n)=(p‑1)*(q‑1),将(n,e)传输给参与方A和参与方B。Gcd()函数位返回两个或多个整数的最大公约数的函数。
[0178] 2、参与方A和参与方B各自提取本地用户数据,用户数据例如包括:渠道商法人代表身份证号,是否为服务差的渠道商(黑名单渠道商)、当月低质号码比例、当月终端异常比例、是否触犯三项禁令违规、是否实名制违规、当月投诉率、是否泄露客户信息、号卡死亡率、每月疑似养卡等。
[0179] 步骤1:参与方A按照当时的时间随机生成一个整数ra∈random,利用接收到的公开密钥和加密公式将本地用户数据中的渠道商法人代表身份证号加密得到集合ses(ai),加密公式可以如下:
[0180]
[0181] 其中,i为第i个渠道商,ai为参与方A的第i个渠道商,H为哈希运算,useid为渠道商法人代表身份证号,ses(ai)为参与方A的第i个渠道商的法人代表身份证号加密后的第一密文。
[0182] 参与方A的第一密文集合可以表示为:{序号1a:ses(a1),序号2a:ses(a2),……},其中,序号1a、序号2a……为对渠道商的法人代表身份证号进行加密的加密序号。
[0183] 参与方B按照当时的时间随机生成一个整数ra∈random,利用接收到的公开密钥和加密公式将本地用户数据中的渠道商法人代表身份证号加密得到集合ses(bi),加密公式可以如下:
[0184]
[0185] 其中,i为第i个渠道商,bi为参与方B的第i个渠道商,H为哈希运算,useid为渠道商法人代表身份证号,ses(bi)为参与方B的第i个渠道商的法人代表身份证号加密后的第一密文。
[0186] 参与方B的第一密文集合可以表示为:{序号1b:ses(b1),序号2b:ses(b2),……},其中,序号1b、序号2b……为对渠道商的法人代表身份证号进行加密的加密序号。
[0187] 步骤2:参与方A和参与方B互换第一密文集合ses(ai)和ses(bi);
[0188] 参与方A判断第一密文集合ses(bi)中用户数(即第一密文数量)是否超过阈值1,若没有超过,参与方A利用之前产生的随机数ra和加密公式对ses(bi)进行加密,得到DB(bi),它表示参与方B的第i个渠道商的第二密文;其中,加密公式如下:
[0189]
[0190] 若超过阈值1,随机从ses(bi)选择阈值1个第一密文按照上述公式得到DB(bi):
[0191]
[0192] 参与方B判断第一密文集合ses(ai)中用户数(即第一密文数量)是否超过阈值2,若没有超过,参与方B利用之前产生的随机数rb和加密公式对ses(ai)进行加密,得到DB(ai),它表示参与方A的第i个渠道商的第二密文;其中,加密公式如下:
[0193]
[0194] 若超过阈值2,随机从ses(ai)选择阈值1个第一密文按照上述公式得到DB(ai):
[0195]
[0196] 步骤3:参与方A将DB(bi)加上密文的长度得到SDB(bi)传到第三方仲裁节点,SDB(bi)的数据格式如下所示:
[0197] {长度34:{序号5b:参与方b身份证号5第二密文),序号21b:参与方b身份证号21第二密文)}……}
[0198] 该种数据格式为JSON数据格式,其中,长度可以用key表示,后面的数据采用value表示。
[0199] 参与方B将DB(ai)加上密文的长度得到SDB(ai)传到第三方仲裁节点,数据格式与参与方A类似。
[0200] 参与方A和B清除接收到的第一密文和加密后的第二密文。
[0201] 模糊匹配求交集:
[0202] 步骤1:第三方仲裁节点提取参与方A的SDB(ai)中的key和参与方B的SDA(bi)中的key,并过滤掉次数出现一次的key对应的value,只匹配key出现两次的双方的value值,匹配原则如下:
[0203] 输入:参与方A的加密长度为length的一条密文data_a和参与方B的加密长度为length的一条密文data_b,num为固定的长度,选择8就可以。
[0204] 输出:双方匹配上的密文。
[0205] 初始值:left=0,right=length,mid1=length/2,mid2=length/2,flag=0[0206] 判断如下条件:
[0207] 当data_a的第left位到left+num位的内容不等于data_b的相同位置段,或data_a的第mid1‑num位到mid1位的内容不等于data_b的相同位置段的内容,或者data_a的第mid2位到mid2+num位的内容不等于data_b的相同位置段的内容,或者data_a的第right‑num位到right位的内容不等于data_b的相同位置段的内容时,flag=1停止循环,否则left=left+num,mid1=mid‑8,right=right‑8.mid2=mid2+8,继续循环直到left>mid1或者mid2>right停止。
[0208] 输出flag=0对应的加密value,输出格式如下,交集中的每一个元素是由参与方A序号和参与方B序号构成:
[0209] Inner={(参与方A_序号1a,参与方B_序号1b),(参与方A_序号2a,参与方B_序号2b)……}
[0210] 步骤2:第三方仲裁节点将交集中参与方A的序号Inner_a发给参与方A,将交集中参与方B的序号Inner_b发给参与方B;第三方仲裁节点除了保留交集Inner,其余自动清空双方传递的密文。
[0211] 交集匹配更改标签:
[0212] 步骤1:参与方A提取Inner_a中标签为服务差的渠道商的序号,得到集合s_Inner_a,并传递给第三方仲裁节点,参与方B提取Inner_b中标签为服务差的渠道商的序号,得到集合s_Inner_b,并传递给第三方仲裁节点;
[0213] 步骤2:第三方仲裁节点针对交集(inner)中每一元素,若元素中参与方A的序号在s_Inner_a中同时参与方B的序号在s_Inner_b中,元素后面添加t=2,若元素中参与方A的序号在s_Inner_a中但是参与方B的序号不在s_Inner_中,或者参与方B的序号在s_Inner_b中但是参与方A的序号不在s_Inner_a中,元素后面添加t=1,其余元素后面添加t=0,其中t=1对应的渠道商身份证,在一方是服务正常的渠道商,另一方是服务差的渠道商。
[0214] 步骤3:第三方仲裁节点将t=1的元素中对应参与方A的序号ss_a传递给参与方A,将t=1的元素中对应参与方B的序号ss_b传递给参与方B。
[0215] 步骤4:参与方A接收到集合ss_a,将序号在ss_a中渠道商的标签更改为服务差的渠道,参与方B接收到集合ss_b,将序号在ss_b中渠道商的标签更改为服务差的渠道商,即更改标签为1,本发明实施例中,标签为1表示服务差的渠道商,标签为0表示服务好的渠道商。
[0216] 请参考图4,本发明实施例提供一种横向联邦学习方法,应用于横向联邦学习的参与方节点,本发明实施例中,横向联邦学习的参与方节点可以是两个,或者更多个,所述方法包括:
[0217] 步骤41:安全求交步骤,其中安全求交步骤可以包括上述图1所示的各个步骤,再次不在重复说明。
[0218] 步骤42:模型参数交互步骤;
[0219] 请参考图4,该模型参数交互步骤42包括:
[0220] 本地模型学习步骤421:将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;
[0221] 第一次切片步骤422:将所述训练集进行第一次切片,得到至少两个第一切片数据集;本发明实施例中,参与方节点可以采用随机方式进行第一次切片;
[0222] 第二次切片步骤423:将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;本发明实施例中,假设具有m个第一切片数据集,则将m个第一切片数据集分散到m个边缘安全计算节点上,一个边缘安全计算节点对应一个第一切片数据集。本发明实施例中,聚类是指将对象的集合分成由类似的对象组成的多个类。此外,本发明实施例中,各参与方节点得到的第二切片数据集s的个数可以相同,也可以不同。
[0223] 联邦学习步骤424:从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;举例来说,参与方节点A从自身的每个所述边缘安全计算节点(假设有L个边缘安全计算节点)的每个第二切片数据集(有s个第二切片数据集)中分别选择r个用户数据,并利用各个第二切片数据集的r个用户数据,计算得到L*s个梯度,并从该L*s个梯度中选择部分或全部梯度计算均值。
[0224] 重复执行所述联邦学习步骤424,直至所述本地模型收敛。
[0225] 本发明实施例中,以本地模型为联邦学习的初始参数,本地模型的模型指标值为基准,识别参与方传递的梯度值的有效性,保证联邦学习的结果优于本地模型的结果,并降低由于参与方分布差异性大导致模型结果变差,以及采用数据切片的方式,传递多个切片的平均梯度,改变模型梯度交互的方式,即保护彼此原始数据求出梯度值又降低联邦学习模型运行速度,加快收敛。
[0226] 本发明实施例中,可选的,所述方法还包括:
[0227] 作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;
[0228] 作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。
[0229] 本发明实施例中,可选的,所述第一切片数据集中正样本的数量和负样本的数量相同。
[0230] 本发明实施例中,可选的,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:随机选择u个边缘安全计算节点传输的所述梯度,并计算所述u个边缘安全计算节点传输的所述梯度的均值。
[0231] 本发明实施例中,可选的,所述新的模型参数采用如下公式计算:
[0232] wt=wt‑1‑a*gi_avg
[0233] 其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。
[0234] 本发明的上述实施例具有以下优点:
[0235] 1、传统横向联邦学习没有办法甄别同一个商户标签不一致问题,最多是对所有的商户采用PSI(隐私保护集合求交(Private Set Intersection,PSI)求出交集,数据量会影响运行速度,商户ID对齐时候涉及多次密文交互运算,成本比较大。而本发明实施例中,只将加密的黑名单采用模糊安全匹配模块,求出差集,传递给各方自己匹配,增加负样本同时又减少交互成本,计算速度大大提高。
[0236] 2、传统横向联邦学习,根据经验设置初始的参数,双方共同学习。这种方式得到的模型运行速度较慢,调参也变得特别困难,很难在短时间内,找到最优的参数;若双方数据分布不平衡,得到联邦学习模型效果往往不如各自建立本地模型。而本文采用新的模型参数交互方式,利用联邦学习技术优化本地模型,进一步降低标签不平衡问题,降低双方分布不一致问题带来模型结果较差问题,模型速度变快,模型精度只会比本模型效果好。
[0237] 3、本发明实施例中识别无效模型参数时候以本地模型参数得到的模型指标值为基准,大于基准才更新,否则不更新,优点适合双方和多方,运行速度快,准确率高。
[0238] 4、本发明实施例中是联邦学习模型和本地模型是串行关系,联邦学习模型在本地模型基础上得到的,以本地模型指标值为基准,每次更新参数时候,对比新参数是否高于基准,高于更新参数,运行速度快,保证高于本地模型,准确率高。
[0239] 上述实施例中,将安全求交和模型参数交互步骤结合,在本发明的其他一些实施例中,模型参数交互的步骤也可以单独使用,不依赖于是否进行上述安全求交步骤。
[0240] 请参考图5,本发明实施例提供一种横向联邦学习方法,应用于横向联邦学习的参与方节点,本发明实施例中,横向联邦学习的参与方节点可以是两个,或者更多个,所述方法包括:
[0241] 本地模型学习步骤51:将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;
[0242] 第一次切片步骤52:将所述训练集进行第一次切片,得到至少两个第一切片数据集;本发明实施例中,参与方节点可以采用随机方式进行第一次切片;
[0243] 第二次切片步骤53:将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;本发明实施例中,假设具有m个第一切片数据集,则将m个第一切片数据集分散到m个边缘安全计算节点上,一个边缘安全计算节点对应一个第一切片数据集。本发明实施例中,聚类是指将对象的集合分成由类似的对象组成的多个类。此外,本发明实施例中,各参与方节点得到的第二切片数据集s的个数可以相同,也可以不同。
[0244] 联邦学习步骤54:从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;举例来说,参与方节点A从自身的每个所述边缘安全计算节点(假设有L个边缘安全计算节点)的每个第二切片数据集(有s个第二切片数据集)中分别选择r个用户数据,并利用各个第二切片数据集的r个用户数据,计算得到L*s个梯度,并从该L*s个梯度中选择部分或全部梯度计算均值。
[0245] 重复执行所述联邦学习步骤54,直至所述本地模型收敛。
[0246] 本发明实施例中,识别无效模型参数时以本地模型参数得到的模型指标值为基准,大于基准才更新,否则不更新,从而解决了现有的无法识别无效模型参数以及横向联邦学习模型效果低于参与方本地模型效果的问题。
[0247] 本发明实施例中,可选的,所述方法还包括:
[0248] 作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;
[0249] 作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。
[0250] 本发明实施例中,可选的,所述第一切片数据集中正样本的数量和负样本的数量相同。
[0251] 本发明实施例中,可选的,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:随机选择u个边缘安全计算节点传输的所述梯度,并计算所述u个边缘安全计算节点传输的所述梯度的均值。
[0252] 本发明实施例中,可选的,所述新的模型参数采用如下公式计算:
[0253] wt=wt‑1‑a*gi_avg
[0254] 其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。
[0255] 为了介绍方便,下面以甄别服务差的渠道商的业务场景为例,详细介绍本发明实施例的横向联邦学习方法,其中不同业务场景中用户含义不一样,在甄别服务差的渠道商场景中用户代表着渠道商,在银行风控场景中用户代表银行的用户。
[0256] 请参考图6,本发明实施例中的横向联邦学习方法主要包括以下几个部分:联邦学习模型参数初始化,本地数据切片分散各自边缘安全计算节点,参与方参数交互。
[0257] 主要功能:利用各参与方的数据,优化各自本地模型,提高了模型训练的效率和精确度。
[0258] 具体流程如下:
[0259] 联邦学习模型参数初始化
[0260] 1、参与方A和参与方B分别将本地用户数据分为两份,一份训练数据集,一份测试数据集。以是否为服务差的渠道商为标签,除了渠道商法人身份证以外的字段为特征,利用训练集中的数据构建二分类模型(本地模型),并保留本地模型结果参数和本地模型在测试数据集上的模型指标值。
[0261] 数据示例:采用逻辑回归模型,模型参数init类似;
[0262] 模型结果参数类似{w0=0.343,w1=0.3434,w2=0.9343,……};
[0263] 模型指标类似{auc:0.8,ks=0.2},其中auc为ROC曲线下的面积,而ROC曲线的横轴是FPRate(FPRate的意义是所有真实类别为0的样本中,预测类别为1的比例),纵轴是TPRate(TPRate的意义是所有真实类别为1的样本中,预测类别为1的比例),取值范围[0,1]之间,越高越好;ks用于模型风险区分能力进行评估,指标衡量的是好坏样本累计分部之间的差值。好坏样本累计差异越大,ks指标越大,那么模型的风险区分能力越强,一般最低大于0.2。
[0264] 2、参与方A和参与方B各自在本地的边缘安全计算节点设置将本地模型结果参数作为梯度的初始参数,其他参数由任务发起方设置。
[0265] 数据示例:任务发起方为参与方A,参与方A在本地的边缘安全计算节点发起任务前,设置本次联邦学习的参数{梯度的初始参数:{w0:0.2323,w1:0.2323……},模型指标值:{ks:0.2,auc:0.7},loss:“L2”,迭代次数:100,学习速率:0.1……},并将除了梯度的初始参数,模型指标值以外的参数传输给参与方B;
[0266] 参与方B在本地边缘安全计算节点设置{梯度的初始参数:{w0:0.293,w1:0.2……},模型指标值:{ks:0.2,auc:0.7}},合并参与方A传递其他参数,得到参数{梯度的初始参数:{w0:0.293,w1:0.2……},模型指标值:{ks:0.2,auc:0.7},loss:“L2”,迭代次数:100,学习速率:0.1……}。
[0267] 本地数据切片分散各自安全节点
[0268] 1、参与方A和参与方B各自将训练集随机切片,得到第一切片数据集,每一片第一切片数据集下是各自全部的负样本和对应相等数目的正样本,切片数目为正样本个数/负样本个数。
[0269] 数据示例:参与方A共有3000样本,正样本2000,负样本1000,则切成两片,每个第一切片数据集中包含1000个正样本和全部负样本。每个切片数据形式如下:
[0270] 标签,特征1,特征2……特征t。
[0271] 2、参与方A和参与方B将各自的第一切片数据集分散到各自的边缘安全计算节点。
[0272] 3、参与方A和参与方B将各自的边缘安全计算节点的数据二次切片,形成小的miniBatch(第二切片数据集),每一个miniBatch标签类别依然是1:1。其中二次切片规则如下:
[0273] 步骤1:每一个边缘安全计算节点利用自己节点数据按照标签类别进行2次聚类,每次聚类的个数都是为s1;
[0274] 步骤2:聚类完成后,得到标签为1(负样本)的s1个数据集,标签为0(正样本)的s1个数据集;
[0275] 步骤3:将标签为1的s1个数据集和标签为0的s1个数据集随机一一组合,得到s1个miniBatch数据集(第二切片数据集),这样就保证每一个miniBatch标签类别依然是1:1;
[0276] 双方参数交互
[0277] 步骤1:请参考图7,任务发起方启动联邦学习任务,参与方A和参与方B各自从每一个边缘安全计算节点的每一个miniBatch中随机选择r个用户样本,计算选择对应的梯度gi,其中r小于miniBatch用户数;在汇集节点随机选择u个边缘安全计算节点传输的gi求均值,得到gi_avg并传递给对方;
[0278] 步骤2:参与方A和参与方B接收到gi_avg,首先根据gi_avg和模型参数更新公式得到新的模型参数,并计算新的模型参数在测试数据集上的模型指标值,并与模型指标值的初始值进行对比,如果大于模型指标值初始值,则将模型参数更改为新的模型参数,否则不更改,继续执行双方参数交互的流程,直到模型收敛。
[0279] 本发明的上述实施例具有以下优点:
[0280] 1、传统横向联邦学习,根据经验设置初始的参数,双方共同学习。这种方式得到的模型运行速度较慢,调参也变得特别困难,很难在短时间内,找到最优的参数;若双方数据分布不平衡,得到联邦学习模型效果往往不如各自建立本地模型。而本文采用新的模型参数交互方式,利用联邦学习技术优化本地模型,进一步降低标签不平衡问题,降低双方分布不一致问题带来模型结果较差问题,模型速度变快,模型精度只会比本模型效果好。
[0281] 2、本发明实施例中识别无效模型参数时候以本地模型参数得到的模型指标值为基准,大于基准才更新,否则不更新,优点适合双方和多方,运行速度快,准确率高。
[0282] 3、本发明实施例中是联邦学习模型和本地模型是串行关系,联邦学习模型在本地模型基础上得到的,以本地模型指标值为基准,每次更新参数时候,对比新参数是否高于基准,高于更新参数,运行速度快,保证高于本地模型,准确率高。
[0283] 请参考图8,本发明实施例还提供一种横向联邦学习的参与方节点80,包括:
[0284] 第一接收模块81,用于接收第三方仲裁节点发送的公开密钥;
[0285] 第一加密模块82,用于根据生成的随机数、所述公开密钥和加密公式,对本地用户数据中的用户标识进行加密,得到密文集合;
[0286] 第一发送模块83,用于将自身的密文集合发送给其他参与方节点;
[0287] 第二接收模块84,用于接收其他参与方节点发送的各自的密文集合;
[0288] 第二加密模块85,用于将接收到的密文集合中的至少部分密文进行再次加密,得到各参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0289] 第二发送模块86,用于将所述目标密文集合发送给所述第三方仲裁节点;
[0290] 第三接收模块87,用于接收所述第三方仲裁节点发送的各参与方节点的目标密文集合的交集中属于自身的用户标识的信息;
[0291] 第三发送模块88,用于将接收到的用户标识中标签为负样本的用户标识的信息回传给所述第三方仲裁节点;
[0292] 第四接收模块89,用于接收所述第三方仲裁节点回传的目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识;
[0293] 更改模块810,用于将所述目标用户标识对应的用户数据的标签更改为负样本,得到新的用户数据。
[0294] 可选的,将接收到的密文集合中的至少部分密文进行再次加密包括:
[0295] 判断接收到的密文集合中的密文的数量是否低于阈值;
[0296] 若低于所述阈值,直接采用所述加密公式对接收到的密文集合中的各密文进行再次加密;
[0297] 若高于所述阈值,从接收到的密文集合中选取所述阈值个密文,采用所述加密公式对所述阈值个密文进行再次加密。
[0298] 可选的,还包括:
[0299] 清空模块,用于在将所述目标密文集合发送给所述第三方仲裁节点之后,清空从其他参与方节点接收到的密文集合以及对接收到的密文集合再次加密后得到的密文集合。
[0300] 可选的,所述交集中的用户标识的信息为对用户标识加密时产生的序号。
[0301] 可选的,所述目标密文集合中包含所述目标密文集合中的密文的长度。
[0302] 可选的,还包括:
[0303] 本地模型学习模块,用于将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;
[0304] 第一次切片模块,用于将所述训练集进行第一次切片,得到至少两个第一切片数据集;
[0305] 第二次切片模块,用于将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;
[0306] 联邦学习模块,用于从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;
[0307] 控制模块,用于控制联邦学习模块重复执行,直至所述本地模型收敛。
[0308] 可选的,还包括:
[0309] 第一设置模块,用于作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;
[0310] 第二设置模块,用于作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。
[0311] 可选的,所述第一切片数据集中正样本的数量和负样本的数量相同。
[0312] 可选的,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:
[0313] 随机选择u个边缘安全计算节点传输的所述梯度,并计算u个边缘安全计算节点传输的所述梯度的均值。
[0314] 可选的,所述新的模型参数采用如下公式计算:
[0315] wt=wt‑1‑a*gi_avg
[0316] 其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。
[0317] 请参考图9,本发明实施例还提供一种横向联邦学习的第三方仲裁节点90,包括:
[0318] 第一发送模块91,用于生成公开密钥,并发送给参与横向联邦学习的各参与方节点;
[0319] 第一接收模块92,用于接收各所述参与方节点的目标密文集合,所述各参与方节点的目标密文集合是将各参与方节点的用户标识经各参与方节点依次加密得到;
[0320] 获取模块93,用于获取所述各参与方节点的目标密文集合的交集;
[0321] 第一发送模块94,用于将所述交集中的用户标识的信息发送给对应的参与方节点;
[0322] 第二接收模块95,用于接收所述参与方节点回传的其接收到的用户标识中标签为负样本的用户标识的信息;
[0323] 第二发送模块96,用于向所述参与方节点回传目标用户标识的信息,所述目标用户标识属于其他参与方节点回传的标签为负样本的用户标识,但不属于所述参与方节点回传的标签为负样本的用户标识。
[0324] 可选的,获取所述各参与方节点的目标密文集合的交集包括:
[0325] 采用模糊匹配方法对所述各参与方节点的目标密文集合进行匹配,获取所述各参与方节点的目标密文集合的交集。
[0326] 可选的,所述交集中的用户标识的信息为对用户标识加密时产生的序号。
[0327] 可选的,所述目标密文集合包含所述目标密文集合中密文的长度;
[0328] 获取所述各参与方节点的目标密文集合的交集包括:
[0329] 提取各参与方节点的目标密文集合中的密文的长度,过滤掉密文的长度的出现次数小于所述参与方节点的数量的密文,得到各参与方节点的过滤后的目标密文集合;
[0330] 获取所述各参与方节点的过滤后的目标密文集合的交集。
[0331] 请参考图10,本发明实施例还提供一种横横向联邦学习的参与方节点100,包括:
[0332] 本地模型学习模块101,用于将新的用户数据划分为训练集和测试集,并利用所述训练集和测试集,得到本地模型;
[0333] 第一次切片模块102,用于将所述训练集进行第一次切片,得到至少两个第一切片数据集;
[0334] 第二次切片模块103,用于将所述至少两个第一切片数据集分散到自身的至少两个边缘安全计算节点,以在所述边缘安全计算节点对所述第一切片数据集进行聚类,得到标签为正样本的s个数据集以及标签为负样本的s个数据集,将标签为正样本的s个数据集和标签为负样本的s个数据集随机一一组合,得到s个第二切片数据集;
[0335] 联邦学习模块104,用于从自身的各所述边缘安全计算节点的各第二切片数据集中分别选择r个用户数据,并计算所述r个用户数据的梯度,以及,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值,并送给其他参与方节点;接收到其他参与方节点发送的所述梯度的均值之后,根据所述梯度的均值计算新的模型参数和模型指标值,并将所述新的模型指标值与所述本地模型的模型指标值进行对比,若所述新的模型指标值大于所述本地模型的模型指标值,则将所述本地模型的模型参数更改为新的模型参数,否则不更改;
[0336] 控制模块105,用于控制所述联邦学习模块重复执行,直至所述本地模型收敛。
[0337] 可选的,还包括:
[0338] 第一设置模块,用于作为横向联邦学习任务发起方的参与方节点,在自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置横向联邦学习的其他参数和模型指标值;将所述其他参数发送给其他参与方节点;
[0339] 第二设置模块,用于作为横向联邦学习非任务发起方的参与方节点,自身的边缘安全计算节点将本地模型的结果参数作为梯度的初始参数,并设置模型指标值;接收横向联邦学习任务发起方的参与方节点发送的其他参数;将自身设置的梯度的初始参数值、模型指标值与接收到的其他参数合并。
[0340] 可选的,所述第一切片数据集中正样本的数量和负样本的数量相同。
[0341] 可选的,汇集自身的各所述边缘安全计算节点的梯度,计算至少部分所述边缘安全计算节点的所述梯度的均值包括:
[0342] 随机选择u个边缘安全计算节点传输的所述梯度,并计算u个边缘安全计算节点传输的所述梯度的均值。
[0343] 可选的,所述新的模型参数采用如下公式计算:
[0344] wt=wt‑1‑a*gi_avg
[0345] 其中,wt为新的模型参数,wt‑1为上一次的模型参数,a为学习速率,gi_avg为所述梯度的均值。
[0346] 请参考图11,本发明实施例还提供一种电子设备110,包括处理器111,存储器112,存储在存储器112上并可在所述处理器111上运行的计算机程序,该计算机程序被处理器111执行时实现上述横向联邦学习方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0347] 本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述横向联邦学习方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read‑Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
[0348] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0349] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0350] 上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。