一种两方决策树训练方法和系统
技术领域
本说明书涉及信息技术领域,特别涉及一种两方决策树训练方法和系统。
背景技术
为了保护各方数据隐私,在机器学习领域会采用分布式训练方案。即,在不泄露任一参与方持有的样本数据的前提下,任一参与方可训练属于自己的模型。
目前,希望提供一种针对决策树的分布式训练方案。
发明内容
本说明书实施例之一提供一种两方决策树训练方法,其中,所述方法由第一方的设备执行,所述第一方为持有样本集中各样本的至少一个特征的特征值及标签值的一方和持有所述样本集中各样本的至少一个特征的特征值的一方中任一方,第二方为两方中的另一方;所述方法包括:
按以下分裂步骤对任一节点进行分裂:
获得所述节点的标志向量的第一分片、第一梯度向量的第一分片以及第二梯度向量的第一分片;标志向量指示属于相应节点的样本,第一梯度向量包括属于相应节点的样本对应的第一梯度,第二梯度向量包括属于相应节点的样本对应的第二梯度。
用第一方的公钥对所述节点的第一梯度向量的第一分片进行同态加密,得到所述节点的第一梯度向量的第一分片的第一同态密文;用第一方的公钥对所述节点的第二梯度向量的第一分片进行同态加密,得到所述节点的第二梯度向量的第一分片的第一同态密文;将所述节点的第一梯度向量的第一分片的第一同态密文以及第二梯度向量的第一分片的第一同态密文发送给第二方的设备;第一同态密文的加密密钥为第一方的公钥。
用第二方的公钥对所述节点的第一梯度向量的第一分片进行同态加密,得到所述节点的第一梯度向量的第一分片的第二同态密文;用第二方的公钥对所述节点的第二梯度向量的第一分片进行同态加密,得到所述节点的第二梯度向量的第一分片的第二同态密文;从第二方的设备接收所述节点的第一梯度向量的第二分片的第二同态密文以及第二梯度向量的第二分片的第二同态密文;第二同态密文的加密秘钥为第二方的公钥。
对于第一方的任一特征:
对于按该特征的特征值划分所述样本集得到的多个第一分组中的每一个:计算所述节点的第一梯度向量的第一分片的第二同态密文以及第二分片的第二同态密文中与属于该第一分组的样本对应的元素之和,得到该第一分组对应的第一梯度和的第二同态密文;将该第一分组对应的第一梯度和的第二同态密文转换成该第一分组对应的第一梯度和的第一分片以及该第一分组对应的第一梯度和的第二分片的第二同态密文,将该第一分组对应的第一梯度和的第二分片的第二同态密文发送给第二方的设备,以使第二方的设备能够获得该第一分组对应的第一梯度和的第二分片;计算所述节点的第二梯度向量的第一分片的第二同态密文以及第二分片的第二同态密文中与属于该第一分组的样本对应的元素之和,得到该第一分组对应的第二梯度和的第二同态密文;将该第一分组对应的第二梯度和的第二同态密文转换成该第一分组对应的第二梯度和的第一分片以及该第一分组对应的第二梯度和的第二分片的第二同态密文,将该第一分组对应的第二梯度和的第二分片的第二同态密文发送给第二方的设备,以使第二方的设备能够获得该第一分组对应的第二梯度和的第二分片。
对于第二方的任一特征:
对于按该特征划分的特征值划分所述样本集得到的多个第二分组中的每一个:从第二方的设备获得该第二分组对应的第一梯度和的第一分片的第一同态密文,以及该第二分组对应的第二梯度和的第一分片的第一同态密文;利用第一方的私钥解密该第二分组对应的第一梯度和的第一分片的第一同态密文,得到该第二分组对应的第一梯度和的第一分片;利用第一方的私钥解密该第二分组对应的第二梯度和的第一分片的第一同态密文,得到该第二分组对应的第二梯度和的第一分片;其中,该第二分组对应的第一梯度和等于所述节点的第一梯度向量的第一分片和第二分片中与属于该第二分组的样本对应的元素之和,该第二分组对应的第二梯度和等于所述节点的第二梯度向量的第一分片和第二分片中与属于该第二分组的样本对应的元素之和。
按照多方安全计算协议与第二方的设备交互,以基于各特征下的各分组分别对应的第一梯度和的第一分片以及第二梯度和的第一分片,计算各特征下的各分组分别对应的分裂增益的第一分片。
按照多方安全比较协议与第二方的设备交互,以基于各特征下的各分组分别对应的分裂增益的第一分片,确定最大分裂增益,并根据所述最大分裂增益对应的特征及分组记录所述节点的分裂信息。
当所述最大分裂增益对应第一方的特征时,生成所述节点的左子树向量和右子树向量,所述左子树向量指示根据所述最大分裂增益对应的特征及分组划分所述样本集得到的左子集中的样本,所述右子树向量指示根据所述最大分裂增益对应的特征及分组划分所述样本集得到的右子集中的样本,左子集与左子树对应,右子集与右子树对应;将所述左子树向量拆分成第一分片和第二分片,并将所述左子树向量的第二分片发送给第二方的设备;将所述右子树向量拆分成第一分片和第二分片,并将所述右子树向量的第二分片发送给第二方的设备;当所述最大分裂增益对应第二方的特征时,从第二方的设备接收所述节点的左子树向量的第一分片和右子树向量的第一分片。
按照多方安全计算协议与第二方的设备交互,以基于所述节点的标志向量的第一分片以及所述左子树向量的第一分片,计算所述节点的左子树的标志向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于所述节点的标志向量的第一分片以及所述右子树向量的第一分片,计算所述节点的右子树的标志向量的第一分片。
按照多方安全计算协议与第二方的设备交互,以基于所述节点的第一梯度向量的第一分片以及所述节点的左子树的标志向量的第一分片,计算所述节点的左子树的第一梯度向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于所述节点的第二梯度向量的第一分片以及所述节点的左子树的标志向量的第一分片,计算所述节点的左子树的第二梯度向量的第一分片。
按照多方安全计算协议与第二方的设备交互,以基于所述节点的第一梯度向量的第一分片以及所述节点的右子树的标志向量的第一分片,计算所述节点的右子树的第一梯度向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于所述节点的第二梯度向量的第一分片以及所述节点的右子树的标志向量的第一分片,计算所述节点的右子树的第二梯度向量的第一分片。
本说明书实施例之一提供一种两方决策树训练系统,其中,所述系统在第一方的设备上实现,所述第一方为持有样本集中各样本的至少一个特征的特征值及标签值的一方和持有所述样本集中各样本的至少一个特征的特征值的一方中任一方,第二方为两方中的另一方;所述系统包括第一获得模块、同态加密模块、第一密文处理模块、第二密文处理模块、分裂增益分片计算模块、分裂增益比较模块、左右子树向量分片获得模块、子节点标志向量分片计算模块和子节点梯度向量分片计算模块。
针对分裂的任一节点:
所述第一获得模块用于获得所述节点的标志向量的第一分片、第一梯度向量的第一分片以及第二梯度向量的第一分片,其中,标志向量指示属于相应节点的样本,第一梯度向量包括属于相应节点的样本对应的第一梯度,第二梯度向量包括属于相应节点的样本对应的第二梯度。
所述同态加密模块用于:用第一方的公钥对所述节点的第一梯度向量的第一分片进行同态加密,得到所述节点的第一梯度向量的第一分片的第一同态密文;用第一方的公钥对所述节点的第二梯度向量的第一分片进行同态加密,得到所述节点的第二梯度向量的第一分片的第一同态密文;将所述节点的第一梯度向量的第一分片的第一同态密文以及第二梯度向量的第一分片的第一同态密文发送给第二方的设备;第一同态密文的加密密钥为第一方的公钥;用第二方的公钥对所述节点的第一梯度向量的第一分片进行同态加密,得到所述节点的第一梯度向量的第一分片的第二同态密文;用第二方的公钥对所述节点的第二梯度向量的第一分片进行同态加密,得到所述节点的第二梯度向量的第一分片的第二同态密文;从第二方的设备接收所述节点的第一梯度向量的第二分片的第二同态密文以及第二梯度向量的第二分片的第二同态密文;第二同态密文的加密秘钥为第二方的公钥。
对于第一方的任一特征,所述第一密文处理模块用于:对于按该特征的特征值划分所述样本集得到的多个第一分组中的每一个,计算所述节点的第一梯度向量的第一分片的第二同态密文以及第二分片的第二同态密文中与属于该第一分组的样本对应的元素之和,得到该第一分组对应的第一梯度和的第二同态密文,将该第一分组对应的第一梯度和的第二同态密文转换成该第一分组对应的第一梯度和的第一分片以及该第一分组对应的第一梯度和的第二分片的第二同态密文,将该第一分组对应的第一梯度和的第二分片的第二同态密文发送给第二方的设备,以使第二方的设备能够获得该第一分组对应的第一梯度和的第二分片;计算所述节点的第二梯度向量的第一分片的第二同态密文以及第二分片的第二同态密文中与属于该第一分组的样本对应的元素之和,得到该第一分组对应的第二梯度和的第二同态密文,将该第一分组对应的第二梯度和的第二同态密文转换成该第一分组对应的第二梯度和的第一分片以及该第一分组对应的第二梯度和的第二分片的第二同态密文,将该第一分组对应的第二梯度和的第二分片的第二同态密文发送给第二方的设备,以使第二方的设备能够获得该第一分组对应的第二梯度和的第二分片。
对于第二方的任一特征,所述第二密文处理模块用于:对于按该特征划分的特征值划分所述样本集得到的多个第二分组中的每一个,从第二方的设备获得该第二分组对应的第一梯度和的第一分片的第一同态密文,以及该第二分组对应的第二梯度和的第一分片的第一同态密文,利用第一方的私钥解密该第二分组对应的第一梯度和的第一分片的第一同态密文,得到该第二分组对应的第一梯度和的第一分片,利用第一方的私钥解密该第二分组对应的第二梯度和的第一分片的第一同态密文,得到该第二分组对应的第二梯度和的第一分片,其中,该第二分组对应的第一梯度和等于所述节点的第一梯度向量的第一分片和第二分片中与属于该第二分组的样本对应的元素之和,该第二分组对应的第二梯度和等于所述节点的第二梯度向量的第一分片和第二分片中与属于该第二分组的样本对应的元素之和。
所述分裂增益分片计算模块用于按照多方安全计算协议与第二方的设备交互,以基于各特征下的各分组分别对应的第一梯度和的第一分片以及第二梯度和的第一分片,计算各特征下的各分组分别对应的分裂增益的第一分片。
所述分裂增益比较模块用于按照多方安全比较协议与第二方的设备交互,以基于各特征下的各分组分别对应的分裂增益的第一分片,确定最大分裂增益,并根据所述最大分裂增益对应的特征及分组记录所述节点的分裂信息。
所述左右子树向量分片获得模块用于:当所述最大分裂增益对应第一方的特征时,生成所述节点的左子树向量和右子树向量,所述左子树向量指示根据所述最大分裂增益对应的特征及分组划分所述样本集得到的左子集中的样本,所述右子树向量指示根据所述最大分裂增益对应的特征及分组划分所述样本集得到的右子集中的样本,左子集与左子树对应,右子集与右子树对应;将所述左子树向量拆分成第一分片和第二分片,并将所述左子树向量的第二分片发送给第二方的设备;将所述右子树向量拆分成第一分片和第二分片,并将所述右子树向量的第二分片发送给第二方的设备;当所述最大分裂增益对应第二方的特征时,从第二方的设备接收所述节点的左子树向量的第一分片和右子树向量的第一分片。
所述子节点标志向量分片计算模块用于:按照多方安全计算协议与第二方的设备交互,以基于所述节点的标志向量的第一分片以及所述左子树向量的第一分片,计算所述节点的左子树的标志向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于所述节点的标志向量的第一分片以及所述右子树向量的第一分片,计算所述节点的右子树的标志向量的第一分片。
所述子节点梯度向量分片计算模块用于:按照多方安全计算协议与第二方的设备交互,以基于所述节点的第一梯度向量的第一分片以及所述节点的左子树的标志向量的第一分片,计算所述节点的左子树的第一梯度向量的第一分片,按照多方安全计算协议与第二方的设备交互,以基于所述节点的第二梯度向量的第一分片以及所述节点的左子树的标志向量的第一分片,计算所述节点的左子树的第二梯度向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于所述节点的第一梯度向量的第一分片以及所述节点的右子树的标志向量的第一分片,计算所述节点的右子树的第一梯度向量的第一分片,按照多方安全计算协议与第二方的设备交互,以基于所述节点的第二梯度向量的第一分片以及所述节点的右子树的标志向量的第一分片,计算所述节点的右子树的第二梯度向量的第一分片。
本说明书实施例之一提供一种两方决策树训练装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的两方决策树训练方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的模型训练系统的应用场景示意图;
图2是根据本说明书一些实施例所示的A方、B方的树模型及其对应的等效模型的示意图;
图3是根据本说明书一些实施例所示的两方决策树训练的输入以及变量初始化的示意图;
图4至图6是根据本说明书一些实施例所示的节点分裂的示例性流程图;
图7是根据本说明书一些实施例所示的计算等效模型的叶节点权值的分片的示例性流程图;
图8是根据本说明书一些实施例所示的计算用于训练下一棵树的梯度向量的分片的示例性流程图;
图9是根据本说明书一些实施例所示的划分左右子集的示意图;
图10是根据本说明书一些实施例所示的两方决策树训练系统的模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
首先介绍决策树的相关知识。
决策树的节点可分为分裂节点和叶子节点(叶节点),分裂节点具有子节点(如左右子树),每个分裂节点可对应一个特征,可称之为该分裂节点的关联特征。分裂节点的参数(可称为分裂参数)可包括用于判断样本/预测对象属于哪个子节点的阈值,该阈值与该分裂节点的关联特征相关,例如,可以将该分裂节点的关联特征的某个特征值作为该阈值。
基于决策树的模型(即树模型)可包括一个或多个决策树,其中,包括多个(两个或以上)决策树的树模型包括XGB(eXtreme Gradient Boosting,极限梯度提升)框架下的树模型。
对于回归问题,每个叶节点可对应一个分值(可称为叶节点分值/叶节点权值),单个决策树上所有叶节点的权值构成该决策树的叶节点权值向量,预测对象沿决策树上的预测路径抵达的叶节点(此叶节点可称为预测叶节点)的权值可基于该决策树的叶节点权值向量和该决策树对应的该预测对象的预测叶节点向量的内积得到。其中,该决策树对应的该预测对象的预测叶节点向量指示该预测对象沿该决策树上的预测路径抵达的叶节点的权值,可以理解,单个决策树对应的预测叶节点向量的位数(维度)与该决策树的叶节点数量一致,通常可将该预测对象沿该决策树上的预测路径能够抵达的叶节点对应的预测叶节点向量位置1并将其余预测叶节点向量位置0,以使预测叶节点的权值等于叶节点权值向量和预测叶节点向量的内积。此外,一个树模型可对应一个基础分值。那么,预测对象(如样本)的预测分值可按
计算,其中,pred表示该预测对象的预测分值,f
0表示树模型的基础分值,T(≥1)表示树模型包含的决策树的数量,W
t表示单个决策树的叶节点权值向量,S
t表示单个决策树对应的该预测对象的预测叶节点向量,∙表示求向量内积。
在一些实施例中,预测对象的预测分值即可作为该预测对象的预测值。在又一些实施例中,可以利用非线性函数来处理该预测对象的预测分值,该非线性函数的输出为该预测对象的预测值。
在一些实施例中,可以训练单个决策树作为树模型,相应地预测对象的预测分值等于该预测对象沿该决策树上的预测路径抵达的叶节点的权值以及该树模型的基础分值之和。在一些实施例中,例如在XGB(eXtreme Gradient Boosting,极限梯度提升)框架下,可以训练多个决策树作为树模型,预测对象的预测分值等于该预测对象分别沿所述多个决策树上的预测路径抵达的叶节点的权值以及该树模型的基础分值之和。
前面提到,分裂节点可基于某个特征的某个特征值被分裂成左右子树。相应地,从根节点开始,样本集中的样本被划分到各个子节点,直到样本被划分至叶节点,此时可基于决策树的基础分值和样本抵达的叶节点的权值确定样本的预测分值。同一分裂节点按不同特征的不同特征值进行分裂所对应的分裂增益是不同的,因此训练过程中可根据不同特征的不同特征值分别对应的分裂增益的大小判断按哪个特征的哪个特征值分裂一节点更好。
具体地,分裂增益可反映按某个特征的某个特征值分裂一节点时目标函数的下降值。决策树的分裂(或训练)目标在于尽可能使分裂后的目标函数值小于分裂前的目标函数值且两者的差异尽可能大,故训练过程中可选择较大的分裂增益对应的特征及特征值来分裂节点。所述目标函数至少基于样本集中各样本的损失函数(反映预测值与标签值的差异)得到,如目标函数可以是各样本的损失函数之和。其中,损失函数可以进一步利用第一梯度以及第二梯度来描述,相应地目标函数等价于单棵决策树上各叶节点分别对应的子目标函数之和,每个叶节点对应的子目标函数可基于该叶节点对应的第一梯度和以及第二梯度和得到。其中,第一梯度是指样本的损失函数相关的一阶梯度,第二梯度是指样本的损失函数相关的二阶梯度,第一梯度和为属于相应节点的样本的第一梯度之和,第二梯度和为属于相应节点的样本的第二梯度之和。可以理解,在计算分裂增益时分裂的原节点和分裂出的左右子树视为不同时刻的叶节点,即视为决策树的叶节点增加了一个。
对某个节点进行分裂,原节点下会生长出左右两棵子树,对目标函数的增益可以被解释为分裂后的决策树对应的目标函数值相对于原决策树对应的目标函数值的下降值。结合前面介绍的分裂增益、目标函数、子目标函数、梯度和之间的关系可知,分裂增益可基于左子树对应的第一梯度和、第二梯度和以及右子树对应的第一梯度和、第二梯度和得到。
关于分裂增益的更多细节,可以参考后文的相关描述。
图1是根据本说明书一些实施例所示的模型训练系统的应用场景示意图。如图1所示,系统100可以包括A方的设备110、B方的设备120、第三方服务器130以及网络140。
A方持有样本集中各样本的至少一个特征的特征值以及所述样本集中各样本的标签值,B方持有所述样本集中各样本的至少一个特征的特征值。可以理解,A方持有的特征、特征值及标签值属于A方的隐私,B方持有的特征及特征值属于B方的隐私。
在两方模型训练过程中,A方和B方都不希望向对方暴露自己的隐私数据。为了保护双方的数据隐私,训练过程中涉及的多个计算环节的输入(如样本的标签值)、输出(如,梯度向量、样本的预测分值、叶节点权值等)均以分片形式保存于双方的设备, A方和B方各执一片。
针对决策树,A方和B方训练的树模型可具有相同的结构,如节点数量、节点间的连接关系、节点位置等。但是,A方和B方的树模型具有不同的参数。为了便于阐述,本说明书中会经常提到与A方的树模型和B方的树模型对应的等效模型,基于A方和B方各自持有的样本数据进行集中式训练可获得该等效模型。等效模型具有完整的参数,A方/B方的树模型的参数相当于是从等效模型的参数中拆分出来的。
具体地:任一方的树模型只具有部分分裂节点的参数,即,任一方的树模型包括具有参数的本地分裂节点和不具有参数的非本地分裂节点;任一方的树模型中的叶节点的权值相当于等效模型中相应叶节点的权值的分片,任一方的树模型的基础分值相当于等效模型的基础分值的分片,从向量的角度看,任一方的树模型的叶节点权值向量相当于等效模型的叶节点权值向量的分片。
参考图2,图中用圆形表示分裂节点,用矩形表示叶节点。A方持有特征X1,B方持有特征X2,相应地,A方的树模型具有与特征X1对应的本地分裂节点以及参数p1,B方的树模型具有与特征X2对应的本地分裂节点以及参数p2。如图2所示,A方的本地分裂节点可记为(X1,p1),B方的本地分裂节点可记为(X2,p2),叶节点可记为leaf且同一位置的叶节点具有相同的数字编号。以二叉树为例,分裂节点的参数可以包括与该节点对应的特征关联的阈值,例如,对应于年龄这一特征的节点的参数可以包括用于区分年龄段的阈值。
如图2所示:对于A方,leaf1的权值为w11 ,leaf2的权值为w21,leaf3的权值为w31,树模型的基础分值为< f0>1;对于B方,leaf1的权值为w12 ,leaf2的权值为w22,leaf3的权值为w32,树模型的基础分值为< f0>2;对于等效模型,leaf1的权值为w1 ,leaf2的权值为w2,leaf3的权值为w3,基础分值为f0。在一些实施例中,可满足w11+ w12= w1、w21+ w22= w2、w31+w32= w3以及< f0>1+< f0>2= f0。从叶节点权值向量的角度看,满足(w11, w21, w31)+ (w12,w22, w32)= (w1, w2, w3)。
假设预测对象的预测叶节点向量为(s
1,s
2,s
3),那么预测对象的预测分值
,其中
即叶节点权值向量(w
1, w
2, w
3)和预测叶节点向量(s
1,s
2,s
3)的内积。假设leaf2是预测叶节点,则该预测对象的预测叶节点向量为(0,1,0),该预测对象的预测分值
。
当任一方的树模型以及等效模型均包括T(≥2)个决策树时,对于等效模型,每棵树对应一个叶节点权值向量和预测叶节点向量的内积,求和T棵树分别对应的内积以及等效模型的基础分值可得到预测对象的预测分值。
设备110/设备120可以包括各类具有信息收发功能的计算设备,如智能电话、膝上型计算机、台式计算机、服务器等。
在一些实施例中,服务器可以是独立的服务器或者服务器组,该服务器组可以是集中式的或者分布式的。在一些实施例中,服务器可以是区域的或者远程的。在一些实施例中,服务器可在云平台上执行。例如,该云平台可包括私有云、公共云、混合云、社区云、分散式云、内部云等中的一种或其任意组合。
第三方服务器130可协助A方的设备110和B方的设备120运行两方安全乘法协议。两方模型训练过程中经常涉及乘法运算,当乘积的一个因子属于A方的隐私数据、另一个因子属于B方的隐私数据时,任一方的设备不能直接计算该乘积,可按照两方安全乘法协议与另一方的计算设备交互,以基于己方的隐私数据计算得到该乘积的一个分片。即,A方和B方各自获得该乘积的一个分片。
网络140连接系统的各组成部分,使得各部分之间可以进行通讯。在系统中各部分之间的网络可以包括有线网络和/或无线网络。例如,网络140可以包括电缆网络、有线网络、光纤网络、电信网络、内部网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。每两个部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。
图3至图8是根据本说明书一些实施例所示的两方决策树训练方法的示例性流程图。
首先对图3至图8中的表示方式进行说明:(1)符号{}表示向量、矩阵或者集合,当向量/集合的维度为M或矩阵的某个维度为M时,表明这M维与样本集中的M个样本一一对应,为了便于描述,可以将所述M个样本用编号1~M表示,并将这些向量、矩阵以及集合的M维与所述M个样本的编号一一对应起来;(2)图3至图8都有一条居中的虚线,位于该虚线左侧的圆角框中示意的步骤可由A方独立完成,位于该虚线右侧的圆角框中示意的步骤可由B方独立完成,穿过该虚线的圆角框中的步骤由A方和B方协作完成且各自获得一份分片数据;(3)特征记为j,特征值记为k,由于每个分组对应一个特征值,分组也可记为k。
如图3所示,A方持有的输入包括所述M个样本的特征数据,每个样本的特征数据包括NA个特征的特征值,A方还持有所述M个样本的标签值。其中,A方持有的所述M个样本的特征数据的存储形式可以是M*NA维的特征矩阵(记为{X_Aij},X_A包含所述M个样本的针对A方特征的特征值),A方持有的M个样本的标签值存储形式可以是M*1维的标签向量(记为{yi},y表示样本的标签值)。B方持有的输入包括所述M个样本的特征数据,每个样本的特征数据包括NB个特征的特征值,B方持有的M个样本的特征数据的存储形式可以是M*NB维的特征矩阵。
图3中的初始化阶段示出了A方和B方为分裂阶段所做的准备步骤。
由于在(节点)分裂阶段A方和B方都要借助对方的公钥在密文形态下计算梯度和,A方和B方可预先同步双方公钥,即,A方的设备将A方的公钥PKA发送给B方的设备,B方的设备将B方的公钥PKB发送给A方的设备。
初始化阶段A方的设备可以对等效模型的基础分值(记为f0)进行初始化。在一些实施例中,A方可以对所述M个样本的标签值取平均值,将该平均值作为等效模型的基础分值。值得说明的是,等效模型的基础分值可作为初始的样本预测值,A方的设备可基于初始的样本预测值和样本标签值计算根节点的第一梯度向量{gi}以及第二梯度向量{hi}。任一节点的第一梯度向量包括属于该节点的样本对应的第一梯度g,任一节点的第二梯度向量包括属于该节点的样本对应的第二梯度h。可以理解,第一/第二梯度向量的位数(维度)可以是M,每一位与所述M个样本中的一个样本对应,不属于相应节点的样本对应的梯度向量位为0。需要注意的是,尽管样本i不属于某个节点后,该节点的第一/第二梯度向量中与样本i对应的元素从样本i对应的第一梯度gi/第二梯度hi变为0,但为了便于描述该节点的第一/第二梯度向量中与样本i对应的元素仍可用gi/ hi来表示。
举例说明,最先分裂的根节点的第一/第二梯度向量包括所述M个样本对应的第一/第二梯度,不妨设M=4,那么根节点的第一梯度向量可记为(g1, g2, g3, g4),根节点的第二梯度向量可记为(h1, h2, h3, h4)。若按某个特征的某个特征值分裂根节点使得编号为1、4的样本被划分至根节点的左子树、编号为2、3的样本被划分至根节点的右子树,则根节点的左子树的第一梯度向量、第二梯度向量分别为(g1, 0, 0, g4)、(h1, 0, 0, h4),根节点的右子树的第一梯度向量、第二梯度向量分别为(0, g2, g3,0)、(0, h2, h3,0)。
初始化阶段A方的设备可对节点的标志向量{si}进行初始化,初始化的节点的标志向量即根节点的标志向量。任一节点的标志向量指示属于该节点的样本。可以理解,节点的标志向量的位数(维度)可以是M,每一位与所述M个样本中的一个样本对应,通常属于相应节点的样本对应的标志向量位为1而不属于相应节点的样本对应的标志向量位为0。例如,根节点的标志向量位全部为1。若按某个特征的某个特征值分裂根节点使得编号为1、4的样本被划分至根节点的左子树、编号为2、3的样本被划分至根节点的右子树,则根节点的左子树的标志向量为(1, 0, 0, 1),根节点的右子树的标志向量为(0, 1, 1,0)。
为了避免泄密,初始化阶段A方的设备可以将等效模型的基础分值f0、根节点的第一梯度向量{gi}、根节点的第二梯度向量{hi}、根节点的标志向量{ si }、标签向量{yi}分别拆分成分配给双方的两个分片。应当理解,对向量或矩阵的拆分包括对向量或矩阵的每个元素的拆分,即向量或矩阵的每个元素也被拆分成分配给双方的两个分片。同理,对向量或矩阵的加密/解密包括对向量或矩阵的每个元素进行加密/解密。如图3所示,下标A对应分配给A方的分片,下标B对应分配给B方的分片,A方的设备需要将分配给B方的分片<f0>B、{<gi>B}、{<hi>B}、{<si>B}、{<yi>B}发送给B方的设备,并至少保留分配给己方的分片<f0>A、{<gi>A}、{<hi>A}、{<si>A}、{<yi>A}。其中,<f0>A 可作为A方的树模型的初始分值,<f0>B 可作为B方的树模型的初始分值。
值得说明的是,对于XGB(eXtreme Gradient Boosting,极限梯度提升)框架下的树模型,初始化的第一/第二梯度向量为训练的第一棵树的根节点的第一/第二梯度向量,每棵树的根节点的标志向量位全部为1。
图4至图6分别示出了两方模型训练中(决策树)节点分裂包含的三个环节:计算分裂增益的分片、比较分裂增益、记录分裂信息。下面依次介绍这三个环节。
参考图4,图4以B方特征为例示意了在密文形态下计算梯度和的流程,且示意了基于梯度和的分片计算分裂增益的分片的流程。需要指出的是,A方和B方采用同一同态加密算法进行加密以在密文形态下计算梯度和,因此图4中的加密是指利用双方约定好的算法进行同态加密。
A方的设备可以用己方公钥PKA对第一梯度向量的分片{<gi>A}、第二梯度向量的分片{<gi>B}分别进行同态加密,得到第一梯度向量的分片的同态密文{[<gi>A]A}、第二梯度向量的分片的同态密文{[<hi>A]A}。A方的设备将{[<gi>A]A}、{[<hi>A]A}发送给B方的设备。B方在没有A方的私钥SKA的情况下,无法解密出{[<gi>A]A}、{[<hi>A]A},因此不会出现泄密。
由于同步过双方公钥,B方的设备可以用A方的公钥PKA对第一梯度向量的分片{<gi>B}、第二梯度向量的分片{<hi>B}分别进行同态加密,得到第一梯度向量的分片的同态密文{[<gi>B]A}、第二梯度向量的分片的同态密文{[<hi>B]A}。
在获得{[<gi>A]A}、{[<gi>B]A}、{[<hi>A]A}、{[<hi>B]A}后,B方便可以根据己方特征数据在密文形态下计算梯度和。具体地,对于B方的任一特征j,B方的设备可以按特征j的特征值将样本集{i}划分成多个分组。为了便于描述,将按任一特征的特征值划分样本集得到的分组的个数记为K,并将这K个分组编号为1~K。在一些实施例中,分组可以通过特征分箱算法实现,例如,等频分箱、等宽分箱等分箱算法。在一些实施例中,还可以基于每个分组中样本的特征值确定该分组对应的阈值(如等于特征值均值,或者等于该分组中某个样本的特征值),该分组对应的阈值可以作为后续节点分裂依据的分裂参数。
每个分组对应一个第一梯度和以及一个第二梯度和,任一分组对应的第一梯度和为第一梯度向量中与属于该分组的样本对应的元素之和,任一分组对应的第二梯度和为第二梯度向量中与属于该分组的样本对应的元素之和。
对于按己方特征的特征值划分样本集{i}得到的任一分组(记为k),B方的设备可以按如下方式在密文形态下计算分组k对应的第一梯度和Gk以及分组k对应的第二梯度和Hk:
具体而言,B方的设备获得的{[<gi>A]A}、{[<gi>B]A}、{[<hi>A]A}、{[<hi>B]A}实际上也是向量,B方的设备可以对{[<gi>A]A}、{[<gi>B]A}中与属于分组k的样本对应的元素求和,鉴于同态加密的特性,相当于对{<gi>A}、{<gi>B}中与属于分组k的样本对应的元素求和得到分组k对应的第一梯度和Gk后,再用A方的公钥PKA对Gk进行同态加密,即B方的设备可以得到密文[Gk]A。
同理,B方的设备可以对{[<hi>A]A}、{[<hi>B]A}中与属于分组k的样本对应的元素求和,得到分组k的样本对应的第二梯度和Hk的密文[Hk]A。
可以看出,在B方没有A方的私钥SKA的情况下,B方的设备在计算梯度和的过程中始终无法获得A方的任何有用信息(如<gi>A、<hi>A),即计算过程不会出现泄密。
获得分组k对应的第一梯度和Gk的密文[Gk]A后,B方的设备可以将[Gk]A转换成Gk的分片<Gk>B和Gk的分片<Gk>A的密文[<Gk>A]A,将密文[<Gk>A]A发送给A方的设备以及(至少)保留分片<Gk>B。A方的设备接收到Gk的分片<Gk>A的密文[<Gk>A]A后,可以利用己方的私钥SKA解密密文[<Gk>A]A得到Gk的分片<Gk>A。即,A方和B方各自获得Gk的一个分片。
在一些实施例中,B方的设备可以先生成随机数作为Gk的分片<Gk>B,用A方的公钥对-<Gk>B进行同态加密得到[-<Gk>B]A,进而计算[Gk]A+[-<Gk>B]A,鉴于同态加密的特性可以得到密文[<Gk>A]A。
同理,B方的设备可以将[Hk]A分片转换成Hk的分片<Hk>B和Hk的分片<Hk>A的密文[<Hk>A]A,将密文[<Hk>A]A发送给A方的设备以及(至少)保留分片<Hk>B。A方的设备接收到Hk的分片<Hk>A的密文[<Hk>A]A后,可以利用己方的私钥SKA解密密文[<Hk>A]A得到Hk的分片<Hk>A。即,A方和B方各自获得Hk的一个分片。
图4是以B方特征为例示意了在密文形态下计算梯度和的流程,类似地,对于A方的任一特征,A方的设备可以在密文形态下计算A方特征下的多个分组分别对应的第一梯度和Gk以及第二梯度和Hk。
具体而言,B方的设备可以用己方公钥PKB对第一梯度向量的分片{<gi>B}、第二梯度向量的分片{<hi>B}分别进行同态加密,得到第一梯度向量的分片的同态密文{[<gi>B]B}、第二梯度向量的分片的同态密文{[<hi>B]B}。A方的设备可以用B方的公钥PKA对第一梯度向量的分片{<gi>A}、第二梯度向量的分片{<hi>A}分别进行同态加密,得到第一梯度向量的分片的同态密文{[<gi>A]B}、第二梯度向量的分片的同态密文{[<hi>A]B}。
对于A方的任一特征j,A方的设备可以按特征j的特征值将样本集{i}划分成多个分组。对于按己方特征的特征值划分样本集{i}得到的任一分组k,A方的设备可以按如下方式在密文形态下计算分组k对应的第一梯度和Gk以及分组k对应的第二梯度和Hk:
进而,参考前述内容,A方的设备可以将[Gk]B转换成Gk的分片<Gk>A和Gk的分片<Gk>B的密文[<Gk>B]B,将密文[<Gk>B]B发送给B方的设备并(至少)保留分片<Gk>A,以及,将[Hk]B转换成Hk的分片<Hk>A和Hk的分片<Hk>B的密文[<Hk>B]B,将密文[<Hk>B]B发送给B方的设备并(至少)保留分片<Hk>A。B方的设备接收到密文[<Gk>B]B、[<Hk>B]B后,可以利用己方的私钥SKB分别解密密文[<Gk>B]B、[<Hk>B]B得到Gk的分片<Gk>A、Hk的分片<Hk>A。即,A方和B方各自获得Gk的一个分片,以及各自获得Hk的一个分片。
对于任一特征,可以获得K个第一梯度和的密文以及K个第二梯度和的密文,其向量表示为{[Gk]A}、{[Hk]A}。进而,无论是A方还是B方,都会获得每个特征下的多个分组分别对应的第一梯度和的一个分片以及第二梯度和的一个分片。即,通过在同一特征下遍历分组以及遍历(NA+ NB)个特征,每一方都会获得(NA+ NB)组第一梯度和的分片以及(NA+ NB)组第二梯度和的分片,每组第一/第二梯度和的分片包含的分片的数量等于相应特征下的分组的数量K。需要注意的是,不同特征下分组的数量K可能不同。
对于任一节点,A方和B方可以按照多方安全计算协议进行交互,以基于各特征下的各分组分别对应的第一梯度和的分片以及第二梯度和的分片,计算各特征下的各分组分别对应的分裂增益的分片,A方和B方各执同一分裂增益的一个分片。其中,由于每个分组对应一个特征值,每个分裂增益实际上对应的一个特征j以及特征j的一个特征值k。特征j以及特征j的特征值k对应的分裂增益反映按特征j以及j的特征值k分裂相应节点后目标函数的下降值。
前文提到分裂增益可基于左子树第一梯度和(记为GL)、左子树第二梯度和(记为HL)、右子树第一梯度和(记为GR)、右子树第二梯度和(记为HR)得到,如果是在一方(不妨记为C)的设备上训练等效模型,参考图4,C方的设备可以初始化GL、HL、GR、HR,按照往左子树第一/第二梯度和GL/HL上累加某一分组(记为k)对应的第一/第二梯度和Gk/Hk就相应从右子树第一/第二梯度和GR/HR上减去分组k对应的第一/第二梯度和Gk/Hk的方式,依次获得特征j下的各分组分别对应的(即特征j 的各特征值分别对应的)左子树梯度和GL以及右子树梯度和GR。
如图9所示,样本集按特征j的特征值被划分成K个分组,由于在获得分组结果前会按特征j的特征值大小对样本进行排序(分组内样本顺序可打乱),这K个分组按各分组内样本特征值大小呈现一定的次序,不妨以分组序号(1~K)的递增表示分组内样本特征值的增大(图9中用水平箭头示意),则第2个分组内任一样本的特征值不小于第1个分组内任一样本的特征值,第3个分组内任一样本的特征值不小于第2个分组内任一样本的特征值,...,第K-1个分组内任一样本的特征值不小于第K个分组内任一样本的特征值。可以看出,若以分组为最小单元,将样本集划分成与左子树对应的左子集和与右子树对应的右子集,则存在K种划分情况(图9中用垂直箭头示意),换句话说,待分裂节点在特征j下存在K种分裂可能,其中每种分裂可能对应一个特征值(即每个分组对应的特征值)。
C方的设备需要算出这K种可能下的分裂增益,即特征j 下的K个分组分别对应的分裂增益,以备确定待分裂节点的最优分裂参数。结合参考图4和图9,以第一梯度为例,C方的设备首先可以将左子树第一梯度和GL初始化为0,以及将右子树第一梯度和GR初始化为待分裂节点的第一梯度和G。第一梯度和为第一梯度向量中与属于相应节点的样本对应的元素之和。然后,C方的设备可通过“一增一减”的方式依次获得K个分组分别对应的左子树第一梯度和GL以及右子树第一梯度和GR:将第1个分组对应的第一梯度和G1累加至左子树第一梯度和GL(GL=0),得到第1个分组对应的左子树梯度和GL(GL=0+G1),以及,将右子树第一梯度和GR(GR=G)减去第1个分组对应的第一梯度和G1,得到第1个分组对应的右子树第一梯度和GR(GR=G-G1);将第2个分组对应的第一梯度和G2累加至左子树第一梯度和GL(GL=0),得到第1个分组对应的左子树梯度和GL(GL=0+G1+G2),以及,将右子树第一梯度和GR(GR=G-G1)减去第2个分组对应的第一梯度和G2,得到第2个分组对应的右子树第一梯度和GR(GR=G-G1-G2);....;以此类推,直至得到第k个分组对应的左子树第一梯度和GL(GL=G)以及右子树第一梯度和GR(GR=0)。当然,可以对上述计算GL、GR的方法做出适当的变形,例如,将左子树第一梯度和GL初始化为待分裂节点的第一梯度和G,以及将右子树第一梯度和GR初始化为0。相应地,需要在GL的基础上依次减去K个分组分别对应的第一梯度和,以获得K个分组分别对应的左子树第一梯度和,以及,在GR的基础上依次加上K个分组分别对应的第一梯度和,以获得K个分组分别对应的右子树第一梯度和。应当理解,等式两边的GL为相邻分组对应的左子树第一梯度和,等式两边的GR为相邻分组对应的右子树第一梯度和。
同理,C方的设备可以获得特征j下的K个分组分别对应的左子树第二梯度和以及右子树第二梯度和。
基于特征j下的K个分组分别对应的左子树第一梯度和GL、右子树第二梯度和GR、左子树第二梯度和HL、右子树第二梯度和HR,C方的设备可以计算特征j下的K个分组分别对应的分裂增益Gain。
值得说明的是,某些分箱算法如等频分箱可能会使得相邻分组内出现特征值相等的样本,使得按上述方法计算出来的左/右子树梯度和(GL、GR、HL、HR)具有一定误差,但这类误差在工程上是可以忽略的。
前面介绍了在一方(不妨记为C)的设备上训练等效模型可以如何计算左/右子树梯度和以及分裂增益,在此基础上将继续介绍在两方的设备上如何将上述计算过程拆解。
首先是左右子树梯度和的初始化,以将GL初始化为0以及将GR初始化为G为例,对于GL=0,A方的设备可以生成随机数作为初始化的GL的分片<GL>A并将<GL>A发送给B方的设备,B方的设备可以计算出满足<GL>A+<GL>B=0的<GL>B,或者,可以由第三方设备生成满足<GL>A+<GL>B=0的<GL>A和<GL>B,并将分片<GL>A发送给A方的设备以及将分片<GL>B发送给B方的设备。对于GR=G,A方的设备可以在本地计算第一梯度向量的分片{<gi>A}中各元素之和,得到第一梯度和G的分片<G>A作为初始化的GL的分片<GL>A,以及,B方的设备可以在本地计算第一梯度向量的分片{<gi>B}中各元素之和,得到第一梯度和G的分片<G>B作为初始化的GR的分片<GR>B。同理,A方的设备可以在本地计算第一梯度向量的分片{<hi>A}中各元素之和,得到第一梯度和H的分片<H>A作为初始化的HL的分片<HL>A,以及,B方的设备可以在本地计算第一梯度向量的分片{<hi>B}中各元素之和,得到第一梯度和H的分片<H>B作为初始化的HR的分片<HR>B。
然后是K个分组分别对应的梯度和的计算,以第一梯度为例,A方/B方的设备可以按<GL>A=<GL>A +<Gk>A以及<GR>A=<GR>A -<Gk>A迭代计算,以得到K个分组分别对应的左子树第一梯度和的分片以及右子树第一梯度和的分片。同理,A方/B方的设备可以按<HL>A=<HL>A+<Hk>A以及<HR>A=<HR>A -<Hk>A迭代计算,以得到K个分组分别对应的左子树第二梯度和的分片以及右子树第二梯度和的分片。
获得GL、GR、HL、HR的分片后,A方/B方的设备可以计算分裂增益的分片。在一些实施例中,节点对应的子目标函数可以如下所示:
其中,λ表示预设系数,G表示该节点下所有样本的第一梯度之和,H表示该节点下所有样本的第二梯度之和。相应地,对于该节点,基于某特征下的某分组对应的特征值将属于该节点的样本划分到左右两棵子树后,分裂增益Gain的计算式如下:
其中,对不同分裂增益Gain进行作差比较时
作为常量会被抵消,故在实际运算时可以将分裂增益Gain中的常量
忽略。另外,由于本说明书中数据的拆分基于加法进行,在涉及将数据拆分成分片的地方都会将拆解前的计算式等效成泰勒展式。例如,这里在将分裂增益的计算式中的常量
忽略掉的基础上,再对
进行泰勒展开,得到如图4所示的分裂增益的等效计算式如下:
其中,Gain的下标k既可以作为相应分组的标识,也可以作为该分组对应的特征值。上述计算式中的输入(如GL)/输出(即Gaink)都包含两个分片,A方和B方各执一片。将输入的分片代入上述计算式后,展开式中涉及两类乘积项的计算:一类可称为本地乘积项,本地乘积项的两个因子属于同一方(A方/B方)的分片数据,因此可由一方的设备独立完成计算;另一类可称为交叉乘积项,交叉乘积项的两个因子属于不同方的分片数据,即一个因子属于A方的分片数据而另一个因子属于B方的分片数据,因此为了保护双方的数据隐私,A方和B方可通过运行两方安全乘法协议来计算交叉乘积项的两个分片,A方和B方各执一片以获得输出的分片。例如,GL 2=(<GL>A+<GL>B) 2=<GL>A 2+<GL>A*<GL>B+<GL>B*<GL>A+<GL>B 2,其中,<GL>A 2和<GL>B 2为本地乘积项,A方可以在本地计算<GL>A 2,B方可以在本地计算<GL>B 2,<GL>A*<GL>B和<GL>B*<GL>A为交叉乘积项,A方和B方可通过两方安全乘法协议计算交叉乘积项的分片。
前文提到,通过在同一特征下遍历分组(图4中用特征值k标识分组)以及遍历(NA+NB)个特征(图4中记为j),A方和B方中的每一方都会获得(NA+ NB)组第一梯度和的分片以及(NA+ NB)组第二梯度和的分片,每组第一/第二梯度的分片包含的分片的数量等于相应特征下的分组的数量K。进而,A方和B方中的每一方都会获得(NA+ NB)组分裂增益的分片,每组分裂增益包括包含的分片的数量等于相应特征下的分组的数量K。其中,不同特征下的分组的数量K可能不同。
参考图5,图5示出了各特征下的各分组分别对应的分裂增益的大小比较。Gain的下标j表示特征值,下标k表示分组(也表示该分组对应的特征值)。通过遍历特征对j1、j2以及分组对k1、k2,即对(NA+ NB)组分裂增益中的分裂增益进行两两比较,从而选择最大分裂增益对应的特征及分组进行分裂。其中,k1是特征j1的特征值、k2是特征j2的特征值,j1和j2可以是同一特征,但该特征下的分组k1、k2是不同的分组。基于决策树的分裂(或训练)目标,可以理解,当基于图4所示的分裂增益的等效计算式得到分裂增益,分裂增益越大,意味着其对应的特征及分裂阈值(或特征值)越适宜作为该节点的分裂条件。
由于A方和B方均只有Gainj1,k1、Gainj2,k2的一个分片,A方和B方可以通过多方安全比较协议来比较两个分裂增益的大小。如图5所示,约定好比较的两个分裂增益对应的同一特征j1及分组k2后,A方的设备可以计算<v>A=<Gainj1,k1>A-<Gainj2,k2>A,B方的设备可以计算<v>B=<Gainj1,k1>B-<Gainj2,k2>B。进而,A方的设备和B方的设备可以按照多方安全比较协议进行交互,以在不泄露<v>A和<v>B的具体数值的前提下,确定<v>A和<v>B的大小关系。若<v>A大于(或不小于)<v>B,则“保留”特征j1以及特征值k1。否则,“保留”特征j2以及特征值k2。双方再基于保留的特征及特征值的分片,与下一个特征及其特征值进行比较,以此类推,直到完成了全部的特征及其特征值分别对应的分裂增益的比较,最后双方保留的特征及其特征值分片对应该节点最优分裂条件。当然,也可以是A方的设备计算<v>A= <Gainj2,k2>A -<Gainj1,k1>A,以及B方的设备计算<v>B=<Gainj2,k2>B-<Gainj1,k1>B。相应地,若<v>A大于(或不小于)<v>B,则优先按特征j2以及特征值k2待分裂节点分裂待分裂节点。否则,按特征j1以及特征值k1分裂待分裂节点。
参考图6,对于任一节点(记为X),当确定节点X的分裂参数(最大分裂增益对应的特征及特征值)后,A方和B方中只有一方会记录此分裂参数,因为节点X只会按(某一方的)一个特征进行分裂。不妨假设确定的分裂参数为j1、k1且特征j1为A方的特征,则只有A方的设备可以记录节点X的分裂参数。仅作为示例,如图6所示,A方记录的分裂信息split(X,j1,k1)指示节点X的分裂参数为己方特征j1及特征值k1,B方记录的分裂信息split(X,dummy,dummy)指示节点X为非本地分裂节点,即B方的树模型中节点X的参数未知。可以理解,A方和B方可各自根据记录的各节点的分裂信息确定各节点是否为本地分裂节点以及确定本地分裂节点的(分裂)参数。
应当理解,关于节点分裂,A方和B方可以达成一些共识:1.A方和B方可以约定好要训练的树模型的结构,如决策树数量以及每棵树的节点数量、节点间的连接关系、节点位置、深度等,相应地,在一些场景下,A方和B方可以确定当前操作是否针对同一决策树或针对同一节点,例如,A方和B方可以对树模型中的各决策树进行统一标识(如编号),又如,A方和B方可以对同一决策树的各节点进行统一标识(如编号);2.A方和B方可以在不泄密的前提下约定好双方特征的标识及各特征下各分组的标识,例如,假设A方的特征包括年龄、身高,B方的特征包括距离、方位,可以用A1、A2标识年龄、身高以及用B1、B2标识距离、方位,如此,B方只知道A1、A2是A方的两个特征,A方也只知道B1、B2是B方的两个特征,具体地,A方和B方通过特征标识以及分组标识既可以确定获得的分裂增益是否对应同一特征及分组(特征值),又可以确定分裂增益对应哪一方的特征。
仍以节点X按A方的特征j1以及特征值k1进行分裂为例,A方的设备还需要根据所述M个样本的特征j1的特征值以及特征值k1的大小关系,将所述M个样本即样本集{i}划分成与左子树对应的左子集和与右子树对应的右子集,以使双方可以获得节点X的子节点(即左右子树)的第一/第二梯度向量的分片以及标志向量的分片。其中,若子节点继续分裂,则该子节点的第一/第二梯度向量的分片以及标志向量的分片可用于与该子节点的分裂相关的计算,具体细节即可参考图4-6及其相关描述。若子节点不再继续分裂,即成为叶节点,则A方和B方可以基于该子节点(即该叶节点)的第一/第二梯度向量的分片协同计算叶节点权值的两个分片,A方和B方各执一片,具体细节可以参考图8及其相关描述。
如图6所示,A方的设备可以生成节点X的左子树向量
和右子树向量
,其中,左子树向量
指示根据最大分裂增益对应的特征及特征值划分样本集得到的左子集中的样本,右子树向量
指示根据最大分裂增益对应的特征及特征值划分样本集得到的右子集中的样本。可以理解,左/右子树向量的位数(维度)可以是M,每一位对应一个样本,通常情况下属于左子集的样本对应的左子集向量位置1且其余左子集向量位均置0,同理属于右子集的样本对应的右子集向量位置1且其余右子集向量位均置0。由于样本要么属于左子集要么属于右子集,满足
+
=1。A方的设备将节点X的左子树向量
拆分成分片
和分片
,将分片
发送给B方的设备并(至少)保留分片
。同理,节点X的右子树向量
被A方拆分成分片
和分片
,分片
保存于A方,分片
保存于B方。
沿用前文的描述方式,以左子树为例,假设在C方的设备上计算节点X 的左子树的标志向量{s
i,L}、第一梯度向量{g
i,L}、第二梯度向量{h
i,L},如图6所示,C方的设备可以:计算节点X的标志向量{s
i,X}和左子树向量
按位相乘的结果,得到节点X 的左子树的标志向量{s
i,L};计算节点X的第一梯度向量{g
i,X}和节点X的左子树的标志向量{s
i,L}按位相乘的结果,得到节点X 的左子树的第一梯度向量{g
i,L};计算节点X的第二梯度向量{h
i,X}和节点X的左子树的标志向量{s
i,L}按位相乘的结果,得到节点X 的左子树的第二梯度向量{h
i,L}。
同理,C方的设备可以计算得到节点X 的右子树的标志向量{si,R}、第一梯度向量{gi,R}和第二梯度向量{hi,R}。
参考前文的相关描述,以左子树为例,A方的设备和B方的设备可以按照多方安全计算协议进行交互,以:基于节点X的标志向量{s
i,X}的分片和左子树向量
的分片,计算节点X的左子树的标志向量{s
i,L}的分片;基于节点X的第一梯度向量{gi,X}的分片和节点X的左子树的标志向量{s
i,L}的分片,计算节点X 的左子树的第一梯度向量{g
i,L}的分片;基于节点X的第二梯度向量{hi,X}的分片和节点X的左子树的标志向量{s
i,L}的分片,计算节点X 的左子树的第二梯度向量{h
i,L}的分片。例如,将s
i,X=<s
i,X>
A+<s
i,X>
B和
代入 s
i,X*
,得到
,其展开形式如下:
。
其中,
可在A方本地计算并作为A方的输出分片<s
i,X>
A的一部分,
可在B方本地计算并作为B方的输出分片<s
i,X>
B的一部分,交叉乘积项
和
的分片可通过两方安全乘法协议计算,A方获得的
和
的分片作为A方的输出分片<s
i,X>
A的一部分,B方获得的
和
的分片作为B方的输出分片<s
i,X>
B的一部分。
针对单个决策树,各节点的分裂可按图4至图6所示的分裂环节依次进行,直至满足生长终止条件。应当理解,生长终止意味着单棵树上不再分裂出子节点,即已获得单棵树上的所有叶节点。在一些实施例中,生长终止条件可以包括单棵树的深度达到预设深度。
参考图7,图7示出了等效模型的叶节点权值的分片(即A方/B方的树模型的叶节点权值)的计算方法。对于训练获得的同一叶节点,A方的设备可以计算该叶节点的第一梯度向量{gi}的分片{<gi>A}中各元素之和,得到该叶节点的第一梯度和G的分片GA,B方的设备可以计算该叶节点的第一梯度向量{gi}的分片{<gi>B}中各元素之和,得到该叶节点的第一梯度和G的分片GB。同理,A方的设备可以计算该叶节点的第二梯度向量{hi}的分片{<hi>A}中各元素之和,得到该叶节点的第二梯度和H的分片HA,B方的设备可以计算该叶节点的第二梯度向量{hi}的分片{<hi>B}中各元素之和,得到该叶节点的第二梯度和H的分片HB。在一些实施例中,对于等效模型,叶节点权值的计算方式如下:
其中,w表示叶节点权值,G表示该叶节点的第一梯度和,H表示该叶节点的第二梯度和,λ表示预设系数。
需要注意的是,由于数据的拆分基于加法进行,叶节点权值w的分片w
A和w
B的计算方式可通过拆解泰勒展式
得到,其中,w
A作为A方的树模型中叶节点的权值,w
B作为B方的树模型中同一叶节点的权值。关于涉及乘法运算的计算式的拆解,本说明书的前述实施例中已有多处说明,此处及后文将不再赘述。
在XGB框架下,任一方的树模型和等效模型均包括多棵树。参考图8,当A方和B方各自完成一棵树的训练后,可更新所述M个样本的预测分值的分片,以计算下一棵树的根节点的第一梯度向量{g
i}的分片和第二梯度向量{h
i}的分片。图8中,pred
i,t表示样本i(即编号为i的样本)沿等效模型中第t棵树上的预测路径抵达的叶节点(即样本i所属的叶节点,也称为样本i的预测叶节点)的权值。对于第t棵树,
,其中,s
i,n表示等效模型中第t棵树上编号为n的叶节点的标志向量{s
i,n}中与样本i对应的元素,Nt表示第t棵树的叶节点数量。M个样本在等效模型的第t棵树上的预测叶节点的权值可构成预测权值向量{pred
i,t}。
A方的设备和B方的设备可以按照多方安全计算协议进行交互,以基于第t棵树的各叶节点的标志向量{si,n}的分片和等效模型中第t棵树的叶节点权值向量{wn}的分片(即A方/B方的树模型中第t棵树的叶节点权值向量),计算predi,t的分片。进而,如图8所示,A方的设备可以将predi,t的分片<predi,t>A累加到当前样本i的预测分值predi的分片<predi>A上,以更新样本i的预测分值predi的分片<predi>A。可以理解,当前样本i的预测分值predi为等效模型的基础分值和样本i在等效模型的前t-1棵树上的预测叶节点的权值之和。特别地,样本i的预测分值predi的初始值为等效模型的基础分值f0,即,A方的分片<predi>A的初始值为A方的树模型的初始分值<f0>A,B方的分片<predi>B的初始值为B方的树模型的初始分值<f0>B。M个样本的预测分值可构成预测分值向量{predi},相应地,A方的设备可获得更新后的预测分值向量{predi}的分片{<predi>A},B方的设备可获得更新后的预测分值向量{predi}的分片{<predi>B}。
在一些实施例中,样本的预测值
,其中,pred表示该样本的预测分值。相应地,由于数据的拆分基于加法进行,可以采用泰勒展式
。对于两方训练,A方的设备可以按
更新样本i的预测值的分片,B方的设备可以按
更新样本i的预测值的分片。
在一些实施例中,样本的损失函数
,由此可推导出样本i对应的第一梯度
以及样本i对应的第二梯度
。对于两方训练,A方的设备可以按
更新用于训练下一棵树的样本i对应的第一梯度的分片,从而获得下一棵树的根节点的第一梯度向量的分片{<g
i>
A}。同理,B方的设备可以按
更新样本i对应的第一梯度的分片,以获得要训练的下一棵树的根节点的第一梯度向量的分片{<g
i>
B}。鉴于
的拆解涉及到交叉乘积项,A方的设备和B方的设备可以按照多方安全计算协议进行交互,以基于更新后样本i的预测值
的分片以及标签值y
i的分片,计算用于训练下一棵树的样本i对应的第二梯度的分片,从而获得下一棵树的根节点的第二梯度向量的分片{<h
i>
A}。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
图10是根据本说明书一些实施例所示的两方决策树训练系统的模块图。系统200可在第一方的设备上实现,所述第一方可以是A方和B方中的任一方,第二方为A方和B方中的另一方。如图10所示,系统200可以包括第一获得模块210、同态加密模块220、第一密文处理模块230、第二密文处理模块240、分裂增益分片计算模块250、分裂增益比较模块260、左右子树向量分片获得模块270、子节点标志向量分片计算模块280和子节点梯度向量分片计算模块290。
针对分裂的任一节点(记为X),系统200中各模块的功能如下:
第一获得模块210可以用于获得节点X的标志向量的第一分片、第一梯度向量的第一分片以及第二梯度向量的第一分片。其中,标志向量指示属于相应节点的样本,第一梯度向量包括属于相应节点的样本对应的第一梯度,第二梯度向量包括属于相应节点的样本对应的第二梯度。
同态加密模块220可以用于:用第一方的公钥对节点X的第一梯度向量的第一分片进行同态加密,得到节点X的第一梯度向量的第一分片的第一同态密文;用第一方的公钥对节点X的第二梯度向量的第一分片进行同态加密,得到节点X的第二梯度向量的第一分片的第一同态密文;将节点X的第一梯度向量的第一分片的第一同态密文以及第二梯度向量的第一分片的第一同态密文发送给第二方的设备;用第二方的公钥对节点X的第一梯度向量的第一分片进行同态加密,得到节点X的第一梯度向量的第一分片的第二同态密文;用第二方的公钥对节点X的第二梯度向量的第一分片进行同态加密,得到节点X的第二梯度向量的第一分片的第二同态密文;从第二方的设备接收节点X的第一梯度向量的第二分片的第二同态密文以及第二梯度向量的第二分片的第二同态密文。
对于第一方的任一特征,第一密文处理模块230可以用于:对于按该特征的特征值划分所述样本集得到的多个第一分组中的每一个,计算节点X的第一梯度向量的第一分片的第二同态密文以及第二分片的第二同态密文中与属于该第一分组的样本对应的元素之和,得到该第一分组对应的第一梯度和的第二同态密文,将该第一分组对应的第一梯度和的第二同态密文转换成该第一分组对应的第一梯度和的第一分片以及该第一分组对应的第一梯度和的第二分片的第二同态密文,将该第一分组对应的第一梯度和的第二分片的第二同态密文发送给第二方的设备,以使第二方的设备能够获得该第一分组对应的第一梯度和的第二分片;计算节点X的第二梯度向量的第一分片的第二同态密文以及第二分片的第二同态密文中与属于该第一分组的样本对应的元素之和,得到该第一分组对应的第二梯度和的第二同态密文,将该第一分组对应的第二梯度和的第二同态密文转换成该第一分组对应的第二梯度和的第一分片以及该第一分组对应的第二梯度和的第二分片的第二同态密文,将该第一分组对应的第二梯度和的第二分片的第二同态密文发送给第二方的设备,以使第二方的设备能够获得该第一分组对应的第二梯度和的第二分片。
对于第二方的任一特征,第二密文处理模块240可以用于:对于按该特征划分的特征值划分所述样本集得到的多个第二分组中的每一个,从第二方的设备获得该第二分组对应的第一梯度和的第一分片的第一同态密文,以及该第二分组对应的第二梯度和的第一分片的第一同态密文,利用第一方的私钥解密该第二分组对应的第一梯度和的第一分片的第一同态密文,得到该第二分组对应的第一梯度和的第一分片,利用第一方的私钥解密该第二分组对应的第二梯度和的第一分片的第一同态密文,得到该第二分组对应的第二梯度和的第一分片,其中,该第二分组对应的第一梯度和等于节点X的第一梯度向量的第一分片和第二分片中与属于该第二分组的样本对应的元素之和,该第二分组对应的第二梯度和等于节点X的第二梯度向量的第一分片和第二分片中与属于该第二分组的样本对应的元素之和。
分裂增益分片计算模块250可以用于按照多方安全计算协议与第二方的设备交互,以基于各特征下的各分组分别对应的第一梯度和的第一分片以及第二梯度和的第一分片,计算各特征下的各分组分别对应的分裂增益的第一分片。
分裂增益比较模块260可以用于按照多方安全比较协议与第二方的设备交互,以基于各特征下的各分组分别对应的分裂增益的第一分片,确定最大分裂增益,并根据所述最大分裂增益对应的特征及分组记录节点X的分裂信息。
左右子树向量分片获得模块270可以用于:当所述最大分裂增益对应第一方的特征时,生成节点X的左子树向量和右子树向量,所述左子树向量指示根据所述最大分裂增益对应的特征及分组划分所述样本集得到的左子集中的样本,所述右子树向量指示根据所述最大分裂增益对应的特征及分组划分所述样本集得到的右子集中的样本,左子集与左子树对应,右子集与右子树对应;将所述左子树向量拆分成第一分片和第二分片,并将所述左子树向量的第二分片发送给第二方的设备;将所述右子树向量拆分成第一分片和第二分片,并将所述右子树向量的第二分片发送给第二方的设备;当所述最大分裂增益对应第二方的特征时,从第二方的设备接收节点X的左子树向量的第一分片和右子树向量的第一分片。
子节点标志向量分片计算模块280可以用于:按照多方安全计算协议与第二方的设备交互,以基于节点X的标志向量的第一分片以及所述左子树向量的第一分片,计算节点X的左子树的标志向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于节点X的标志向量的第一分片以及所述右子树向量的第一分片,计算节点X的右子树的标志向量的第一分片。
子节点梯度向量分片计算模块290可以用于:按照多方安全计算协议与第二方的设备交互,以基于节点X的第一梯度向量的第一分片以及节点X的左子树的标志向量的第一分片,计算节点X的左子树的第一梯度向量的第一分片,按照多方安全计算协议与第二方的设备交互,以基于节点X的第二梯度向量的第一分片以及节点X的左子树的标志向量的第一分片,计算节点X的左子树的第二梯度向量的第一分片;按照多方安全计算协议与第二方的设备交互,以基于节点X的第一梯度向量的第一分片以及节点X的右子树的标志向量的第一分片,计算节点X的右子树的第一梯度向量的第一分片,按照多方安全计算协议与第二方的设备交互,以基于节点X的第二梯度向量的第一分片以及节点X的右子树的标志向量的第一分片,计算节点X的右子树的第二梯度向量的第一分片。
关于系统200及其模块的更多细节,可以参考图3至图8及其相关描述。
应当理解,图10所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,第一密文处理模块230和第二密文处理模块240可以是一个系统中的不同模块,也可以是一个模块实现这两个模块的功能。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)提供了一种两方决策树训练方法,可以保护双方的数据隐私。(2)利用两方的样本数据进行训练,可以提升模型效果。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。