编译方法、装置、设备及存储介质与流程

文档序号:30058787发布日期:2022-05-17 20:16阅读:79来源:国知局
编译方法、装置、设备及存储介质与流程

1.本发明涉及代码编译技术领域,尤其涉及一种编译方法、装置、设备及存储介质。


背景技术:

2.作为一种新型的机器学习框架,联邦学习(federated learning)通过数据加密运算,保障数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。其中,对于联邦学习中的纵向联邦学习,数据应用方发起纵向联邦学习的模型训练,与数据提供方共同训练纵向联邦学习的模型。其中,数据应用方和数据提供方拥有相同的用户,数据应用方和数据提供方拥有的用户特征不同,把数据集按照纵向(即特征维度)切分,将用户相同而用户特征不完全相同的那部分数据在加密的状态下加以聚合,以增强模型能力。
3.然而,如果进行模型训练的相同用户的不同特征之间的特征相关性较强,用这些不同特征训练模型时,导致模型效果差。因此,在纵向联邦学习时,需要计算相同用户分别在数据应用方和数据提供方中的两个特征之间的特征相关性,过滤掉相关性较强的特征。
4.目前,在纵向联邦特征相关性算法开发过程中,由于两个特征来自数据应用方和数据提供方,因此,针对数据应用方和数据提供方,需要分别开发不同的代码,导致代码复杂,较难开发和维护。


技术实现要素:

