具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
模型参数优化方法可以包括梯度下降法、牛顿法等。所述牛顿法可以包括原始牛顿法以及基于原始牛顿法的各种变形方法(诸如阻尼牛顿法、正则化牛顿法等等;正则化牛顿法是指附带了正则化项的牛顿法;正则化可以降低模型的复杂度和不稳定程度,从而降低过拟合的危险)。所述梯度下降法可以包括原始梯度下降法以及基于原始梯度下降法的各种变形方法(诸如批量梯度下降法、正则化梯度下降法等等;正则化梯度下降法是指附带了正则化项的梯度下降法;正则化可以降低模型的复杂度和不稳定程度,从而降低过拟合的危险)。
相较于梯度下降法,牛顿法有着更快的收敛速度。为了减少模型参数优化调整的次数,提高数据处理模型的训练效率,合作建模各方优先使用牛顿法协作确定数据处理模型的模型参数。但一些情况下(例如正负样本比例不均衡),在使用牛顿法确定模型参数的过程中容易出现病态矩阵,导致模型参数不收敛。因此若在使用牛顿法确定模型参数的过程中判断海森矩阵的病态程度,则可以避免在使用牛顿法确定模型参数的过程中由于出现病态矩阵所导致的不收敛问题。另外,若在使用牛顿法确定模型参数的过程中出现了病态矩阵,则还可以使用梯度下降法代替牛顿法继续优化调整模型参数,以对数据处理模型继续进行训练,从而实现自适应地选择牛顿法或梯度下降法来优化调整模型参数。
病态矩阵是一种特殊矩阵,指条件数较大的非奇异矩阵。病态矩阵的逆和以其为系数矩阵的方程组的界对微小扰动十分敏感,对数值求解会带来很大困难。
矩阵的条件数可以用于度量该矩阵的病态程度。矩阵的条件数越大,则表示该矩阵的病态程度越大;矩阵的条件数越小,则表示该矩阵的病态程度越小。矩阵的条件数等于该矩阵的范数与该矩阵的逆的范数的乘积。例如,cond(F)=||F||×||F-1||,cond(F)表示矩阵F的条件数,||||表示取范数运算,F-1表示矩阵F的逆矩阵。
多方安全计算(Secure Muti-Party Computation,MPC)是一种保护数据隐私安全的算法。多方安全计算能让参与计算的多个数据方在不暴露自身数据的前提下进行协作计算。
秘密分享(SS,Secret Sharing)是一种保护数据隐私安全的算法,可以用于实现多方安全计算。具体地,多个数据方可以在不泄漏自身数据的前提下,使用秘密分享算法进行协作计算,得到秘密信息。每个数据方可以获得该秘密信息的一份份额。单个数据方无法恢复该秘密信息。只有多个数据方一同协作才能恢复该秘密信息。例如数据方P1持有数据x1,数据方P2持有数据x2。采用秘密分享算法,数据方P1和数据方P2可以进行协作计算,得到秘密信息y=y1+y2=x1x2。数据方P1在计算后可以获得秘密信息y的份额y1,数据方P2在计算后可以获得秘密信息y的份额y2。
混淆电路(Garbled Circuit)是一种保护数据隐私的安全计算协议,可以用于实现多方安全计算。具体地,可以将给定的计算任务(例如函数)转换为逻辑电路,所述逻辑电路可以由至少一个运算门构成,所述运算门可以包括与门、或门、异或门等等。所述逻辑电路可以包括至少两个输入线和至少一个输出线,通过对所述逻辑电路的输入线和/或输出线进行加密便可以得到混淆电路。多个数据方可以在不泄漏自身数据的前提下,使用所述混淆电路进行协作计算,得到所述计算任务的执行结果。
不经意传输(Oblivious Transfer,OT),又称为茫然传输,是一种可以保护隐私的双方通信协议,能够使通信双方以一种选择模糊化的方式传递数据。发送方可以具有多个数据。经由不经意传输接收方能够获得所述多个数据中的一个或多个数据。在此过程中,发送方不知晓接收方接收的是哪些数据;而接收方不能够获得其所接收数据之外的其它任何数据。不经意传输协议是混淆电路的基础协议。在使用混淆电路进行协作计算的过程中,通常会使用到不经意传输协议。
以下介绍混淆电路的一个应用场景示例。
数据方P1持有数据x1和数据x3,数据方P2持有数据x2。函数y=f(x1,x2,x3)=x1x2x3可以表示为如图1所示的逻辑电路。所述逻辑电路由与门1和与门2构成。所述逻辑电路可以包括输入线a、输入线b、输入线d、输出线c和输出线s。
以下介绍数据方P1生成与门1的混淆真值表的过程。
与门1对应的真值表可以如表1所示。
表1
a |
b |
c |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
数据方P1可以生成两个随机数和/>分别对应输入线a的两个输入值0和1;可以生成两个随机数/>和/>分别对应输入线b的两个输入值0和1;可以生成两个随机数/>和分别对应输出线c的两个输出值0和1。由此可以得到如表2所示的随机化真值表。
表2
数据方P1可以分别将随机数和/>作为密钥,对随机数/>进行加密,得到随机数密文/>可以分别将随机数/>和/>作为密钥,对随机数/>进行加密,得到随机数密文/>可以分别将随机数/>和/>作为密钥,对随机数/>进行加密,得到随机数密文/>可以分别将随机数/>和/>作为密钥,对随机数/>进行加密,得到随机数密文/>由此可以得到如表3所示的加密的随机化真值表。
表3
数据方P1可以打乱表3中各行的排列顺序,得到如表4所示的混淆真值表。
表4
数据方P1还可以生成与门2的混淆真值表,具体过程与生成与门1的混淆真值表的过程相类似,在此不再详述。
数据方P1可以分别将与门1的混淆真值表和与门2的混淆真值表发送给数据方P2。数据方P2可以接收与门1的混淆真值表和与门2的混淆真值表。
数据方P1可以将数据x1的各个比特(bit)在输入线a对应的随机数发送给数据方P2;可以将数据x3的各个比特(bit)在输入线d对应的随机数发送给数据方P2。数据方P2可以接收数据x1和数据x3的各个比特对应的随机数。例如,数据x1=b0×20+b1×21+...+bi×2i+...。对于数据x1的第i个比特bi,当bi的值为0时,数据方P1可以将bi在输入线a对应的随机数发送给数据方P2;当bi的值为1时,数据方P1可以将bi在输入线a对应的随机数/>发送给数据方P2。
数据方P1可以以随机数和/>作为输入,数据方P2可以以数据x2的各个比特作为输入,二者进行不经意传输。数据方P2可以获得数据x2的各个比特对应的随机数。具体地,数据方P1可以生成两个随机数/>和/>分别对应输入线d的两个输入值0和1。如此针对数据x2的每个比特,数据方P1可以以随机数/>和/>作为在不经意传输过程中输入的秘密信息,数据方P2可以以该比特作为在不经意传输过程中输入的选择信息,进行不经意传输。通过不经意传输,数据方P2可以获得该比特在输入线d对应的随机数。具体地,当该比特的值为0时,数据方P2可以获得随机数/>当该比特的值为1时,数据方P2可以获得随机数/>根据不经意传输的特性,数据方P1并不知晓数据方P2具体选择的是哪个随机数,数据方P2也不能够知晓除了所选择的随机数以外的其它随机数。
通过以上过程,数据方P2获得了数据x1、数据x2和数据x3的各个比特对应的随机数。如此数据方P2可以使用数据x1的每个比特在输入线a对应的随机数、以及数据x2的相应比特在输入线b对应的随机数,尝试对与门1的混淆真值表中的4个随机数密文进行解密;数据方P2仅能够成功解密其中的一个随机数密文,从而得到输出线c的一个随机数。接下来,数据方P2可以使用数据x3的相应比特在输入线d对应的随机数、以及解密出的输出线c的随机数,尝试对与门2的混淆真值表中的4个随机数密文进行解密;数据方P2仅能够成功解密其中的一个随机数密文,得到输出线s的一个随机数。数据方P2可以将解密出的输出线s的随机数发送给数据方P1。数据方P1可以接收输出线s的随机数;可以根据输出线s的随机数、以及随机数和输出值的对应关系,获得输出线s的输出值。
输出线s的每个输出值可以视作函数y=f(x1,x2,x3)=x1x2x3取值的一个比特。如此数据方P1可以根据输出线s的多个输出值,确定出函数y=f(x1,x2,x3)=x1x2x3的取值。
损失函数(Loss Function)可以用于衡量数据处理模型的预测值与真实值之间不一致的程度。损失函数的值越小,表示数据处理模型的鲁棒性越好。所述损失函数包括但不限于对数损失函数(Logarithmic Loss Function)、平方损失函数(Square Loss)等。
海森矩阵(Hessian Matrix),又称为黑塞矩阵、海瑟矩阵或海塞矩阵等,是损失函数的二阶偏导数所构成的方阵,用于表示损失函数的局部曲率。
激励函数(Activation Function),又称为激活函数,可以用于构建数据处理模型。激励函数定义了在给定输入下的输出。激励函数通常为非线性函数。通过激励函数可以在所述数据处理模型中加入非线性因素,提高所述数据处理模型的表达能力。所述激励函数可以包括Sigmoid函数、Tanh函数和ReLU函数等。所述数据处理模型可以包括逻辑回归模型和神经网络模型等。
在合作安全建模的场景中,出于保护数据隐私的考虑,多个数据方可以在不泄漏自身所持有的数据的前提下,基于自身持有的数据,对数据处理模型进行协作训练。所述数据处理模型包括但不限于逻辑回归模型、神经网络模型等。在对数据处理模型进行训练的过程中,可以使用模型参数优化方法对数据处理模型的模型参数进行优化调整。模型参数优化方法可以包括梯度下降法、牛顿法等等。所述模型参数优化方法可以仅采用秘密分享的方式来实现;或者,还可以采用秘密分享和混淆电路相结合的方式来实现。
本说明书提供一种模型参数确定系统的实施例。
请参阅图2。在该实施例中,所述模型参数确定系统可以包括第一数据方、第二数据方和可信任的第三方(TTP,Trusted Third Party)。
所述第三方可以为一个服务器;或者,还可以为包括多个服务器的服务器集群。所述第三方用于向所述第一数据方和所述第二数据方提供随机数。具体地,所述第三方可以生成随机正交矩阵,可以将所述随机正交矩阵中的各个随机数拆分为两个份额,可以将其中一个份额作为第一份额,将其中另一个份额作为第二份额。所述第三方可以将所述随机正交矩阵中各个随机数的第一份额形成的矩阵作为所述随机正交矩阵的第一份额,将所述随机正交矩阵中各个随机数的第二份额形成的矩阵作为所述随机正交矩阵的第二份额;可以向所述第一数据方发送所述随机正交矩阵的第一份额,可以向所述第二数据方发送所述随机正交矩阵的第二份额。其中,所述随机正交矩阵的第一份额和所述随机正交矩阵的第二份额的和等于所述随机正交矩阵。另外,一方面所述随机正交矩阵可以为由随机数构成的随机数矩阵;另一方面所述随机正交矩阵还可以为正交矩阵。一个方阵与一个正交矩阵相乘后可以得到一个新的矩阵,该新的矩阵与该方阵具有相同的条件数。这样便于第一数据方和第二数据方在不泄漏自身持有的海森矩阵的份额的条件下,协作计算得到海森矩阵的条件数;进而便于根据条件数来度量海森矩阵的病态程度。具体过程详见后面的实施例。
鉴于所述第一数据方和所述第二数据方在基于混淆电路进行计算的过程中涉及到不经意传输,所述第三方还可以生成第一OT随机数和第二OT随机数;可以向所述第一数据方发送所述第一OT随机数;可以向所述第二数据方发送所述第二OT随机数。OT随机数可以为在不经意传输过程中所使用到的随机数。
所述第一数据方和所述第二数据方分别为合作安全建模的双方。所述第一数据方可以为持有特征数据的数据方,所述第二数据方可以为持有标签的数据方。例如,所述第一数据方可以持有完整的特征数据,所述第二数据方可以持有特征数据的标签。或者,所述第一数据方可以持有特征数据的一部分数据项,所述第二数据方可以持有特征数据的另一部分数据项和特征数据的标签。具体地,例如,特征数据可以包括用户的储蓄金额和借贷金额。所述第一数据方可以持有用户的储蓄金额,所述第二数据方可以持有用户的借贷金额和特征数据的标签。所述标签可以用于区分不同类型的特征数据,具体数值例如可以取自0和1。值得说明的是,这里的数据方可以为电子设备。所述电子设备可以包括个人计算机、服务器、手持设备、便携式设备、平板型设备、多处理器装置;或者,还可以包括由以上任何多个装置或设备所构成的集群等。另外,特征数据及其对应的标签共同构成了样本数据,样本数据可以用于对数据处理模型进行训练。
在合作安全建模的场景中,所述第一数据方和所述第二数据方可以分别获得第一模型参数的一份份额。这里可以将所述第一数据方获得份额作为第一模型参数的第一份额,可以将所述第二数据方获得份额作为第一模型参数的第二份额。第一模型参数的第一份额和第一模型参数的第二份额的和等于第一模型参数。
所述第一数据方可以接收随机正交矩阵的第一份额和第一OT随机数。所述第二数据方可以接收随机正交矩阵的第二份额和第二OT随机数。如此所述第一数据方可以基于第一模型参数的第一份额、特征数据、随机正交矩阵的第一份额和第一OT随机数,所述第二数据方可以基于第一模型参数的第二份额、标签、随机正交矩阵的第二份额和第二OT随机数,协作确定第二模型参数。例如,所述第一数据方和所述第二数据方可以采用秘密分享和混淆电路相结合的方式,使用牛顿法协作确定新的第一模型参数;进而,可以采用秘密分享的方式,使用梯度下降法协作确定第二模型参数。
本说明书还提供一种模型参数确定方法的实施例。
请参阅图3。该实施例可以包括以下步骤。
步骤S101:第一数据方根据特征数据和第一模型参数的第一份额,第二数据方根据第一模型参数的第二份额,秘密分享第一乘积。第一数据方获得第一乘积的第一份额,第二数据方获得第一乘积的第二份额。所述第一乘积为特征数据和第一模型参数的乘积。
步骤S103:第一数据方根据第一乘积的第一份额,第二数据方根据第一乘积的第二份额,基于激励函数对应的混淆电路进行通信。第一数据方获得激励函数取值的第一份额,第二数据方获得激励函数取值的第二份额。
步骤S105:第一数据方根据特征数据和激励函数取值的第一份额,第二数据方根据标签和激励函数取值的第二份额,秘密分享损失函数的梯度。第一数据方获得损失函数梯度的第一份额,第二数据方获得损失函数梯度的第二份额。
步骤S107:第一数据方根据特征数据和激励函数取值的第一份额,第二数据方根据激励函数取值的第二份额,秘密分享海森矩阵。第一数据方获得海森矩阵的第一份额,第二数据方获得海森矩阵的第二份额。
步骤S109:第一数据方根据随机正交矩阵的第一份额和海森矩阵的第一份额,第二数据方根据随机正交矩阵的第二份额和海森矩阵的第二份额,秘密分享第二乘积。第一数据方获得第二乘积的第一份额,第二数据方获得第二乘积的第二份额。所述第二乘积为随机正交矩阵和海森矩阵之间的乘积。
步骤S111:在第二乘积的条件数满足预设条件时,第一数据方根据海森矩阵的第一份额,第二数据方根据海森矩阵的第二份额,秘密分享第一逆矩阵。第一数据方获得第一逆矩阵的第一份额,第二数据方获得第一逆矩阵的第二份额。第一逆矩阵为海森矩阵的逆矩阵。
步骤S113:第一数据方根据第一模型参数的第一份额、第一逆矩阵的第一份额和损失函数梯度的第一份额,第二数据方根据第一模型参数的第二份额、第一逆矩阵的第二份额和损失函数梯度的第二份额,秘密分享新的第一模型参数。第一数据方获得新的第一模型参数的第一份额,第二数据方获得新的第一模型参数的第二份额。
下面介绍在实施例中涉及的一些术语。
(一)、第一乘积、第二乘积、第三乘积、第四乘积和第五乘积。所述第一乘积可以为第一模型参数和特征数据之间的乘积。所述第二乘积可以为随机正交矩阵和海森矩阵之间的乘积。所述第三乘积可以为海森矩阵的逆矩阵和损失函数梯度之间的乘积。所述第四乘积可以为损失函数梯度的第一份额与预设步长的乘积。所述第五乘积可以为损失函数梯度的第二份额与预设步长的乘积。
在一些场景示例中,所述第一乘积可以表示为XW;其中,W表示第一模型参数,具体为第一模型参数构成的向量;X表示特征数据,具体为特征数据构成的矩阵。
所述第二乘积可以表示为HR,其中,H表示海森矩阵,R表示随机正交矩阵。
所述第三乘积可以表示为H-1dW,其中,H-1表示海森矩阵的逆矩阵,dW表示损失函数的梯度,dW为向量。
所述第四乘积可以表示为G<dW>0,所述第五乘积可以表示为G<dW>1。其中,G表示预设步长,<dW>0表示损失函数梯度的第一份额,<dW>1表示损失函数梯度的第二份额,<dW>0+<dW>1=dW。
(二)、第一逆矩阵和第二逆矩阵。鉴于海森矩阵为方阵,因而可以对海森矩阵进行求逆处理,可以将海森矩阵的逆矩阵作为第一逆矩阵。所述第二乘积可以为方阵,因而可以对所述第二乘积进行求逆处理,可以将所述第二乘积的逆矩阵作为第二逆矩阵。
延续前面的场景示例,所述第一逆矩阵可以表示为H-1,所述第二逆矩阵可以表示为(HR)-1。
在一些实施例中,在步骤S101中,所述第一数据方可以根据特征数据和第一模型参数的第一份额,所述第二数据方可以根据第一模型参数的第二份额,秘密分享第一乘积。所述第一数据方和所述第二数据方可以分别获得所述第一乘积的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为第一乘积的第一份额,可以将所述第二数据方获得的份额作为第一乘积的第二份额。第一乘积的第一份额和第一乘积的第二份额的和等于第一乘积。
延续前面的场景示例,第一模型参数的第一份额可以表示为<W>0,第一模型参数的第二份额可以表示为<W>1,<W>0+<W>1=W。所述第一数据方可以根据X和<W>0,所述第二数据方可以根据<W>1,秘密分享第一乘积XW。所述第一数据方可以获得第一乘积的第一份额<XW>0,所述第二数据方可以获得第一乘积的第二份额<XW>1。
<XW>0+<XW>1=XW。
在一些实施例中,可以根据所述激励函数构建相应的逻辑电路。所述逻辑电路可以由所述第一数据方构建;或者,也可以由所述第二数据方构建;又或者,还可以由其它设备(例如可信任的第三方)构建。所述逻辑电路可以由至少一个运算门构成,所述运算门可以包括与门、或门、异或门等等。所述逻辑电路可以包括至少两个输入线和至少一个输出线,通过对所述逻辑电路的输入线和/或输出线进行加密便可以得到混淆电路。所述混淆电路可以包括所述逻辑电路中各个运算门的混淆真值表。值得说明的是,这里可以直接根据激励函数构建逻辑电路;或者,也可以对激励函数进行各种适当的变形,可以根据变形后的激励函数构建逻辑电路;又或者,还可以以所述激励函数为基础生成其它函数,可以根据其它函数构建逻辑电路。相应地,这里激励函数与混淆电路相对应可以理解为:混淆电路是根据激励函数的逻辑电路生成的,或者,混淆电路是根据变形后的激励函数的混淆电路生成的,又或者,混淆电路是根据其它函数的逻辑电路生成的。
所述第一数据方和所述第二数据方均可以持有激励函数对应的混淆电路。在一些实施方式中,所述混淆电路可以由所述第一数据方生成。所述第一数据方可以将生成的混淆电路发送给所述第二数据方。所述第二数据方可以接收所述混淆电路。在另一些实施方式中,所述混淆电路也可以由所述第二数据方生成。所述第二数据方可以将生成的混淆电路发送给所述第一数据方。所述第一数据方可以接收所述混淆电路。
在步骤S103中,第一数据方可以根据第一乘积的第一份额,第二数据方可以根据第一乘积的第二份额,基于激励函数对应的混淆电路进行通信。所述第一数据方和所述第二数据方可以分别获得激励函数取值的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为激励函数取值的第一份额,可以将所述第二数据方获得的份额作为激励函数取值的第二份额。激励函数取值的第一份额和激励函数取值的第二份额的和等于激励函数的取值。
请参阅图4。以下介绍第一数据方和第二数据方基于混淆电路进行计算的一个场景示例。
可以根据激励函数f(x1,x2)构建函数y=f1(x1,x2,x3)=f(x1,x2)-x3。其中,x1用于表示第一乘积的第一份额,x2用于表示第一乘积的第二份额,x3用于表示激励函数取值的一份份额(以下称为激励函数取值的第二份额),f1(x1,x2,x3)的取值用于表示激励函数取值的另一份份额(以下称为激励函数取值的第一份额)。
可以构建与函数f1(x1,x2,x3)=f(x1,x2)-x3相对应的逻辑电路,通过对该逻辑电路的输入线和/或输出线进行加密便可以得到混淆电路。所述第一数据方和所述第二数据方均可以持有该混淆电路。值得说明的是,函数y=f1(x1,x2,x3)=f(x1,x2)-x3及其对应的逻辑电路可以由所述第一数据方构建;或者,也可以由所述第二数据方构建;又或者,还可以由其它设备(例如可信任的第三方)构建。
所述第二数据方可以生成激励函数取值的一份份额作为第二份额。如此所述第一数据方可以以第一乘积的第一份额作为该混淆电路的输入,所述第二数据方可以以第一乘积的第二份额以及激励函数取值的第二份额作为该混淆电路的输入,进行通信。所述第一数据方可以基于该混淆电路计算得到激励函数取值的另一份份额作为第一份额。具体的计算过程可以参见前面有关介绍混淆电路的场景示例,在此不再详述。
在一些实施方式中,为了降低混淆电路的复杂程度,还可以使用分段线性函数拟合所述激励函数。这样便可以根据所述分段线性函数构建相应的逻辑电路,通过对该逻辑电路的输入线和/或输出线进行加密便可以得到混淆电路。所述第一数据方和所述第二数据方均可以持有该混淆电路。例如,所述激励函数可以为Sigmoid函数,所述分段线性函数可以为k表示分段线性函数的系数。
第一数据方可以根据第一乘积的第一份额,第二数据方可以根据第一乘积的第二份额,基于该混淆电路进行通信。所述第一数据方和所述第二数据方可以分别获得分段线性函数取值的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为分段线性函数取值的第一份额,可以将所述第二数据方获得的份额作为分段线性函数取值的第二份额。分段线性函数取值的第一份额和分段线性函数取值的第二份额的和等于分段线性函数的取值。如此所述第一数据方可以将分段线性函数取值的第一份额作为激励函数取值的第一份额。所述第二数据方可以将分段线性函数取值的第二份额作为激励函数取值的第二份额。
在一些实施例中,在步骤S105中,所述第一数据方可以根据特征数据和激励函数取值的第一份额,所述第二数据方可以根据标签和激励函数取值的第二份额,秘密分享损失函数的梯度。所述第一数据方和所述第二数据方可以分别获得所述损失函数梯度的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为损失函数梯度的第一份额,可以将所述第二数据方获得的份额作为损失函数梯度的第二份额。损失函数梯度的第一份额和损失函数梯度的第二份额的和等于损失函数的梯度。
延续前面的场景示例,所述第一数据方可以根据X和<a>0,所述第二数据方可以根据标签Y和<a>1,秘密分享损失函数的梯度dW(具体为向量)。所述第一数据方可以获得损失函数梯度的第一份额<dW>0,所述第二数据方可以获得损失函数梯度的第二份额<dW>1。
下面介绍所述第一数据方和所述第二数据方秘密分享损失函数dW的详细过程。
所述第一数据方可以根据X,所述第二数据方可以根据<a>1,秘密分享XT<a>1。所述第一数据方可以获得<[XT<a>1]>0,所述第二数据方可以获得<[XT<a>1]>1。
<[XT<a>1]>0+<[XT<a>1]>1=XT<a>1。
所述第一数据方还可以根据X,所述第二数据方还可以根据标签Y(具体为标签构成的向量),秘密分享XTY。所述第一数据方可以获得<XTY>0,所述第二数据方可以获得<XTY>1。<XTY>0+<XTY>1=XTY。
所述第一数据方可以计算XT<a>0;可以计算XT<a>0+<[XT<a>1]>0-<XTY>0作为损失函数梯度dW的第一份额<dW>0。所述第二数据方可以计算<[XT<a>1]>1-<XTY>1作为损失函数梯度dW的第二份额<dW>1。
在一些实施例中,在步骤S107中,所述第一数据方可以根据特征数据和激励函数取值的第一份额,所述第二数据方可以根据激励函数取值的第二份额,秘密分享海森矩阵。所述第一数据方和所述第二数据方可以分别获得所述海森矩阵的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为所述海森矩阵的第一份额,可以将所述第二数据方获得的份额作为所述海森矩阵的第二份额。海森矩阵的第一份额和海森矩阵的第二份额的和等于海森矩阵。
具体地,所述第一数据方可以根据激励函数取值的第一份额,所述第二数据方可以根据激励函数取值的第二份额,秘密分享对角矩阵。所述第一数据方和所述第二数据方可以分别获得所述对角矩阵的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为所述对角矩阵的第一份额,可以将所述第二数据方获得的份额作为所述对角矩阵的第二份额。对角矩阵的第一份额和对角矩阵的第二份额的和等于对角矩阵。如此所述第一数据方可以根据特征数据和所述对角矩阵的第一份额,所述第二数据方可以根据所述对角矩阵的第二份额,秘密分享海森矩阵。所述第一数据方可以获得所述海森矩阵的第一份额,所述第二数据方可以获得所述海森矩阵的第二份额。
延续前面的场景示例,所述第一数据方可以根据<a>0,所述第二数据方可以根据<a>1,秘密分享对角矩阵RNN。所述第一数据方可以获得对角矩阵的第一份额RNN0,所述第二数据方可以获得对角矩阵的第二份额RNN1。
下面介绍所述第一数据方和所述第二数据方秘密分享对角矩阵RNN的详细过程。
所述第一数据方可以根据<a>0,所述第二数据方可以根据<a>1,秘密分享<a>0·<a>1。所述第一数据方可以获得<[<a>0·<a>1]>0,所述第二数据方可以获得<[<a>0·<a>1]>1。<[<a>0·<a>1]>0+<[<a>0·<a>1]>1=<a>0·<a>1。其中,·表示按位相乘运算。例如,向量m=(m1,m2,m3),向量n=(n1,n2,n3)。那么,m·n=(m1n1,m2n2,m3n3)。
所述第一数据方可以计算<r>0=<a>0-<[<a>0·<a>1]>0-<a>0·<a>0,所述第二数据方可以计算<r>1=<a>1-<[<a>0·<a>1]>0-<a>1·<a>1。
<r>0、<r>1和r分别为向量。因而所述第一数据方可以根据<r>0生成对角矩阵RNN=diag(r)的第一份额RNN0=diag(<r>0),所述第二数据方可以根据<r>1生成对角矩阵RNN=diag(r)的第二份额RNN1=diag(<r>1)。RNN0+RNN1=RNN。其中,对角矩阵RNN的第一份额RNN0和第二份额RNN1均可以为一个对角矩阵。在实际处理过程中,所述第一数据方可以将<r>0中的数据元素作为RNN0主对角线上的数据元素,这样便实现了根据<r>0生成RNN0;可以将<r>1中的数据元素作为RNN1主对角线上的数据元素,这样便实现了根据<r>1生成RNN1。
所述第一数据方可以根据X和RNN0,所述第二数据方可以根据RNN1,秘密分享海森矩阵H。所述第一数据方可以获得海森矩阵的第一份额<H>0,所述第二数据方可以获得海森矩阵的第二份额<H>1。
下面介绍所述第一数据方和所述第二数据方秘密分享海森矩阵H的详细过程。
所述第一数据方可以根据X,所述第二数据方可以根据RNN1,秘密分享XTRNN1。所述第一数据方可以获得<XTRNN1>0,所述第二数据方可以获得<XTRNN1>1。
<XTRNN1>0+<XTRNN1>1=XTRNN1。
所述第一数据方还可以根据X,所述第二数据方还可以根据<XTRNN1>1,秘密分享<XTRNN1>1X。所述第一数据方可以获得<[<XTRNN1>1X]>0,所述第二数据方可以获得<[<XTRNN1>1X]>1。<[<XTRNN1>1X]>0+<[<XTRNN1>1X]>1=<XTRNN1>1X。
所述第一数据方可以计算XTRNN0X+<XTRNN1>0X+<[<XTRNN1>1X]>0作为海森矩阵H的第一份额<H>0。所述第二数据方可以将<[<XTRNN1>1X]>1作为海森矩阵H的第二份额<H>0。
在一些实施例中,第三方可以向第一数据方下发随机正交矩阵的第一份额;可以向第二数据方下发随机正交矩阵的第二份额。随机正交矩阵的第一份额和随机正交矩阵的第二份额的和等于随机正交矩阵。所述第一数据方可以接收随机正交矩阵的第一份额,所述第二数据方可以接收随机正交矩阵的第二份额。如此在步骤S109中,所述第一数据方可以根据随机正交矩阵的第一份额和海森矩阵的第一份额,所述第二数据方可以根据随机正交矩阵的第二份额和海森矩阵的第二份额,秘密分享第二乘积。所述第一数据方和所述第二数据方可以分别获得所述第二乘积的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为第二乘积的第一份额,可以将所述第二数据方获得的份额作为第二乘积的第二份额。第二乘积的第一份额和第二乘积的第二份额的和等于第二乘积。
延续前面的场景示例,随机正交矩阵的第一份额可以表示为<R>0,随机正交矩阵的第二份额可以表示为<R>1,<R>0+<R>1=R。所述第一数据方可以根据<R>0和<H>0,所述第二数据方可以根据<R>1和<H>1,秘密分享第二乘积HR。所述第一数据方可以获得第二乘积的第一份额<HR>0,所述第二数据方可以获得第二乘积第二份额<HR>1。
下面介绍所述第一数据方和所述第二数据方秘密分享第二乘积HR的详细过程。
所述第一数据方可以根据<H>0,所述第二数据方可以根据<R>1,秘密分享<H>0<R>1。所述第一数据方可以获得<[<H>0<R>1]>0,所述第二数据方可以获得<[<H>0<R>1]>1。<[<H>0<R>1]>0+<[<H>0<R>1]>1=<H>0<R>1。
所述第一数据方还可以根据<R>0,所述第二数据方还可以根据<H>1,秘密分享<H>1<R>0。所述第一数据方可以获得<[<H>1<R>0]>0,所述第二数据方可以获得<[<H>1<R>0]>1。<[<H>1<R>0]>0+<[<H>1<R>0]>1=<H>1<R>0。
所述第一数据方可以计算<H>0<R>0+<[<H>0<R>1]>0+<[<H>1<R>0]>0作为第二乘积的第一份额<HR>0。所述第二数据方可以计算<H>1<R>1+<[<H>0<R>1]>1+<[<H>1<R>0]>1作为第二乘积的第二份额<HR>1。
在一些实施例中,所述预设条件可以包括:条件数小于或等于预设阈值。所述预设阈值可以为经验值,或者,还可以采用其它方式(例如机器学习的方式)获得。
所述第一数据方和所述第二数据方均可以持有所述预设条件。进而,所述第一数据方和所述第二数据方可以分别判断第二乘积的条件数是否满足所述预设条件。在一些实施方式中,可以由第一数据方计算第二乘积的条件数。具体地,所述第二数据方可以向所述第一数据方发送第二乘积的第二份额。所述第一数据方可以接收第二乘积的第二份额;可以将第二乘积的第二份额与自身持有的第二乘积的第一份额相加,得到第二乘积;可以计算第二乘积的条件数;可以判断第二乘积的条件数是否满足所述预设条件;可以向所述第二数据方发送第二乘积的条件数。所述第二数据方可以接收第二乘积的条件数;可以判断第二乘积的条件数是否满足所述预设条件。在另一些实施方式中,还可以由第二数据方计算第二乘积的条件数。具体地,所述第一数据方可以向所述第二数据方发送第二乘积的第一份额。所述第二数据方可以接收第二乘积的第一份额;可以将第二乘积的第一份额与自身持有的第二乘积的第二份额相加,得到第二乘积;可以计算第二乘积的条件数;可以判断第二乘积的条件数是否满足所述预设条件;可以向所述第一数据方发送第二乘积的条件数。所述第一数据方可以接收第二乘积的条件数;可以判断第二乘积的条件数是否满足所述预设条件。
或者,可以仅由第一数据方持有所述预设条件,进而仅由第一数据方判断第二乘积的条件数是否满足所述预设条件。具体地,所述第二数据方可以向所述第一数据方发送第二乘积的第二份额。所述第一数据方可以接收第二乘积的第二份额;可以将第二乘积的第二份额与自身持有的第二乘积的第一份额相加,得到第二乘积;可以计算第二乘积的条件数;可以判断第二乘积的条件数是否满足所述预设条件;可以向所述第二数据方发送判断结果信息。所述第二数据方可以接收判断结果信息。
又或者,可以仅由第二数据方持有所述预设条件,进而仅由第二数据方判断第二乘积的条件数是否满足所述预设条件。具体地,所述第一数据方可以向所述第二数据方发送第二乘积的第一份额。所述第二数据方可以接收第二乘积的第一份额;可以将第二乘积的第一份额与自身持有的第二乘积的第二份额相加,得到第二乘积;可以计算第二乘积的条件数;可以判断第二乘积的条件数是否满足所述预设条件;可以向所述第一数据方发送判断结果信息。所述第一数据方可以接收判断结果信息。
如前面所述,一个方阵与一个正交矩阵相乘后可以得到一个新的矩阵,该新的矩阵与该方阵具有相同的条件数。鉴于海森矩阵为方阵,因而第二乘积的条件数等于海森矩阵的条件数。这样便实现了第一数据方和第二数据方在不泄漏自身持有的海森矩阵的份额的条件下,协作计算得到海森矩阵的条件数。
在一些实施例中,第二乘积的条件数满足所述预设条件,表明第二乘积的病态程度较小,即表明海森矩阵的病态程度较小,因而可以使用牛顿法确定模型参数。如此在步骤S111中,所述第一数据方可以根据海森矩阵的第一份额,所述第二数据方可以根据海森矩阵的第二份额,秘密分享第一逆矩阵。所述第一数据方可以获得第一逆矩阵的第一份额,所述第二数据方可以获得第一逆矩阵的第二份额。
在一些实施方式中,可以由所述第二数据方对所述第二乘积进行求逆。具体地,所述第一数据方可以向所述第二数据方发送第二乘积的第一份额。所述第二数据方可以接收第二乘积的第一份额;可以将第二乘积的第一份额与自身的第二乘积的第二份额相加,得到第二乘积。鉴于所述第二乘积为方阵,因而所述第二数据方可以对所述第二乘积进行求逆处理,得到所述第二乘积的逆矩阵作为第二逆矩阵;可以向所述第一数据方发送所述第二逆矩阵。所述第一数据方可以接收所述第二逆矩阵。或者,在另一些实施方式中,还可以由所述第一数据方对所述第二乘积进行求逆。具体地,所述第二数据方可以向所述第一数据方发送第二乘积的第二份额。所述第一数据方可以接收第二乘积的第二份额;可以将第二乘积的第二份额与自身的第二乘积的第一份额相加,得到第二乘积。鉴于所述第二乘积为方阵,因而所述第一数据方可以对所述第二乘积进行求逆处理,得到所述第二乘积的逆矩阵作为第二逆矩阵;可以向所述第二数据方发送所述第二逆矩阵。所述第二数据方可以接收所述第二逆矩阵。
所述第一数据方可以将随机正交矩阵的第一份额与第二逆矩阵相乘,得到第一逆矩阵的第一份额。所述第二数据方可以将随机正交矩阵的第二份额与第二逆矩阵相乘,得到第一逆矩阵的第二份额。第一逆矩阵的第一份额和第一逆矩阵的第二份额的和等于第一逆矩阵。
延续前面的场景示例,这里由第二数据方对第二乘积HR进行求逆。具体地,所述第一数据方可以向所述第二数据方发送第二乘积的第一份额<HR>0。所述第二数据方可以接收第二乘积的第一份额<HR>0;可以将第二乘积的第一份额<HR>0与自身的第二乘积的第二份额<HR>1相加,得到第二乘积HR;可以对第二乘积HR进行求逆处理,得到第二逆矩阵(HR)-1;可以向所述第一数据方发送第二逆矩阵(HR)-1。所述第一数据方可以接收第二逆矩阵(HR)-1。
所述第一数据方可以将第二逆矩阵(HR)-1与随机正交矩阵的第一份额<R>0相乘,得到第一逆矩阵H-1的第一份额<H-1>0。所述第二数据方可以将第二逆矩阵(HR)-1与随机正交矩阵的第二份额<R>1相乘,得到第一逆矩阵H-1的第一份额<H-1>1。
H-1=<H-1>0+<H-1>1=<R>0(HR)-1+<R>1(HR)-1=R×(HR)-1。
在一些实施例中,在步骤S113中,所述第一数据方可以根据第一逆矩阵的第一份额和损失函数梯度的第一份额,所述第二数据方可以根据第一逆矩阵的第二份额和损失函数梯度的第二份额,秘密分享第三乘积。所述第一数据方和所述第二数据方可以分别获得所述第三乘积的一份份额。为了便于描述,可以将所述第一数据方获得的份额作为第三乘积的第一份额,可以将所述第二数据方获得的份额作为第三乘积的第二份额。第三乘积的第一份额和第三乘积的第二份额的和等于第三乘积。
所述第一数据方可以将第一模型参数的第一份额与第三乘积的第一份额相减,得到新的第一模型参数的第一份额。所述第二数据方可以将第一模型参数的第二份额与第三乘积的第二份额相减,得到新的第一模型参数的第二份额。
延续前面的场景示例,所述第一数据方可以根据<H-1>0和<dW>0,所述第二数据方可以根据<H-1>1和<dW>1,秘密分享第三乘积H-1×dW。所述第一数据方可以获得第三乘积的第一份额<H-1×dW>0,所述第二数据方可以获得第三乘积的第二份额<H-1×dW>1。
下面介绍所述第一数据方和所述第二数据方秘密分享第三乘积H-1×dW的详细过程。
所述第一数据方可以根据<H-1>0,所述第二数据方可以根据<dW>1,秘密分享<H-1>0<dW>1。所述第一数据方可以获得<[<H-1>0<dW>1]>0,所述第二数据方可以获得<[<H-1>0<dW>1]>1。<[<H-1>0<dW>1]>0+<[<H-1>0<dW>1]>1=<H-1>0<dW>1。
所述第一数据方还可以根据<dW>0,所述第二数据方还可以根据<H-1>1,秘密分享<H-1>1<dW>0。所述第一数据方可以获得<[<H-1>1<dW>0]>0,所述第二数据方可以获得<[<H-1>1<dW>0]>1。<[<H-1>1<dW>0]>0+<[<H-1>1<dW>0]>1=<H-1>1<dW>0。
所述第一数据方可以计算<H-1>0<dW>0+<[<H-1>0<dW>1]>0+<[<H-1>1<dW>0]>0作为第三乘积的第一份额<H-1×dW>0。所述第二数据方可以计算<H-1>1<dW>1+<[<H-1>0<dW>1]>1+<[<H-1>1<dW>0]>1作为第三乘积的第二份额<H-1×dW>1。
H-1×dW=<H-1×dW>0+<H-1×dW>1
=<H-1>0<dW>0+<[<H-1>0<dW>1]>0+<[<H-1>1<dW>0]>0+
<H-1>1<dW>1+<[<H-1>0<dW>1]>1+<[<H-1>1<dW>0]>1
=<H-1>0<dW>0+<H-1>0<dW>1+<H-1>1<dW>0+<H-1>1<dW>1
=(<H-1>0+<H-1>1)(<dW>0+<dW>1)
所述第一数据方可以计算<W'>0=<W>0-<H-1×dW>0,所述第二数据方可以计算<W'>1=<W>1-<H-1×dW>1,<W'>0表示新的第一模型参数的第一份额,<W'>1表示新的第一模型参数的第二份额,W'表示新的第一模型参数。
W'=<W'>0+<W'>1=<W>0-<H-1×dW>0+<W>1-<H-1×dW>1=W-H-1×dW。
在一些实施例中,第二乘积的条件数不满足所述预设条件,表明第二乘积的病态程度较大,即表明海森矩阵的病态程度较大,无法使用牛顿法确定模型参数,因而可以使用梯度下降法代替牛顿法确定模型参数。具体地,所述第一数据方可以根据第一模型参数的第一份额、损失函数梯度的第一份额和预设步长,计算新的第一模型参数的第一份额。所述第二数据方可以根据第一模型参数的第二份额、损失函数梯度的第二份额和预设步长,计算新的第一模型参数的第二份额。
所述预设步长可以用于控制梯度下降法的迭代速度。所述预设步长可以为任意适当正实数。例如,当预设步长过大时,迭代速度会过快,导致有可能无法获得最优模型参数。当预设步长过小时,导致迭代速度会过慢,导致花费的时间较长。所述预设步长具体可以为经验值;或者,也可以采用机器学习的方式得到。当然,所述预设步长还可以采用其它方式得到。所述第一数据方和所述第二数据方均可以持有所述预设步长。
所述第一数据方可以将损失函数梯度的第一份额与预设步长相乘,得到第四乘积;可以将第一模型参数的第一份额与第四乘积相减,得到新的第一模型参数的第一份额。所述第二数据方可以将损失函数梯度的第二份额与预设步长相乘,得到第五乘积;可以将第一模型参数的第二份额与第五乘积相减,得到新的第一模型参数的第二份额。新的第一模型参数的第一份额和新的第一模型参数的第二份额的和等于新的第一模型参数。
延续前面的场景示例,所述第一数据方可以将损失函数梯度的第一份额<dW>0(具体为向量)与预设步长G相乘(具体为向量的数乘),得到第四乘积G<dW>0;可以将第一模型参数的第一份额<W>0与第四乘积G<dW>0相减,得到新的第一模型参数的第一份额<W'>0=<W>0-G<dW>0。
所述第二数据方可以将损失函数梯度的第二份额<dW>1(具体为向量)与预设步长G相乘(具体为向量的数乘),得到第五乘积G<dW>1;可以将第一模型参数的第二份额<W>1与第五乘积G<dW>1相减,得到新的第一模型参数的第二份额<W'>1=<W>1-G<dW>1。其中,<W'>0+<W'>1=W',W'表示新的第一模型参数。
在一些实施例中,还可以包括对数据处理模型的模型参数进行迭代优化调整的过程。
可以重复执行步骤S101,所述第一数据方可以获得新的第一乘积的第一份额,所述第二数据方可以获得新的第一乘积的第二份额。新的第一乘积为特征数据和新的第一模型参数的乘积。所述第一数据方可以根据新的第一乘积的第一份额,所述第二数据方可以根据新的第一乘积的第二份额,秘密分享新的激励函数的取值。所述第一数据方可以获得新的激励函数取值的第一份额,所述第二数据方可以获得新的激励函数取值的第二份额。可以重复执行步骤S105,所述第一数据方可以获得新的损失函数梯度的第一份额,所述第二数据方可以获得新的损失函数梯度的第二份额。可以重复执行步骤S107,所述第一数据方可以获得新的海森矩阵的第一份额,所述第二数据方可以获得新的海森矩阵的第二份额。可以重复执行步骤S109,所述第一数据方可以获得新的第二乘积的第一份额,所述第二数据方可以获得新的第二乘积的第二份额。新的第二乘积为随机正交矩阵和新的海森矩阵之间的乘积。
在新的第二乘积的条件数满足预设条件时,表明在该轮迭代过程中可以继续使用牛顿法确定模型参数。可以重复执行步骤S111。所述第一数据方可以获得新的第一逆矩阵的第一份额,所述第二数据方可以获得新的第一逆矩阵的第二份额。新的第一逆矩阵为新的海森矩阵的逆矩阵。所述第一数据方可以根据新的第一模型参数的第一份额、新的第一逆矩阵的第一份额和新的损失函数梯度的第一份额,所述第二数据方根据新的第一模型参数的第二份额、新的第一逆矩阵的第二份额和新的损失函数梯度的第二份额,秘密分享第二模型参数。所述第一数据方可以获得第二模型参数的第一份额,所述第二数据方可以获得第二模型参数的第二份额。第二模型参数的第一份额和第二模型参数的第二份额的和等于第二模型参数。
在新的第二乘积的条件数不满足预设条件时,表明在该轮迭代过程中无法继续使用牛顿法确定模型参数,因而可以使用梯度下降法代替牛顿法确定模型参数。所述第一数据方可以根据新的第一模型参数的第一份额、新的损失函数梯度的第一份额和预设步长,计算第二模型参数的第一份额。所述第二数据方可以根据新的第一模型参数的第二份额、新的损失函数梯度的第二份额和预设步长,计算第二模型参数的第二份额。第二模型参数的第一份额和第二模型参数的第二份额的和等于第二模型参数。
以下介绍所述第一数据方根据新的第一乘积的第一份额,所述第二数据方根据新的第一乘积的第二份额,秘密分享新的激励函数的取值的过程。
所述第一数据方可以根据新的第一乘积的第一份额,所述第二数据方可以根据新的第一乘积的第二份额,秘密分享多项式的取值。所述第一数据方和所述第二数据方可以分别获得所述多项式取值的一份份额。所述多项式可以用于拟合所述数据处理模型的激励函数。如此可以将所述第一数据方获得的份额作为新的激励函数取值的第一份额,可以将所述第二数据方获得的份额作为新的激励函数取值的第二份额。新的激励函数取值的第一份额和新的激励函数取值的第二份额的和等于新的激励函数的取值。
本实施例的模型参数确定方法,第一数据方和第二数据方可以在不泄漏自身所持有的数据的前提下,协作确定数据处理模型的模型参数。另外,通过条件数和预设条件,本实施例的模型参数确定方法可以避免在使用牛顿法确定模型参数的过程中由于出现病态矩阵所导致的不收敛问题,从而实现自适应地选择牛顿法或梯度下降法来优化调整模型参数。
基于同样的发明构思,本说明书还提供另一种模型参数确定方法的实施例。该实施例以第一数据方为执行主体,所述第一数据方可以持有特征数据和第一模型参数的份额。请参阅图5。该实施例可以包括以下步骤。
步骤S201:根据特征数据和第一模型参数的份额与合作方秘密分享第一乘积,得到第一乘积的份额,所述第一乘积为特征数据和第一模型参数的乘积。
在一些实施例中,所述合作方可以理解为与所述第一数据方进行合作安全建模的数据方,具体可以为前面的第二数据方。
步骤S203:根据第一乘积的份额和激励函数对应的混淆电路与合作方进行通信,得到激励函数取值的份额。
步骤S205:根据特征数据和激励函数取值的份额与合作方秘密分享损失函数的梯度和海森矩阵,分别得到损失函数梯度的份额和海森矩阵的份额。
步骤S207:根据随机正交矩阵的份额和海森矩阵的份额与合作方秘密分享第二乘积,得到第二乘积的份额,所述第二乘积为随机正交矩阵和海森矩阵之间的乘积。
步骤S209:在第二乘积的条件数满足预设条件时,根据海森矩阵的份额与合作方秘密分享第一逆矩阵,得到第一逆矩阵的份额,所述第一逆矩阵为海森矩阵的逆矩阵。
在一些实施例中,所述预设条件可以包括:条件数小于或等于预设阈值。第二乘积的条件数可以由第一数据方和/或合作方来计算。第二乘积的条件数等于海森矩阵的条件数。
在一些实施例中,第二乘积的条件数满足所述预设条件,表明第二乘积的病态程度较小,可以使用牛顿法确定模型参数。如此所述第一数据方可以根据海森矩阵的份额与合作方秘密分享第一逆矩阵,得到第一逆矩阵的份额。
步骤S211:根据第一逆矩阵的份额、损失函数梯度的份额和第一模型参数的份额与合作方秘密分享新的第一模型参数,得到新的第一模型参数的份额。
在一些实施例中,所述第一数据方可以根据第一逆矩阵的份额和损失函数梯度的份额与合作方秘密分享第三乘积,得到第三乘积的份额。所述第三乘积可以为第一逆矩阵和损失函数梯度之间的乘积。所述第一数据方可以将第一模型参数的份额与第三乘积的份额相减,得到新的第一模型参数的份额。
在一些实施例中,第二乘积的条件数不满足所述预设条件,表明第二乘积的病态程度较大,无法使用牛顿法确定模型参数,因而可以使用梯度下降法代替牛顿法确定模型参数。所述第一数据方可以根据第一模型参数的份额、损失函数梯度的份额和预设步长,计算新的第一模型参数的份额。所述第一数据方具体可以将损失函数梯度的份额与预设步长相乘,得到第四乘积;可以将第一模型参数的份额与第四乘积相减,得到新的第一模型参数的份额。
在一些实施例中,还可以包括对数据处理模型的模型参数进行迭代优化调整的过程。
所述第一数据方可以重复执行步骤S201,得到新的第一乘积的份额。所述第一数据方可以根据新的第一乘积的份额与合作方秘密分享激励函数的取值,得到新的激励函数取值的份额。所述第一数据方可以重复执行步骤S205,得到新的损失函数梯度的份额和新的海森矩阵的份额;可以重复执行步骤S207,得到新的第二乘积的份额。新的第二乘积为随机正交矩阵和新的海森矩阵之间的乘积。
在新的第二乘积的条件数满足预设条件时,表明可以继续使用牛顿法确定模型参数。所述第一数据方可以重复执行步骤S209,得到新的第一逆矩阵的份额。新的第一逆矩阵为新的海森矩阵的逆矩阵。所述第一数据方进而可以根据新的第一逆矩阵的份额、新的损失函数梯度的份额和新的第一模型参数的份额与合作方秘密分享第二模型参数,得到第二模型参数的份额。
在新的第二乘积的条件数不满足预设条件时,表明需要使用梯度下降法代替牛顿法确定模型参数。所述第一数据方可以根据新的第一模型参数的份额、新的损失函数梯度的份额和预设步长,计算第二模型参数的份额。
在本实施例中,第一数据方和第二数据方可以在不泄漏自身所持有的数据的前提下,协作确定数据处理模型的模型参数。另外,通过条件数和预设条件,本实施例的模型参数确定方法可以避免在使用牛顿法确定模型参数的过程中由于出现病态矩阵所导致的不收敛问题,从而实现自适应地选择牛顿法或梯度下降法来优化调整模型参数。
基于同样的发明构思,本说明书还提供另一种模型参数确定方法的实施例。该实施例以第二数据方为执行主体,所述第二数据方可以持有标签和第一模型参数的份额。请参阅图6。该实施例可以包括以下步骤。
步骤S301:根据第一模型参数的份额与合作方秘密分享第一乘积,得到第一乘积的份额,所述第一乘积为特征数据和第一模型参数的乘积。
在一些实施例中,所述合作方可以理解为与所述第二数据方进行合作安全建模的数据方,具体可以为前面的第一数据方。
步骤S303:根据第一乘积的份额和激励函数对应的混淆电路与合作方进行通信,得到激励函数取值的份额。
步骤S305:根据标签和激励函数取值的份额与合作方秘密分享损失函数的梯度,得到损失函数梯度的份额;根据激励函数取值的份额与合作方秘密分享海森矩阵,得到海森矩阵的份额。
步骤S307:根据随机正交矩阵的份额和海森矩阵的份额与合作方秘密分享第二乘积,得到第二乘积的份额,所述第二乘积为随机正交矩阵和海森矩阵之间的乘积。
步骤S309:在第二乘积的条件数满足预设条件时,根据海森矩阵的份额与合作方秘密分享第一逆矩阵,得到第一逆矩阵的份额,所述第一逆矩阵为海森矩阵的逆矩阵。
在一些实施例中,所述预设条件可以包括:条件数小于或等于预设阈值。第二乘积的条件数可以由第二数据方和/或合作方来计算。第二乘积的条件数等于海森矩阵的条件数。
在一些实施例中,第二乘积的条件数满足所述预设条件,表明第二乘积的病态程度较小,可以使用牛顿法确定模型参数。如此所述第二数据方可以根据海森矩阵的份额与合作方秘密分享第一逆矩阵,得到第一逆矩阵的份额。
步骤S311:根据第一逆矩阵的份额、损失函数梯度的份额和第一模型参数的份额与合作方秘密分享新的第一模型参数,得到新的第一模型参数的份额。
在一些实施例中,所述第二数据方可以根据第一逆矩阵的份额和损失函数梯度的份额与合作方秘密分享第三乘积,得到第三乘积的份额。所述第三乘积可以为第一逆矩阵和损失函数梯度之间的乘积。所述第二数据方可以将第一模型参数的份额与第三乘积的份额相减,得到新的第一模型参数的份额。
在一些实施例中,第二乘积的条件数不满足所述预设条件,表明第二乘积的病态程度较大,无法使用牛顿法确定模型参数,因而可以使用梯度下降法代替牛顿法确定模型参数。所述第二数据方可以根据第一模型参数的份额、损失函数梯度的份额和预设步长,计算新的第一模型参数的份额。所述第二数据方具体可以将损失函数梯度的份额与预设步长相乘,得到第四乘积;可以将第一模型参数的份额与第四乘积相减,得到新的第一模型参数的份额。
在一些实施例中,还可以包括对数据处理模型的模型参数进行迭代优化调整的过程。
所述第二数据方可以重复执行步骤S301,得到新的第一乘积的份额。所述第二数据方可以根据新的第一乘积的份额与合作方秘密分享激励函数的取值,得到新的激励函数取值的份额。所述第二数据方可以重复执行步骤S305,得到新的损失函数梯度的份额和新的海森矩阵的份额;可以重复执行步骤S307,得到新的第二乘积的份额。新的第二乘积为随机正交矩阵和新的海森矩阵之间的乘积。
在新的第二乘积的条件数满足预设条件时,表明可以继续使用牛顿法确定模型参数。所述第二数据方可以重复执行步骤S309,得到新的第一逆矩阵的份额。新的第一逆矩阵为新的海森矩阵的逆矩阵。所述第二数据方进而可以根据新的第一逆矩阵的份额、新的损失函数梯度的份额和新的第一模型参数的份额与合作方秘密分享第二模型参数,得到第二模型参数的份额。
在新的第二乘积的条件数不满足预设条件时,表明需要使用梯度下降法代替牛顿法确定模型参数。所述第二数据方可以根据新的第一模型参数的份额、新的损失函数梯度的份额和预设步长,计算第二模型参数的份额。
在本实施例中,第一数据方和第二数据方可以在不泄漏自身所持有的数据的前提下,协作确定数据处理模型的模型参数。另外,通过条件数和预设条件,本实施例的模型参数确定方法可以避免在使用牛顿法确定模型参数的过程中由于出现病态矩阵所导致的不收敛问题,从而实现自适应地选择牛顿法或梯度下降法来优化调整模型参数。
基于同样的发明构思,本说明书还提供一种模型参数确定装置的实施例。请参阅图7。该实施例可以应用于第一数据方,可以包括以下单元。
第一秘密分享单元401,用于根据特征数据和第一模型参数的份额与合作方秘密分享第一乘积,得到第一乘积的份额,所述第一乘积为特征数据和第一模型参数的乘积;
混淆电路单元403,用于根据第一乘积的份额和激励函数对应的混淆电路与合作方进行通信,得到激励函数取值的份额;
第二秘密分享单元405,用于根据特征数据和激励函数取值的份额与合作方秘密分享损失函数的梯度和海森矩阵,分别得到损失函数梯度的份额和海森矩阵的份额;
第三秘密分享单元407,用于根据随机正交矩阵的份额和海森矩阵的份额与合作方秘密分享第二乘积,得到第二乘积的份额,所述第二乘积为随机正交矩阵和海森矩阵之间的乘积;
第四秘密分享单元409,用于在第二乘积的条件数满足预设条件时,根据海森矩阵的份额与合作方秘密分享第一逆矩阵,得到第一逆矩阵的份额,所述第一逆矩阵为海森矩阵的逆矩阵;
第五秘密分享单元411,用于根据第一逆矩阵的份额、损失函数梯度的份额和第一模型参数的份额与合作方秘密分享新的第一模型参数,得到新的第一模型参数的份额;
第一计算单元413,用于重复执行所述秘密分享第一乘积的步骤;根据新的第一乘积的份额与合作方秘密分享激励函数的取值,得到新的激励函数取值的份额;重复执行所述秘密分享损失函数的梯度和海森矩阵的步骤、以及所述秘密分享第二乘积的步骤
第二计算单元415,用于在新的第二乘积的条件数不满足所述预设条件时,根据新的第一模型参数的份额、新的损失函数梯度的份额和预设步长,计算第二模型参数的份额
基于同样的发明构思,本说明书还提供一种模型参数确定装置的实施例。请参阅图8。该实施例可以应用于第二数据方,可以包括以下单元。
第一秘密分享单元501,用于根据第一模型参数的份额与合作方秘密分享第一乘积,得到第一乘积的份额,所述第一乘积为特征数据和第一模型参数的乘积;
混淆电路单元503,用于根据第一乘积的份额和激励函数对应的混淆电路与合作方进行通信,得到激励函数取值的份额;
第二秘密分享单元505,用于根据激励函数取值的份额与合作方秘密分享损失函数的梯度和海森矩阵,分别得到损失函数梯度的份额和海森矩阵的份额;
第三秘密分享单元507,用于根据随机正交矩阵的份额和海森矩阵的份额与合作方秘密分享第二乘积,得到第二乘积的份额,所述第二乘积为随机正交矩阵和海森矩阵之间的乘积;
第四秘密分享单元509,用于在第二乘积的条件数满足预设条件时,根据海森矩阵的份额与合作方秘密分享第一逆矩阵,得到第一逆矩阵的份额,所述第一逆矩阵为海森矩阵的逆矩阵;
第五秘密分享单元511,用于根据第一逆矩阵的份额、损失函数梯度的份额和第一模型参数的份额与合作方秘密分享新的第一模型参数,得到新的第一模型参数的份额;
第一计算单元513,用于重复执行所述秘密分享第一乘积的步骤;根据新的第一乘积的份额与合作方秘密分享激励函数的取值,得到新的激励函数取值的份额;重复执行所述秘密分享损失函数的梯度的步骤、所述秘密分享海森矩阵的步骤、以及所述秘密分享第二乘积的步骤
第二计算单元515,用于在新的第二乘积的条件数不满足所述预设条件时,根据新的第一模型参数的份额、新的损失函数梯度的份额和预设步长,计算第二模型参数的份额。
下面介绍本说明书电子设备的一个实施例。图9是该实施例中一种电子设备的硬件结构示意图。如图9所示,所述电子设备可以包括一个或多个(图中仅示出一个)处理器、存储器和传输模块。当然,本领域普通技术人员可以理解,图9所示的硬件结构仅为示意,其并不对上述电子设备的硬件结构造成限定。在实际中所述电子设备还可以包括比图9所示更多或者更少的组件单元;或者,具有与图9所示不同的配置。
所述存储器可以包括高速随机存储器;或者,还可以包括非易失性存储器,例如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。当然,所述存储器还可以包括远程设置的网络存储器。所述远程设置的网络存储器可以通过诸如互联网、企业内部网、局域网、移动通信网等网络连接至所述电子设备。所述存储器可以用于存储应用软件的程序指令或模块,例如本说明书图5所对应实施例的程序指令或模块;和/或,本说明书图6所对应实施例的程序指令或模块。
所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以读取并执行所述存储器中的程序指令或模块。
所述传输模块可以用于经由网络进行数据传输,例如经由诸如互联网、企业内部网、局域网、移动通信网等网络进行数据传输。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例和电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。另外,可以理解的是,本领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到将本说明书列举的部分或全部实施例进行任意组合,这些组合也在本说明书公开和保护的范围内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。