一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种联邦学习模型的训练方法、装置及电子设备与流程

2021-12-17 22:09:00 来源:中国专利 TAG:


1.本技术涉及数据处理技术领域,尤其涉及一种联邦学习模型的训练方法、装置及电子设备。


背景技术:

2.联邦学习,一种新兴的人工智能基础技术,其设计目标是在保障大数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。其中,联邦学习可使用的机器学习算法不局限于神经网络,还包括随机森林等重要算法。联邦学习有望成为下一代人工智能协同算法和协作网络的基础。
3.根据数据特点,联邦学习主要分为横向联邦学习和纵向联邦学习。其中,横向联邦学习要求数据是同构的;纵向联邦学习要求数据是异构的。但合作进行联邦学习的多方数据,很难完全保证异构或同构,因此,在基于联邦学习进行模型训练时,只能丢弃部分同构或者异构的数据,这样一来,势必造成数据的浪费。进一步地,当丢弃的数据较多时,导致基于联邦学习训练得到的模型的性能较差、数据利用率极低。


技术实现要素:

4.本技术旨在至少在一定程度上解决相关技术中的技术问题之一。
5.为此,本技术的第一个目的在于提出一种联邦学习模型的训练方法,用于解决现有联邦学习模型的训练方法过程中存在的因丢弃数据导致的数据利用率低、模型训练效果不佳,训练得到的模型的性能较差的技术问题。
6.本发明的第二个目的在于提出另一种联邦学习模型的训练方法。
7.本发明的第三个目的在于提出一种联邦学习模型的训练装置。
8.本发明的第四个目的在于提出另一种联邦学习模型的训练装置。
9.本发明的第五个目的在于提出一种电子设备。
10.本发明的第六个目的在于提出一种计算机可读存储介质。
11.为了实现上述目的,本技术第一方面实施例提供了一种联邦学习模型的训练方法,应用于服务端,所述方法包括以下步骤:获取各个客户端的所有数据实例,将各个所述客户端的所有所述数据实例确定为第一训练集合,以及选取所有所述数据实例中包括相同特征的数据实例,构成所述第二训练集合;基于所述第一训练集合,协同所述客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;其中,所述训练节点为多个提升树中一个提升树上的节点;基于所述第二训练集合,协同所述客户端进行纵向联邦学习,以得到所述训练节点对应的第二分裂值;根据所述第一分裂值和所述第二分裂值,确定所述训练节点对应的目标分裂方式,并通知客户端基于所述目标分裂方式进行节点分裂,并获取更新的所述训练节点;确定更新的所述训练节点满足停止训练条件,停止训练并生成目标联邦学习模型。
12.另外,根据本技术上述实施例的联邦学习模型的训练方法还可以具有如下附加的技术特征:
13.根据本技术的一个实施例,所述根据所述第一分裂值和所述第二分裂值,确定所述训练节点对应的目标分裂方式,包括:确定所述第一分裂值与所述第二分裂值中较大的值为所述训练节点对应的目标分裂值;根据所述目标分裂值,确定所述训练节点对应的分裂方式。
14.根据本技术的一个实施例,所述基于第一训练集合,协和所述客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,包括:从所述第一训练集合中产生所述训练节点可用的第一特征子集,并发送给所述客户端;接收所述客户端发送的所述第一特征子集中每个特征的特征值;根据所述第一特征子集中每个特征的特征值,分别确定所述每个特征作为分裂特征点对应的横向分裂值;根据所述每个特征对应的所述横向分裂值,确定所述训练节点的所述第一分裂值。
15.根据本技术的一个实施例,所述根据所述第一特征子集中每个特征的特征值,分别确定所述每个特征作为分裂特征点对应的横向分裂值,包括:针对所述第一特征子集中任一特征,根据所述任一特征的特征值,确定所述任一特征的分裂阈值;根据所述分裂阈值,获取所述任一特征对应的第一数据实例标识集合和第二数据实例标识集合,其中,所述第一数据实例标识集合包括属于第一左子树空间的数据实例标识,所述第二数据实例标识集合包括属于第一右子树空间的数据实例标识;根据所述第一数据实例标识集合和所述第二数据实例标识集合,确定所述任一特征对应的所述横向分裂值。
16.根据本技术的一个实施例,所述根据所述分裂阈值,获取所述任一特征对应的第一数据实例标识集合和第二数据实例标识集合,包括:向所述客户端发送所述分裂阈值;接收所述客户端发送所述训练节点对应的初始数据实例标识集合,其中,所述初始数据实例标识集合为所述客户端根据所述分裂阈值对所述任一特征进行节点分裂时生成的,所述初始数据实例标识集合包括属于所述第一左子树空间的数据实例标识;基于所述初始数据实例标识集合和所有数据实例标识,获得所述第一数据实例标识集合和所述第二数据实例标识集合。
17.根据本技术的一个实施例,所述基于所述初始数据实例标识集合,获得所述第一数据实例标识集合和所述第二数据实例标识集合,包括:将所述初始数据实例标识集合中的每个数据实例标识,与所述客户端的数据实例标识进行对比,获取存在异常的数据实例标识;对所述异常的数据实例标识进行预处理,获取所述第一数据实例标识集合;基于所有数据实例标识和所述第一数据实例标识集合,获取所述第二数据实例标识集合。
18.根据本技术的一个实施例,所述基于第二训练集合,协和所述客户端进行纵向联邦学习,得到所述训练节点对应的第二分裂值,包括:通知所述客户端基于所述第二训练集合进行纵向联邦学习;接收所述客户端发送的每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,所述第三数据实例标识集合包括属于第二左子树空间的数据实例标识,所述第二左子树空间为按照所述特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的所述第二左子树空间;根据每个特征的所述第一梯度信息和所述训练节点的总梯度信息,分别确定每个特征的纵向分裂值;根据每个特征对应的纵向分裂值,确定所述训练节点的所述第二分裂值。
19.根据本技术的一个实施例,所述根据每个特征的所述第一梯度信息和所述训练节点的总梯度信息,分别确定每个特征的纵向分裂值,包括:针对任一特征,根据所述总梯度信息和每个第一梯度信息,分别获取与每个第一梯度信息相对应的第二梯度信息;针对每个第一梯度信息,根据所述第一梯度信息和所述第一梯度信息相对应的第二梯度信息,获取所述任一特征的候选纵向分裂值;选取所述候选纵向分裂值中的最大值,作为所述任一特征的纵向分裂值。
20.根据本技术的一个实施例,所述生成目标联邦学习模型之后,还包括:获取验证集合,协同验证客户端对所述目标联邦学习模型进行验证,所述验证客户端为参与联邦学习模型训练的客户端中一个。
21.根据本技术的一个实施例,所述基于验证集合,协和验证客户端对所述目标模型进行验证,包括:向所述验证客户端发送所述验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,所述验证节点为多个提升树其中一个提升树上的节点;接收所述验证客户端发送的所述验证节点对应的节点走向,其中,所述节点走向为所述验证客户端根据所述数据实例标识和分裂信息确定的;根据所述节点走向进入下一个节点,以所述下一个节点作为更新的所述验证节点;若所述更新的所述验证节点满足所述预设节点分裂条件,返回执行向所述验证客户端发送所述数据实例标识和所述分裂信息,直至所述验证集合中的数据实例标识均被验证。
22.本技术第一方面实施例提供了联邦学习模型的训练方法,服务端通过获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成第二训练集合,并基于第一训练集合,协同客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合,协同客户端进行纵向联邦学习,以得到训练节点对应的第二分裂值,并根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式,并通知客户端基于目标分裂方式进行节点分裂,并获取更新的训练节点,进而确定更新的训练节点满足停止训练条件,停止训练并生成目标联邦学习模型,使得通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
23.为了实现上述目的,本技术第二方面实施例提供了一种联邦学习模型的训练方法,应用于验证客户端,所述方法包括以下步骤:向服务端发送数据实例,以使所述服务端确定第一训练集合和第二训练集合,其中,所述第一训练集合包括各个客户端的所有数据实例,所述第二训练集合包括具有相同特征的数据实例;基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;基于第二训练集合进行纵向联邦学习,以得到所述训练节点对应的第二分裂值;将所述第一分裂值和所述第二分裂值发送给所述服务端;接收所述服务端根据所述第一分裂值和所述第二分裂值确定出的所述训练节点的目标分裂方式;基于所述目标分裂方式对所述训练节点进行节点分裂。
24.根据本技术的一个实施例,所述基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,还包括:接收所述服务端从所述第一训练集合中产生的所述训练节点可用的第一特征子集;向所述服务端发送所述第一特征子集中每个特征的特征值;接收所述服务端发送的所述每个特征的分裂阈值;基于所述每个特征
的分裂阈值,获取所述训练节点对应的初始数据实例标识集合,并将所述初始数据实例标识集合发送给所述服务端;其中,所述初始数据实例标识集合用于指示服务器生成第一数据实例标识集合和第二数据实例标识集合,所述第一数据实例标识集合和所述初始数据实例标识集合均包括属于第一左子树空间的数据实例标识,所述第二数据实例标识集合包括属于第一右子树空间的数据实例标识。
25.根据本技术的一个实施例,所述基于所述每个特征的分裂阈值,获取所述训练节点对应的初始数据实例标识集合,包括:针对任一特征,将所述任一特征的分裂阈值分别与所述任一特征的特征值进行比较,获取所述特征值小于所述分裂阈值的数据实例标识,生成所述初始数据实例标识集合。
26.根据本技术的一个实施例,所述基于第二训练集合进行纵向联邦学习,以得到所述训练节点对应的第二分裂值之前,还包括:接收所述服务端发送的梯度信息请求;根据所述梯度信息请求,从第二训练集合中产生第二特征子集;获取所述第二特征子集中每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,所述第三数据实例标识集合包括属于第二左子树空间的数据实例标识,所述第二左子树空间为按照所述特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的所述第二左子树空间;将所述第三数据实例标识集合的第一梯度信息发送给所述服务端。
27.根据本技术的一个实施例,所述获取所述第二特征子集中每个特征的至少一个第三数据实例标识集合的第一梯度信息,包括:针对任一特征,获取所述任一特征的所有特征值,基于所述特征值对对所述任一特征进行分桶;获取所述任一特征每个分桶的所述第三数据实例标识集合的第一梯度信息。
28.根据本技术的一个实施例,所述基于所述目标分裂方式对所述训练节点进行节点分裂,还包括:接收所述服务端发送的分裂信息,其中,所述分裂信息包括所述目标分裂方式、选为特征分裂点的目标分裂特征和所述目标分裂值;基于所述分裂信息,对所述训练节点进行节点分裂。
29.根据本技术的一个实施例,所述基于所述目标分裂方式对所述训练节点进行节点分裂之后,还包括:接收所述服务器发送的验证集合,基于所述验证集合,对所述目标联邦学习模型进行验证。
30.根据本技术的一个实施例,所述基于验证集合,协和验证客户端对所述目标模型进行验证,包括:接收所述服务端发送所述验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,所述验证节点为多个提升树其中一个提升树上的节点;根据所述数据实例标识和所述分裂信息,确定所述验证节点的节点走向;向所述服务端发送的所述节点走向,以使所述服务端根据所述节点走向进入下一个节点,以所述下一个节点作为更新的所述验证节点。
31.本技术第二方面实施例提供了联邦学习模型的训练方法,客户端可以通过向服务端发送数据实例,以使服务端确定第一训练集合和第二训练集合,并基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合进行纵向联邦学习,以得到训练节点对应的第二分裂值,然后将第一分裂值和第二分裂值发送给服务端,接收服务端根据第一分裂值和第二分裂值确定出的训练节点的目标分裂方式,进而基于目标分裂方式对训练节点进行节点分裂,使得可以通过将横向和纵向分
裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
32.为了实现上述目的,本技术第三方面实施例提供了一种联邦学习模型的训练装置,应用于服务端,包括:构成模块,用于获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成所述第二训练集合;第一确定模块,用于基于所述第一训练集合,协同所述客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;其中,所述训练节点为多个提升树中一个提升树上的节点;第二确定模块,用于基于所述第二训练集合,协同所述客户端进行纵向联邦学习,以得到所述训练节点对应的第二分裂值;获取模块,用于根据所述第一分裂值和所述第二分裂值,确定所述训练节点对应的目标分裂方式,并通知客户端基于所述目标分裂方式进行节点分裂,并获取更新的所述训练节点;生成模块,用于确定更新的所述训练节点满足停止训练条件,停止训练并生成目标联邦学习模型。
33.根据本技术的一个实施例,所述获取模块,包括:第一确定子模块,用于确定所述第一分裂值与所述第二分裂值中较大的值为所述训练节点对应的目标分裂值;第二确定子模块,用于根据所述目标分裂值,确定所述训练节点对应的分裂方式。
34.根据本技术的一个实施例,所述第一确定模块,包括:第一发送子模块,用于从所述第一训练集合中产生所述训练节点可用的第一特征子集,并发送给所述客户端;第一接收子模块,用于接收所述客户端发送的所述第一特征子集中每个特征的特征值;第三确定子模块,用于根据所述第一特征子集中每个特征的特征值,分别确定所述每个特征作为分裂特征点对应的横向分裂值;第四确定子模块,用于根据所述每个特征对应的所述横向分裂值,确定所述训练节点的所述第一分裂值。
35.根据本技术的一个实施例,所述第三确定子模块,包括:第一确定单元,用于针对所述第一特征子集中任一特征,根据所述任一特征的特征值,确定所述任一特征的分裂阈值;第一获取单元,用于根据所述分裂阈值,获取所述任一特征对应的第一数据实例标识集合和第二数据实例标识集合,其中,所述第一数据实例标识集合包括属于第一左子树空间的数据实例标识,所述第二数据实例标识集合包括属于第一右子树空间的数据实例标识;第二确定单元,用于根据所述第一数据实例标识集合和所述第二数据实例标识集合,确定所述任一特征对应的所述横向分裂值。
36.根据本技术的一个实施例,所述第一获取单元,包括:发送子单元,用于向所述客户端发送所述分裂阈值;接收子单元,用于接收所述客户端发送所述训练节点对应的初始数据实例标识集合,其中,所述初始数据实例标识集合为所述客户端根据所述分裂阈值对所述任一特征进行节点分裂时生成的,所述初始数据实例标识集合包括属于所述第一左子树空间的数据实例标识;获取子单元,用于基于所述初始数据实例标识集合和所有数据实例标识,获得所述第一数据实例标识集合和所述第二数据实例标识集合。
37.根据本技术的一个实施例,所述获取子单元,还用于:将所述初始数据实例标识集合中的每个数据实例标识,与所述客户端的数据实例标识进行对比,获取存在异常的数据实例标识;对所述异常的数据实例标识进行预处理,获取所述第一数据实例标识集合;基于所有数据实例标识和所述第一数据实例标识集合,获取所述第二数据实例标识集合。
38.根据本技术的一个实施例,所述第二确定模块,包括:通知子模块,用于通知所述
客户端基于所述第二训练集合进行纵向联邦学习;第二接收子模块,用于接收所述客户端发送的每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,所述第三数据实例标识集合包括属于第二左子树空间的数据实例标识,所述第二左子树空间为按照所述特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的所述第二左子树空间;第五确定子模块,用于根据每个特征的所述第一梯度信息和所述训练节点的总梯度信息,分别确定每个特征的纵向分裂值;第六确定子模块,用于根据每个特征对应的纵向分裂值,确定所述训练节点的所述第二分裂值。
39.根据本技术的一个实施例,所述第五确定子模块,包括:第二获取单元,用于针对任一特征,根据所述总梯度信息和每个第一梯度信息,分别获取与每个第一梯度信息相对应的第二梯度信息;第三获取单元,用于针对每个第一梯度信息,根据所述第一梯度信息和所述第一梯度信息相对应的第二梯度信息,获取所述任一特征的候选纵向分裂值;选取单元,用于选取所述候选纵向分裂值中的最大值,作为所述任一特征的纵向分裂值。
40.根据本技术的一个实施例,所述生成模块,还包括:验证子模块,用于获取验证集合,协同验证客户端对所述目标联邦学习模型进行验证,所述验证客户端为参与联邦学习模型训练的客户端中一个。
41.根据本技术的一个实施例,所述验证子模块,包括:发送单元,用于向所述验证客户端发送所述验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,所述验证节点为多个提升树其中一个提升树上的节点;接收单元,用于接收所述验证客户端发送的所述验证节点对应的节点走向,其中,所述节点走向为所述验证客户端根据所述数据实例标识和分裂信息确定的;第三确定单元,用于根据所述节点走向进入下一个节点,以所述下一个节点作为更新的所述验证节点;验证单元,用于若所述更新的所述验证节点满足所述预设节点分裂条件,返回执行向所述验证客户端发送所述数据实例标识和所述分裂信息,直至所述验证集合中的数据实例标识均被验证。
42.本技术第三方面实施例提供了联邦学习模型的训练装置,服务端通过获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成第二训练集合,并基于第一训练集合,协同客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合,协同客户端进行纵向联邦学习,以得到训练节点对应的第二分裂值,并根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式,并通知客户端基于目标分裂方式进行节点分裂,并获取更新的训练节点,进而确定更新的训练节点满足停止训练条件,停止训练并生成目标联邦学习模型,使得通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
43.为了实现上述目的,本技术第四方面实施例提供了一种联邦学习模型的训练装置,应用于验证客户端,包括:第一发送模块,用于向服务端发送数据实例,以使所述服务端确定第一训练集合和第二训练集合,其中,所述第一训练集合包括各个客户端的所有数据实例,所述第二训练集合包括具有相同特征的数据实例;第一确定模块,用于基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;第二确定模块,用于基于第二训练集合进行纵向联邦学习,以得到所述训练节点对应的第二分裂
值;第二发送模块,用于将所述第一分裂值和所述第二分裂值发送给所述服务端;第三确定模块,用于接收所述服务端根据所述第一分裂值和所述第二分裂值确定出的所述训练节点的目标分裂方式;分裂模块,用于基于所述目标分裂方式对所述训练节点进行节点分裂。
44.根据本技术的一个实施例,所述第一确定模块,还包括:第一接收子模块,用于接收所述服务端从所述第一训练集合中产生的所述训练节点可用的第一特征子集;第一发送子模块,用于向所述服务端发送所述第一特征子集中每个特征的特征值;第二接收子模块,用于接收所述服务端发送的所述每个特征的分裂阈值;第一获取子模块,用于基于所述每个特征的分裂阈值,获取所述训练节点对应的初始数据实例标识集合,并将所述初始数据实例标识集合发送给所述服务端;其中,所述初始数据实例标识集合用于指示服务器生成第一数据实例标识集合和第二数据实例标识集合,所述第一数据实例标识集合和所述初始数据实例标识集合均包括属于第一左子树空间的数据实例标识,所述第二数据实例标识集合包括属于第一右子树空间的数据实例标识。
45.根据本技术的一个实施例,所述第一获取子模块,包括:生成单元,用于针对任一特征,将所述任一特征的分裂阈值分别与所述任一特征的特征值进行比较,获取所述特征值小于所述分裂阈值的数据实例标识,生成所述初始数据实例标识集合。
46.根据本技术的一个实施例,所述第二确定模块,还包括:第三接收子模块,用于接收所述服务端发送的梯度信息请求;产生子模块,用于根据所述梯度信息请求,从第二训练集合中产生第二特征子集;第二获取子模块,用于获取所述第二特征子集中每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,所述第三数据实例标识集合包括属于第二左子树空间的数据实例标识,所述第二左子树空间为按照所述特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的所述第二左子树空间;第二发送子模块,用于将所述第三数据实例标识集合的第一梯度信息发送给所述服务端。
47.根据本技术的一个实施例,所述第二获取子模块,包括:分桶单元,用于针对任一特征,获取所述任一特征的所有特征值,基于所述特征值对对所述任一特征进行分桶;第一获取单元,用于获取所述任一特征每个分桶的所述第三数据实例标识集合的第一梯度信息。
48.根据本技术的一个实施例,所述分裂模块,还包括:第四接收子模块,用于接收所述服务端发送的分裂信息,其中,所述分裂信息包括所述目标分裂方式、选为特征分裂点的目标分裂特征和所述目标分裂值;分裂子模块,用于基于所述分裂信息,对所述训练节点进行节点分裂。
49.根据本技术的一个实施例,所述分裂模块,还包括:验证子模块,用于接收所述服务器发送的验证集合,基于所述验证集合,对所述目标联邦学习模型进行验证。
50.根据本技术的一个实施例,所述验证子模块,包括:接收单元,用于接收所述服务端发送所述验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,所述验证节点为多个提升树其中一个提升树上的节点;确定单元,用于根据所述数据实例标识和所述分裂信息,确定所述验证节点的节点走向;发送单元,用于向所述服务端发送的所述节点走向,以使所述服务端根据所述节点走向进入下一个节点,以所述下一个节点作为更新的所述验证节点。
51.本技术第四方面实施例提供了联邦学习模型的训练装置,客户端可以通过向服务
端发送数据实例,以使服务端确定第一训练集合和第二训练集合,并基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合进行纵向联邦学习,以得到训练节点对应的第二分裂值,然后将第一分裂值和第二分裂值发送给服务端,接收服务端根据第一分裂值和第二分裂值确定出的训练节点的目标分裂方式,进而基于目标分裂方式对训练节点进行节点分裂,使得可以通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
52.为了实现上述目的,本技术第五方面实施例提供了一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本技术第一方面实施例,或者实现如本技术第三方面实施例中任一项所述的联邦学习模型的训练方法。
53.为了实现上述目的,本技术第六方面实施例提供了一种计算机可读存储介质,该程序被处理器执行时实现如本技术第一方面实施例,或者实现如本技术第三方面实施例中任一项所述的联邦学习模型的训练方法。
附图说明
54.图1为本技术一个实施例提供的联邦学习应用场景的示意图;
55.图2为本技术一个实施例公开的联邦学习模型的训练方法的流程示意图;
56.图3为本技术一个实施例公开的数据分布的示意图;
57.图4为本技术一个实施例公开的节点分裂的示意图;
58.图5为本技术另一个实施例公开的数据分布的示意图;
59.图6为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
60.图7为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
61.图8为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
62.图9为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
63.图10为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
64.图11为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
65.图12为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
66.图13为本技术一个实施例公开的按照桶映射规则进行分桶的示意图;
67.图14为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
68.图15为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
69.图16为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
70.图17为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
71.图18为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
72.图19为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
73.图20为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
74.图21为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
75.图22为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
76.图23为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
77.图24为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
78.图25为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
79.图26为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
80.图27为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
81.图28为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
82.图29为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
83.图30为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
84.图31为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
85.图32为本技术另一个实施例公开的联邦学习模型的训练方法的流程示意图;
86.图33为本技术一个实施例公开的联邦学习模型的训练装置的结构示意图;
87.图34为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
88.图35为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
89.图36为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
90.图37为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
91.图38为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
92.图39为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
93.图40为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
94.图41为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
95.图42为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
96.图43为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
97.图44为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
98.图45为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
99.图46为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
100.图47为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
101.图48为本技术另一个实施例公开的联邦学习模型的训练装置的结构示意图;
102.图49为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
103.为了更好的理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
104.应当理解,本技术实施例中涉及的“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
105.首先,对本技术实施例所涉及的部分词汇进行介绍。
106.同构数据:不同数据提供方所拥有的数据记录具有相同的特征属性。
107.异构数据:不同数据提供方所拥有的数据记录,除了数据实例标识(id)一样,其他特征属性都不一样。
108.xgboost:简称xgb,是一套提升树可扩展的机器学习系统。
109.在介绍本技术的技术方案之前,首先结合本技术的一个具体应用场景引出现有技术存在的问题以及本技术的技术构思过程。
110.在实际应用中,合作进行联邦学习的多方数据,很难完全保证全部异构或全部同构,所以在用提升树(boosting tree)进行联邦学习训练时,只能够丢弃部分同构或者异构的数据,然后采用横向联邦学习或者纵向联邦学习。但是由于丢弃的数据往往比较多,导致基于联邦学习训练得到的模型的性能较差。而且,即使采用横向联邦学习或者纵向联邦学习,数据的标签需要保证在某一方存在,不能够随机存在于多方中,而这在现实中几乎不可能的,所以目前技术也限制了联邦学习的实际应用。
111.针对上述问题,发明人通过研究发现,通过混合横向联邦学习和纵向联邦学习的联邦学习的设计,可以解决以往联邦学习需要关心数据分布方式的问题,也能够解决没法充分利用所有数据进行学习的问题,同时解决由于数据利用不充分导致训练得到的模型效果不佳的问题。
112.通过该方案的设计,在异构数据较多的情况下,方案倾向于采用纵向联邦学习(即纵向提升树(boosting tree))的方式,从而使得训练得到的模型能够具有无损的特点,同时,也能够利用同构数据;在同构数据较多的情况下,方案倾向于采用横向联邦学习(即横向提升树(boosting tree))的方式,同时也利用了异构数据进行模型训练,从而使训练得到的模型具有纵向方式无损的能力,提升了模型的性能。
113.示例性的,图1是本技术提供的基于联邦学习的模型训练方法的应用场景示意图。如图1所示,该应用场景可以包括:至少一个客户端(图1示出了三个客户端,分别为客户端111、客户端112、客户端113)、网络12和服务端13。其中,每个客户端与服务端13均可以通过网络12进行通信。
114.需要说明的是,图1仅是本技术实施例提供的一种应用场景的示意图,本技术实施例不对图1中包括的设备进行限定,也不对图1中设备之间的位置关系进行限定,例如,在图1所示的应用场景中,还可以包括数据存储设备,该数据存储设备相对服务端13可以是外部存储器,也可以是集成在服务端13中的内部存储器。
115.本技术提供了一种基于联邦学习的模型训练方法、装置及存储介质,通过混合横向联邦学习和纵向联邦学习的设计,提升训练所得的模型的性能。下面,通过具体实施例对本技术的技术方案进行详细说明。需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
116.下面参照附图描述根据本技术实施例提出的一种联邦学习模型的训练方法、装置及电子设备。
117.图2为本技术一个实施例公开的一种联邦学习模型的训练方法的流程示意图。
118.如图2所示,以服务端作为执行主体,对本技术实施例提出的联邦学习模型的训练方法进行解释说明,具体包括以下步骤:
119.s201、获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成第二训练集合。
120.需要说明的是,训练节点需要继续分裂时,需要确定分裂方式,即横向分裂或者纵向分裂。其中,大部分节点都经过一次横向、一次纵向共两次候选分裂,然后选择两种候选
分裂中分裂增益(gain)较大的分裂方式,作为该节点的最终分裂方式。
121.在试图进行预判断时,符合以下条件的节点只做纵向分裂或只做横向分裂,并直接作为最终分裂结果:
122.(1)树越深,节点上需要分裂的样本总数越少。判断节点上样本中共同样本的占比,如果少于预先设定的值,例如为10%,说明共同样本极少,则可以把该节点上的数据分布情况作为横向分布处理,只进行横向分裂。
123.(2)如果节点上样本中共同样本比例超过预先设定的值,例如为98%,则可以只进行纵向分裂。
124.需要说明的是,前述两个预判断条件的设定,是为了节省训练时间,两个比例是在训练参数里可以设置的。
125.下面分别针对横向分裂和纵向分裂,两种分裂方式中涉及的数据进行解释说明。
126.举例而言,如图3所示,共有10000个样本进行训练,在分裂达到某个节点时有100个样本。此时,数据分布如下所示:100个样本中有70个是两个平台共同样本。其中a平台有90个样本(包括20个私有样本和70个共有样本),b平台有80个样本(包括10个私有样本和70个共有样本)。a平台有个18特征(包括10个私有特征和8个共有特征),b平台有18个特征(包括10个私有特征和8个共有特征)。
127.针对横向分裂,该节点全部的样本都参与分裂,由服务端选定多个候选特征和特征阈值。
128.对于共同特征f和取值v:a平台将本地的90个样本分到左右子树,b平台将本地的80个样本分到左右子树,并分别告知服务端样本分流情况;服务端根据这100个样本的左右分流计算分裂增益,作为特征f的增益。
129.对于平台a的私有特征f和取值v:a平台将本地的90个样本分到左右子树,b平台将本地的70个共同样本分到左右子树,10个无特征f取值的样本全部分到左子树或右子树,作为两种分流,并分别告知服务端样本分流情况;服务端根据这100个样本的两种分流计算分裂增益,较大的作为特征f的增益。
130.对于平台b的私有特征f和取值v:和上述类似。
131.服务端将所有特征中最大的增益值记为gain1。
132.针对纵向分裂,仅该节点共同的70个样本参与分裂。和普通的纵向联邦学习类似,在70个样本上计算最大的特征分裂增益gain2。
133.取横向分裂最大增益gain1和纵向分裂最大增益gain2两个增益中较大的,该节点采用对应的分裂方式进行分裂。进入下一节点。
134.需要说明的是,无论采用横向分裂方式还是纵向方式分裂,节点样本集均根据以下规则进行分裂:最大增益来自a平台本地特征f1;最大增益来自共同特征f2;最大增益来自b平台本地特征f3。
135.举例而言,如图4(a)所示,若节点按f1分裂,a的90个样本按特征取值小于等于阈值的样本向左,大于阈值的样本向右;b的10个样本没有特征值,按最大增益对应的方式,如果是缺失值样本归右子树的,那么这10个样本向右,如果是缺失值样本归左子树的,那么这10个样本向左。
136.如图4(b)所示,若节点按f2分裂,所有样本都有特征值,小于等于阈值的样本向
左,大于阈值的样本向右。
137.如图4(c)所示,若节点按f3分裂,具体过程与节点按f1分裂的过程相似,此处不再赘述。
138.s202、基于第一训练集合,协同客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;其中,训练节点为多个提升树中一个提升树上的节点。
139.本技术实施例中,客户端可以基于第一训练集合进行横向联邦学习,以得到训练节点对应的第一分裂值,并发送给服务端。相应地,服务端可以接收训练节点对应的第一分裂值,以得到训练节点对应的第一分裂值。
140.s203、基于第二训练集合,协同客户端进行纵向联邦学习,以得到训练节点对应的第二分裂值。
141.本技术实施例中,客户端可以基于第二训练集合进行横向联邦学习,以得到训练节点对应的第二分裂值,并发送给服务端。相应地,服务端可以接收训练节点对应的第二分裂值,以得到训练节点对应的第二分裂值。
142.s204、根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式,并通知客户端基于目标分裂方式进行节点分裂,并获取更新的训练节点。
143.需要说明的是,传统的联邦学习,主要包括横向联邦学习和纵向联邦学习。其中,针对横向联邦学习,使用的为特征完全相同的多平台数据,即横向数据,例如图5中所示的数据(1.2) (3) (5.1);针对纵向联邦学习,使用的为样本id(identity document,身份标识号)完全相同的多平台数据,即纵向数据,例如图5中所示的数据(2) (3) (4)。由上可知,现有技术中,仅能对完全横向或完全纵向的数据进行建模,也就是说,仅能用上图5中的部分数据。
144.本技术实施例中,第一训练集合,即参与横向联邦学习的数据,是多个客户端的所有数据样本,例如图5中所示的数据(1) (2) (3) (4) (5);第二训练集合,即参与纵向联邦学习的数据,是多个客户端的共同数据样本,这些样本的所有特征参与训练,例如图5中所示的(2) (3) (4)。由上可知,本技术提出的联邦学习模型的训练方法,能够应用在横纵向交叉的数据上,也就是说,能够用上图5中的所有数据。
145.由此,本技术实施例中,可以基于第一训练集合与第二训练集合,协同客户端进行横向联邦学习与纵向联邦学习,以得到训练节点对应的第一分裂值和第二分裂值。
146.进一步地,本技术中,可以通过比较第一分裂值和第二分裂值,确定目标分裂值,进而根据目标分裂值,确定对应的目标分裂方式。
147.进一步地,在获取训练节点对应的目标分裂方式后,服务端可以向客户端发送获取到的目标分裂方式,并通知客户端基于目标分裂方式进行节点分裂。相应地,客户端可以接收服务端的目标分裂方式,并基于目标分裂方式对训练节点进行节点分裂。
148.进一步地,在通知客户端基于目标分裂方式进行节点分裂后,可以获取更新的训练节点。
149.s205、确定更新的训练节点满足停止训练条件,停止训练并生成目标联邦学习模型。
150.其中,停止训练条件,可以根据实际情况进行设定。例如,可以设定停止训练条件为多个提升术的节点数据集均为空,此种情形下,如果多个提升树的节点数据集均为空,则
可以停止训练并生成目标联邦学习模型。进一步地,可以对生成的目标联邦学习模型进行验证,直至达到预设训练次数后,清理信息并保留模型。
151.由此,本技术提出的联邦学习模型的训练方法,服务端通过获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成第二训练集合,并基于第一训练集合,协同客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合,协同客户端进行纵向联邦学习,以得到训练节点对应的第二分裂值,并根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式,并通知客户端基于目标分裂方式进行节点分裂,并获取更新的训练节点,进而确定更新的训练节点满足停止训练条件,停止训练并生成目标联邦学习模型,使得通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
152.图6为本技术一个实施例公开的一种联邦学习模型的训练方法的流程示意图。
153.如图6所示,以服务端作为执行主体,对本技术实施例提出的联邦学习模型的训练方法进行解释说明,具体包括以下步骤:
154.s301、如果训练节点满足预设分裂条件,则获取训练节点对应的目标分裂方式;其中,训练节点为多个提升树中一个提升树上的节点。
155.本技术实施例中,如果训练节点满足预设分裂条件,说明当前所处的训练节点需要继续分裂,此种情况下,可以获取训练节点对应的目标分裂方式。
156.其中,预设分裂条件可以根据实际情况进行设定,例如,可以设定预设分裂条件为当前处理的训练节点所在的层次未达到最大的树深度要求、损失函数未满足约束条件等。
157.其中,目标分裂方式包括:横向分裂方式和纵向分裂方式。
158.其中,提升树(boosting tree),指的是采用加法模型与前向分布算法,以决策树(decision tree)为基函数的提升方法。
159.s302、通知客户端基于目标分裂方式进行节点分裂。
160.s303、以训练节点分裂后生成的左子树节点重新作为训练节点进行下一轮训练,直至更新的训练节点不再满足预设分裂条件。
161.本技术实施例中,服务端可以将以训练节点分裂后生成的左子树节点重新作为训练节点进行下一轮训练,然后判断更新的训练节点层次是否满足预设分裂条件,并在确定更新的训练节点需要继续分裂,即满足预设分裂条件时,可以继续获取更新的训练节点对应的目标分裂方式,并通知客户端基于目标分裂方式继续进行节点分裂,直至更新的训练节点不再满足预设分裂条件。其中,预设分裂条件可以包括树深度阈值,分裂后样本的数量阈值或者联邦学习模型的误差阈值等。
162.s304、以一个提升树的其它非叶子节点重新作为训练节点进行下一轮训练。
163.本技术实施例中,服务端可以回溯到当前提升树的其它非叶子节点,重新作为当前训练节点,进行下一轮训练。
164.s305、如果多个提升树的节点数据集均为空,停止训练并生成目标联邦学习模型。
165.由此,本技术提出的联邦学习模型的训练方法,服务端可以通过将横向分裂方式和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,
解决了现有联邦学习模型的训练过程中存在的无法充分利用所有数据进行学习以及由于数据利用不充分导致训练效果不佳的问题,同时,减少了联邦学习模型的损失,提升了联邦学习模型的性能。
166.需要说明的是,本技术中,在试图根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式时,可以通过比较第一分裂值和第二分裂值,确定目标分裂值,进而根据目标分裂值,确定对应的目标分裂方式。
167.作为一种可能的实现方式,如图7所示,在上述实施例的基础上,上述步骤中根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式的过程,具体包括以下步骤:
168.s501、确定第一分裂值与第二分裂值中较大的值为训练节点对应的目标分裂值。
169.本技术实施例中,服务端在得到训练节点对应的第一分裂值和第二分裂值后,可以将第一分裂值和第二分裂值进行比较,并将其中较大的值,作为训练节点对应的目标分裂值。
170.举例而言,获取到的第一分裂值为gain1、第二分裂值为gain2,且gain1>gain2,此种情况下,可以将gain1作为训练节点对应的目标分裂值。
171.s502、根据目标分裂值,确定训练节点对应的分裂方式。
172.本技术实施例中,在将第一分裂值和第二分裂值中较大的值作为训练节点对应的目标分裂值后,服务端可以根据目标分裂值,确定训练节点对应的分裂方式。
173.由此,本技术提出的联邦学习模型的训练方法,可以通过协同客户端进行横向联邦学习和纵向联邦学习,分别得到第一分裂值和第二分裂值,进而将取值较大的作为训练节点对应的目标分裂值,进而根据目标分裂值,确定训练节点对应的分裂方式,使得根据目标分裂值,能够自动地选择匹配的学习方式的倾向性,无须关心数据分布方式。
174.需要说明的是,本技术中,在试图基于第一训练集合,协同客户端进行横向联邦学习,以得到训练节点对应的第一分裂值时,可以获取每个特征对应的横向分裂值,进而根据横向分裂值,确定训练节点的第一分裂值。
175.作为一种可能的实现方式,如图8所示,在上述实施例的基础上,上述步骤中基于第一训练集合,协同客户端进行横向联邦学习,以得到训练节点对应的第一分裂值的过程,具体包括以下步骤:
176.s601、从第一训练集合中产生训练节点可用的第一特征子集,并发送给客户端。
177.可选地,服务端可以从第一训练集合中随机产生当前训练节点可用的第一特征子集,例如,可以随机产生当前第一训练集合所有特征的一半特征,组成一个新的特征集合作为第一特征子集,并将产生的第一特征子集发送给各个客户端。相应地,各个客户端可以接收第一特征子集,并根据得到的第一特征子集合,遍历得到集合中的每个特征的特征值,进而根据本地数据,即本地存储的特征的特征值,发送给服务端。
178.s602、接收客户端发送的第一特征子集中每个特征的特征值。
179.本技术实施例中,客户端可以将第一特征子集中每个特征的特征值发送给服务端。相应地,服务端可以接收客户端发送的第一特征子集中每个特征的特征值。
180.s603、根据第一特征子集中每个特征的特征值,分别确定每个特征作为分裂特征点对应的横向分裂值。
181.作为一种可能的实现方式,如图9所示,在上述实施例的基础上,上述步骤s603中,
根据第一特征子集中每个特征的特征值,分别确定每个特征作为分裂特征点对应的横向分裂值的过程,具体包括以下步骤:
182.s701、针对第一特征子集中任一特征,根据任一特征的特征值,确定任一特征的分裂阈值。
183.本技术实施例中,在服务端接收客户端发送的第一特征子集中每个特征的特征值后,可以根据特征值,生成特征值列表。进一步地,针对第一特征子集中任一特征,可以从特征值标中随机选择一个特征值,作为当前特征的全局最优分裂阈值。
184.s702、根据分裂阈值,获取任一特征对应的第一数据实例标识集合和第二数据实例标识集合,其中,第一数据实例标识集合包括属于第一左子树空间的数据实例标识,第二数据实例标识集合包括属于第一右子树空间的数据实例标识。
185.作为一种可能的实现方式,如图10所示,在上述实施例的基础上,上述步骤s702中,根据分裂阈值,获取任一特征对应的第一数据实例标识集合和第二数据实例标识集合的过程,具体包括以下步骤:
186.s801、向客户端发送分裂阈值。
187.本技术实施例中,在确定任一特征的分裂阈值后,可以将此分裂阈值广播给客户端。相应地,客户端可以接收该分裂阈值,并基于每个特征的分裂阈值,获取训练节点对应的初始数据实例标识集合,并将初始数据实例标识集合发送给服务端。
188.s802、接收客户端发送训练节点对应的初始数据实例标识集合,其中,初始数据实例标识集合为客户端根据分裂阈值对任一特征进行节点分裂时生成的,初始数据实例标识集合包括属于第一左子树空间的数据实例标识。
189.本技术实施例中,服务端可以接收客户端发送的il,即包括属于第一左子树空间的数据实例标识的初始数据实例标识集合il。
190.s803、基于初始数据实例标识集合和所有数据实例标识,获得第一数据实例标识集合和第二数据实例标识集合。
191.作为一种可能的实现方式,如图11所示,在上述实施例的基础上,上述步骤s803中,基于初始数据实例标识集合,获得第一数据实例标识集合和第二数据实例标识集合的过程,具体包括以下步骤:
192.s901、将初始数据实例标识集合中的每个数据实例标识,与客户端的数据实例标识进行对比,获取存在异常的数据实例标识。
193.其中,存在异常的数据实例标识,可以为重复数据实例标识、存在矛盾的数据实例标识等。
194.s902、对异常的数据实例标识进行预处理,获取第一数据实例标识集合。
195.本技术实施例中,服务端在接收到il后,可以从各个il集合中过滤掉重复的实例id,处理存在矛盾的id信息,以确定最终的il。
196.举例而言,针对客户端a,如果将实例id加入il中,但是针对客户端b,存在id,没有将实例加进去,此时,则可以认为这个id应该存在于il中。
197.s903、基于所有数据实例标识和第一数据实例标识集合,获取第二数据实例标识集合。
198.本技术实施例中,在获取第一数据实例标识集合后,可以从所有数据实例标识中
去掉第一数据实例标识集合il,则可以获取到第二数据实例标识集合ir。
199.需要说明的是,本技术中,在试图基于第二训练集合,协和所述客户端进行纵向联邦学习,得到所述训练节点对应的第二分裂值时,可以根据每个特征对应的纵向分裂值,确定训练节点的第二分裂值。
200.作为一种可能的实现方式,如图12所示,在上述实施例的基础上,上述步骤中,获取训练节点对应的目标分裂方式的过程,具体包括以下步骤:
201.s1001、通知客户端基于第二训练集合进行纵向联邦学习。
202.本技术实施例中,在服务端通知客户端基于第二训练集合进行纵向联邦学习后,可以向客户端发送梯度信息请求,以获取gkv和hkv信息。相应地,客户端可以根据共同id的那部分数据,得到当前节点还未被处理的数据,随机得到特征集合,根据集合中每个特征k和对应特征的所有取值每个值v,对每个样本进行分桶映射,计算出左子树空间的gkv和hkv作为第一梯度信息,并在进行同态加密处理后发送给服务端。
[0203][0204][0205]
其中,x
i,k
表示数据实例x
i
的特征k的值。
[0206]
比如,原本取值在1

