保护数据隐私的双方联合训练业务预测模型的方法和装置
技术领域
本说明书一个或多个实施例涉及数据安全和机器学习领域,具体地,涉及双方联合训练业务预测模型的方法和装置。
背景技术
机器学习所需要的数据往往会涉及到多个领域。例如在基于机器学习的商户分类分析场景中,电子支付平台拥有商户的交易流水数据,电子商务平台存储有商户的销售数据,银行机构拥有商户的借贷数据。数据往往以孤岛的形式存在。由于行业竞争、数据安全、用户隐私等问题,数据整合面临着很大阻力,将分散在各个平台的数据整合在一起训练机器学习模型难以实现。在保证数据不泄露的前提下,使用多方数据联合训练机器学习模型变成目前的一大挑战。
常用的机器学习模型包括,逻辑回归模型,线性回归模型,以及神经网络模型等,其中逻辑回归模型可以有效地执行样本分类预测等任务,线性回归模型可以有效地预测样本的回归值,神经网络模型可以通过多层神经元的组合,执行各种预测任务。以上这些模型的训练过程中,都会涉及利用特征数据与模型参数数据之间的运算得到预测结果,以及根据预测结果确定出梯度,进而调整模型参数的过程。在多方共同训练机器学习模型的情况下,如何在不泄露各方隐私数据,包括特征数据和模型参数数据,的情况下,协同进行上述各个阶段的运算,是实际要解决的问题。
因此,希望提供改进的方案,在双方联合训练业务预测模型的情况下,保证各方的隐私数据不泄露,确保数据安全。
发明内容
本说明书一个或多个实施例描述了双方联合训练业务预测模型的方法和装置,训练过程通过同态加密和添加混淆的方式,保证数据隐私不泄露,确保联合训练中隐私数据的安全。
根据第一方面,提供了一种保护数据隐私的双方联合训练业务预测模型的方法,所述双方包括第一方和第二方,所述第一方存储有多个业务对象的第一特征部分构成的第一特征矩阵XA,并维护对应的第一参数部分WA;所述第二方存储有所述多个业务对象的第二特征部分构成的第二特征矩阵XB,和标签值构成的标签向量Y,并维护对应的第二参数部分WB;所述方法应用于所述第二方,包括:
本地计算第二特征矩阵XB与第二参数部分WB的第二乘积结果;
从所述第一方接收第一加密乘积,该第一加密乘积为,使用所述第一方的第一公钥和同态加密算法,对第一特征矩阵XA与第一参数部分WA的第一乘积结果加密得到的;
基于对所述第一加密乘积,第二乘积结果,以及所述标签向量进行同态运算,得到加密误差向量E;
生成第二掩码向量,将其同态添加到所述加密误差向量E中,得到加密混淆误差向量,并将其发送给所述第一方;
用所述第二掩码向量,与所述第一方中的第一特征矩阵XA进行安全矩阵乘法,得到矩阵乘积的两个分片中的第二乘积分片,所述两个分片中的第一乘积分片由所述第一方获得;
基于所述第二乘积分片,生成第二分片向量;
将所述第二分片向量发送给所述第一方,以使得所述第一方根据所述加密混淆误差向量,所述第一乘积分片以及所述第二分片向量,得到第一梯度,用于更新第一参数部分WA。
在各种实施例中,所述业务对象包括以下之一:用户,商户,商品,事件;所述业务预测模型用于预测所述业务对象的分类或回归值。
在一个实施例中,所述业务预测模型为线性回归模型;在这样的情况下,可以通过以下方式得到加密误差向量E:基于所述第一加密乘积和所述第二乘积结果的同态加和操作,得到加密预测结果;计算该加密预测结果和所述标签向量Y的加密值的同态差值,作为所述加密误差向量E。
在另一实施例中,所述业务预测模型为逻辑回归模型;在这样的情况下,所述第二乘积结果包括,第二特征矩阵XB与第二参数部分WB的若干阶第二乘积;所述第一乘积结果包括,第一特征矩阵XA与第一参数部分WA的若干阶第一乘积。如此,可以通过以下方式得到加密误差向量E:根据sigmoid函数的若干阶泰勒展开形式,基于所述第一加密乘积和所述第二乘积结果的同态运算得到加密预测结果,对该加密预测结果和所述标签向量Y的加密值进行同态差值运算,得到所述加密误差向量E。
在一种实施方式中,基于所述第二乘积分片,生成第二分片向量具体包括:生成第三掩码向量,并将其添加到所述第二乘积分片中,得到所述第二分片向量。相应的,在这样的实施方式中,在将所述第二分片向量发送给所述第一方之后,方法还包括:从所述第一方接收第一梯度二次混淆向量,所述第一梯度二次混淆向量由所述第一方根据所述加密混淆误差向量,所述第一乘积分片,所述第二分片向量,以及自身生成的第四掩码向量得到;从所述第一梯度二次混淆向量中抵消所述第三掩码向量,得到第一梯度一次混淆向量;将所述第一梯度一次混淆向量发送给所述第一方,使其根据该第一梯度一次混淆向量和所述第四掩码向量,恢复得到所述第一梯度。
根据一种实施方式,上述方法还包括获取第二梯度的过程,其包括:对该加密误差向量E和第二特征矩阵XB进行同态操作下的矩阵相乘,得到对第二梯度加密的第二加密梯度;在所述第二加密梯度基础上同态添加第一掩码向量,生成第二加密混淆梯度,并将其发送给所述第一方;从所述第一方接收针对第二加密混淆梯度解密的第二混淆梯度;根据所述第二混淆梯度和所述第一掩码向量,恢复得到第二梯度;根据所述第二梯度,更新所述第二参数部分。
根据第二方面,提供了一种保护数据隐私的双方联合训练业务预测模型的方法,所述双方包括第一方和第二方,所述第一方存储有多个业务对象的第一特征部分构成的第一特征矩阵XA,并维护对应的第一参数部分WA;所述第二方存储有所述多个业务对象的第二特征部分构成的第二特征矩阵XB,和标签值构成的标签向量Y,并维护对应的第二参数部分WB;所述方法应用于所述第一方,包括:
本地计算第一特征矩阵XA与第一参数部分WA的第一乘积结果;
使用所述第一方的第一公钥和同态加密算法,对所述第一乘积结果进行加密,得到第一加密乘积,将该第一加密乘积发送给第二方;
从所述第二方接收加密混淆误差向量,所述加密混淆误差向量是在第二方计算得到的加密误差向量E基础上,同态添加第二掩码向量而得到的;所述加密误差向量E基于所述第一加密乘积,第二方本地计算的第二特征矩阵XB与第二参数部分WB的第二乘积结果,以及所述标签向量的同态运算而得到;
利用与所述第一公钥对应的第一私钥解密所述加密混淆误差向量,得到混淆误差向量,并计算所述混淆误差向量和所述第一特征矩阵XA的乘积,得到第一混淆梯度;
用所述第一特征矩阵XA,与所述第二方中的第二掩码向量进行安全矩阵乘法,得到矩阵乘积的两个分片中的第一乘积分片,所述两个分片中的第二乘积分片由所述第二方获得;
从所述第二方接收基于所述第二乘积分片生成的第二分片向量;
根据所述第一混淆梯度,所述第一乘积分片以及所述第二分片向量,得到第一梯度,并利用所述第一梯度,更新第一参数部分WA。
在一个实施例中,第二分片向量等于所述第二乘积分片;在这样的情况下,可以从所述第一混淆梯度中,减去所述第一乘积分片和所述第二乘积分片,得到所述第一梯度。
在另一实施例中,第二分片向量为,所述第二方在所述第二乘积分片基础上添加第三掩码向量的结果;在这样的情况下,可以通过以下方式得到第一梯度:生成第四掩码向量;从所述第一混淆梯度中,减去所述第一乘积分片和所述第二分片向量,再添加所述第四掩码向量,得到第一梯度二次混淆向量;将所述第一梯度二次混淆向量发送给所述第二方;从所述第二方接收第一梯度一次混淆向量,该第一梯度一次混淆向量由第二方从所述第一梯度二次混淆向量中抵消所述第三掩码向量而得到;从所述第一梯度一次混淆向量中消减所述第四掩码向量,得到所述第一梯度。
根据一种实施方式,上述方法还包括辅助第二方获取第二梯度的过程,该过程包括:从所述第二方接收,在第二加密梯度基础上同态添加第一掩码向量生成的第二加密混淆梯度,其中所述第二加密梯度基于所述加密误差向量E和第二特征矩阵XB的同态矩阵相乘而得到;用所述第一私钥解密所述第二加密混淆梯度,得到第二混淆梯度;将所述第二混淆梯度发送给所述第二方,以便于第二方根据从所述第二混淆梯度中恢复出的第二梯度更新所述第二参数部分。
根据第三方面,提供了一种保护数据隐私的双方联合训练业务预测模型的装置,所述双方包括第一方和第二方,所述第一方存储有多个业务对象的第一特征部分构成的第一特征矩阵XA,并维护对应的第一参数部分WA;所述第二方存储有所述多个业务对象的第二特征部分构成的第二特征矩阵XB,和标签值构成的标签向量Y,并维护对应的第二参数部分WB;所述装置部署于所述第二方,包括:
第二乘积计算单元,配置为本地计算第二特征矩阵XB与第二参数部分WB的第二乘积结果;
第一乘积接收单元,配置为从所述第一方接收第一加密乘积,该第一加密乘积为,使用所述第一方的第一公钥和同态加密算法,对第一特征矩阵XA与第一参数部分WA的第一乘积结果加密得到的;
加密误差计算单元,配置为基于对所述第一加密乘积,第二乘积结果,以及所述标签向量进行同态运算,得到加密误差向量E;
第二混淆单元,配置为生成第二掩码向量,将其同态添加到所述加密误差向量E中,得到加密混淆误差向量,并将其发送给所述第一方;
安全乘法单元,配置为用所述第二掩码向量,与所述第一方中的第一特征矩阵XA进行安全矩阵乘法,得到矩阵乘积的两个分片中的第二乘积分片,所述两个分片中的第一乘积分片由所述第一方获得;
第二向量生成单元,配置为基于所述第二乘积分片,生成第二分片向量;
第二发送单元,配置为将所述第二分片向量发送给所述第一方,以使得所述第一方根据所述加密混淆误差向量,所述第一乘积分片以及所述第二分片向量,得到第一梯度,用于更新第一参数部分WA。
根据第四方面,提供了一种保护数据隐私的双方联合训练业务预测模型的装置,所述双方包括第一方和第二方,所述第一方存储有多个业务对象的第一特征部分构成的第一特征矩阵XA,并维护对应的第一参数部分WA;所述第二方存储有所述多个业务对象的第二特征部分构成的第二特征矩阵XB,和标签值构成的标签向量Y,并维护对应的第二参数部分WB;所述装置部署于所述第一方,包括:
第一乘积计算单元,配置为本地计算第一特征矩阵XA与第一参数部分WA的第一乘积结果;
第一乘积加密单元,配置为使用所述第一方的第一公钥和同态加密算法,对所述第一乘积结果进行加密,得到第一加密乘积,将该第一加密乘积发送给第二方;
第一接收单元,配置为从所述第二方接收加密混淆误差向量,所述加密混淆误差向量是在第二方计算得到的加密误差向量E基础上,同态添加第二掩码向量而得到的;所述加密误差向量E基于所述第一加密乘积,第二方本地计算的第二特征矩阵XB与第二参数部分WB的第二乘积结果,以及所述标签向量的同态运算而得到;
第一解密单元,配置为利用与所述第一公钥对应的第一私钥解密所述加密混淆误差向量,得到混淆误差向量,并计算所述混淆误差向量和所述第一特征矩阵XA的乘积,得到第一混淆梯度;
安全乘法单元,配置为用所述第一特征矩阵XA,与所述第二方中的第二掩码向量进行安全矩阵乘法,得到矩阵乘积的两个分片中的第一乘积分片,所述两个分片中的第二乘积分片由所述第二方获得;
第二接收单元,配置为从所述第二方接收基于所述第二乘积分片生成的第二分片向量;
第一梯度获取单元,配置为根据所述第一混淆梯度,所述第一乘积分片以及所述第二分片向量,得到第一梯度,并利用所述第一梯度,更新第一参数部分WA。
根据第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。
根据第六方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
根据本说明书实施例提供的方法和装置,参与联合训练的双方各自拥有一部分特征数据。在联合训练的迭代过程中,通过同态加密传递特征和参数的计算结果,并通过添加混淆向量的方式计算和传递梯度,确保训练过程中不泄露任何隐私数据明文,增强了训练过程中隐私数据的安全性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的双方联合训练模型的第一阶段示意图;
图3示出根据一个实施例的模型迭代训练过程的第二阶段示意图;
图4示出根据一个实施例的模型迭代训练过程的第三阶段示意图;
图5示出根据另一实施例的模型迭代训练过程的第三阶段示意图;
图6示出根据一个实施例的部署在第二方中的联合训练装置的示意性框图;
图7示出根据一个实施例的部署在第一方中的联合训练装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
如前所述,典型的机器学习模型的训练过程包括,利用特征数据与模型参数数据之间的运算得到预测结果,根据预测结果确定出梯度,进而根据梯度调整模型参数的过程。
具体地,假设用于训练机器学习模型的训练数据集有n个样本,每个样本的样本特征表示为x(x可以是一个向量),标签表示为y,则该训练数据集可表示为:
通过各个样本的样本特征x与模型参数w的运算,可以得到对该样本的预测值
。如果机器学习模型为线性回归模型,预测值可表示为:
;如果机器学习模型为逻辑回归模型,预测值可表示为:
。
在使用最大似然概率及随机梯度下降方式的情况下,得到的梯度可以表示为:
其中,
为预测值,y为标签值,上标T表示转置,x为特征;于是,可以根据该梯度,更新参数w,从而实现模型训练。
从以上过程可以看到,训练过程包含几项核心的运算:计算样本特征x与模型参数w的乘积xw,该乘积xw用于确定出预测值
;通过
得到预测误差E;然后根据预测误差E与x的乘积,得到梯度。
在单方独立训练模型的情况下,可以容易地进行上述的运算。但是在多方联合训练机器学习模型的情况下,同一样本的特征可能分布在不同参与方中,每个参与方维护模型的一部分参数,如何在不泄露各方明文数据的情况下,实施上述各项运算,是实现联合训练中数据隐私保护的核心挑战。
针对上述问题,发明人提出,在双方联合训练机器学习模型的场景下,利用同态加密实现安全的协同训练。具体的,双方各自计算其特征矩阵与参数的乘积结果,加密后由拥有标签的一方进行同态运算,得到加密误差向量。然后,基于该加密误差向量,双方通过添加混淆元素的方式,得到各自的梯度,从而更新各自的模型参数,实现模型的训练。
图1为本说明书披露的一个实施例的实施场景示意图。如图1所示,双方联合训练的场景涉及参与方A和参与方B,或称为第一方和第二方。各个参与方均可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。双方要在保护数据隐私的情况下,联合训练一个业务预测模型。
第一方A存储有训练样本集中n个业务对象的一部分特征,称为第一特征部分。假定每个业务对象的第一特征部分为d1维向量,那么n个业务对象的第一特征部分构成一个n*d1维的第一特征矩阵XA。第二方B存储有该n个业务对象的第二特征部分。假定每个业务对象的第二特征部分为d2维向量,那么n个业务对象的第二特征部分构成一个n*d2维的第二特征矩阵XB。假定第二方中还存储有n个业务对象的标签值,n个标签值构成一个标签向量Y。
例如,在一个示例性场景中,上述第一方A和第二方B为电子支付平台和银行机构,双方需要联合训练一个业务预测模型,来评估用户的信用等级。此时,业务对象即为用户。双方可以各自维护用户的一部分特征数据,例如,电子支付平台维护用户的电子支付和转账相关特征,构成上述的第一特征矩阵;银行机构维护用户的信贷记录方面的相关特征,构成上述的第二特征矩阵。此外,银行机构还具有用户信用等级的标签Y。
在另一个示例中,上述第一方A和第二方B为电子商务平台和电子支付平台,双方需要联合训练一个业务预测模型,来评估商户的欺诈风险。此时,业务对象即为商户。双方可以各自维护商户的一部分特征数据,例如,电子商务平台存储样本商户的销售数据作为一部分样本特征,该部分样本特征构成上述第一特征矩阵;电子支付平台维护商户的交易流水数据作为另一部分样本特,构成第二特征矩阵。电子支付平台还维护样本商户的标签(是或不是欺诈商户的标记),构成标签向量Y。
在其他场景示例中,业务对象还可以是待评估的其他对象,比如商品,交互事件(例如交易事件,登录事件,点击事件,购买事件),等等。相应的,参与方可以是维护有上述业务对象的不同特征部分的不同业务方。业务预测模型可以是针对相应业务对象进行分类预测或回归预测的模型。
需要理解,双方各自维护的业务对象特征属于隐私数据,在联合训练过程中,不可以进行明文交换,以保护隐私数据安全。并且,最终,第一方A希望训练得到用于处理第一特征部分的模型参数部分,称为第一参数部分WA;第二方希望训练得到用于处理第二特征部分的第二参数部分WB,这两部分参数共同构成业务预测模型。
为了在不泄露隐私数据的情况下,进行模型的联合训练,根据本说明书的实施例,如图1所示,在模型迭代过程中,第一方A和第二方B各自本地计算其特征矩阵与参数部分的乘积结果,于是第一方A计算得到PA,第二方计算得到PB。由于第二方拥有标签,第一方A将其计算结果PA用第一方的公钥进行同态加密后,发送给第二方B。第二方B基于加密的乘积结果[PA]a和PB以及标签向量Y之间的同态运算,计算得到加密误差向量E。
基于该加密误差向量E,第二方B通过在加密梯度中同态加入混淆向量,借助第一方A解密之后再去除混淆向量的方式,计算得到第二梯度GB,用于更新第二参数部分WB。针对第一方的梯度,则通过在加密误差向量E中同态加入混淆向量,再通过双方针对混淆向量和特征矩阵的安全矩阵乘法得到的乘积分片消除掉混淆向量的方式,得到针对第一方的第一梯度GA,用于更新第一参数部分WA。
在整个训练过程中,双方不进行特征数据和参数数据的明文交换,所有通信数据均为加密的数据或者加入有混淆的数据,如此,确保联合训练过程中隐私数据不会泄露,增强了数据的安全性。下面描述以上方案的具体实现过程。
图2示出根据一个实施例的双方联合训练模型的第一阶段示意图。该第一阶段对应于双方共同计算误差向量E的过程。图2场景中的第一方A和第二方B的数据持有状况与图1相同,不再赘述。
需要理解,在进行模型迭代训练之前,首先是初始化阶段。在该初始化阶段,第一方A生成用于同态加密的非对称密钥对,第一公钥PK-a和第一私钥SK-a,然后,将第一公钥PK-a发送给第二方B,保持第一私钥SK-a私密。类似的,第二方B生成第二公钥PK-b和第二私钥SK-b,然后,将第二公钥PK-b发送给第一方A,保持第二私钥SK-b私密。
此外,双方还对其模型参数进行初始化。具体的,第一方A初始化用于处理第一特征部分的第一参数部分WA。该第一参数部分WA可以通过随机生成的方式初始化得到。第二方B初始化生成用于处理第二特征部分的第二参数部分WB。
然后,进入图2所示的模型迭代训练过程的第一阶段。
在步骤S21,第一方A本地计算第一特征矩阵XA与第一参数部分WA的第一乘积结果PA。
在步骤S22,第一方A使用其第一公钥PK-a和同态加密算法,对第一乘积结果PA进行加密,得到第一加密乘积[PA]a。在本文上下文中,用方括号[]表示加密,角标表示加密所用的公钥。
在步骤S23,第一方A将该第一加密乘积[PA]a发送给第二方B。
在步骤S24,第二方B本地计算第二特征矩阵XB与第二参数部分WB的第二乘积结果PB。
然后,在步骤S25,第二方B基于对第一加密乘积[PA]a,第二乘积结果PB,以及标签向量Y进行同态运算,得到加密误差向量[E]a。
以上是双方协同计算误差向量的阶段。其中,步骤S24与步骤S21-S23,可以以任何合理的相对顺序执行,例如并行执行,在其之前执行,在其间执行,等等。
取决于所需要的业务预测模型的算法的不同,以上的计算可以有多种实现方式。
根据一种实施方式,业务预测模型采用线性回归模型。如前所述,线性回归模型下,预测值可表示为:
。此时,在步骤S21,第一方A计算的第一乘积结果P
A,为第一特征矩阵X
A与第一参数部分W
A的1阶乘积U
A,即:P
A=U
A =X
A˙W
A
在步骤S23,第一方A将[UA]a发送给第二方B。
相应的,在步骤S24,第二方B计算的第二乘积结果PB,为第二特征矩阵XB与第二参数部分WB的1阶乘积UB,即:PB=UB =XB˙WB
进一步地,在步骤S25,可以基于第一加密乘积[UA]a和第二乘积结果UB的同态加和操作,得到加密预测结果;并计算该加密预测结果和标签向量Y的同态差值,作为加密误差向量。即:
[E]a=[UA]a +[UB]a -[Y]a (2)
这里利用了同态加密算法的同态性,即,对明文进行运算后再加密,与加密后对密文进行相应的运算,结果是等价的。例如,用同样的公钥PK加密
和
得到
和
,如果满足:
那么则认为,该加密算法满足加法同态,其中
为对应的同态加操作。实践中,
操作可以对应于常规的加法,乘法等。例如,在Paillier算法中,
对应于常规乘法。以上同态加操作,为密文之间的同态加操作。
利用以上的同态性,在以上的公式(2)中,对第二乘积结果UB和标签向量Y,也分别采用第一方A的公钥PK-a同态加密,然后对上述密文进行同态加操作,得到加密误差向量[E]a。需要理解,公式(2)右侧的加减操作,均为密文之间的同态操作,其中同态减法为同态加操作的对应减操作(例如加上负值)。
一些同态加密算法还可以支持密文和明文之间的同态加操作。当然,密文和明文之间的同态加操作,和密文之间的同态加操作,一般对应于不同的常规运算。此时,也可以不必对第二乘积结果UB和标签向量Y进行加密,而是利用密文和明文的同态加操作,对第一加密乘积[UA]a密文和第二乘积结果UB和标签向量Y的明文,基于与公式(2)相似的运算逻辑进行同态操作,得到加密误差向量[E]a。
根据另一种实施方式,业务预测模型采用逻辑回归模型。本领域技术人员了解,在使用逻辑回归模型作为业务预测模型的情况下,预测值可表示为:
。可以看到,逻辑回归模型的预测值是基于非线性的sigmoid函数的,而非线性函数不利于同态加密等安全计算。
因此,在逻辑回归模型的情况下,为了便于进行线性计算,可以将其中的sigmoid函数进行泰勒Taylor展开。具体的,sigmod函数 1 / (1 + e^x)可以进行以下泰勒分解:
相应的,逻辑回归预测值可以展开为:
将以上预测值展开式代入公式(1)中可以得到梯度的形式,比如1阶展开下,梯度形式为
三阶展开的梯度形式为
如此,通过泰勒Taylor展开,将逻辑回归的预测值转换成了可以使用同态加密的方案。于是,可以根据计算精度要求,选择不同阶泰勒展开形式,根据泰勒展开形式,计算加密误差向量。
具体的,在一个实施例中,利用1阶泰勒展开计算误差和梯度。在这样的情况下,在以上步骤S21,第一方A计算的第一乘积结果PA仍然为1阶乘积UA,在步骤S24,第二方B计算的第二乘积结果PB仍然为1阶乘积UB。
不同的是,在步骤S25,根据1阶泰勒展开的形式,通过对第一加密乘积[UA]a,第二乘积结果UB和标签向量Y的同态运算,计算加密误差向量。具体的,参见以上公式(5)中的1阶泰勒展开,将其中的wx表示为UA+UB,可以如下计算得到加密误差向量[E]a:
[E]a=([UA]a +[UB]a)/4+[0.5-Y]a (7)
在另一实施例中,利用3阶泰勒展开计算误差和梯度。在这样的情况下,在以上步骤S21,第一方A计算的第一乘积结果PA包括,第一特征矩阵XA与第一参数部分WA的1阶到3阶乘积,即,PA包括UA,UA 2,UA 3。
在步骤S23,第一方A将第一乘积结果PA加密并发送给第二方B,由此,第二方B接收到[PA]a,其包括 [UA]a,[UA 2]a和[UA 3]a。
相应的,在步骤S24,第二方B计算的第二乘积结果PB包括,第二特征矩阵XB与第二参数部分WB的1阶到3阶乘积,即,PB包括UB,UB 2,UB 3。
然后在步骤S25,根据3阶泰勒展开的形式,通过对第一加密乘积[PA]a,第二乘积结果PB和标签向量Y的同态运算,计算加密误差向量。具体的,参见以上公式(6)中的3阶泰勒展开,将其中的wx表示为(UA+UB)并展开其3阶乘法,从而如下计算得到加密误差向量[E]a:
[E]a=([UA]a+UB)/4-([UA 3]a+3*[UA 2]a*UB+ 3*[UA]a*UB 2+UB 3)/48+[0.5-Y]a (8)
以上公式(8)中,第一加密乘积与第二乘积结果之间的运算,均为密文与明文之间的同态运算。特别的,密文矩阵与明文矩阵之间的矩阵乘法可以拆解为,密文矩阵中一行或一列的密文元素与明文矩阵中一列或一行的明文元素之间的同态运算,由此实现矩阵之间的同态相乘。
以上描述了3阶泰勒展开下,加密误差向量的计算方式。可以理解,以上方式可以适用于任意阶数的泰勒展开。阶数越高,结果越准确,但是计算的复杂度越高。
原则上,对于任意阶数k的泰勒展开,第一方A计算的第一乘积结果需包括,第一特征矩阵XA与第一参数部分WA的第一乘积UA的1阶到k阶的多阶第一乘积;第二方B计算的第二乘积结果需包括,第二特征矩阵XB与第二参数部分WB的第二乘积UB的1阶到k阶的多阶第二乘积。在计算加密误差向量[E]a时,第二方B根据k阶泰勒展开形式,基于多阶第一乘积和多阶第二乘积之间的同态加和操作和同态相乘操作,得到加密预测结果,并基于加密预测结果和标签向量Y之间的同态差值,得到加密误差向量。
以上,通过图2的第一阶段,第二方B计算得到加密误差向量[E]a。下面描述基于上述加密误差向量[E]a,双方计算各自所需的第一梯度GA和第二梯度GB,并根据梯度更新其维护参数的过程。
图3示出根据一个实施例的模型迭代训练过程的第二阶段示意图,该第二阶段对应于第二方B确定其对应的第二梯度并更新其参数的过程。
如图3所示,在步骤S31,第二方B对加密误差向量[E]a和第二特征矩阵XB进行同态操作下的矩阵相乘,得到对第二梯度加密的第二加密梯度[GB]a,即:
[GB]a=[E]a T *XB
其中,[E]a T表示[E]a的转置,且[E]a T与XB之间的相乘运算,是[E]a T中各行的密文元素与XB中各列的明文元素之间的同态运算。
然后,在步骤S32,第二方B在以上第二加密梯度[GB]a基础上同态添加第一掩码向量,生成第二加密混淆梯度[G`B]a。
具体的,在一个实施例中,第二方B随机生成与第二加密梯度[GB]a维度相同的向量M1作为第一掩码向量。掩码向量(mask)又可称为混淆向量,用于对原始向量添加掩码,实施混淆。然后,第二方B使用第一公钥PK-a和前述同态加密算法将其加密,得到第一加密掩码向量[M1]a。然后,在第二加密梯度[GB]a上同态添加所述第一加密掩码向量[M1]a,得到第二加密混淆梯度[G`B]a,即:
[G`B]a=[GB]a+[M1]a=[GB+M1]a
然后,在步骤S33,第二方B将以上得到的第二加密混淆梯度[G`B]a发送给第一方A。
需要注意,以上的所有同态操作,均是基于利用第一方A的公钥PK-a加密的密文进行的,因此得到的加密结果,包括[G`B]a,也是基于第一方的公钥PK-a加密的。如此,在步骤S34,第一方A利用其保有的私钥SK-a,对上述第二加密混淆梯度[G`B]a进行解密,得到第二混淆梯度G`B。可以理解,由于其中添加了混淆元素,因此,第一方A无法得到第二梯度的原始明文。
在步骤S35,第一方A将上述第二混淆梯度G`B发送给第二方B。
接着,在步骤S36,第二方B根据第二混淆梯度G`B和前述第一掩码向量,恢复得到第二梯度GB。
与生成第二加密混淆梯度时相对应的,第二方B可以从上述第二混淆梯度G`B中减去前述第一掩码向量M1,即恢复得到第二梯度GB,即:
GB=G`B-M1
至此,第二方B得到了更新参数所需的第二梯度GB。于是,在步骤S37,第二方B根据上述第二梯度GB,更新第二参数部分WB。具体的,更新方式可以表达为:
WB ← WB-α*GB
其中,α为预设的学习步长。
通过以上步骤S31-S37,第二方B计算得到第二梯度GB,并据此更新了第二参数部分WB。
下面描述针对第一方A的第一梯度GA进行处理的过程。图4示出根据一个实施例的模型迭代训练过程的第三阶段示意图,该第三阶段对应于第一方A确定其对应的第一梯度并更新其参数的过程。
如图4所示,首先,在步骤S401,第二方B生成与加密误差向量维度相同的第二掩码向量M2,将其同态添加到根据图2的方式计算得到的加密误差向量[E]a中,得到加密混淆误差向量[E`]a,即:
[E`]a=[E]a+[M2]a=[E+M2]a
在步骤S402,第二方B将该加密混淆误差向量[E`]a发送给第一方A。
接收到该加密混淆误差向量[E`]a后,在步骤S403,第一方A利用其私钥SK-a对其进行解密,得到混淆误差向量E`。
然后,在步骤S404,第一方A计算该混淆误差向量E`和第一特征矩阵XA的乘积,得到第一混淆梯度,即:
G`A=E`*XA=(E+M2)*XA
可以理解,由于上述混淆误差向量E`是对误差向量E添加有掩码向量M2作为混淆的向量,因此,E`*XA得到的梯度,也是存在混淆元素的梯度,称为第一混淆梯度。
接着,在步骤S405,第一方A用第一特征矩阵XA,与第二方B中的第二掩码向量M2进行安全矩阵乘法,各自得到矩阵乘积的两个分片,其中第一方A得到第一乘积分片Z1,第二方B得到第二乘积分片Z2,且:
Z1+Z2=M2*XA
需要理解,安全矩阵乘法是多方安全计算MPC中的一种计算方式,其目标是,在双方均不暴露其拥有的原始矩阵的情况下,共同计算两个原始矩阵的乘积。在一种典型情况下,双方各自拥有原始矩阵P和Q,计算的结果为,双方各自拥有一个乘积分片,两个乘积分片之和,即为两个原始矩阵的乘积P*Q。
安全矩阵乘法可以通过多种方式实现,包括,不借助第三方而利用秘密分享实现的安全矩阵乘法,借助于可信第三方的初始化而利用秘密分享实现的安全矩阵乘法,以及利用同态加密下的秘密分享实现的安全矩阵乘法,等等。在以上步骤S405中,可以利用任意一种安全矩阵乘法,进行第一特征矩阵XA与第二掩码向量M2的安全相乘。
然后,在步骤S406,第二方B将第二乘积分片Z2发送给第一方A。
于是,在步骤S407,第一方A从第一混淆梯度G`A中,减去其拥有的第一乘积分片Z1和第二方发送来的第二乘积分片Z2,得到第一梯度,即:
G`A-Z1-Z2=(E+M2)*XA-Z1-Z2
=E*XA+M2*XA-(Z1+Z2)
=E*XA
=GA
如此,第一方A得到了第一梯度GA。于是,在步骤S408,第一方A利用该第一梯度GA更新其第一参数部分。更新方式可以表示为:
WA ← WA-α*GA,
其中,α为学习步长。
通过以上图4的过程,双方联合计算,使得第一方A得到了第一梯度,并更新了对应的参数。
在以上图4方案的基础上,双方可以引入进一步的掩码向量进行混淆,从而进一步增加联合计算的安全性。
图5示出根据另一实施例的模型迭代训练过程的第三阶段示意图,该第三阶段对应于第一方A确定其对应的第一梯度并更新其参数的过程。图5中的步骤S501-S505与图4的步骤S401-S405对应相同,不再重复描述。
不同的是,在步骤S505双方进行安全矩阵乘法之后,在步骤S506,第二方B生成第三掩码向量M3,并将其添加到前述第二乘积分片Z2中,得到经过混淆的第二分片向量Z2’:
Z2’=Z2+M3
然后,在步骤S507,第二方B将该第二分片向量Z2’发送给第一方A。
在步骤S508,第一方A生成第四掩码向量M4。
然后,在步骤S509,第一方A基于前述各个步骤得到的第一混淆梯度G`A,第一乘积分片Z1,第二分片向量Z2’,和第四掩码向量M4,得到第一梯度二次混淆向量GA”。具体的,第一方A从第一混淆梯度G`A中,减去第一乘积分片Z1和第二分片向量Z2’,再添加所述第四掩码向量M4,得到该第一梯度二次混淆向量GA”,即:
GA”=G`A-Z1-Z2’+M4
=(E+M2)*XA-Z1-Z2-M3+M4
=E*XA+M2*XA-(Z1+Z2)-M3+M4
=E*XA-M3+M4
=GA-M3+M4
接着,在步骤S510,第一方A将上述第一梯度二次混淆向量GA”发送给第二方B。
接收到GA”后,在步骤S511,第二方B从该第一梯度二次混淆向量GA”中抵消第三掩码向量M3,得到第一梯度一次混淆向量GA’。具体的,根据以上第一梯度二次混淆向量GA”的计算方式,可以通过在其基础上加上第三掩码向量M3而进行抵消。即:
GA’=GA”+M3=GA+M4
接着,在步骤S512,第二方B将上述第一梯度一次混淆向量GA’发送给第一方A。
在步骤S513,第一方A从接收到的第一梯度一次混淆向量GA’中消减第四掩码向量M4,得到第一梯度GA,即:
GA=GA’-M4
于是,在步骤S514,第一方A利用上述第一梯度GA,更新第一参数部分。
可以看到,相比于图4,图5所示的第三阶段的执行过程,通过引入进一步的掩码向量,进一步增强了隐私数据的安全性。
需要理解的是,以上图3所示的更新第二参数部分的第二阶段过程,与图4或图5所示的更新第一参数部分的第三阶段过程,可以以任意合理的相对顺序执行,例如,先后执行,并行执行,交错执行,等等。本说明书仅为了描述的清楚,而将其分别示出在不同附图中。在此,对于这两阶段的执行顺序不做限定,其相对执行顺序并不影响其实现效果。
如此,在以上描述的过程中,第一方A和第二方B共同完成了一次模型迭代更新,各自更新了其模型参数。双方可以按照同样的方式,进行多次模型迭代,直到达到迭代停止条件,例如达到了预设迭代次数,或达到了预定收敛条件,此时,模型训练完成,双方各自得到训练好的业务预测模型的一部分参数。
回顾整个过程可以看到,在训练迭代过程中,双方不仅不进行特征数据的明文交换,其梯度的计算和传递,也是通过添加掩码向量进行混淆的方式进行保护,使得任何一方都无法获得对方的隐私数据,如此,确保了联合训练过程中隐私数据的安全性。
以上实施例中具体描述了,线性回归模型和逻辑回归模型的联合训练。实际上,以上训练方式也适用于通过神经网络实现的业务预测模型。对于典型的前馈全连接神经网络而言,每个神经元与其前一层的各个神经元以不同的权重相连接。于是,前一层各个神经元的输出可以视为特征数据,特征数据分布于双方之中;连接权重可以视为模型参数部分,用于以线性组合的方式,处理对应的特征数据。从而,可以将前述训练过程应用于神经网络中每个神经元的参数训练,实现神经网络模型的双方联合安全训练。
总体而言,对于各种以特征数据与模型参数之间的线性组合为基础的业务预测模型,都可以采用以上描述的训练方式。在该训练方式中,通过同态加密和添加混淆的方式交换数据,确保了隐私数据不会被泄露,保证了数据安全。
根据另一方面的实施例,提供了一种保护数据隐私的双方联合训练业务预测模型的装置,所述双方包括第一方和第二方,该装置可以部署在其中的第二方中。其中,第一方存储有多个业务对象的第一特征部分构成的第一特征矩阵XA,并维护对应的第一参数部分WA;第二方存储有所述多个业务对象的第二特征部分构成的第二特征矩阵XB,以及标签值构成的标签向量Y,并维护对应的第二参数部分WB。第二方可以实现为任何具有计算、处理能力的设备、平台或设备集群。图6示出根据一个实施例的部署在第二方中的联合训练装置的示意性框图。如图6所示,该装置600包括:
第二乘积计算单元601,配置为本地计算第二特征矩阵XB与第二参数部分WB的第二乘积结果;
第一乘积接收单元602,配置为从所述第一方接收第一加密乘积,该第一加密乘积为,使用所述第一方的第一公钥和同态加密算法,对第一特征矩阵XA与第一参数部分WA的第一乘积结果加密得到的;
加密误差计算单元603,配置为基于对所述第一加密乘积,第二乘积结果,以及所述标签向量进行同态运算,得到加密误差向量E;
第二混淆单元604,配置为生成第二掩码向量,将其同态添加到所述加密误差向量E中,得到加密混淆误差向量,并将其发送给所述第一方;
安全乘法单元605,配置为用所述第二掩码向量,与所述第一方中的第一特征矩阵XA进行安全矩阵乘法,得到矩阵乘积的两个分片中的第二乘积分片,所述两个分片中的第一乘积分片由所述第一方获得;
第二向量生成单元606,配置为基于所述第二乘积分片,生成第二分片向量;
第二发送单元607,配置为将所述第二分片向量发送给所述第一方,以使得所述第一方根据所述加密混淆误差向量,所述第一乘积分片以及所述第二分片向量,得到第一梯度,用于更新第一参数部分WA。。
在不同实施例中,上述业务对象可以是,用户,商户,商品,事件,等等。业务预测模型可以用于预测所述业务对象的分类或回归值。
在一个实施例中,业务预测模型为线性回归模型;在这样的情况下,所述加密误差计算单元603具体配置为:基于所述第一加密乘积和所述第二乘积结果的同态加和操作,得到加密预测结果;计算该加密预测结果和所述标签向量Y的加密值的同态差值,作为所述加密误差向量E。
在另一实施例中,业务预测模型为逻辑回归模型;在这样的情况下,所述第二乘积结果包括,第二特征矩阵XB与第二参数部分WB的若干阶第二乘积;所述第一乘积结果包括,第一特征矩阵XA与第一参数部分WA的若干阶第一乘积。此时,所述加密误差计算单元603具体配置为:根据sigmoid函数的泰勒若干阶展开形式,基于所述第一加密乘积和所述第二乘积结果的同态运算得到加密预测结果,对该加密预测结果和所述标签向量Y的加密值进行同态差值运算,得到所述加密误差向量E。
在一种实施方式中,上述第二向量生成单元606配置为,生成第三掩码向量,并将其添加到所述第二乘积分片中,得到所述第二分片向量。在这样的情况下,所述装置600还包括第二去混淆单元(未示出),配置为:
从所述第一方接收第一梯度二次混淆向量,所述第一梯度二次混淆向量由所述第一方根据所述加密混淆误差向量,所述第一乘积分片,所述第二分片向量,以及自身生成的第四掩码向量得到;
从所述第一梯度二次混淆向量中抵消所述第三掩码向量,得到第一梯度一次混淆向量;
将所述第一梯度一次混淆向量发送给所述第一方,使其根据该第一梯度一次混淆向量和所述第四掩码向量,恢复得到所述第一梯度。
根据一种实施方式,上述装置600还包括第二梯度获取单元(未示出)配置为:对该加密误差向量E和第二特征矩阵XB进行同态操作下的矩阵相乘,得到对第二梯度加密的第二加密梯度;在所述第二加密梯度基础上同态添加第一掩码向量,生成第二加密混淆梯度,并将其发送给所述第一方;从所述第一方接收针对第二加密混淆梯度解密的第二混淆梯度;根据所述第二混淆梯度和所述第一掩码向量,恢复得到第二梯度;根据所述第二梯度,更新所述第二参数部分。
根据又一方面的实施例,提供了一种双方联合训练业务预测模型的装置,该装置可以部署在前述的第一方中,该第一方可以实现为任何具有计算、处理能力的设备、平台或设备集群。如前所述,第一方中存储有多个业务对象的第一特征部分构成的第一特征矩阵XA,并维护对应的第一参数部分WA;第二方存储有所述多个业务对象的第二特征部分构成的第二特征矩阵XB,以及标签值构成的标签向量Y,并维护对应的第二参数部分WB。图7示出根据一个实施例的部署在第一方中的联合训练装置的示意性框图。如图7所示,该装置700包括:
第一乘积计算单元701,配置为本地计算第一特征矩阵XA与第一参数部分WA的第一乘积结果;
第一乘积加密单元702,配置为使用所述第一方的第一公钥和同态加密算法,对所述第一乘积结果进行加密,得到第一加密乘积,将该第一加密乘积发送给第二方;
第一接收单元703,配置为从所述第二方接收加密混淆误差向量,所述加密混淆误差向量是在第二方计算得到的加密误差向量E基础上,同态添加第二掩码向量而得到的;所述加密误差向量E基于所述第一加密乘积,第二方本地计算的第二特征矩阵XB与第二参数部分WB的第二乘积结果,以及所述标签向量的同态运算而得到;
第一解密单元704,配置为利用与所述第一公钥对应的第一私钥解密所述加密混淆误差向量,得到混淆误差向量,并计算所述混淆误差向量和所述第一特征矩阵XA的乘积,得到第一混淆梯度;
安全乘法单元705,配置为用所述第一特征矩阵XA,与所述第二方中的第二掩码向量进行安全矩阵乘法,得到矩阵乘积的两个分片中的第一乘积分片,所述两个分片中的第二乘积分片由所述第二方获得;
第二接收单元706,配置为从所述第二方接收基于所述第二乘积分片生成的第二分片向量;
第一梯度获取单元707,配置为根据所述第一混淆梯度,所述第一乘积分片以及所述第二分片向量,得到第一梯度,并利用所述第一梯度,更新第一参数部分WA。
根据一种实施方式,所述业务预测模型为逻辑回归模型;相应的,第一乘积计算单元701配置为,本地计算第一特征矩阵XA与第一参数部分WA的若干阶第一乘积。
在一个实施例中,所述第二分片向量等于所述第二乘积分片;此时,所述第一梯度获取单元707配置为,从所述第一混淆梯度中,减去所述第一乘积分片和所述第二乘积分片,得到所述第一梯度。
在另一实施例中,所述第二分片向量为,所述第二方在所述第二乘积分片基础上添加第三掩码向量的结果;此时,所述第一梯度获取单元707配置为:生成第四掩码向量;从所述第一混淆梯度中,减去所述第一乘积分片和所述第二分片向量,再添加所述第四掩码向量,得到第一梯度二次混淆向量;将所述第一梯度二次混淆向量发送给所述第二方;从所述第二方接收第一梯度一次混淆向量,该第一梯度一次混淆向量由第二方从所述第一梯度二次混淆向量中抵消所述第三掩码向量而得到;从所述第一梯度一次混淆向量中消减所述第四掩码向量,得到所述第一梯度。
根据一种实施方式,所述装置700还包括第二梯度辅助单元(未示出),配置为:
从所述第二方接收,在第二加密梯度基础上同态添加第一掩码向量生成的第二加密混淆梯度,其中所述第二加密梯度基于所述加密误差向量E和第二特征矩阵XB的同态矩阵相乘而得到;
用所述第一私钥解密所述第二加密混淆梯度,得到第二混淆梯度;
将所述第二混淆梯度发送给所述第二方,以便于第二方根据从所述第二混淆梯度中恢复出的第二梯度更新所述第二参数部分。
通过以上部署在第一方和第二方中的装置,实现双方的保护数据隐私的安全联合训练。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2到图5所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2到图5所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。