5.本发明的主要目的在于提供一种编译方法、装置、设备及存储介质,旨在纵向联邦学习的特征相关性计算中,降低不同客户终端的代码复杂度。
6.为实现上述目的,本发明提供一种编译方法,包括:
7.客户终端获取编译的目标代码,所述目标代码包括多个不同类型的客户终端的子目标代码,每个类型的客户终端的子目标代码用于在纵向联邦学习中参与获取不同类型的客户终端间的模型训练数据的特征相关系数;
8.所述客户终端从所述目标代码中,确定属于所述客户终端的子目标代码;
9.所述客户终端执行属于所述客户终端的所述子目标代码,以获得所述客户终端与其它客户终端间的模型训练特征数据的特征相关系数,所述特征相关系数用于纵向联邦学习。
10.可选的,所述多个不同类型客户终端包括:用于纵向联邦学习的数据应用方,以及用于纵向联邦学习的数据提供方。
11.可选的,所述客户终端从所述目标代码中,确定属于所述客户终端的子目标代码,包括:
12.所述客户终端确定所述客户终端是否为用于纵向联邦学习的数据应用方或者是否为用于纵向联邦学习的数据提供方;
13.若所述客户终端为用于纵向联邦学习的数据应用方,则所述客户终端从所述目标
代码中,确定属于数据应用方的子目标代码;
14.若所述客户终端为用于纵向联邦学习的数据提供方,则所述客户终端从所述目标代码中,确定属于数据提供方的子目标代码。
15.可选的,所述目标代码中包括用于纵向联邦学习的数据应用方的标识以及用于纵向联邦学习的数据提供方的标识;
16.所述客户终端确定所述客户终端是否为用于纵向联邦学习的数据应用方或者是否为用于纵向联邦学习的数据提供方,包括:
17.所述客户终端确定所述客户终端的标识是否是用于纵向联邦学习的数据应用方的标识或者是否是用于纵向联邦学习的数据提供方的标识;
18.若所述客户终端的标识是所述目标代码中用于纵向联邦学习的数据应用方的标识,则确定所述客户终端为用于纵向联邦学习的数据应用方;
19.若所述客户终端的标识是所述目标代码中用于纵向联邦学习的数据提供方的标识,则确定所述客户终端为用于纵向联邦学习的数据提供方。
20.可选的,所述客户终端执行属于所述客户终端的所述子目标代码,包括:
21.若所述客户终端为用于纵向联邦学习的数据应用方,则所述客户终端根据所述子目标代码,获取本地加密的模型训练特征数据,将所述加密的模型训练特征数据发送给用于纵向联邦学习的数据提供方,并接收来自所述数据提供方的根据所述加密的模型训练特征数据得到的特征相关系数。
22.可选的,所述客户终端执行属于所述客户终端的所述子目标代码,包括:
23.若所述客户终端为用于纵向联邦学习的数据提供方,则所述客户终端根据所述子目标代码,接收来自纵向联邦学习的数据提供方的加密的模型训练特征数据,根据所述加密的模型训练特征数据和本地的模型训练特征数据得到特征相关系数,并发送给用于联邦学习的数据应用方。
24.可选的,所述客户终端获取目标编译文件,包括:
25.所述客户终端获取基于python编程语言的源代码,所述源代码包括多个不同类型客户终端分别用于参与获取特征相关系数的子源代码;
26.所述客户终端将所述源代码编译为所述目标代码。
27.本发明还提供一种编译装置,包括:
28.获取模块,用于客户终端获取编译的目标代码,所述目标代码包括多个不同类型的客户终端的子目标代码,每个类型的客户终端的子目标代码用于在纵向联邦学习中参与获取不同类型的客户终端间的模型训练数据的特征相关系数;
29.运行模块,用于所述客户终端从所述目标代码中,确定属于所述客户终端的子目标代码;还用于所述客户终端执行属于所述客户终端的所述子目标代码,以获得所述客户终端与其它客户终端间的模型训练特征数据的特征相关系数,所述特征相关系数用于纵向联邦学习。
30.本发明还提供一种编译设备,所述编译设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的模型训练程序,所述模型训练程序被所述处理器执行时实现如前述任一项所述的编译方法的步骤。
31.本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有模型
训练程序,所述模型训练程序被处理器执行时实现如前述任一项所述的编译方法的步骤。
32.本发明中,编译后的目标代码包括多个不同类型的客户终端的子目标代码,这样,不同的客户终端均可以运行该编译后的目标代码,从该编译后的目标代码中确定做自己的子目标代码,从而执行属于自己的子目标代码,获得客户终端与其它客户终端间的模型训练特征数据的特征相关系数,以进行纵向联邦学习的模型训练。不需要为每个类型的客户终端均开发对应的代码,降低了纵向联邦学习中特征相关性代码的开发复杂度,便于代码管理和维护。
附图说明
33.图1a为本发明一实施例提供的纵向联邦学习的应用场景示意图;
34.图1b为本发明一实施例提供的纵向联邦学习的模型训练过程示意图;
35.图2为本发明一实施例提供的编译方法的流程示意图;
36.图3为本发明另一实施例提供的编译方法的流程示意图
37.图4为本发明一实施例提供的数据应用方的计算图;
38.图5为本发明另一实施例提供的数据应用方的计算图;
39.图6为本发明一实施例提供的数据提供方的计算图;
40.图7为本发明一实施例提供的编译装置的结构示意图;
41.图8为本发明实施例提供的一种编译设备的结构示意图。
42.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
43.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
44.对于联邦学习,将每个参与共同建模的企业称为参与方,根据多参与方之间数据分布的不同,把联邦学习分为三类:横向联邦学习、纵向联邦学习和联邦迁移学习。
45.其中,对于纵向联邦学习,其本质是特征的联合,适用于用户重叠多,特征重叠少的场景。在进行纵向联邦学习训练时,把用于训练的数据集按照纵向(即特征维度)切分,并取出双方用户相同而特征不完全相同的那部分数据进行训练。
46.例如,对于同一地区的2个不同的机构,一家为银行,另一家为电商,2个不同的机构的用户群体为当地的居民,因此用户的交集较大。但是,但业务不同(特征不同),即银行记录的是用户的收支行为与信用评级,电商保有用户的浏览与购买历史,因此它们的用户特征交集较小。
47.图1a为本发明一实施例提供的纵向联邦学习的应用场景示意图。如图1a所示,以电商和银行共同训练纵向联邦学习模型为例进行说明。
48.在图1a所示的场景中,电商和银行的业务系统分别拥有各自用户的相关数据。此外,银行还拥有模型需要预测的标签数据。出于数据隐私和安全考虑,电商和银行无法直接进行数据交换。此时,通过纵向联邦学习系统建立模型。
49.如图1a所示,纵向联邦学习模型建立需要两步:
50.第一步:加密样本对齐。
51.具体的,电商和银行在各自的系统内部进行对用于训练纵向联邦学习模型的模型训练特征数据(即样本)进行对齐,例如,数据格式转换为目标格式,因此在企业感知层面不会暴露非交叉用户。
52.第二步:对齐样本进行模型加密训练:
53.如图1b所示,为了保证训练过程中数据的保密性,需要借助第三方协作者c进行加密训练。
54.s101:由第三方c向电商和银行发送公钥,用来加密需要传输的模型训练特征数据;
55.s102:电商和银行分别计算和自己相关的特征中间结果,并加密交互,用来求得各自梯度和损失;
56.在利用电商中用来训练纵向联邦学习模型的模型训练特征数据与银行中用来训练纵向联邦学习模型的模型训练特征数据进行纵向联邦学习模型训练时,电商中用来训练纵向联邦学习模型的一些模型训练特征数据与银行中用来训练纵向联邦学习模型的一些模型训练特征数据之间会具有一定的特征相关性。例如,用户在电商购买商品时,银行卡会有支出,因此,银行记录的用户的收支行为与电商保有用户的购买历史之间具有一定的相关性。
57.这样,如果在纵向联邦学习模型训练中,如果银行将自己记录的用户的收支行为作为模型训练特征数据,电商将自己保有的用户的购买历史作为模型训练特征数据,导致共同训练的纵向联邦学习模型效果差,甚至模型训练过程无法收敛。并且,使用具有相关性较强的两个模型训练特征数据训练模型,增加模型训练过程的编译量,影响训练效率。因此,在共同训练的纵向联邦学习模型时,对于银行记录的用户的收支行为以及电商保有的用户的购买历史中,可以使用银行记录的用户的收支行为作为模型训练特征数据,或者电商保有的用户的购买历史作为模型训练特征数据。
58.因此,在进行纵向联邦学习模型训练时,在s102之前,需要计算电商的模型训练特征数据和银行的模型训练特征数据之间的特征相关系数,根据特征相关系数过滤相关性较强的两个模型训练特征数据中的一个模型训练特征数据。
59.这样,在s102中,电商计算自己的特征中间结果使用的模型训练特征数据中不存在与银行计算自己的特征中间结果使用的模型训练特征数据相关性较强模型训练特征数据。
60.s103:电商和银行分别计算各自加密后的梯度并添加掩码发送给c,同时银行计算加密后的损失发送给c;
61.s104:c解密梯度和损失后回传给电商和银行,电商、银行去除掩码并更新模型。
62.迭代上述步骤直至损失函数收敛,这样就完成了整个训练过程。在样本对齐及模型训练过程中,电商和银行各自的数据均保留在本地,且训练中的数据交互也不会导致数据隐私泄露。因此,双方在纵向联邦学习的帮助下得以实现合作训练模型。
63.在联邦学习中的纵向联邦学习中,将用户纵向联邦学习的模型训练数据分为两类,一类来自数据应用方,一类来自数据提供方。其中,通过数据应用方发起纵向联邦学习
的模型训练,与数据提供方共同训练纵向联邦学习的模型。
64.例如,银行作为数据应用方,电商作为数据提供方,因此,银行和电商分别为两个参与方,在计算银行的模型训练特征数据与电商的模型训练特征数据之间的特征相关系数时,执行的计算任务中包括数据应用方和数据提供方执行共同执行的计算任务,以及数据应用方和数据提供方分别执行的计算任务,这样,需要分别为数据应用方和数据提供方编写对应的代码。因此,目前,针对数据应用方和数据提供方,需要分别开发不同的代码以实现各自的计算任务,导致代码复杂,较难开发和维护。
65.为解决现有技术中存在的技术问题,本发明提出一种编译方法,在计算不同类型的客户终端间的模型训练数据的特征相关系数时,开发一套代码,在该套代码中包含对应多个不同类型的客户终端的代码。这样,一套代码可应用于不同的客户终端上以使客户终端在模型训练数据的特征相关系数的计算中执行一套代码中自身所需执行的子代码。从而不需要为每一类型的客户终端开发代码,降低代码的复杂度,便于代码管理和维护。
66.下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
67.图2为本发明一实施例提供的编译方法的流程示意图。本实施例中方法的执行主体可以为电子设备,电子设备例如图1a中所示的银行对应的客户终端,以及电商对应的客户终端。本实施例中的方法可以通过软件、硬件或者软硬件结合的方式来实现。如图2所示,所述方法可以包括:
68.s201、客户终端获取编译的目标代码。
69.其中,目标代码包括多个不同类型的客户终端的子目标代码,每个类型的客户终端的子目标代码用于在纵向联邦学习中参与获取不同类型的客户终端间的模型训练数据的特征相关系数。
70.本步骤中,可选的,编译的目标代码为预先根据基于python编程语言的源代码在其他客户终端或服务器上编译获得的。其中,源代码包括多个不同类型客户终端分别用于参与获取特征相关系数的子源代码。
71.可选的,s201的另一种可能的实现方式为:
72.s2011、客户终端获取基于python编程语言的源代码。
73.其中,源代码包括多个不同类型客户终端分别用于参与获取特征相关系数的子源代码。
74.具体的,开发人员根据不同类型的客户终端间模型训练特征数据的特征相关系数的计算算法,基于python编程语言编写源代码。其中,源代码中包括多个不同类型客户终端分别用于参与获取特征相关系数的子源代码。
75.可选的,在纵向联邦学习模型训练中,多个不同类型客户终端包括:数据应用方和数据提供方。则源代码中包括可分别在数据应用方的客户终端和数据提供方的客户终端上进行编译运行的子源代码。
76.需要说明的是,开发人员例如可以直接在数据提供方的客户终端上编写源代码,或者在其他客户终端(例如,数据发起方)、服务器上编写源代码,然后,将源代码发送到参与纵向联邦学习模型训练的参与方的客户终端上。
77.s2012、客户终端将源代码编译为目标代码。
78.具体的,客户终端获取到源代码后,对源代码进行编译,获得编译后的目标代码。
79.因此,目标代码中包括多个不同类型的客户终端的子目标代码,每个类型的客户终端的子目标代码用于在纵向联邦学习中参与获取不同类型的客户终端间的模型训练数据的特征相关系数。
80.用户将编译好的目标代码传递给客户终端,以使客户终端获取编译的目标代码。例如,用户将编译好的目标代码拷贝到客户终端,或者,用户将编译好的目标代码上传到云服务器,参与纵向联邦学习模型训练的参与方的客户终端从服务器上获得编译好的目标代码等获取方式,本实施例不做限制。
81.s202、客户终端从目标代码中,确定属于客户终端的子目标代码。
82.本步骤中,在获得不同类型的客户终端间的模型训练特征数据的特征相关系数前,会预先设置每个客户终端的标识,以及与该客户终端进行模型训练特征数据交互的其他客户终端的标识,并将客户终端的标识保存在客户终端的配置文件中。其中,客户终端的标识例如与客户终端在计算特征相关系数中执行的计算任务有关。
83.因此,在客户终端运行目标代码时,可通过配置文件可以获得客户终端的标识。
84.客户终端在运行目标代码时,客户终端例如获取配置文件中客户终端的标识,并且在根据代码的执行顺序依次运行代码,运行到每个子目标代码时,将配置文件中客户终端的标识与该子目标代码的标识进行匹配,判断该子目标代码的标识是否是与该客户终端的配置文件中记录的客户终端的标识匹配。如果配置文件中客户终端的标识与该子目标代码的标识匹配,将该子目标代码确定为属于客户终端的子目标代码。
85.s203、客户终端执行属于客户终端的子目标代码,以获得客户终端与其它客户终端间的模型训练特征数据的特征相关系数。
86.其中,特征相关系数用于纵向联邦学习。
87.本步骤中,客户终端执行目标代码中属于该客户终端的子目标代码,以获得客户终端与其它客户终端间的模型训练特征数据的特征相关系数。从而根据特征相关系数,获得用于纵向联邦学习模型训练的模型训练特征数据。
88.本实施例提供的编译方法,编译后的目标代码包括多个不同类型的客户终端的子目标代码,这样,不同的客户终端均可以运行该编译后的目标代码,从该编译后的目标代码中确定做自己的子目标代码,从而执行属于自己的子目标代码,获得客户终端与其它客户终端间的模型训练特征数据的特征相关系数,以进行纵向联邦学习的模型训练。不需要为每个类型的客户终端均开发对应的代码,降低了纵向联邦学习中特征相关性代码的开发复杂度,便于代码管理和维护。
89.图3为本发明另一实施例提供的编译方法的流程图。如图3所示,在图2所示实施例的基础上,本实施例的方法包括:
90.s301、客户终端获取编译的目标代码。
91.本步骤中,s301的具体实现方式可参考s201,此处不再赘述。
92.s302、客户终端确定客户终端是否为用于纵向联邦学习的数据应用方或者是否为用于纵向联邦学习的数据提供方,若客户终端为用于纵向联邦学习的数据应用方,则执行s303;若客户终端为用于纵向联邦学习的数据提供方,则执行s304。
93.本步骤中,目标代码中包括用于纵向联邦学习的数据应用方的标识以及用于纵向
联邦学习的数据提供方的标识;
94.相应的,s302的一种可能的事项方式为:
95.s3021、客户终端确定客户终端的标识是否是用于纵向联邦学习的数据应用方的标识或者是否是用于纵向联邦学习的数据提供方的标识。
96.具体的,在编写源代码时,在计算特征相关系数时,对于数据应用方和数据提供方执行共同执行的计算任务,编写为一个子源代码,对于数据应用方和数据提供方分别执行的计算任务,分别编写对应的子源代码。
97.并且,计算特征相关系数时,不同类型的客户终端的标识不同,因此,在编写每个子源代码时,会在子源代码的首行代码中包含执行该子源代码的客户终端的标识。通过子源代码的首行代码中包含的执行该子源代码的客户终端的标识用于指示该客户终端是数据应用方的客户终端还是数据提供方的客户终端。
98.其中,每个子源代码的首行代码在编译后生成一条判断语句,客户终端在执行到该子源代码对应的子目标代码时,首先执行判断语句,确定执行该子目标代码的客户终端的标识,从而通过该子目标代码的客户终端的标识确定该客户终端是数据应用方的客户终端还是数据提供方的客户终端。
99.可选的,每个子源代码中还可以嵌套多个子源代码。
100.可选的,在编写计算特征相关性系数的源代码时,由于部分计算任务需要多次执行,如果每次在需要执行这些计算任务时,均编写一次对应的语句,工作量大,且会导致代码冗余,编译速度慢。因此,开发人员可以预先对子源代码中需要多次执行的方法进行封装,或者对子源代码中的方法进行封装。这样,在编写基于python编程语言的源代码时,可以使用封装后的语句,将复杂的语句用简单的语句表示,从而降低了源代码的工作量,提高源代码的可读性和编译速度。
101.s3022、若客户终端的标识是目标代码中用于纵向联邦学习的数据应用方的标识,则确定客户终端为用于纵向联邦学习的数据应用方。
102.具体的,确定子目标代码中的客户终端的标识为用于纵向联邦学习的数据应用方的标识后,获取客户终端的配置文件中记录的客户终端的标识,若子目标代码中的客户终端的标识与配置文件中记录的客户终端的标识一致,确定客户终端为用于纵向联邦学习的数据应用方。
103.s3023、若客户终端的标识是目标代码中用于纵向联邦学习的数据提供方的标识,则确定客户终端为用于纵向联邦学习的数据提供方。
104.具体的,确定子目标代码中的客户终端的标识为用于纵向联邦学习的数据提供方的标识后,获取客户终端的配置文件中记录的客户终端的标识,若子目标代码中的客户终端的标识与配置文件中记录的客户终端的标识一致,确定客户终端为用于纵向联邦学习的数据提供方。
105.s303、客户终端从目标代码中,确定属于数据应用方的子目标代码。
106.本步骤中,客户终端在执行到子目标代码时,通过子目标代码中的客户终端的标识确定了自身为数据应用方的客户终端,从而也就确定了该目标代码是属于数据应用方的子目标代码。
107.s304、客户终端根据子目标代码,获取本地加密的模型训练特征数据,将加密的模
型训练特征数据发送给用于纵向联邦学习的数据提供方,并接收来自数据提供方的根据加密的模型训练特征数据得到的特征相关系数。
108.本步骤中,客户终端为数据应用方的客户终端且确定子目标代码为数据应用方的子目标代码时,根据计算任务依次执行自己的子目标代码。
109.其中,对于数据应用方,在计算特征相关系数时,首先获取本地加密后的模型训练特征数据,并将加密的模型训练特征数据发送给用于纵向联邦学习的数据提供方,将该计算任务作为一个子源代码。客户终端在执行该子源代码对应的子目标代码时,调用python解析库解析获得如图4所示的计算图。
110.如图4所示,客户终端在执行子目标代码时,从顶点开始依次执行。首先,执行判断语句,根据判断语句确定执行该子目标代码的客户终端为数据应用方的客户终端。然后,则逐级向下调用:执行加密语句,将本地的模型训练特征数据进行加密。之后通过赋值语句将本地加密后的模型训练特征数据赋值给x_std,然后调用发送语句将x_std发送给数据提供方。
111.然后,数据应用方接收自数据提供方的根据加密的模型训练特征数据得到的特征相关系数,将该计算任务作为一个子源代码。客户终端在执行该子源代码对应的子目标代码时,调用python解析库解析获得如图5所示的计算图。
112.如图5所示,客户终端在执行该子目标代码时,首先,执行判断语句,根据判断语句确定执行该子目标代码的客户终端为数据应用方的客户终端。然后,逐级向下调用:调用接收语句获取来自数据提供方的加密后的特征相关性系数,接着执行解密语句,对加密后的特征相关性系数进行解密,获得特征相关性系数,并通过赋值语句赋值给corr_result。最后执行输出语句,输出特征相关性系数。
113.s305、客户终端从目标代码中,确定属于数据提供方的子目标代码。
114.本步骤中,客户终端在执行到子目标代码时,通过子目标代码中的客户终端的标识确定了自身为数据提供方的客户终端,从而也就确定了该目标代码是属于数据提供方的子目标代码。
115.s306、客户终端根据子目标代码,接收来自纵向联邦学习的数据提供方的加密的模型训练特征数据,根据加密的模型训练特征数据和本地的模型训练特征数据得到特征相关系数,并发送给用于联邦学习的数据应用方。
116.本步骤中,客户终端为数据应用方的客户终端且确定子目标代码为数据提供方的子目标代码时,根据计算任务依次执行自己的子目标代码。
117.其中,对于数据提供方,在计算特征相关系数时,用于接收来自纵向联邦学习的数据提供方的加密的模型训练特征数据,根据加密的模型训练特征数据和本地的模型训练特征数据得到特征相关系数,并发送给用于联邦学习的数据应用方,将该计算任务作为一个子源代码。在客户终端执行该子源代码对应的子目标代码时,调用python解析库解析获得如图6所示的计算图。
118.如图6所示,客户终端在执行该子目标代码时,首先,执行判断语句,根据判断语句确定执行该子目标代码的客户终端为数据提供方的客户终端。然后,逐级向下调用:执行接收语句接收加密的模型训练特征数据,之后调用计算语句得到加密的模型训练特征数据,并通过赋值语句赋值给corr_res,最后调用发送语句将加密的特征相关性系数发送给数据
应用方。
119.需要说明的是,上述中的判断语句、加密语句、解密语句、赋值语句、发送语句、接收语句以及计算语句等都是之前的封装的方法,在编写源代码时,直接通过上述语句分别调用对应的方法。
120.可选的,在执行s304,或者执行s306之前,需要对数据应用方和数据提供方的模型训练特征数据进行标准化。
121.其中,以数据应用方对本地模型训练特征数据进行标准化为例进行说明。
122.将对本地模型训练特征数据进行标准化的计算任务作为一个子源代码,由于对本地模型训练特征数据进行标准化的方法进行封装。因此,在该子源代码中,通过标准化语句调用封装后的方法即可。
123.其中,标准化处理的方法例如为:数据应用方中计算特征相关系数的特征中的每一个用户的特征值减去该特征下所有用户的特征值的平均值后,再除以该特征对应的标准差,获得模型训练特征数据。标准化公式例如为:
[0124][0125]
其中,x_d表示标准化后的模型训练特征数据,xi表示每一个用户的特征值,表示所有用户的特征值的平均值,σ
x
表示标准差。
[0126]
本实施例提供的编译方法,编译后的目标代码包括多个不同类型的客户终端的子目标代码,这样,不同的客户终端均可以运行该编译后的目标代码。客户终端在运行目标代码时,根据客户终端的标识以及第目标代码的标识,从该编译后的目标代码中确定做自己的子目标代码,从而执行属于自己的子目标代码,获得客户终端与其它客户终端间的模型训练特征数据的特征相关系数,以进行纵向联邦学习的模型训练。不需要为每个类型的客户终端均开发对应的代码,降低了纵向联邦学习中特征相关性代码的开发复杂度,便于代码管理和维护。
[0127]
图7为本发明一实施例提供的编译装置的结构示意图。如图7所示,编译装置可以包括:获取模块71和运行模块72。其中,
[0128]
获取模块71,用于客户终端获取编译的目标代码,目标代码包括多个不同类型的客户终端的子目标代码,每个类型的客户终端的子目标代码用于在纵向联邦学习中参与获取不同类型的客户终端间的模型训练数据的特征相关系数;
[0129]
运行模块72,用于客户终端从目标代码中,确定属于客户终端的子目标代码;还用于客户终端执行属于客户终端的子目标代码,以获得客户终端与其它客户终端间的模型训练特征数据的特征相关系数,特征相关系数用于纵向联邦学习。
[0130]
本实施例提供的编译装置,可以用于执行前述任一方法实施例提供的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0131]
在一种可能的实现方式中,多个不同类型客户终端包括:用于纵向联邦学习的数据应用方,以及用于纵向联邦学习的数据提供方。
[0132]
在一种可能的实现方式中,运行模块72,用于客户终端从目标代码中,确定属于客户终端的子目标代码时,具体用于:
[0133]
客户终端确定客户终端是否为用于纵向联邦学习的数据应用方或者是否为用于纵向联邦学习的数据提供方;
[0134]
若客户终端为用于纵向联邦学习的数据应用方,则客户终端从目标代码中,确定属于数据应用方的子目标代码;
[0135]
若客户终端为用于纵向联邦学习的数据提供方,则客户终端从目标代码中,确定属于数据提供方的子目标代码。
[0136]
在一种可能的实现方式中,目标代码中包括用于纵向联邦学习的数据应用方的标识以及用于纵向联邦学习的数据提供方的标识;
[0137]
相应的,运行模块72,用于客户终端确定客户终端是否为用于纵向联邦学习的数据应用方或者是否为用于纵向联邦学习的数据提供方时,具体用于:
[0138]
客户终端确定客户终端的标识是否是用于纵向联邦学习的数据应用方的标识或者是否是用于纵向联邦学习的数据提供方的标识;
[0139]
若客户终端的标识是目标代码中用于纵向联邦学习的数据应用方的标识,则确定客户终端为用于纵向联邦学习的数据应用方;
[0140]
若客户终端的标识是目标代码中用于纵向联邦学习的数据提供方的标识,则确定客户终端为用于纵向联邦学习的数据提供方。
[0141]
在一种可能的实现方式中,运行模块72,用于客户终端执行属于客户终端的子目标代码时,具体用于:
[0142]
若客户终端为用于纵向联邦学习的数据应用方,则客户终端根据子目标代码,获取本地加密的模型训练特征数据,将加密的模型训练特征数据发送给用于纵向联邦学习的数据提供方,并接收来自数据提供方的根据加密的模型训练特征数据得到的特征相关系数。
[0143]
在一种可能的实现方式中,运行模块72,用于客户终端执行属于客户终端的子目标代码时,具体用于:
[0144]
若客户终端为用于纵向联邦学习的数据提供方,则客户终端根据子目标代码,接收来自纵向联邦学习的数据提供方的加密的模型训练特征数据,根据加密的模型训练特征数据和本地的模型训练特征数据得到特征相关系数,并发送给用于联邦学习的数据应用方。
[0145]
在一种可能的实现方式中,获取模块,用于客户终端获取目标编译文件时,具体用于:
[0146]
客户终端获取基于python编程语言的源代码,源代码包括多个不同类型客户终端分别用于参与获取特征相关系数的子源代码;
[0147]
客户终端将源代码编译为目标代码。
[0148]
前述任一实施例提供的编译装置,用于执行前述任一方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
[0149]
图8为本发明实施例提供的一种编译设备的结构示意图。如图8所示,所述设备可以包括:存储器81、处理器82及存储在所述存储器81上并可在所述处理器82上运行的编译程序,所述编译程序被所述处理器82执行时实现如前述任一实施例所述的编译方法的步骤。
[0150]
可选地,存储器81既可以是独立的,也可以跟处理器82集成在一起。
[0151]
本实施例提供的设备的实现原理和技术效果可以参见前述各实施例,此处不再赘述。
[0152]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有编译程序,所述编译程序被处理器执行时实现如前述任一实施例所述的编译方法的步骤。
[0153]
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0154]
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的部分步骤。
[0155]
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
[0156]
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的部分步骤。
[0157]
应理解,上述处理器可以cpu、gpu、dsp、专用集成电路(application specific integrated circuit,简称asic),或其他通用处理器。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0158]
存储器可能包含高速ram存储器,也可能还包括非易失性存储nvm,例如至少一个磁盘存储器,还可以为u盘、移动硬盘、只读存储器、磁盘或光盘等。
[0159]
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0160]
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(application specific integrated circuits,简称asic)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
[0161]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有
的要素。没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0162]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0163]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0164]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1