100岁的人群,映射到20岁以下、20

50岁、50岁以上三个桶中。一个分桶里的样本,要么全分到左边,要么全分到右边。理论上为向服务器发送的g和h是累计和,比如上述例子,发出去的g应当有三个:1

20岁的g之和、1

50岁的g之和、1

100岁的g之和(分别对应左子树的g)。由于同态加密的密文运算很慢、密文还会变长增加通信量,因此,实际中客户端发送的是这三个分桶分别的g:1

20岁的g之和、20

50岁的g之和、50以上的g之和。有label的平台接收到这三个桶的g后,它先解密成明文,再计算累计的1

20岁/1

50岁/1

100岁的g。上述两个公式就是这个过程,表示计算每个分桶的g之和。s
k,v
是当前桶的最大取值(50岁),s
k,v
‑1是上一个桶最大的特征取值(20岁),这样过滤出20

50岁的x。通过特征分桶的方式,可以减少计算量。
[0207]
s1002、接收客户端发送的每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,第三数据实例标识集合包括属于第二左子树空间的数据实例标识,第二左子树空间为按照特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的第二左子树空间。
[0208]
本技术实施例中,客户端可以针对任一特征,获取任一特征的所有特征值,基于特征值对任一特征进行分桶,并获取任一特征每个分桶的第三数据实例标识集合的第一梯度信息。相应地,服务端可以接收客户端发送的每个特征的至少一个第三数据实例标识集合的第一梯度信息。
[0209]
s1003、根据每个特征的第一梯度信息和训练节点的总梯度信息,分别确定每个特征的纵向分裂值。
[0210]
s1004、根据每个特征对应的纵向分裂值,确定训练节点的第二分裂值。
[0211]
下面以示例形式对梯度信息进行解释说明。
[0212]
举例而言,如图13所示,以客户端a上编号为k的特征为例,可以对当前节点上的所有样本排序,按照在特征k上的特征取值由小到大排序。进一步地,可以按照桶映射规则,将
这些样本按序切分为多个数据桶(对应多个由小到大的特征阈值)。进一步地,可以计算第v个分桶包含样本的一阶梯度g的总和g,以及二阶梯度h的总和h,即第v个特征阈值v对应的gkv和hkv。
[0213]
其中,gkv,表示的是根据编号为k的特征的取值对节点样本进行排序,并按次序切分为多个数据桶,排序后第v个桶中全部样本的一阶梯度g总和。
[0214]
其中,hkv为这些样本的二阶梯度h的总和。
[0215]
需要说明的是,前述桶映射规则有很多种,本技术对于桶映射规则的具体方式不作限定,只需要保证特征值相同的样本,例如图11中取值为1的两个样本,分在同一个数据桶中即可。
[0216]
例如,可以将相同取值的样本作为一个桶,即n个样本,在一个特征上如果有m种取值,就切分为m个桶,对应的特征阈值就是这m种取值。
[0217]
又例如,可以限定桶的个数,例如限制至多划分m个桶,此种情况下,如果特征k的取值少于m个,则可以按照上一种方式进行划分;如果多于m个,则可以按照近似平分的方法,分到m个桶中。
[0218]
需要说明的是,在试图确定每个特征的纵向分裂值时,可以选取候选纵向分裂值中的最大值,作为任一特征的纵向分裂值。
[0219]
作为一种可能的实现方式,如图14所示,在上述实施例的基础上,上述步骤s1003中,根据每个特征的第一梯度信息和训练节点的总梯度信息,分别确定每个特征的纵向分裂值的过程,具体包括以下步骤:
[0220]
s1201、针对任一特征,根据总梯度信息和每个第一梯度信息,分别获取与每个第一梯度信息相对应的第二梯度信息;
[0221]
s1202、针对每个第一梯度信息,根据第一梯度信息和第一梯度信息相对应的第二梯度信息,获取任一特征的候选纵向分裂值;
[0222]
s1203、选取候选纵向分裂值中的最大值,作为任一特征的纵向分裂值。
[0223]
其中,第一梯度信息包括属于第二左子树空间的数据实例所对应的特征的一阶梯度之和,以及属于第二左子树空间的数据实例所对应的特征的二阶梯度之和;第二梯度信息包括属于第二右子树空间的数据实例所对应的特征的一阶梯度之和,以及属于第二右子树空间的数据实例所对应的特征的二阶梯度之和。
[0224]
作为一种可能的实现方式,本技术实施例中,服务端向各个客户端请求获取gkv和hkv信息。相应地,客户端可以根据共同id的那部分数据,得到当前节点还未被处理的数据,随机得到特征集合,根据集合中每个特征k和对应特征的所有取值每个值v,对每个样本桶映射,计算出左子树空间的gkv和hkv,同态加密后发送到服务端。此外,客户端可以根据共同数据标识和本地数据,计算损失函数的一些中间结果,例如损失函数的一阶导数g
i
和二阶导数h
i
,并发送至服务端。
[0225]
进一步地,服务端可以对客户端发送的gkv和hkv进行解密,并根据当前节点的共同id对应的数据,以及得到的所有g
i
和h
i
,可以计算出当前节点的左子树空间所有g
i
的和gl、右子树空间所有g
i
的和gr和左子树空间所有h
i
的和hl、右子树空间所有h
i
的和hr。
[0226]
以xgb为例,目标函数如下式所示:
[0227][0228]
在xgb中提出使用二阶泰勒展开式近似表示上面的公式。泰勒展开式的二阶形式为:
[0229][0230]
其中,g
i
和h
i
的计算公式为:
[0231][0232]
从上述泰勒展开式可以看到g
i
是一阶导数,h
i
是二阶导数。其中,gl、hl可以分别通过以下公式进行计算,
[0233][0234][0235]
其中,n表示左子树空间实例个数,也就是说,此种情况下,左子树空间总共有n个实例。
[0236]
进一步地,服务端根据前述结果,可以算出各个特征的最优分割点,进而根据这些分裂点信息,确定全局最优分割点(k,v,gain)。其中,如果某几个客户端拥有相同的特征,服务端将会对接收到的gkv随机取一个作为当前特征的gkv,同理hkv也如此处理。
[0237]
进一步地,服务端可以根据(k,v,gain),向对应的客户端请求il信息。相应地,客户端接收到分割点信息(k,v,gain),查找得到分割点阈值value,记录该分割点(k,value)信息。本地数据集根据该分割点进行分割,得到il集合,发送(record,il,value)到服务端。其中,record表示该条记录在客户端的索引。
[0238]
进一步地,服务端接受客户端发送的(record,il,value)信息,对所在节点空间的所有共同id的实例进行分割,并通过(client id,record)关联当前节点和客户端。记录(client id,record_id,il,feature_name,feature_value)这些信息,作为纵向分裂的信息,即任一特征的纵向分裂值。
[0239]
需要说明的是,节点分裂,选择了最优分割点对应的特征和取值,此种情况下,可以将当前节点的样本,按照在这个特征的取值,分到左子树右子树节点上。
[0240]
s604、根据每个特征对应的横向分裂值,确定训练节点的第一分裂值。
[0241]
需要说明的是,本技术实施例中,可选地,可以先进行横向分裂,然后再进行纵向分裂;可选地,可以先进行纵向分裂,然后再进行横向分裂。
[0242]
进一步地,由于横向分裂方式使用了全部的数据,而纵向分裂方式仅使用了id相同的那部分数据,可知,针对横向分裂方式,利用的数据更多、有更大概率获得较好的效果,针对纵向分裂方式,客户端和服务端的数据交互量更小,速度更快。因此,为了在训练中断时,可以尽量获得更深一层的训练临时结果,可以先进行横向分裂,然后再进行纵向分裂。
[0243]
需要说明的是,本技术实施例中,如果训练节点满足预设分裂条件,说明当前所处的训练节点需要继续分裂,此种情况下,可以获取训练节点对应的目标分裂方式;如果训练节点未满足预设分裂条件,说明当前所处的训练节点不需要继续分裂,此种情况下,可以确
定叶子节点,并将叶子节点的权重值发送给客户端。
[0244]
作为一种可能的实现方式,如图15所示,在上述实施例的基础上,具体包括以下步骤:
[0245]
s1301、若训练节点未满足预设分裂条件,则确定训练节点为叶子节点,并获取叶子节点的权重值。
[0246]
本技术实施例中,若训练节点未满足预设分裂条件,服务端可以将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,存储该w
j
的值,作为纵向的叶子节点权重值。
[0247]
其中,叶子节点的权重值w
j
,用于计算样本预测分数,可以通过以下公式进行计算:
[0248][0249]
其中,g
j
表示节点j的所有实例对应的g
i
之和,h
j
表示节点j的所有实例对应的h
i
之和。
[0250]
s1302、将叶子节点的权重值发送给客户端。
[0251]
本技术实施例中,客户端在获取叶子节点的权重值之后,可以将叶子节点的权重值发送给客户端,通知各个客户端不再进行纵向方式的叶子节点分裂,也就是说,完成节点分裂的操作。
[0252]
需要说明的是,本技术实施例中,在试图通知客户端基于目标分裂方式进行节点分裂之前,可以向客户端发送分裂信息,其中,分裂信息包括目标分裂方式、选为特征分裂点的目标分裂特征和目标分裂值。
[0253]
如图16所示,在上述实施例的基础上,若目标分裂方式为纵向分裂方式,则可以通知客户端基于目标分裂方式进行节点分裂之前,具体包括以下步骤:
[0254]
s1401、向有标签的客户端发送分裂信息。
[0255]
本技术实施例中,服务端可以向有标签的客户端发送分裂信息。相应地,有标签的客户端可以接收分裂信息,并基于分裂信息,对训练节点进行节点分裂。
[0256]
针对纵向分裂方式,可选地,服务端可以根据记录的纵向分裂信息,包括(client_id,record_id,il,feature_name,feature_value),通知各个客户端进行真正的节点分裂操作。其中client_id对应的客户端知道所有信息,即知道(client_id,record_id,il,feature_name,feature_value),其他客户端仅需要知道il信息即可。进一步地,服务端将当前分裂后的左子树节点作为当前的处理节点。
[0257]
相应地,客户端接收服务端发送的il或者全部信息,即(client_id,record_id,il,feature_name,feature_value),进行纵向方式的节点分裂操作;如果存在(client_id,record_id,il,feature_name,feature_value)信息,在分裂时,客户端还需要记录和存储这些信息。进一步地,在分裂完毕之后,客户端可以将分裂后的左子树节点作为当前的处理节点。
[0258]
针对横向分裂方式,可选地,服务端可以使用横向方式进行该节点分裂,即根据横向方式得到的(k,value)信息,对当前节点进行分裂操作,可以得到il信息,将il广播各个客户端。
[0259]
相应地,客户端可以接收服务端的(k,value)信息,对共同id的数据进行节点分
裂,分裂方式是对于共同id数据的特征k,如果值小于value,将该条数据的id应该投放到il集合中,否则投放到ir集合中。如果数据不存在特征k,则投放到右子树空间中。
[0260]
s1402、接收有标签的客户端发送的左子树空间集合。
[0261]
本技术实施例中,有标签的客户端在对训练节点进行节点分裂之后,可以将分裂生成的左子树空间发送给服务端。相应地,服务端可以接收有标签的客户端发送的左子树空间集合。
[0262]
s1403、根据左子树空间集合,对第二训练集合进行分裂。
[0263]
s1404、将训练节点与有标签的客户端的标识进行关联。
[0264]
需要说明的是,本技术中,在响应于当前训练节点满足预设分裂条件之前,可以进行初始化。
[0265]
作为一种可能的实现方式,如图17所示,在上述实施例的基础上,具体包括以下步骤:
[0266]
s1501、接收客户端发送的数据实例标识。
[0267]
本技术实施例中,客户端可以将自己每条数据的唯一标识id,发送给服务端。相应地,客户端可以接收每条数据的唯一标识id,即数据实例标识。
[0268]
s1502、根据数据实例标识,确定客户端之间的共同数据实例标识,其中,共同数据实例标识用于指示客户端确定第一训练集合和第二训练集合。
[0269]
本技术实施例中,服务端可以收集各个客户端的所有实例id,得到客户端之间的共同id,通知各个客户端。进一步地,服务端可以选择一个客户端作为验证客户端,从该客户端中选择一部分有标签的数据作为验证数据集,这部分数据集不存在于共同id的数据集中,并修改该客户端对应的训练数据集列表,初始化验证数据集的信息。然后通知各个客户端验证id列表、共同id列表的信息。相应地,客户端可以接收服务端发送的共同id列表和验证id列表(若存在的话),并初始化全局的本地数据信息。
[0270]
进一步地,服务端可以针对当前xgb森林列表和训练轮次,进行每一轮训练的信息初始化,并针对当前树节点和当前xgb森林列表,进行每一颗树的信息初始化,进而通知客户端进行每一轮训练的信息初始化或者每一棵树训练的初始化。
[0271]
进一步地,在获得目标联邦学习模型之后,可以对生成的目标联邦学习模型进行验证。
[0272]
可选地,服务端可以基于验证集合,协同验证客户端对目标联邦学习模型进行验证,验证客户端为参与联邦学习模型训练的客户端中一个,验证集合分别与第一训练集合和第二训练集合互斥。
[0273]
作为一种可能的实现方式,服务端可以通知客户端进行验证初始化操作。相应地,客户端进行验证初始化。
[0274]
进一步地,服务端可以选择一个id开始进行验证,初始化xgb树,并通知客户端开始进行验证。相应地,客户端初始化验证信息。
[0275]
进一步地,服务端可以根据当前树,将分裂节点信息和验证的数据id发送给验证客户端。相应地,客户端可以根据数据id,获取对应的数据,然后根据服务端发送的分裂节点信息,判断应该往左子树走还是右子树走,并将判定结果返回给服务端。
[0276]
进一步地,服务端可以根据客户端返回的走向,进入下一个节点。然后判断是否已
经到达叶子节点,如果未到达叶子节点,选择一个id重新开始进行验证,初始化xgb树,并通知客户端重新开始进行验证。如果以及到达叶子节点,则可以记录叶子节点的权重,计算出预测值,进行存储。如果当前预测的id非所有预测id最后一个,则可以选择一个id重新开始进行验证,初始化xgb树,并通知客户端重新开始进行验证;如果当前预测的id是所有预测id最后一个,则可以将所有预测结果发送给客户端。相应地,客户端可以接收所有预测结果,进行出最终的验证结果,与上一次的验证结果对比,判断是否需要保留并使用当前的模型,并将判定结果通知服务端。
[0277]
进一步地,服务端可以根据客户端返回的验证结果,判断是否保留并使用当前的模型,并将判定结果广播给所有客户端。相应地,各个客户端接收服务端的广播信息,进行处理。
[0278]
进一步地,服务端可以判断是否已经是达到最终的预测轮次,若未达到最终的预测轮次,则可以针对当前xgb森林列表换热训练轮次,重新进行每一轮训练的信息初始化;若已达到最终的预测轮次,则可以结束所有训练,清理信息,保留模型。相应地,客户端结束所有训练,清理信息,保留模型。
[0279]
由此,本技术提出的联邦学习模型的训练方法,可以通过将横向分裂方式和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,解决了现有联邦学习模型的训练过程中存在的无法充分利用所有数据进行学习以及由于数据利用不充分导致训练效果不佳的问题,同时,减少了联邦学习模型的损失,提升了联邦学习模型的性能。
[0280]
图18为本技术一个实施例公开的联邦学习模型的训练方法的流程示意图。
[0281]
如图18所示,以客户端作为执行主体,对本技术实施例提出的联邦学习模型的训练方法进行解释说明,具体包括以下步骤:
[0282]
s1601、向服务端发送数据实例,以使服务端确定第一训练集合和第二训练集合,其中,第一训练集合包括各个客户端的所有数据实例,第二训练集合包括具有相同特征的数据实例。
[0283]
可选地,客户端可以获取训练节点对应的数据实例,并将数据实例发送给服务端。相应地,服务端可以接收数据实例,进而确定第一训练集合和第二训练集合,其中,第一训练集合包括各个客户端的所有数据实例,第二训练集合包括具有相同特征的数据实例。
[0284]
s1602、基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值。
[0285]
s1603、基于第二训练集合进行纵向联邦学习,以得到训练节点对应的第二分裂值。
[0286]
s1604、将第一分裂值和第二分裂值发送给服务端。
[0287]
本技术实施例中,在客户端基于第一训练集合和第二训练集合进行横向联邦学习和纵向联邦学习,以得到训练节点对应的第二分裂值后,可以将第一分裂值和第二分裂值发送给服务端。相应地,服务端可以接收第一分裂值和第二分裂值。
[0288]
s1605、接收服务端根据第一分裂值和第二分裂值确定出的训练节点的目标分裂方式。
[0289]
本技术实施例中,服务端可以根据第一分裂值和第二分裂值确定出的训练节点的
目标分裂方式。相应地,客户端可以接收目标分裂方式。
[0290]
s1606、基于目标分裂方式对训练节点进行节点分裂。
[0291]
本技术实施例中,客户端在接收到目标分裂方式之后,可以基于目标分裂方式对训练节点进行节点分裂。可选地,可以基于横向分裂方式对训练节点进行节点分裂;可选地,基于纵向分裂方式对训练节点进行节点分裂。
[0292]
由此,本技术提出的联邦学习模型的训练方法,客户端可以通过向服务端发送数据实例,以使服务端确定第一训练集合和第二训练集合,并基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合进行纵向联邦学习,以得到训练节点对应的第二分裂值,然后将第一分裂值和第二分裂值发送给服务端,接收服务端根据第一分裂值和第二分裂值确定出的训练节点的目标分裂方式,进而基于目标分裂方式对训练节点进行节点分裂,使得可以通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
[0293]
图19为本技术一个实施例公开的联邦学习模型的训练方法的流程示意图。
[0294]
如图19所示,以客户端作为执行主体,对本技术实施例提出的联邦学习模型的训练方法进行解释说明,具体包括以下步骤:
[0295]
s1701、接收服务端在确定训练节点满足预设分裂条件时发送的目标分裂方式,其中,训练节点为多个提升树中一个提升树上的节点。
[0296]
本技术实施例中,如果训练节点满足预设分裂条件,说明当前所处的训练节点需要继续分裂,此种情况下,服务端可以获取训练节点对应的目标分裂方式,并知客户端基于目标分裂方式进行节点分裂。相应地,客户端可以接收服务端在确定训练节点满足预设分裂条件时发送的目标分裂方式。
[0297]
s1702、基于目标分裂方式对训练节点进行节点分裂。
[0298]
本技术实施例中,服务端可以根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式。相应地,客户端可以接收服务端发送的il或者(client_id,record_id,il,feature_name,feature_value)信息,并根据目标分裂方式,对训练节点进行节点分裂。其中,如果存在(client_id,record_id,il,feature_name,feature_value)信息,在对训练节点进行节点分裂时,客户端还需要记录和存储这些信息。
[0299]
进一步地,在分裂完毕之后,客户端可以将分裂后的左子树节点作为当前的处理节点。
[0300]
由此,本技术提出的联邦学习模型的训练方法,客户端可以通过接收服务端在确定训练节点满足预设分裂条件时发送的目标分裂方式,其中,训练节点为多个提升树中一个提升树上的节点,并基于目标分裂方式对训练节点进行节点分裂,使得可以通过将横向分裂方式和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,解决了现有联邦学习模型的训练过程中存在的无法充分利用所有数据进行学习以及由于数据利用不充分导致训练效果不佳的问题,同时,减少了联邦学习模型的损失,提升了联邦学习模型的性能。
[0301]
需要说明的是,本技术中,在试图基于第一训练集合进行横向联邦学习,以得到训练节点对应的第一分裂值时,可以获取训练节点对应的初始数据实例标识集合,并将初始
数据实例标识集合发送给服务端。
[0302]
作为一种可能的实现方式,如图20所示,在上述实施例的基础上,具体包括以下步骤:
[0303]
s1801、接收服务端从第一训练集合中产生的训练节点可用的第一特征子集。
[0304]
本技术实施例中,服务端可以从第一训练集合中随机产生当前训练节点可用的第一特征子集合,例如,可以随机产生当前第一训练集合所有特征的一半特征,组成一个新的特征集合作为第一特征子集合,并将产生的第一特征子集合发送给各个客户端。相应地,各个客户端可以接收第一特征子集。
[0305]
s1802、向服务端发送第一特征子集中每个特征的特征值。
[0306]
本技术实施例中,客户端可以根据得到的第一特征子集,遍历得到集合中的每个特征的特征值,进而根据本地数据,即本地存储的特征的特征值,随机选择该特征所有取值中的一个,发送给服务端。相应地,服务端收集各个客户端发送的特征取值信息,组成一个取值列表,从列表中随机选择一个作为当前特征的全局最优分裂阈值,将这个分裂阈值广播给各个客户端。
[0307]
s1803、接收服务端发送的每个特征的分裂阈值。
[0308]
本技术实施例中,服务端可以根据接收到的第一特征子集中每个特征的特征值,确定每个特征的分裂阈值,并发送给客户端。相应地,客户端可以接收服务端发送的每个特征的分裂阈值。
[0309]
s1804、基于每个特征的分裂阈值,获取训练节点对应的初始数据实例标识集合,并将初始数据实例标识集合发送给服务端;其中,初始数据实例标识集合用于指示服务器生成第一数据实例标识集合和第二数据实例标识集合,第一数据实例标识集合和初始数据实例标识集合均包括属于第一左子树空间的数据实例标识,第二数据实例标识集合包括属于第一右子树空间的数据实例标识。
[0310]
本技术实施例中,在试图基于每个特征的分裂阈值,获取训练节点对应的初始数据实例标识集合时,可以针对任一特征,将任一特征的分裂阈值分别与任一特征的特征值进行比较,获取特征值小于分裂阈值的数据实例标识,生成初始数据实例标识集合。其中,分裂阈值可以根据实际情况,在开始训练之前进行设定。
[0311]
作为一种可能的实现方式,客户端可以根据接收特征分裂阈值信息,对当前特征进行节点分裂,得到il,通知服务端;如果客户端不存在对应的特征,则返回空的il。
[0312]
其中,il为左子树空间中的实例id集合;计算方式如下:收到服务端发送的特征k的阈值value,本地数据中如果实力id1对应的特征k的取值小于value,则将id1加入到il集合中;用公式表示如下:
[0313]
s
il
={id|id
k
<value}
[0314]
其中,id
k
表示实例id特征a的取值,s
il
表示集合il。
[0315]
需要说明的是,本技术中,在试图基于第二训练集合进行纵向联邦学习,以得到训练节点对应的第二分裂值之前,可以获取至少一个第三数据实例标识集合的第一梯度信息,并将第三数据实例标识集合的第一梯度信息发送给服务端。
[0316]
作为一种可能的实现方式,如图21所示,在上述实施例的基础上,具体包括以下步骤:
[0317]
s1901、接收服务端发送的梯度信息请求。
[0318]
本技术实施例中,服务端可以向客户端发送梯度信息请求,以请求获取gkv和hkv信息。相应地,客户端可以接收服务端发送的梯度信息请求。
[0319]
s1902、根据梯度信息请求,从第二训练集合中产生第二特征子集。
[0320]
s1903、获取第二特征子集中每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,第三数据实例标识集合包括属于第二左子树空间的数据实例标识,第二左子树空间为按照特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的第二左子树空间。
[0321]
作为一种可能的实现方式,如图22所示,在上述实施例的基础上,具体包括以下步骤:
[0322]
s2001、针对任一特征,获取任一特征的所有特征值,基于特征值对任一特征进行分桶。
[0323]
本技术实施例中,可以根据集合中每个特征k和对应特征的所有取值每个值v,对每个样本桶映射。
[0324]
需要说明的是,前述桶映射规则有很多种,本技术对于桶映射规则的具体方式不作限定,只需要保证特征值相同的样本,例如图13中取值为1的两个样本,分在同一个数据桶中即可。
[0325]
例如,可以将相同取值的样本作为一个桶,即n个样本,在一个特征上如果有m种取值,就切分为m个桶,对应的特征阈值就是这m种取值。
[0326]
又例如,可以限定桶的个数,例如限制至多划分m个桶,此种情况下,如果特征k的取值少于m个,则可以按照上一种方式进行划分;如果多于m个,则可以按照近似平分的方法,分到m个桶中。
[0327]
s2002、获取任一特征每个分桶的第三数据实例标识集合的第一梯度信息。
[0328]
本技术实施例中,客户端可以获取任一特征每个分桶的第三数据实例标识集合的第一梯度信息。相应地,服务端可以接收客户端发送的每个特征的至少一个第三数据实例标识集合的第一梯度信息。
[0329]
s1904、将第三数据实例标识集合的第一梯度信息发送给服务端。
[0330]
本技术实施例中,客户端可以根据共同id的那部分数据,得到当前节点还未被处理的数据,随机得到特征集合,根据集合中每个特征k和对应特征的所有取值每个值v,对每个样本桶映射,计算出左子树空间的gkv和hkv,同态加密后发送到服务端。
[0331]
需要说明的是,本技术中,在试图基于目标分裂方式对训练节点进行节点分裂时,可以根据服务端发送的分裂信息进行节点分裂。
[0332]
作为一种可能的实现方式,如图23所示,在上述实施例的基础上,具体包括以下步骤:
[0333]
s2101、接收服务端发送的分裂信息,其中,分裂信息包括目标分裂方式、选为特征分裂点的目标分裂特征和目标分裂值。
[0334]
本技术实施例中,在试图通知客户端基于目标分裂方式进行节点分裂之前,服务端可以向客户端发送分裂信息,其中,分裂信息包括目标分裂方式、选为特征分裂点的目标分裂特征和目标分裂值。相应地,客户端可以接收服务端发送的分裂信息。
[0335]
作为一种可能的实现方式,服务端可以使用横向方式进行该节点分裂,即根据横向方式得到的(k,value)信息,对当前节点进行分裂操作,进而可以得到il信息,并将il广播各个客户端。
[0336]
s2102、基于分裂信息,对训练节点进行节点分裂。
[0337]
作为一种可能的实现方式,客户端可以根据接收到的服务端的(k,value)信息,对共同id的数据进行节点分裂,分裂方式是对于共同id数据的特征k,如果值小于value,将该条数据的id应该投放到il集合中,否则投放到ir集合中。如果数据不存在特征k,则投放到右子树空间中。
[0338]
进一步地,在对训练节点进行节点分裂之后,客户端可以将分裂生成的左子树空间发送给服务端。相应地,服务端可以接收分裂生成的左子树空间。
[0339]
需要说明的是,本技术实施例中,如果训练节点满足预设分裂条件,说明当前所处的训练节点需要继续分裂;如果训练节点未满足预设分裂条件,说明当前所处的训练节点不需要继续分裂,此种情况下,客户端可以将残差作为下一个提升树的残差输入,同时进行节点回溯。
[0340]
作为一种可能的实现方式,如图24所示,在上述实施例的基础上,具体包括以下步骤:
[0341]
s2201、若训练节点为叶子节点,接收服务器发送的叶子节点的权重值。
[0342]
本技术实施例中,若训练节点未满足预设分裂条件,服务端可以将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,存储该w
j
的值,作为纵向的叶子节点权重值。相应地,客户端可以接收服务器发送的叶子节点的权重值w
j

[0343]
s2202、根据叶子节点的权重值确定其包含的各数据的残差。
[0344]
s2203、将残差作为下一个提升树的残差输入。
[0345]
本技术实施例中,客户端可以根据[ij(m),w
j
],计算出新的y`(t

1)(i),并回溯到当前树的其他非叶子节点,作为当前节点。其中,y`(t

1)(i)表示第i个实例所对应的label(标签)残差,t表示当前是第t棵树,t

1表示上一棵树。
[0346]
由此,本技术提出的联邦学习模型的训练方法,客户端可以通过接收服务端在确定训练节点满足预设分裂条件时发送的目标分裂方式,其中,训练节点为多个提升树中一个提升树上的节点,并基于目标分裂方式对训练节点进行节点分裂,使得可以通过将横向分裂方式和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,解决了现有联邦学习模型的训练过程中存在的无法充分利用所有数据进行学习以及由于数据利用不充分导致训练效果不佳的问题,同时,减少了联邦学习模型的损失,提升了联邦学习模型的性能。
[0347]
需要说明的是,本技术实施例中,联邦学习模型的训练过程主要包括进行节点分裂、生成模型以及验证模型等几个阶段。下面分别针对服务端作为执行主体以及验证客户端作为执行主体,以进行联邦学习模型的训练的节点分裂、生成模型以及验证模型阶段为例,对本技术实施例提出的联邦学习模型的训练方法进行解释说明。
[0348]
针对服务端作为执行主体,如图25所示,本技术实施例提出的联邦学习模型的训练方法,具体包括以下步骤:
[0349]
s2301、如果训练节点满足预设分裂条件,则获取训练节点对应的目标分裂方式;
其中,训练节点为多个提升树中一个提升树上的节点。
[0350]
s2302、通知客户端基于目标分裂方式进行节点分裂,并获取更新的训练节点。
[0351]
s2303、确定更新的训练节点满足停止训练条件,停止训练并生成目标联邦学习模型。
[0352]
需要说明的是,步骤s2301~s2303的相关内容可参见上述实施例,此处不再赘述。
[0353]
s2304、获取验证集合,协同验证客户端对目标联邦学习模型进行验证,验证客户端为参与联邦学习模型训练的客户端中一个。
[0354]
其中,验证集合,通常为训练集合中的部分采样。可选地,可以按照预设比例,随机从训练集合中进行采样,以作为验证集合。本技术实施例中,验证集合包括数据实例标识,且验证集合分别与第一训练集合和第二训练集合互斥。
[0355]
由此,本技术提出的联邦学习模型的训练方法,在生成联邦学习模型后,服务端可以通过获取验证集合,并协同验证客户端对目标联邦学习模型进行验证,以在用户数据同构较多的情况下,通过采用训练结合验证的方式,减低了联邦学习模型的验证损失,提高了联邦学习模型的推理效果,进一步提高了联邦学习模型训练过程中的有效性及可靠性。
[0356]
需要说明的是,本技术实施例中,更新的训练节点,包括:训练节点分裂后生成的左子树节点和一个提升树的其它非叶子节点。其中,更新的训练满足停止训练条件,包括:更新的训练节点不再满足预设分裂条件;或者,更新的训练节点为多个提升树的最后一个节点。
[0357]
需要说明的是,本技术实施例中,在试图获取验证集合,协同验证客户端对目标联邦学习模型进行验证时,可以逐一验证验证集合中的数据实例标识,直至验证集合中的数据实例标识均被验证。
[0358]
作为一种可能的实现方式,如图26所示,在上述实施例的基础上,上述步骤s2304中获取验证集合,协同验证客户端对目标联邦学习模型进行验证的过程,具体包括以下步骤:
[0359]
s2401、向验证客户端发送验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,验证节点为多个提升树其中一个提升树上的节点。
[0360]
本技术实施例中,服务端可以将任一数据实例标识发送至验证客户端,同时发送验证节点的分裂信息。相应地,验证客户端可以接收该数据实例标识和验证节点的分裂信息,根据数据实例标识获取对应的数据,并根据分裂信息,判断验证节点对应的节点走向,即判断节点走向为向左子树走或者向右子树走。
[0361]
其中,分裂信息包括用于分裂的特征以及分裂阈值。
[0362]
s2402、接收验证客户端发送的验证节点对应的节点走向,其中,节点走向为验证客户端根据数据实例标识和分裂信息确定的。
[0363]
本技术实施例中,验证客户端在确定了验证节点对应的节点走向之后,可以将节点走向发送至服务端。相应地,服务端可以接收验证客户端发送的验证节点对应的节点走向。
[0364]
s2403、根据节点走向进入下一个节点,以下一个节点作为更新的验证节点。
[0365]
本技术实施例中,服务端可以根据验证客户端返回的节点走向,进入下一个节点,以下一个节点作为更新的验证节点。进一步地,服务端可以判断更新的验证节点是否满足
预设节点分裂条件,若更新的验证节点满足预设节点分裂条件,说明未到达叶子节点,则可以执行步骤s2404;若更新的验证节点未满足预设节点分裂条件,说明已经到达叶子节点,则可以执行步骤s2405。
[0366]
s2404、若更新的验证节点满足预设节点分裂条件,返回执行向验证客户端发送数据实例标识和分裂信息,直至验证集合中的数据实例标识均被验证。
[0367]
s2405、若更新的验证节点未满足预设节点分裂条件,确定更新的验证节点为叶子节点,获取数据实例标识所表征的数据实例的模型预测值。
[0368]
本技术实施例中,服务端在确定更新的验证节点为叶子节点后,可以记录叶子节点的权重值,计算并存储数据实例标识所表征的数据实例的模型预测值。
[0369]
其中,数据实例标识所表征的数据实例的模型预测值,指的是每个样本的预测值。在进行验证时,每个样本在每棵树上走到某个叶子结点时,该叶子的leaf score(叶子节点分数)即为样本在这棵树的打分,进而一个样本在所有树的打分之和,即为预测值。
[0370]
进一步地,在完成上述步骤s2404之后,可以确定是否保留并使用目标联邦学习模型。
[0371]
作为一种可能的实现方式,如图27所示,在上述实施例的基础上,上述步骤s2404之后,具体包括以下步骤:
[0372]
s2501、若验证集合中数据实例标识均被验证,发送数据实例的模型预测值给验证客户端。
[0373]
本技术实施例中,若验证集合中数据实例标识均被验证,也就是说,当前预测的数据实例标识为所有预测数据实例标识中的最后一个,则可以发送数据实例的模型预测值给验证客户端。相应地,验证客户端可以接收所有预测结果,并计算出最终的验证结果,进而将其与上一次的验证结果进行比较,以判断是否需要保留并使用当前的目标联邦学习模型,并根据判定结果生成验证指示信息。
[0374]
需要说明的是,客户端在试图生成验证指示信息时,可以针对验证集合中的所有样本,计算得到预测值。由于验证客户端有它们的真实label值,此种情况下,客户端可以根据预测值和lable值,计算二者之间值的相关差异指标,例如aaccuracy(准确率,又称精确程度)、rmse(root mean squared error,均方根误差)等指标,并通过前述指标确定当前epoch中的模型的性能。
[0375]
其中,当前epoch,又称当前一代训练,指的是一个所有训练样本在神经网络中均进行了一次正向传播和一次反向传播的过程,也就是说,一个epoch就是将所有训练样本训练一次的过程。由此,若获取到的相关差异指标优于上一个epoch的指标,则可以保留当前得到的模型;若获取到的相关差异指标劣于上一个epoch的指标,则可以丢弃当前得到的模型。
[0376]
s2502、接收验证客户端发送的验证指示信息,其中,验证指示信息为根据模型预测值获得的用于指示模型是否保留的指示信息。
[0377]
本技术实施例中,验证客户端可以将验证指示信息发送至服务端。相应地,服务端可以接收验证客户端发送的验证指示信息。
[0378]
s2503、根据验证指示信息,确定是否保留并使用目标联邦学习模型,并将确定结果发送给客户端。
[0379]
本技术实施例中,服务端可以根据验证指示信息,确定是否保留并使用目标联邦学习模型,并将确定结果发送所有给客户端。
[0380]
针对验证客户端作为执行主体,如图28所示,本技术实施例提出的联邦学习模型的训练方法,具体包括以下步骤:
[0381]
s2601、接收服务端在确定训练节点满足预设分裂条件时发送的目标分裂方式,其中,训练节点为多个提升树中一个提升树上的节点。
[0382]
s2602、基于目标分裂方式对训练节点进行节点分裂。
[0383]
需要说明的是,步骤s2601~s2602的相关内容可参见上述实施例,此处不再赘述。
[0384]
s2603、接收服务器发送的验证集合,基于验证集合,对目标联邦学习模型进行验证。
[0385]
本技术实施例中,服务端可以获取验证集合,并发送至验证客户端。相应地,验证客户端可以接收服务器发送的验证集合,并基于验证集合,对目标联邦学习模型进行验证。
[0386]
其中,接收服务器发送的验证集合,基于验证集合,对目标联邦学习模型进行验证。
[0387]
由此,本技术提出的联邦学习模型的训练方法,在基于目标分裂方式对训练节点进行节点分裂后,验证客户端可以通过接收服务器发送的验证集合,基于验证集合,对目标联邦学习模型进行验证,以在用户数据同构较多的情况下,通过采用训练结合验证的方式,减低了联邦学习模型的验证损失,提高了联邦学习模型的推理效果,进一步提高了联邦学习模型训练过程中的有效性及可靠性。
[0388]
需要说明的是,本技术实施例中,在验证客户端试图基于验证集合,对目标联邦学习模型进行验证时,可以逐一验证验证集合中的数据实例标识,直至验证集合中的数据实例标识均被验证。
[0389]
作为一种可能的实现方式,如图29所示,在上述实施例的基础上,上述步骤s2603中基于验证集合,对目标联邦学习模型进行验证的过程,具体包括以下步骤:
[0390]
s2701、接收服务端发送验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,验证节点为多个提升树其中一个提升树上的节点。
[0391]
本技术实施例中,服务端可以将任一数据实例标识发送至验证客户端,同时发送验证节点的分裂信息。相应地,验证客户端可以接收该数据实例标识和验证节点的分裂信息。
[0392]
其中,分裂信息包括用于分裂的特征以及分裂阈值。
[0393]
s2702、根据数据实例标识和分裂信息,确定验证节点的节点走向。
[0394]
本技术实施例中,验证客户端可以根据数据实例标识获取对应的数据,并根据分裂信息,判断验证节点对应的节点走向,即判断节点走向为向左子树走或者向右子树走。
[0395]
作为一种可能的实现方式,如图30所示,上述步骤s2702中根据数据实例标识和分裂信息,确定验证节点的节点走向的过程,具体包括以下步骤:
[0396]
s2801、根据数据实例标识,确定数据实例标识对应的每个特征的特征值。
[0397]
需要说明的是,步骤s2801的相关内容可参见上述实施例,此处不再赘述。
[0398]
s2802、根据分裂信息和每个特征的特征值,确定节点走向。
[0399]
本技术实施例中,验证客户端可以根据分裂信息,确定用于分裂的特征,以及基于
该特征的特征值和分裂阈值,进而确定节点走向。
[0400]
s2703、向服务端发送的节点走向,以使服务端根据节点走向进入下一个节点,以下一个节点作为更新的验证节点。
[0401]
本技术实施例中,验证客户端在确定了验证节点对应的节点走向之后,可以将节点走向发送至服务端。相应地,服务端可以接收验证客户端发送的验证节点对应的节点走向。
[0402]
进一步地,在完成上述步骤s2703之后,可以确定是否保留并使用目标联邦学习模型。
[0403]
作为一种可能的实现方式,如图31所示,在上述实施例的基础上,上述步骤s2703之后,具体包括以下步骤:
[0404]
s2901、若验证集合中数据实例标识均被验证,接收服务端发送的数据实例标识所表征的数据实例的模型预测值。
[0405]
本技术实施例中,若验证集合中数据实例标识均被验证,也就是说,当前预测的数据实例标识为所有预测数据实例标识中的最后一个,则可以发送数据实例的模型预测值给验证客户端。相应地,验证客户端可以接收所有预测结果,并计算出最终的验证结果,进而将其与上一次的验证结果进行比较,以判断是否需要保留并使用当前的目标联邦学习模型,并根据判定结果生成验证指示信息。
[0406]
需要说明的是,验证客户端在试图生成验证指示信息时,可以针对验证集合中的所有样本,计算得到预测值。由于验证客户端有它们的真实label值,此种情况下,客户端可以根据预测值和lable值,计算二者之间值的相关差异指标,例如aaccuracy(准确率,又称精确程度)、rmse(root mean squared error,均方根误差)等指标,并通过前述指标确定当前epoch中的模型的性能。
[0407]
其中,当前epoch,又称当前一代训练,指的是一个所有训练样本在神经网络中均进行了一次正向传播和一次反向传播的过程,也就是说,一个epoch就是将所有训练样本训练一次的过程。由此,若获取到的相关差异指标优于上一个epoch的指标,则可以保留当前得到的模型;若获取到的相关差异指标劣于上一个epoch的指标,则可以丢弃当前得到的模型。
[0408]
s2902、根据模型预测值获得最终的验证结果,并将验证结果与之前验证结果进行比较,以生成用于指示是否保留并使用目标联邦学习模型的验证指示信息。
[0409]
本技术实施例中,验证客户端可以将验证指示信息发送至服务端。相应地,服务端可以接收验证客户端发送的验证指示信息。
[0410]
s2903、向服务端发送验证指示信息。
[0411]
本技术实施例中,服务端可以根据验证客户端发送的验证指示信息,确定是否保留并使用目标联邦学习模型,并将确定结果发送所有给客户端。
[0412]
图32为本技术一个实施例公开的一种联邦学习模型的训练方法的流程示意图。
[0413]
如图32所示,以xgb为例,对服务端和客户端(包括验证客户端)进行联邦学习模型的训练的全过程为例,对本技术实施例提出的联邦学习模型的训练方法进行解释说明,具体包括以下步骤:
[0414]
s3001、服务端与客户端分别进行初始化处理。
[0415]
可选地,客户端发送数据标识给服务端。具体地,客户端将自己每条数据的数据标识,发送给服务端。其中,数据标识是唯一区分每条数据的。相应地,服务端接收各客户端发送的数据标识。
[0416]
进一步地,服务端根据其接收的数据标识,确定客户端之间的共同数据标识。其中,共同数据标识是服务端根据各客户端上报的数据标识,确定的不同客户端中所具有的相同的数据标识。
[0417]
进一步地,服务端发送共同数据标识给客户端。
[0418]
进一步地,客户端根据共同数据标识和本地数据,获得损失公式的导数,并进行同态加密处理。具体地,客户端根据共同数据标识和本地数据,计算损失函数的一些中间结果,例如损失函数的一阶导数gi和二阶导数hi。其中,g
i
和h
i
的计算公式为:
[0419][0420]
其中,y
i
为样本i的预测结果;各符号含义请参考相关技术。
[0421]
损失函数的计算公式为:
[0422][0423]
在xgb中提出使用二阶泰勒展开式近似表示上面的公式。泰勒展开式的二阶形式为:
[0424][0425]
进一步地,客户端发送加密后的导数给服务端。相应地,服务端接收客户端发送的加密后的导数。
[0426]
进一步地,服务端对接收到的加密后的导数进行解密处理,并对解密后的导数进行求均值处理,得到均值。针对同一共同数据标识,基于各客户端对应的导数累加后求均值。例如,计算方式如前所述,分别对共同数据标识所对应的一阶导数g
i
和二阶导数h
i
累加后求均值。具体地:
[0427][0428][0429]
其中,n表示具有共同数据id的个数,g
i
(j)表示数据j的一阶导数g
i
,h
i
(j)表示数据j的二阶导数h
i

[0430]
进一步地,服务端发送均值给客户端。示例性地,服务端以列表的形式,发送均值给客户端。一种实现中,一阶导数g
i
和二阶导数h
i
可共同存在于同一个列表中;另一种实现中,一阶导数g
i
和二阶导数h
i
分别存在于不同列表中,例如,一阶导数g
i
存在于列表a,二阶导数h
i
存在于列表b。相应地,客户端接收服务端发送的均值。
[0431]
进一步地,客户端更新本地存储的均值。
[0432]
s3002、服务端与客户端开始进行横向xgb处理。
[0433]
可选地,服务端判断当前所处的树节点是否需要继续分裂。例如,服务端根据当前
所处的树节点所在的层次是否达到最大的树深度,来确树节点定是否需要继续分裂;若树节点不需要继续分裂,服务端将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,存储该w
j
的值,作为横向xgb的叶子节点权重值;若树节点需要继续分裂,服务端从所有特征的集合中随机产生当前节点可用的特征集合,将这个特征集合发送给各个客户端。
[0434]
进一步地,服务端从所有特征的集合中随机产生当前节点可用的特征集合,将这个特征集合发送给各个客户端。
[0435]
进一步地,客户端根据得到的特征集合,遍历特征集合中每个特征,根据本地数据,随机选择该特征所有取值中的一个,发送给服务端。
[0436]
进一步地,服务端收集各个客户端发送的特征取值信息,组成一个取值列表,从取值列表中随机选择一个作为当前特征的全局最优分裂阈值,将这个全局最优分裂阈值广播给各个客户端。
[0437]
进一步地,客户端根据接收到的全局最优分裂阈值,对当前特征进行节点分裂,得到il,通知服务端;如果客户端不存在对应的特征,则返回空的il。
[0438]
其中,il为左子树空间中的实例id集合,计算方式如下:客户端接收到服务端发送的特征k的全局最优分裂阈值value,本地数据中如果实例id1对应的特征k的取值小于全局最优分裂阈值value,则将id1加入到il集合中。用公式表示如下:
[0439]
s
il
={id|id
k
<value}
[0440]
其中,id
k
表示实例id特征k的取值,s
il
表示集合il。
[0441]
进一步地,服务端对当前特征,接收各个客户端发送的il,从各个il中过滤重复的实例id,处理存在矛盾的id信息。对于某些客户端,会将实例id加入il中;但某些客户端存在id,却没有加进去,此时会认为这个id应该存在于il中,从而确定最终的il和ir。如果某个客户端的数据中,不存在当前特征,则将这个客户端的数据实例id投放到ir中。然后,计算gl、gr和hl、hr,进而计算并得到当前特征的分裂值gain:
[0442][0443]
其中,gl为左子树空间中所有一阶导数g
i
的和;gr为右子树空间所有一阶导数g
i
的和;hl为左子树空间所有二阶导数h
i
的和;hr为右子树空间所有二阶导数h
i
的和。计算方式如下:
[0444][0445][0446]
其中,n1表示左子树空间中的实例个数,n2表示右子树空间中的实例个数。
[0447]
服务端协同客户端遍历处理随机选出来的特征集合中的每个特征,可以根据每个特征作为分裂节点所计算出来的分裂值,并将分裂值最大的特征,作为当前节点的最佳效果特征。同时,服务端也知道分裂节点对应的阈值信息,将分裂阈值、分裂值gain以及所选特征等信息作为横向xgb当前节点最优分裂的信息。
[0448]
进一步地,服务端进行横向方式的节点分裂后的清理操作,服务端通知各个客户
端不再进行横向方式的节点分裂操作,即完成横向方式的节点分裂操作。
[0449]
进一步地,服务端将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,存储该w
j
的值,作为横向xgb的叶子节点权重值。
[0450]
其中:g
m
表示节点m的所有实例对应的g
i
之和,h
m
表示节点m的所有实例对应的h
i
之和。
[0451]
进一步地,服务端通知各个客户端不再进行横向方式的节点分裂操作,即完成横向方式的节点分裂操作。
[0452]
进一步地,客户端进行完成横向节点分裂后的处理。
[0453]
s3003、服务端与客户端开始进行纵向xgb处理。
[0454]
可选地,服务端通知客户端,进行纵向xgb的处理。
[0455]
进一步地,服务端向各客户端请求获取g
kv
和h
kv
信息。
[0456]
进一步地,客户端根据共同数据标识的那部分数据,得到当前节点还未被处理的数据,随机得到特征集合,根据集合中每个特征k和对应特征的所有取值v,对每个样本桶映射,计算出左子树空间的g
kv
和h
kv
,同态加密后发送到服务端。可选地,可以将数据集中特征k的取值排序后,进行投桶操作,分为下面几个桶:{s
k,1
,s
k,2
,s
k,3
,

,s
k,v
‑1};则g
kv
和h
kv
的计算公式如下:
[0457][0458][0459]
其中,x
i,k
表示数据x
i
的特征k的值。
[0460]
进一步地,服务端对各客户端发送的[[g
kv
]]和[[h
kv
]]进行解密,并根据当前节点的共同数据标识那部分数据,以及前面得到的所有g
i
和h
i
,可以计算出当前节点的g和h。可选地,若部分客户端拥有相同的特征,服务端将会对接收到的g
kv
随机取一个作为当前特征的g
kv
,同理h
kv
也这样处理。进一步地,可以根据g、h和g
kv
、h
kv
,可以算出各个特征的最优分割点,并根据前述分裂点信息,确定全局最优分割点(k,v,gain)。
[0461]
本技术实施例中,可以将接收到的信息与预设的阈值进行比较,若gain小于或者等于阈值,则不进行纵向方式的节点分裂,可以执行步骤s3027;若gain大于阈值,则可以执行步骤s3023。
[0462]
进一步地,服务端根据(k,v,gain),向对应的客户端请求il。
[0463]
进一步地,客户端c接收到分割点信息(k,v,gain),查找得到分割点阈值value,记录该分割点(k,value)信息。本地数据集根据该分割点进行分割,得到il,发送(record,il,value)到服务端。其中,record表示该条记录在客户端的索引,il计算方式如前面提及那样。
[0464]
进一步地,服务端接受客户端c发送的(record,il,value)信息,对所在节点空间的所有共同id的实例进行分割,并通过(client id,record)关联当前节点和客户端c。本技术实施例中,服务端可以记录(client id,record_id,il,feature_name,feature_value),以作为纵向分裂的信息,并执行步骤s3027。
[0465]
进一步地,服务端将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,存储该w
j
,作为纵向的叶子节点权重值。
[0466]
进一步地,服务端通知各个客户端不再进行纵向方式的叶子节点分裂;或者说,完成节点分裂的操作。
[0467]
进一步地,各个客户端进行完成纵向节点分裂后的处理。
[0468]
s3004、服务端与客户端开始进行横向xgb和纵向xgb的混合处理。
[0469]
可选地,服务端判断当前节点是否需要进行分裂。本技术实施例中,若当前节点不需要进行分裂,服务端将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,发送信息[ij(m),w
j
]给所有客户端;若当前节点需要进行分裂,服务端根据横向xgb得到的gain和纵向xgb得到的gain,并根据gain确定目标gain,从而确定节点分裂方式进行节点分裂。
[0470]
进一步地,服务端根据横向xgb得到的gain和纵向xgb得到的gain,并根据gain确定目标gain,从而确定节点分裂方式进行节点分裂。本技术实施例中,若为如果横向xgb方式,服务端使用横向方式进行该节点分裂,即根据上面横向方式得到的(k,value)信息,对当前节点进行分裂操作,可以得到il信息,将il广播各个客户端;若为纵向xgb方式,客户端根据服务端记录的纵向分裂的(client_id,record_id,il,feature_name,feature_value),通知各个客户端进行真正的节点分裂操作。
[0471]
进一步地,客户端根据服务端记录的纵向分裂的(client_id,record_id,il,feature_name,feature_value),通知各个客户端进行真正的节点分裂操作。其中,client_id对应的客户端必须知道(client_id,record_id,il,feature_name,feature_value)所有信息,其他客户端仅需要知道il信息即可。
[0472]
服务端将当前分裂后的左子树节点作为当前的处理节点。
[0473]
进一步地,客户端接收服务端发送的il或者(client_id,record_id,il,feature_name,feature_value),进行纵向方式的节点分裂操作;如果存在(client_id,record_id,il,feature_name,feature_value)信息,在分裂时,客户端还需要记录和存储这些信息。本技术实施例中,在分裂完毕之后,将分裂后的左子树节点作为当前的处理节点。
[0474]
进一步地,服务端返回步骤s3002继续后续的处理,且客户端返回步骤s3002,等待服务端消息。需要说明的是,由于此时仅完成了当前节点的分裂,还需要进行下一层的左子树、右子树节点的分裂。因此,返回步骤s3002,进行下一个节点的节点分裂。
[0475]
进一步地,服务端使用横向方式进行该节点分裂,即根据上面横向方式得到的(k,value)信息,对当前节点进行分裂操作,可以得到il信息,将il广播各个客户端。其中,il可以通过以下公式进行表示:
[0476]
s
il
={id|id
k
<value}
[0477]
其中,id
k
表示实例id特征k的取值,s
il
表示集合il。
[0478]
进一步地,客户端接收服务端广播的il,根据il结合本地非共同id的数据,能够确定当前节点的il和ir,然后进行节点分裂操作。需要说明的是,il和ir的确定,就是本地非共同id数据的id,如果不在服务端发送的il集合中,说明在ir集合里面。
[0479]
进一步地,服务端使用横向方式进行节点分裂时,是根据所选特征k和阈值value进行的,将(k,value)广播到客户端。
[0480]
进一步地,各个客户端接收服务端的(k,value)信息,对共同id的数据进行节点分
裂,分裂方式是对于共同id数据的特征k。其中,如果值小于value,则将该条数据的id应该投放到il集合中,否则投放到ir集合中。如果数据不存在特征k,则投放到右子树空间中。
[0481]
进一步地,服务端返回步骤s3002继续进行下一个节点的分裂操作,且客户端返回步骤s3002,等待服务端消息。
[0482]
进一步地,服务端将所在节点作为叶子节点,计算出该叶子节点的权重值w
j
,发送信息[ij(m),w
j
]给所有客户端。其中,ij(m)为当前节点空间的实例id集合,w
j
为当前节点的权重。
[0483]
进一步地,客户端根据[ij(m),w
j
],计算出新的y`(t

1)(i),并回溯到当前树的其他非叶子节点,作为当前节点。其中,y`(t

1)(i)表示第i个实例所对应的label残差,t表示当前是第t棵树,t

1表示上一棵树。
[0484]
进一步地,服务端回溯到当前树的其他非叶子节点,作为当前节点。
[0485]
进一步地,如果回溯后的当前节点存在且不为空,返回步骤s3002进行下一步处理,且客户端返回步骤s3002,等待服务端消息。
[0486]
进一步地,如果当前节点为空,则进行模型的验证操作。
[0487]
s3005、服务端与验证客户端进行目标联邦学习模型的验证。
[0488]
可选地,服务端通知验证客户端进行验证初始化操作
[0489]
进一步地,验证客户端进行验证初始化。
[0490]
进一步地,服务端选择一个id开始进行验证。初始化xgb树,通知验证客户端开始进行验证。
[0491]
进一步地,验证客户端初始化验证信息。
[0492]
进一步地,服务端根据当前的xgb树,将分裂节点信息和验证的数据id发送给验证客户端。
[0493]
进一步地,验证客户端根据数据id,获取对应的数据,然后根据服务端发送的分裂节点信息,判断应该往左子树走还是右子树走,返回给服务端。
[0494]
进一步地,服务端根据验证客户端返回的走向,进入下一个节点。然后判断是否已经到达叶子节点,如果是,服务端记录叶子节点的权重,计算出预测值,进行存储;反之,服务端选择一个id开始进行验证。初始化xgb树,通知验证客户端开始进行验证。
[0495]
进一步地,服务端记录叶子节点的权重,计算出预测值,进行存储。如果当前预测的id是所有预测id最后一个,服务端将所有预测结果发送给客户端;反之,服务端选择一个id开始进行验证。初始化xgb树,通知验证客户端开始进行验证。
[0496]
进一步地,服务端将所有预测结果发送给客户端。
[0497]
进一步地,验证客户端接收所有预测结果,进行出最终的验证结果,与上一次的验证结果对比,判断是否需要保留并使用当前的模型,并通知服务端。
[0498]
进一步地,服务端根据验证客户端返回的验证结果,判断是否保留并使用当前的模型,并通知所有客户端。
[0499]
进一步地,各个客户端接收服务端的广播信息,进行处理。
[0500]
进一步地,服务端判断是否已经是达到最终的预测轮次,如果是,则执行步骤s3006。
[0501]
s3006、服务端与客户端分别结束训练,并保留目标联邦学习模型。
[0502]
可选地,服务端结束所有训练,清理信息,保留模型。
[0503]
进一步地,客户端结束所有训练,清理信息,保留模型。
[0504]
综上所述,根据本技术实施例的一种联邦学习模型的训练方法,可以通过将横向分裂方式和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,解决了现有联邦学习模型的训练过程中存在的无法充分利用所有数据进行学习以及由于数据利用不充分导致训练效果不佳的问题,同时,减少了联邦学习模型的损失,提升了联邦学习模型的性能。
[0505]
基于同一申请构思,本技术实施例还提供了一种联邦学习模型的训练方法对应的装置。
[0506]
图33为本技术实施例提供的联邦学习模型的训练装置的结构示意图。
[0507]
如图33所示,该联邦学习模型的训练装置1000,应用于服务端,包括:构成模块110、第一确定模块120、第二确定模块130、获取模块140和生成模块150。
[0508]
其中,构成模块110,用于获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成所述第二训练集合;
[0509]
第一确定模块120,用于基于所述第一训练集合,协同所述客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;其中,所述训练节点为多个提升树中一个提升树上的节点;
[0510]
第二确定模块130,用于基于所述第二训练集合,协同所述客户端进行纵向联邦学习,以得到所述训练节点对应的第二分裂值;
[0511]
获取模块140,用于根据所述第一分裂值和所述第二分裂值,确定所述训练节点对应的目标分裂方式,并通知客户端基于所述目标分裂方式进行节点分裂,并获取更新的所述训练节点;
[0512]
生成模块150,用于确定更新的所述训练节点满足停止训练条件,停止训练并生成目标联邦学习模型。
[0513]
根据本技术的一个实施例,如图34所示,图33中的获取模块140,包括:
[0514]
第一确定子模块141,用于确定所述第一分裂值与所述第二分裂值中较大的值为所述训练节点对应的目标分裂值;
[0515]
第二确定子模块142,用于根据所述目标分裂值,确定所述训练节点对应的分裂方式。
[0516]
根据本技术的一个实施例,如图35所示,图33中的第一确定模块120,包括:
[0517]
第一发送子模块121,用于从所述第一训练集合中产生所述训练节点可用的第一特征子集,并发送给所述客户端;
[0518]
第一接收子模块122,用于接收所述客户端发送的所述第一特征子集中每个特征的特征值;
[0519]
第三确定子模块123,用于根据所述第一特征子集中每个特征的特征值,分别确定所述每个特征作为分裂特征点对应的横向分裂值;
[0520]
第四确定子模块124,用于根据所述每个特征对应的所述横向分裂值,确定所述训练节点的所述第一分裂值。
[0521]
根据本技术的一个实施例,如图36所示,图35中的第三确定子模块123,包括:
[0522]
第一确定单元1231,用于针对所述第一特征子集中任一特征,根据所述任一特征的特征值,确定所述任一特征的分裂阈值;
[0523]
第一获取单元1232,用于根据所述分裂阈值,获取所述任一特征对应的第一数据实例标识集合和第二数据实例标识集合,其中,所述第一数据实例标识集合包括属于第一左子树空间的数据实例标识,所述第二数据实例标识集合包括属于第一右子树空间的数据实例标识;
[0524]
第二确定单元1233,用于根据所述第一数据实例标识集合和所述第二数据实例标识集合,确定所述任一特征对应的所述横向分裂值。
[0525]
根据本技术的一个实施例,如图37所示,图36中所示的第一获取单元1232,包括:
[0526]
发送子单元12321,用于向所述客户端发送所述分裂阈值;
[0527]
接收子单元12322,用于接收所述客户端发送所述训练节点对应的初始数据实例标识集合,其中,所述初始数据实例标识集合为所述客户端根据所述分裂阈值对所述任一特征进行节点分裂时生成的,所述初始数据实例标识集合包括属于所述第一左子树空间的数据实例标识;
[0528]
获取子单元12323,用于基于所述初始数据实例标识集合和所有数据实例标识,获得所述第一数据实例标识集合和所述第二数据实例标识集合。
[0529]
根据本技术的一个实施例,获取子单元12323,还用于:将所述初始数据实例标识集合中的每个数据实例标识,与所述客户端的数据实例标识进行对比,获取存在异常的数据实例标识;对所述异常的数据实例标识进行预处理,获取所述第一数据实例标识集合;基于所有数据实例标识和所述第一数据实例标识集合,获取所述第二数据实例标识集合。
[0530]
根据本技术的一个实施例,如图38所示,图33中的第二确定模块130,包括:
[0531]
通知子模块131,用于通知所述客户端基于所述第二训练集合进行纵向联邦学习;
[0532]
第二接收子模块132,用于接收所述客户端发送的每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,所述第三数据实例标识集合包括属于第二左子树空间的数据实例标识,所述第二左子树空间为按照所述特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的所述第二左子树空间;
[0533]
第五确定子模块133,用于根据每个特征的所述第一梯度信息和所述训练节点的总梯度信息,分别确定每个特征的纵向分裂值;
[0534]
第六确定子模块134,用于根据每个特征对应的纵向分裂值,确定所述训练节点的所述第二分裂值。
[0535]
根据本技术的一个实施例,如图39所示,图38中的第五确定子模块133,包括:
[0536]
第二获取单元1331,用于针对任一特征,根据所述总梯度信息和每个第一梯度信息,分别获取与每个第一梯度信息相对应的第二梯度信息;
[0537]
第三获取单元1332,用于针对每个第一梯度信息,根据所述第一梯度信息和所述第一梯度信息相对应的第二梯度信息,获取所述任一特征的候选纵向分裂值;
[0538]
选取单元1333,用于选取所述候选纵向分裂值中的最大值,作为所述任一特征的纵向分裂值。
[0539]
根据本技术的一个实施例,如图40所示,图33中的生成模块150,还包括:
[0540]
验证子模块151,用于获取验证集合,协同验证客户端对所述目标联邦学习模型进行验证,所述验证客户端为参与联邦学习模型训练的客户端中一个。
[0541]
根据本技术的一个实施例,如图41所示,图40中的验证子模块151,包括:
[0542]
发送单元1511,用于向所述验证客户端发送所述验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,所述验证节点为多个提升树其中一个提升树上的节点;
[0543]
接收单元1512,用于接收所述验证客户端发送的所述验证节点对应的节点走向,其中,所述节点走向为所述验证客户端根据所述数据实例标识和分裂信息确定的;
[0544]
第三确定单元1513,用于根据所述节点走向进入下一个节点,以所述下一个节点作为更新的所述验证节点;
[0545]
验证单元1514,用于若所述更新的所述验证节点满足所述预设节点分裂条件,返回执行向所述验证客户端发送所述数据实例标识和所述分裂信息,直至所述验证集合中的数据实例标识均被验证。
[0546]
由此,本技术提出的联邦学习模型的训练装置,服务端通过获取各个客户端的所有数据实例,将各个客户端的所有数据实例确定为第一训练集合,以及选取所有数据实例中包括相同特征的数据实例,构成第二训练集合,并基于第一训练集合,协同客户端进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合,协同客户端进行纵向联邦学习,以得到训练节点对应的第二分裂值,并根据第一分裂值和第二分裂值,确定训练节点对应的目标分裂方式,并通知客户端基于目标分裂方式进行节点分裂,并获取更新的训练节点,进而确定更新的训练节点满足停止训练条件,停止训练并生成目标联邦学习模型,使得通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
[0547]
基于同一申请构思,本技术实施例还提供了另一种联邦学习模型的模型评估方法对应的装置。
[0548]
图42为本技术实施例提供的联邦学习模型的训练装置的结构示意图。如图42所示,该联邦学习模型的模型评估装置2000,应用于验证客户端,包括:第一发送模块210、第一确定模块220、第二确定模块230、第二发送模块240、第三确定模块250和分裂模块260。
[0549]
其中,第一发送模块210,用于向服务端发送数据实例,以使所述服务端确定第一训练集合和第二训练集合,其中,所述第一训练集合包括各个客户端的所有数据实例,所述第二训练集合包括具有相同特征的数据实例;
[0550]
第一确定模块220,用于基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值;
[0551]
第二确定模块230,用于基于第二训练集合进行纵向联邦学习,以得到所述训练节点对应的第二分裂值;
[0552]
第二发送模块240,用于将所述第一分裂值和所述第二分裂值发送给所述服务端;
[0553]
第三确定模块250,用于接收所述服务端根据所述第一分裂值和所述第二分裂值确定出的所述训练节点的目标分裂方式;
[0554]
分裂模块260,用于基于所述目标分裂方式对所述训练节点进行节点分裂。
[0555]
根据本技术的一个实施例,如图43所示,图42中的第一确定模块220,还包括:
[0556]
第一接收子模块221,用于接收所述服务端从所述第一训练集合中产生的所述训练节点可用的第一特征子集;
[0557]
第一发送子模块222,用于向所述服务端发送所述第一特征子集中每个特征的特征值;
[0558]
第二接收子模块223,用于接收所述服务端发送的所述每个特征的分裂阈值;
[0559]
第一获取子模块224,用于基于所述每个特征的分裂阈值,获取所述训练节点对应的初始数据实例标识集合,并将所述初始数据实例标识集合发送给所述服务端;
[0560]
其中,所述初始数据实例标识集合用于指示服务器生成第一数据实例标识集合和第二数据实例标识集合,所述第一数据实例标识集合和所述初始数据实例标识集合均包括属于第一左子树空间的数据实例标识,所述第二数据实例标识集合包括属于第一右子树空间的数据实例标识。
[0561]
根据本技术的一个实施例,如图44所示,图43中的第一获取子模块224,还包括:
[0562]
生成单元2241,用于针对任一特征,将所述任一特征的分裂阈值分别与所述任一特征的特征值进行比较,获取所述特征值小于所述分裂阈值的数据实例标识,生成所述初始数据实例标识集合。
[0563]
根据本技术的一个实施例,如图45所示,图42中的第二确定模块230,还包括:
[0564]
第三接收子模块231,用于接收所述服务端发送的梯度信息请求;
[0565]
产生子模块232,用于根据所述梯度信息请求,从第二训练集合中产生第二特征子集;
[0566]
第二获取子模块233,用于获取所述第二特征子集中每个特征的至少一个第三数据实例标识集合的第一梯度信息,其中,所述第三数据实例标识集合包括属于第二左子树空间的数据实例标识,所述第二左子树空间为按照所述特征的其中一个特征值分裂形成的左子树空间,不同的特征值对应不同的所述第二左子树空间;
[0567]
第二发送子模块234,用于将所述第三数据实例标识集合的第一梯度信息发送给所述服务端。
[0568]
根据本技术的一个实施例,如图46所示,图45中的第二获取子模块233,包括:
[0569]
分桶单元2331,用于针对任一特征,获取所述任一特征的所有特征值,基于所述特征值对对所述任一特征进行分桶;
[0570]
第一获取单元2332,用于获取所述任一特征每个分桶的所述第三数据实例标识集合的第一梯度信息。
[0571]
根据本技术的一个实施例,如图47所示,图42中的分裂模块260,还包括:
[0572]
第四接收子模块261,用于接收所述服务端发送的分裂信息,其中,所述分裂信息包括所述目标分裂方式、选为特征分裂点的目标分裂特征和所述目标分裂值;
[0573]
分裂子模块262,用于基于所述分裂信息,对所述训练节点进行节点分裂。
[0574]
根据本技术的一个实施例,如图47所示,图42中的分裂模块260,还包括:
[0575]
验证子模块263,用于接收所述服务器发送的验证集合,基于所述验证集合,对所述目标联邦学习模型进行验证。
[0576]
根据本技术的一个实施例,如图48所示,图47中的验证子模块263,包括:
[0577]
接收单元2631,用于接收所述服务端发送所述验证集合中的一个数据实例标识,以及验证节点的分裂信息,其中,所述验证节点为多个提升树其中一个提升树上的节点;
[0578]
确定单元2632,用于根据所述数据实例标识和所述分裂信息,确定所述验证节点的节点走向;
[0579]
发送单元2633,用于向所述服务端发送的所述节点走向,以使所述服务端根据所述节点走向进入下一个节点,以所述下一个节点作为更新的所述验证节点。
[0580]
由此,本技术提出的联邦学习模型的训练装置,客户端可以通过向服务端发送数据实例,以使服务端确定第一训练集合和第二训练集合,并基于第一训练集合进行横向联邦学习,以得到满足预设分裂条件的训练节点对应的第一分裂值,基于第二训练集合进行纵向联邦学习,以得到训练节点对应的第二分裂值,然后将第一分裂值和第二分裂值发送给服务端,接收服务端根据第一分裂值和第二分裂值确定出的训练节点的目标分裂方式,进而基于目标分裂方式对训练节点进行节点分裂,使得可以通过将横向和纵向分裂方式进行混合,自动地选择匹配的学习方式的倾向性,无须关心数据分布方式,避免了数据丢弃造成的浪费,提升了联邦学习模型的性能,提高了数据利用率。
[0581]
基于同一申请构思,本技术实施例还提供了一种电子设备。
[0582]
图49为本技术实施例提供的电子设备的结构示意图。如图49所示,该电子设备3000,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序,处理器执行程序时,实现前述的联邦学习模型的训练方法。
[0583]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0584]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0585]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0586]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0587]
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的
单词“一”或“一个”不排除存在多个这样的部件。本技术可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0588]
尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
[0589]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献