保护数据隐私的多方联合训练对象推荐模型的方法及装置转让专利

申请号 : CN202010384206.4

文献号 : CN111291417B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈超超曹绍升王力周俊

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本说明书实施例提供一种保护数据隐私的多方联合训练对象推荐模型的方法,其中多方为N方,共同维护M个用户对P个对象的总评分矩阵。该方法由N方中任意的第k方执行,包括:先通过秘密分享,获取以下矩阵分片:该总评分矩阵的第k评分矩阵分片、初始化的该P个对象的对象特征矩阵的第k对象矩阵分片和初始化的该M个用户的用户特征矩阵的第k用户矩阵分片;再执行多次迭代更新,具体地,基于上述矩阵分片,通过与其他N‑1方进行秘密分享矩阵运算,得到对象更新梯度和用户更新梯度的第k分片,进而更新第k对象矩阵分片和第k用户矩阵分片。如此在多次迭代更新结束后,N方各自交换更新后的矩阵分片,进行矩阵重构,进而建立各自的对象推荐模型。

权利要求 :

1.一种保护数据隐私的多方联合训练对象推荐模型的方法,所述多方为N方,所述N方共同维护M个用户对P个对象的总评分矩阵,该方法通过N方中任意的第k方执行,包括:通过秘密分享获取所述总评分矩阵的第k评分矩阵分片;

通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,以及获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片;

执行多次迭代更新,其中任一次迭代更新包括:

对于任意的第一用户和第一对象,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片;

基于所述第k用户特征分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片,将第k相似度分片和第k评分分片之差作为第k误差分片;

基于所述第k误差分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片;

基于所述第k误差分片和第k用户特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度,得到第k对象梯度分片;

根据所述第k用户梯度分片,更新所述第k用户特征分片;根据所述第k对象梯度分片,更新所述第k对象特征分片;

其中,所述第k评分矩阵分片、第k对象矩阵分片和第k用户矩阵分片均为所述第k方拥有的矩阵分片;

所述第k方具有所述总评分矩阵的第k评分子矩阵;所述通过秘密分享获取所述总评分矩阵的第k评分矩阵分片,包括:将所述第k评分子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收其他评分子矩阵的第k分片;

将所述第k评分子矩阵的第k分片,和其他评分子矩阵的第k分片拼接,形成所述第k评分矩阵分片。

2.根据权利要求1所述的方法,其中,所述第k评分子矩阵由M个用户对第k方中的Pk个对象的评分构成。

3.根据权利要求2所述的方法,其中,所述获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,包括:初始化Pk个对象对应的Pk个对象特征向量,形成第k对象子矩阵;

通过秘密分享将所述第k对象子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他对象子矩阵的第k分片;

将所述第k对象子矩阵的第k分片和其他对象子矩阵的第k分片拼接,形成所述第k对象矩阵分片。

4.根据权利要求2所述的方法,其中,所述第k方为初始化用户特征向量的指定方;所述获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片,包括:初始化M个用户对应的M个用户特征向量,形成用户特征矩阵;

通过秘密分享将所述用户特征矩阵拆分为N个分片,保留其中的所述第k用户矩阵分片,将其他N-1个分片对应发送给其他N-1方。

5.根据权利要求2所述的方法,其中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的第k用户特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他用户特征分片;

将所述更新后的第k用户特征分片和所述接收的更新后的其他用户特征分片拼接,形成更新后的用户特征矩阵。

6.根据权利要求3所述的方法,其中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的所述第k对象矩阵分片中属于其他对象子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k对象子矩阵的其他分片;

将所述更新后的所述第k对象矩阵分片中属于所述第k对象子矩阵的第k分片,和所述接收的更新后的其他分片拼接,形成更新后的第k对象子矩阵。

7.根据权利要求1所述的方法,其中所述第k方具有所述总评分矩阵的第k评分子矩阵,所述第k评分子矩阵由第k方中的Mk个用户对P个对象的评分构成。

8.根据权利要求7所述的方法,其中,所述获取初始化的所述M 个用户的用户特征矩阵的第k用户矩阵分片,包括:初始化M k个用户对应的M k个用户特征向量,形成第k用户子矩阵;

通过秘密分享将所述第k用户子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他用户子矩阵的第k分片;

将所述第k用户子矩阵的第k分片和其他用户子矩阵的第k分片拼接,形成所述第k用户矩阵分片。

9.根据权利要求7所述的方法,其中,所述第k方为初始化对象特征向量的指定方;所述获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,包括:初始化P个对象对应的P个对象特征向量,形成对象特征矩阵;

通过秘密分享将所述对象特征矩阵拆分为N个分片,保留其中的所述第k对象矩阵分片,将其他N-1个分片对应发送给其他N-1方。

10.根据权利要求7所述的方法,其中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的第k对象特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他对象特征分片;

将所述更新后的第k对象特征分片和所述接收的更新后的其他对象特征分片拼接,形成更新后的对象特征矩阵。

11.根据权利要求8所述的方法,其中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的所述第k用户矩阵分片中属于其他用户子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k用户子矩阵的其他分片;

将所述更新后的所述第k用户矩阵分片中属于所述第k用户子矩阵的第k分片,和所述接收的更新后的其他分片拼接,形成更新后的第k用户子矩阵。

12.一种保护数据隐私的多方联合训练对象推荐模型的装置,所述多方为N方,所述N方共同维护M个用户对P个对象的总评分矩阵,该装置集成于N方中任意的第k方,所述装置包括:评分分片获取单元,配置为通过秘密分享获取所述总评分矩阵的第k评分矩阵分片;

对象分片获取单元,配置为通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片;

用户分片获取单元,配置为通过秘密分享,获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片;

迭代更新单元,配置为执行多次迭代更新,其中任一次迭代更新通过以下模块执行:多分片获取模块,配置为对于任意的第一用户和第一对象,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片;

误差分片计算模块,配置为基于所述第k用户特征分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片,将第k相似度分片和第k评分分片之差作为第k误差分片;

用户梯度分片计算模块,配置为基于所述第k误差分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片;

对象梯度计算模块,配置为基于所述第k误差分片和第k用户特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度,得到第k对象梯度分片;

用户分片更新模块,配置为根据所述第k用户梯度分片,更新所述第k用户特征分片;

对象分片更新模块,配置为根据所述第k对象梯度分片,更新所述第k对象特征分片;

其中,所述第k评分矩阵分片、第k对象矩阵分片和第k用户矩阵分片均为所述第k方拥有的矩阵分片;

所述第k方具有所述总评分矩阵的第k评分子矩阵;所述评分分片获取单元具体配置为:将所述第k评分子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收其他评分子矩阵的第k分片;

将所述第k评分子矩阵的第k分片,和其他评分子矩阵的第k分片拼接,形成所述第k评分矩阵分片。

13.根据权利要求12所述的装置,其中,所述第k评分子矩阵由M个用户对第k方中的Pk个对象的评分构成。

14.根据权利要求13所述的装置,其中,所述对象分片获取单元具体配置为:初始化Pk个对象对应的Pk个对象特征向量,形成第k对象子矩阵;

通过秘密分享将所述第k对象子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他对象子矩阵的第k分片;

将所述第k对象子矩阵的第k分片和其他对象子矩阵的第k分片拼接,形成所述第k对象矩阵分片。

15.根据权利要求13所述的装置,其中,所述第k方为初始化用户特征向量的指定方;所述用户分片获取单元具体配置为:初始化M个用户对应的M个用户特征向量,形成用户特征矩阵;

通过秘密分享将所述用户特征矩阵拆分为N个分片,保留其中的所述第k用户矩阵分片,将其他N-1个分片对应发送给其他N-1方。

16.根据权利要求13所述的装置,其中,所述装置还包括用户矩阵重构单元,配置为:将更新后的第k用户特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他用户特征分片;

将所述更新后的第k用户特征分片和所述接收的更新后的其他用户特征分片拼接,形成更新后的用户特征矩阵。

17.根据权利要求14所述的装置,其中,所述装置还包括对象子矩阵重构单元,配置为:将更新后的所述第k对象矩阵分片中属于其他对象子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k对象子矩阵的其他分片;

将所述更新后的所述第k对象矩阵分片中属于所述第k对象子矩阵的第k分片,和所述接收的更新后的其他分片拼接,形成更新后的第k对象子矩阵。

18.根据权利要求12所述的装置,其中所述第k方具有所述总评分矩阵的第k评分子矩阵,所述第k评分子矩阵由第k方中的Mk个用户对P个对象的评分构成。

19.根据权利要求18所述的装置,其中,所述用户分片获取单元具体配置为:初始化M k个用户对应的M k个用户特征向量,形成第k用户子矩阵;

通过秘密分享将所述第k用户子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他用户子矩阵的第k分片;

将所述第k用户子矩阵的第k分片和其他用户子矩阵的第k分片拼接,形成所述第k用户矩阵分片。

20.根据权利要求18所述的装置,其中,所述第k方为初始化对象特征向量的指定方;所述对象分片获取单元具体配置为:初始化P个对象对应的P个对象特征向量,形成对象特征矩阵;

通过秘密分享将所述对象特征矩阵拆分为N个分片,保留其中的所述第k对象矩阵分片,将其他N-1个分片对应发送给其他N-1方。

21.根据权利要求19所述的装置,其中,所述装置还包括对象矩阵重构单元,配置为:将更新后的第k对象特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他对象特征分片;

将所述更新后的第k对象特征分片和所述接收的更新后的其他对象特征分片拼接,形成更新后的对象特征矩阵。

22.根据权利要求19所述的装置,其中,所述装置还包括用户子矩阵重构单元,配置为:将更新后的所述第k用户矩阵分片中属于其他用户子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k用户子矩阵的其他分片;

将所述更新后的所述第k用户矩阵分片中属于所述第k用户子矩阵的第k分片,和所述接收的更新后的其他分片拼接,形成更新后的第k用户子矩阵。

23.一种计算机可读存储介质,其上存储有计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项的所述的方法。

24.一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。

说明书 :

保护数据隐私的多方联合训练对象推荐模型的方法及装置

技术领域

[0001] 本说明书一个或多个实施例涉及信息安全技术领域,尤其涉及一种保护数据隐私的多方联合训练对象推荐模型的方法及装置。

背景技术

[0002] 目前在推荐系统中,通常由单个数据方利用其存储的多个用户对多个对象的打分数据,学习用户特征向量和对象特征向量的潜在偏好,进而利用学习好的用户和对象的特征向量,去预测其中某个用户对某些对象的打分,其中某些对象通常是该某个用户未做出过打分行为的对象,进而根据预测分数向某个用户进行对象推荐。
[0003] 随着多方利用各自持有的数据协同进行机器学习引发研究热潮,存储有不同打分数据的不同数据方,希望利用各自持有的打分数据协同学习用户特征向量和对象特征向量,以提高学习到的特征向量的准确度,进而提高预测打分的准确度和有效性。其中的难点在于,在学习过程中如何保证各方数据,包括用户数据、对象数据和打分数据等的隐私安全。
[0004] 因此,需要一种方案,使得多方可以在保护数据隐私的前提下,联合学习特征向量,用于构建各自的对象推荐模型。然而,目前尚不存在相关方案。

发明内容

[0005] 本说明书一个或多个实施例描述了一种保护数据隐私的多方联合训练对象推荐模型的方法,可以在保障各方数据隐私安全的同时,实现多方协同更新用户特征向量和对象特征向量,从而构建各自的对象推荐模型,进而做出更加精准的对象推荐。
[0006] 根据第一方面,提供一种保护数据隐私的多方联合训练对象推荐模型的方法,所述多方为N方,所述N方共同维护M个用户对P个对象的总评分矩阵,该方法通过N方中任意的第k方执行,包括:通过秘密分享获取所述总评分矩阵的第k评分矩阵分片。通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,以及获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片。执行多次迭代更新,其中任一次迭代更新包括:对于任意的第一用户和第一对象,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片;基于所述第k用户特征分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片,将第k相似度分片和第k评分分片之差作为第k误差分片;基于所述第k误差分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片;基于所述第k误差分片和第k用户特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度,得到第k对象梯度分片;根据所述第k用户梯度分片,更新所述第k用户特征分片;根据所述第k对象梯度分片,更新所述第k对象特征分片。
[0007] 在一个实施例中,所述第k方具有所述总评分矩阵的第k评分子矩阵;所述通过秘密分享获取所述总评分矩阵的第k评分矩阵分片,包括:将所述第k评分子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收其他评分子矩阵的第k分片;将所述第k评分子矩阵的第k分片,和其他评分子矩阵的第k分片拼接,形成所述第k评分矩阵分片。
[0008] 在一个实施例中,所述第k方具有所述总评分矩阵的第k评分子矩阵,所述第k评分子矩阵由M个用户对第k方中的Pk个对象的评分构成。
[0009] 在一个具体的实施例中,所述获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,包括:初始化Pk个对象对应的Pk个对象特征向量,形成第k对象子矩阵;通过秘密分享将所述第k对象子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他对象子矩阵的第k分片;将所述第k对象子矩阵的第k分片和其他对象子矩阵的第k分片拼接,形成该第k对象矩阵分片。
[0010] 在一个具体的实施例中,所述第k方为初始化用户特征向量的指定方;所述获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片,包括:初始化M个用户对应的M个用户特征向量,形成用户特征矩阵;通过秘密分享将所述用户特征矩阵拆分为N个分片,保留其中的所述第k用户矩阵分片,将其他N-1个分片对应发送给其他N-1方。
[0011] 在一个具体的实施例中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的第k用户特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他用户特征分片;将所述更新后的第k用户特征分片和所述接收的其他用户特征分片拼接,形成更新后的用户特征矩阵。
[0012] 在一个具体的实施例中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的所述第k对象矩阵分片中属于其他对象子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k对象子矩阵的其他分片;将所述更新后的所述第k对象矩阵分片中属于所述第k对象子矩阵的第k分片,和所述接收的其他分片拼接,形成更新后的第k对象子矩阵。
[0013] 在一个实施例中,其中所述第k方具有所述总评分矩阵的第k评分子矩阵,所述第k评分子矩阵由第k方中的Mk个用户对P个对象的评分构成。
[0014] 在一个具体的实施例中,所述获取初始化的所述M 个用户的用户特征矩阵的第k用户矩阵分片,包括:初始化M k个用户对应的M k个用户特征向量,形成第k用户子矩阵;通过秘密分享将所述第k用户子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他用户子矩阵的第k分片;将所述第k用户子矩阵的第k分片和其他用户子矩阵的第k分片拼接,形成该第k用户矩阵分片。
[0015] 在一个具体的实施例中,所述第k方为初始化对象特征向量的指定方;所述获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,包括:初始化P个对象对应的P个对象特征向量,形成对象特征矩阵;通过秘密分享将所述对象特征矩阵拆分为N个分片,保留其中的所述第k对象矩阵分片,将其他N-1个分片对应发送给其他N-1方。
[0016] 在一个具体的实施例中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的第k对象特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他对象特征分片;将所述更新后的第k对象特征分片和所述接收的其他对象特征分片拼接,形成更新后的对象特征矩阵。
[0017] 在一个具体的实施例中,在所述执行多次迭代更新之后,所述方法还包括:将更新后的所述第k用户矩阵分片中属于其他用户子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k用户子矩阵的其他分片;将所述更新后的所述第k用户矩阵分片中属于所述第k用户子矩阵的第k分片,和所述接收的其他分片拼接,形成更新后的第k用户子矩阵。
[0018] 根据第二方面,提供一种保护数据隐私的多方联合训练对象推荐模型的装置,所述多方为N方,所述N方共同维护M个用户对P个对象的总评分矩阵,该装置集成于N方中任意的第k方,所述装置包括:评分分片获取单元,配置为通过秘密分享获取所述总评分矩阵的第k评分矩阵分片。对象分片获取单元,配置为通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片。用户分片获取单元,配置为通过秘密分享,获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片。迭代更新单元,配置为执行多次迭代更新,其中任一次迭代更新通过以下模块执行:多分片获取模块,配置为对于任意的第一用户和第一对象,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片;误差分片计算模块,配置为基于所述第k用户特征分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片,将第k相似度分片和第k评分分片之差作为第k误差分片;用户梯度分片计算模块,配置为基于所述第k误差分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片;对象梯度计算模块,配置为基于所述第k误差分片和第k用户特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度,得到第k对象梯度分片;用户分片更新模块,配置为根据所述第k用户梯度分片,更新所述第k用户特征分片;对象分片更新模块,配置为根据所述第k对象梯度分片,更新所述第k对象特征分片。
[0019] 根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
[0020] 根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
[0021] 综上,采用本说明书实施例提供的方法及装置,多方不仅不进行评分数据、对象数据和用户数据的明文交换,用户特征矩阵和对象特征矩阵也拆分为特征分片,各自只维护特征分片的迭代更新,直到迭代结束,才会重构得到特征矩阵,进而构建各自的对象推荐模型。如此,保证了联合训练过程中,隐私数据的安全性,同时,可以提高对象推荐模型的预测准确性。

附图说明

[0022] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0023] 图1示出根据一个实施例的总评分矩阵示意图;
[0024] 图2示出根据一个实施例的N个评分子矩阵组成总评分矩阵的示意图;
[0025] 图3示出根据另一个实施例的N个评分子矩阵组成总评分矩阵的示意图;
[0026] 图4示出根据又一个实施例的评分子矩阵组成总评分矩阵的示意图;
[0027] 图5示出本说明书实施例披露的多方联合训练对象推荐模型的方法实施示意图;
[0028] 图6示出根据一个实施例的保护数据隐私的多方联合训练对象推荐模型的方法流程示意图;
[0029] 图7示出根据一个实施例的两方进行秘密分享矩阵运算的过程示意图;
[0030] 图8示出根据一个实施例的保护数据隐私的多方联合训练对象推荐模型的装置结构示意图。

具体实施方式

[0031] 下面结合附图,对本说明书提供的方案进行描述。
[0032] 如前所述,目前在推荐系统中,通过学习用户和对象的特征向量实现对象推荐。典型地学习过程包括,通过矩阵分解去拟合已有的用户-对象评分,来学习用户和对象的潜在向量偏好。
[0033] 具体地,用矩阵R表示用户集合u对对象集合v的评分,其中矩阵R中的每个元素表示用户 对对象的评分,学习特征向量的过程如下:
[0034] (1)
[0035] 其中,表示损失函数, 表示使 最小化, 和 分别表示用户 的特征向量和对象的特征向量,和 分别表示用户特征向量集合和对象特征向量集合, 和分别表示 的二范数和 的二范数,为超参。
[0036] 上式(1)中,第一项约束了评分和特征向量相似度之间的关系,即希望评分越高,特征向量之间越相似。第二项是正则项,为了防止过拟合。
[0037] 进一步地,基于式(1)对 和 分别求导,可以得到损失函数对用户和物品的梯度,如下所示:
[0038]                   (2)
[0039]                   (3)
[0040] 其中,上标 表示转置。于是,可以根据用户向量 的损失梯度 更新 ,根据对象向量 的损失梯度 更新 。
[0041] 从以上过程可以看到,学习过程包含几项核心的运算:计算用户特征向量和对象特征向量的点积作为二者之间的相似度,进一步地,根据相似度,结合用户-对象评分和对象特征向量计算用户梯度,并且,根据相似度,结合用户-对象评分和用户特征向量计算对象梯度;然后,利用计算出的用户梯度更新用户特征向量,以及利用计算出的对象梯度更新对象特征向量。
[0042] 在单方独立学习用户特征向量和对象特征向量的情况下,可以容易地进行上述运算。但是在多方联合学习特征向量的情况下,各方存储的打分数据所涉及的用户或对象可能不同,每方需要学习到其所涉及用户的用户特征向量和所涉及对象的对象特征向量,如何在不泄露各方明文数据的情况下,实施上述各项运算,是实现联合训练中数据隐私保护的核心挑战。
[0043] 为便于描述,假定上述多方为N方,多方存储的打分数据共涉及M个用户和P个对象,其中N、M和P为大于1的整数。于是,上述问题可以描述为,在N方共同维护M个用户对P个对象的总评分矩阵的场景下,如何在不泄露各方明文数据的情况下,实施上述各项运算,以实现多方联合学习用户特征向量和对象特征向量。
[0044] 针对上述问题,发明人提出,首先,通过秘密分享,各方获取M个用户的用户特征矩阵的某个用户矩阵分片,P个对象的对象特征矩阵的某个对象矩阵分片,总评分矩阵的某个评分分片;然后,通过秘密分享矩阵乘法,将以上各项运算也相应拆解为安全而秘密的分片运算,通过多方对分片运算结果的交互和联合计算,实现上述各项运算,从而实现安全的协同学习。
[0045] 下面,先对N方共同维护上述总评分矩阵的场景进行介绍。如上所述,N方共同维护M个用户对P个对象的总评分矩阵。图1示出根据一个实施例的总评分矩阵示意图,其中位于第i行第j列的元素表示用户Ui对对象Vj的评分。具体地,N方各自维护总评分矩阵中的一部分,相应地,总评分矩阵包括N方维护的N个部分。需要理解,一者,其中某些元素可以是缺省的,对于缺省元素,说明对应用户没有对对应对象进行过打分,对于总评分矩阵中的任一用户或任一对象,只需存在与其相关的至少一个有效打分(非缺省)即可;二者,其中N个部分中各部分是互斥的,而各个部分的组成根据实际打分数据的分布情况,具有多种可能。
[0046] 在一个实施例中,N方各自维护总评分矩阵中的一个评分子矩阵。在一个具体的实施例中,N方中各自存储相同用户对不同对象的评分,图2示出根据一个实施例的N个评分子矩阵组成总评分矩阵的示意图,其中任意的第k方具有第k评分子矩阵,且该第k评分子矩阵由M个用户对第k方中的Pk个对象的评分构成。在另一个具体的实施例中,N方中各自存储不同用户对相同对象的评分,图3示出根据另一个实施例的N个评分子矩阵组成总评分矩阵的示意图,其中任意的第k方具有第k评分子矩阵,且该第k评分子矩阵由第k方中的Mk个用户对P个对象的评分构成。
[0047] 在又一个具体的实施例中,图4示出根据又一个实施例的评分子矩阵组成总评分矩阵的示意图,如图4所示,在N方中,存在两方存储相同用户对不同用户的评分,也存在两方存储不同用户对相同用户的评分,还存在两方存储不同用户对不同对象的评分。
[0048] 在另一个实施例中,N方中各自维护总评分矩阵中的若干评分子矩阵。
[0049] 由上可知,根据打分数据在N方中的多种分布情况,总打分矩阵具有多种组成方式。
[0050] 另一方面,需要说明,N方中的“方”可以指代数据持有方、数据方或参与方,其中各方可以实现为任何具有计算、处理能力的设备、平台、服务器或集群;上述用户可以是个人用户、企业实体或商户等,具体可以体现为多个数据方统一约定的用户标识,如手机号、用户编号等。
[0051] 此外,在一个实施例中,上述对象可以是商品,并且,该商品可以具有多种形式,包括实体商品(如服装、视频)、虚拟电子商品(如电子书、云存储空间、流量等)、线上服务或线下服务等。在一个示例性的场景中,N方为不同的电商平台,所提供商品的种类可以包括图书、服饰、食品、电子产品和生活用品,等等。在另一个示例性的场景中,N方为不同的APP(Application,应用程序)下载平台,所提供商品可以包括教育类APP、办公类APP、娱乐类APP,等等。在又一个示例性的场景中,N方为不同的服务体验平台,所提供商品可以包括多种服务项目,如打车服务、美容服务、健身服务,等等。在另一个实施例中,上述对象可以是用户。在一个示例性的场景中,N方为不同的交友平台,其中用户之间可以互相打分。在另一个示例性的场景中,N方为房屋租赁平台,其中合组的室友之间可以相互打分。
[0052] 以上,对N方共同维护M个用户对P个对象打分的总评分矩阵的场景进行介绍。需要理解,N方各自维护的对象数据、用户数据和打分数据等,均属于隐私数据,在联合训练过程中,不可以进行明文交换,以保证隐私数据安全。
[0053] 为了在不泄露隐私数据的情况下,进行特征向量的联合更新,根据本说明书的实施例,图5示出本说明书实施例披露的多方联合训练对象推荐模型的方法实施示意图,通过秘密分享,任意的第k方获取上述总评分矩阵 的第k评分矩阵分片 ,P个对象的对象特征矩阵 的第k对象矩阵分片 ,以及M个用户的用户特征矩阵 的第k用户矩阵分片,由此N方中的各方可以获得与三个矩阵中各矩阵对应的矩阵分片。
[0054] 各方通过秘密分享获取的矩阵分片执行多次迭代更新。在任一次迭代更新的过程中,对于任意的第一用户ui和第一对象vj,首先,第k方从第k评分矩阵分片中获取第一用户对第一对象的第k评分分片 ;从上次第k对象矩阵分片中获取第一对象的第k对象特征分片 ;以及从第k用户矩阵分片中获取第一用户的第k用户特征分片 ;接着,基于和 ,通过与其他N-1方进行秘密分享矩阵运算,得到第一用户和第一对象的特征向量相似度 的第k相似度分片 ,将 和 的差值作为第k误差分片 ;然后,基于 和 ,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片 ,并且,基于 和 ,通过与其他N-1方进行秘密
分享矩阵运算,计算对象特征更新梯度 ,得到第k对象梯度分片 ;再接着,根据更新 ,并且,根据 更新 。如此,可以实现多次迭代更新。
[0055] 直到整个迭代过程结束,多方交换其矩阵分片,进行特征矩阵重构。图1中示出多方中各方维护相同用户对不同对象的打分数据的情况,相应地,其中第k方重构用户特征矩阵U和对象子矩阵Vk,进而利用U和Vk构建其对象推荐模型,用于预测M个用户中任一用户对Pk个对象中任一对象的打分,并根据打分结果进行对象推荐。
[0056] 在整个迭代更新过程中,多方不仅不进行评分数据、对象数据和用户数据的明文交换,用户特征矩阵和对象特征矩阵也拆分为特征分片,各自只维护特征分片的迭代更新,直到迭代结束,才会重构得到特征矩阵。如此,极大地增强了联合更新过程中,隐私数据的安全性。
[0057] 下面,描述多方联合学习特征向量,进而构建各自的对象推荐模型的具体过程。
[0058] 具体地,图6示出根据一个实施例的保护数据隐私的多方联合训练对象推荐模型的方法流程示意图,其中多方为N方,所述N方共同维护M个用户对P个对象的总评分矩阵,该方法通过N方中任意的第k方执行,该第k方可通过任何具有计算、处理能力的装置或设备或服务器或服务器集群而实现。
[0059] 如图6所示,所述方法包括以下步骤:
[0060] 步骤S610,通过秘密分享获取所述总评分矩阵的第k评分矩阵分片。步骤S620,通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,以及获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片。步骤S630,执行多次迭代更新,其中任一次迭代更新包括:步骤S631,对于任意的第一用户和第一对象,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片;步骤S632,基于所述第k用户特征分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片,将第k相似度分片和第k评分分片之差作为第k误差分片;步骤S633,基于所述第k误差分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片;步骤S634,基于所述第k误差分片和第k用户特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度,得到第k对象梯度分片;步骤S635,根据所述第k用户梯度分片,更新所述第k用户特征分片;根据所述第k对象梯度分片,更新所述第k对象特征分片。
[0061] 以上步骤具体如下:
[0062] 步骤S610,通过秘密分享获取所述总评分矩阵的第k评分矩阵分片。
[0063] 在一个实施例中,第k方具有上述总评分矩阵的第k评分子矩阵 ,基于此,本步骤中可以包括:一方面,将所述第k评分子矩阵 拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方,比如,在k≠1时,包括将第1分片 发送给第1方;另一方面,从其他N-1方接收其他评分子矩阵的第k分片 ;进一步地,将第k评分子矩阵的第k分片 和其他评分子矩阵的第k分片{
}拼接,形成所述第k评分矩阵分片 。
[0064] 在另一个实施例中,上述第k评分子矩阵可以为多个子矩阵,相应地,在本步骤中,将其中任一个子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;另一方面,从其他N-1方接收其他评分子矩阵的第k分片;由此,将第k评分子矩阵的多个第k分片和其他评分子矩阵的第k分片,共同归为上述第k评分矩阵分片 。
[0065] 需要说明,上述将第k评分子矩阵拆分为N个分片,可以通过已有的秘密分享(或称秘密共享)技术实现,此处不对秘密分享技术进行赘述。
[0066] 如此,第k方可以获取第k评分矩阵分片 ,以此类推,N方中的每一方都会对应获取到某个评分矩阵分片。并且,在步骤S620,通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片,以及获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片。
[0067] 在一个实施例中,N方中各自存储M个用户对P个对象中部分对象的打分数据,此时,第k方具有所述总评分矩阵的第k评分子矩阵,该第k评分子矩阵由M个用户对第k方中的Pk个对象的评分构成。
[0068] 进一步地,在一个具体的实施例中,上述获取第k对象矩阵分片,可以包括:首先,初始化Pk个对象对应的Pk个对象特征向量,形成第k对象子矩阵Vk;接着,通过秘密分享将所述第k对象子矩阵Vk拆分为N个分片,保留其中的第k分片 ,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他对象子矩阵的第k分片{};然后,将所述第k对象子矩阵的第k分片 和其他对象子矩阵的
第k分片{ 拼接,形成所述第k对象矩阵分片 。
[0069] 在一个具体的实施例中,因N方中各自存储的打分数据均指向M个用户,因此,可以指定其中的任一方初始化用户特征向量,并基于初始化的用户特征向量与其他方进行秘密共享。
[0070] 在一个例子中,第k方为初始化用户特征向量的指定方,相应地,上述获取第k用户矩阵分片,可以包括:首先,初始化M个用户对应的M个用户特征向量,形成用户特征矩阵 ;然后,通过秘密分享将所述用户特征矩阵拆分为N个分片,保留其中的所述第k用户矩阵分片 ,将其他N-1个分片对应发送给其他N-1方。在另一个例子中,第k方不是初始化用户特征向量的指定方,相应地,上述获取第k用户矩阵分片,可以包括:从其他N-1方中的指定方,接收上述第k用户矩阵分片 。由此,N方中每一方都可以对应得到某个用户矩阵分片。
[0071] 在一个实施例中,N方中各自存储M个用户中部分用户对P个对象的打分数据,此时,第k方具有所述总评分矩阵的第k评分子矩阵,该第k评分子矩阵由第k方中的Mk个用户对P个对象的评分构成。
[0072] 进一步地,在一个具体的实施例中,上述获取第k用户矩阵分片,可以包括:首先,初始化Mk个用户对应的Mk个用户特征向量,形成第k用户子矩阵Uk;接着,通过秘密分享将所述第k用户子矩阵Uk拆分为N个分片,保留其中的第k分片 ,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他用户子矩阵的第k分片{};然后,将所述第k用户子矩阵的第k分片 和其他用户子矩阵
的第k分片{ 拼接,形成所述第k用户矩阵分片 。
[0073] 在一个具体的实施例中,因N方中各自存储的打分数据均指向P个对象,因此,可以指定其中的任一方初始化对象特征向量,并基于初始化的对象特征向量与其他方进行秘密共享。
[0074] 在一个例子中,第k方为初始化对象特征向量的指定方,相应地,上述获取第k对象矩阵分片,可以包括:首先,初始化P个对象对应的P个对象特征向量,形成对象特征矩阵 ;然后,通过秘密分享将所述对象特征矩阵拆分为N个分片,保留其中的所述第k对象矩阵分片 ,将其他N-1个分片对应发送给其他N-1方。在另一个例子中,第k方不是初始化对象特征向量的指定方,相应地,上述获取第k对象矩阵分片,可以包括:从其他N-1方中的指定方,接收上述第k对象矩阵分片 。由此,N方中每一方都可以对应得到某个对象矩阵分片。
[0075] 由上,第k方可以获取初始化的第k对象矩阵分片 和第k用户矩阵分片 。依次类推,N方中的每一方都可以对应获取初始化的某个对象矩阵分片和某个用户矩阵分片。
[0076] 第k方基于以上获取的第k评分矩阵分片 ,第k对象矩阵分片 和第k用户矩阵分片 ,在步骤S630,执行多次迭代更新,其中任一次迭代更新包括以下步骤S631-步骤S635,具体如下:
[0077] 首先在步骤S631,对于任意的第一用户ui和第一对象vj,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片 ;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片 ;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片 。需要理解,其中k对象特征分片 和第k用户特征分片 ,实际分别为第j对象特征向量 和第i用户特征向量 的第k分片,因此, 和 都是向量。
[0078] 然后在步骤S632,基于其中的第k用户特征分片 和第k对象特征分片 ,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片 ,将第k相似度分片 和第k评分分片 之差作为第k误差分片 。
[0079] 具体地,参见上述公式(1)可知,第一用户ui和第一对象vj的相似度 可以通过计算 得到,而在本说明书实施例中, 和 均被分为N个分片,分散在N方中,基于此,发明人提出利用秘密分享矩阵运算,实现N方利用各自的用户特征分片和对象特征分片,联合计算用户和对象之间的相似度。
[0080] 需要说明,秘密分享矩阵运算的运算方式本身是已有的。为便于理解,下面先以两方为例,对秘密分享矩阵运算进行介绍,再介绍第k方如何基于其中的第k用户特征分片和第k对象特征分片 ,与其他N-1方进行秘密分享矩阵运算,得到上述第k相似度分片 。
[0081] 图7示出根据一个实施例的两方进行秘密分享矩阵运算的过程示意图。其中两方为第0方和第1方,并且,假定两方已经预先通过秘密分享,获取用于秘密分享矩阵运算的辅助数值 、、的分片,其中第0方持有分片 、 和 ,第1方持有分片 、和 。对于数值 、 、 ,其中 、 是来自有限域 的随机数,其中 为超参,
,其中 表示 和 的乘积, 是取余符号,图7中用 指代 。
[0082] 如图7所示,其中第0方持有数据 的分片 和数据 的分片 ,第1方持有数据 的分片 和数据 的分片 ,两方希望协同计算出 。
[0083] 接着,第0方基于其持有的分片 、 、 和 ,计算出 和 ,具体地, = - , = - ;第1方基于其持有的分片 、 、 和
,计算出 和 ,具体地, = - , = - 。
[0084] 然后,第0方和第1方互相交换计算出的 和 的分片。于是,第0方和第1方都拥有、 、 和 ,并重构 和 ,其中 ,。
[0085] 再接着,第0方计算 ,第1方计算 。其中, ,。
[0086] 最后,第0方和第1方互相交换计算出的 的分片。于是,第0方和第1方都拥有和 ,并重构 , ,因 ,于是通过重构 也就得到 。
[0087] 由上,持有数据 的第0方和持有数据 的第1方,可以通过秘密分享矩阵运算,计算出 。并且,因 ,所以 和 实际为 的秘密分享分片。也就是说,如果舍弃最后一步的重构 ,第0方和第1方,可以基于数据 和 ,进行秘密分享矩阵运算,各自得到 的秘密分享分片。需要说明,图2示出的是两方进行秘密分享矩阵运算的过程,该秘密分享矩阵运算可进一步拓展至两方以上,简要来说,根据参与方的数量,数据 和 被拆分为对应数量的秘密分享分片,分布在各个参与方中,上述辅助数值 、、也被拆分为对应数量的秘密分享分片,分布在各个参与方中,最终,各个参与方可以对应计算出 的某个秘密分享分片。
[0088] 以上对秘密分享矩阵运算进行介绍,由上可知,多个参与方可以基于各自持有的数据 和 的分片,通过秘密分享矩阵运算,各自对应得到 的某个秘密分享分片。基于此,在本说明书实施例中,N方可以基于各自持有的用户特征向量 和对象特征向量 的分片,通过秘密分享矩阵运算,各自对应得到 的某个秘密分享分片,其中,。
[0089] 具体在本步骤中,第k方根据其获取的第k用户特征分片 和第k对象特征分片,与其他N-1方进行秘密分享矩阵运算,得到 ( )的第k分片,也就是上述第k相似度分片 。进一步地,第k方可以将第k相似度分片 和上述第k评分分片之差作为第k误差分片 。
[0090] 可以证明,因为: , ;所以:,也就是说,
和 之差 ,是误差 的分片。
[0091] 以上在得到第k误差分片 之后,一方面,第k方在步骤S633,基于所述第k误差分片 和第k对象特征分片 ,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度 ,得到第k用户梯度分片 。
[0092] 具体地,可参见上述用于计算用户更新梯度的公式(2),结合前述可知,其中,据此可推知: 。对于其中的 ,第k方可以基于第k误差分片 和第k对象特征分片 ,通过
与其他N-1方进行秘密分享矩阵运算,得到 的第k分片 。需要理解,公式(1)中的正则项是可选项,相应地,公式(2)中的 也是可选项,在一种实施方式中,可以不考虑,于是, ,并且,在本步骤中,将计算出的 作为第k用户梯度分片
,即 ;在另一种实施方式中,考虑 ,于是在本步骤中,将计算出
的 减去第k用户特征分片 ,得到第k用户梯度分片 。
[0093] 如此,可以得到第k用户梯度分片 。另一方面,在步骤S634,基于所述第k误差分片 和第k用户特征分片 ,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度 ,得到第k对象梯度分片 。需要说明,通过观察可知,公式(2)和(3)存在一定程度的对称性,因此,对步骤S634的介绍,可以参见对上述步骤S633的描述,不作赘述。
[0094] 以上在步骤S633和步骤S634,第k方可以分别得到第k用户梯度分片 和第k对象梯度分片 。然后,在步骤S635,根据所述第k用户梯度分片 ,更新所述第k用户特征分片 ;根据所述第k对象梯度分片 ,更新所述第k对象特征分片 。
[0095] 具体地,可以分别通过以下公式(4)和公式(5),更新
[0096]                    (4)
[0097]                    (5)
[0098] 其中, 和 均为学习率,是超参,因为是人工设定,所以二者可能相同,也可能不同。在一个例子中, , 。如此,可以实现对第k用户特征分片和第k对象特征分片的更新。
[0099] 由上可知,第k方通过执行步骤S631-步骤S635,可以执行任一次迭代更新,进而实现根据任意的第一用户对第一对象的打分,更新该第一用户的用户特征向量的第k分片,以及更新该第一对象的对象特征向量的第k分片。需要说明,实际在某次迭代更新中,除了可以更新单个用户特征向量和单个对象特征向量的第k分片以外,还可以批量更新多个用户特征向量和多个对象特征向量的第k分片,批量的大小取决于每次更新的采样数量(batch size)。如此,第k方通过多次重复执行步骤S631-步骤S635,可以实现多次迭代更新,具体地,可以实现对上述第k用户矩阵分片和第k对象矩阵分片的更新。以此类推,N方可以协同实现对用户特征矩阵和对象特征矩阵的更新,也就是对上述M个用户特征向量和P个对象特征向量的更新。
[0100] 在一个实施方式中,在上述多次迭代更新的过程结束后,多方交换其矩阵分片,进行特征矩阵重构。
[0101] 在一个实施例中,在N方各自存储M个用户对P个对象中部分对象的打分的场景下,其中各方需要各自重构上述用户特征矩阵,以及上述对象特征矩阵中对应部分对象的对象子矩阵。体现在上述方法中即为,一方面,第k方将更新后的第k用户特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他用户特征分片,然后,将所述更新后的第k用户特征分片和所述接收的其他用户特征分片拼接,形成更新后的用户特征矩阵。另一方面,第k方将更新后的第k对象矩阵分片中属于其他对象子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k对象子矩阵的其他分片;然后,将所述更新后的所述第k对象矩阵分片中属于所述第k对象子矩阵的第k分片,和所述接收的其他分片拼接,形成更新后的第k对象子矩阵。
[0102] 如此,第k方可以实现对上述用户特征矩阵和第k对象子矩阵的重构,进而基于重构的用户特征矩阵和第k对象子矩阵构建对象推荐模型。比如,为了从第k方的对象中挑选出一些对象,推荐给某个用户,可以将该某个用户和多个备选对象输入对象推荐模型中,于是,对象推荐模型可以从重构的用户特征矩阵中获取该某个用户的用户特征向量,并且,从重构的第k对象子矩阵中获取多个备选对象对应的多个对象特征向量,然后,分别计算该用户特征向量与该多个对象特征向量之间的相似度,作为该用户对该多个备选对象的预测打分,并且,输出预测打分大于预定阈值的备选对象,作为向该某个用户进行推荐的推荐对象。
[0103] 在另一个实施例中,在N方各自存储M个用户中部分用户对P个对象的打分的场景下,其中各方需要各自重构上述对象特征矩阵,以及上述用户特征矩阵中对应部分用户的用户子矩阵。体现在上述方法中即为,一方面,第k方将更新后的第k对象特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他对象特征分片,然后,将所述更新后的第k对象特征分片和所述接收的其他对象特征分片拼接,形成更新后的对象特征矩阵。另一方面,第k方将更新后的第k用户矩阵分片中属于其他用户子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k用户子矩阵的其他分片;然后,将所述更新后的所述第k用户矩阵分片中属于所述第k用户子矩阵的第k分片,和所述接收的其他分片拼接,形成更新后的第k用户子矩阵。如此,第k方可以实现对上述对象特征矩阵和第k用户子矩阵的重构,进而基于重构的对象特征矩阵和第k用户子矩阵构建用户推荐模型。
[0104] 综上,采用本说明书实施例披露的上述方法,多方不仅不进行评分数据、对象数据和用户数据的明文交换,用户特征矩阵和对象特征矩阵也拆分为特征分片,各自只维护特征分片的迭代更新,直到迭代结束,才会重构得到特征矩阵,从而构建各自的对象推荐模型,进而做出更加精准的对象推荐,同时,极大地保证了联合训练过程中,隐私数据的安全性。
[0105] 与上述训练方法相对应的,本说明书实施例还披露一种训练装置。图8示出根据一个实施例的保护数据隐私的多方联合训练对象推荐模型的装置结构示意图,其中多方为N方,所述N方共同维护M个用户对P个对象的总评分矩阵,该装置集成于N方中任意的第k方。该装置可以通过任何具有计算、处理能力的计算单元或服务器或服务器集群实现。
[0106] 如图8所示,所述装置800包括:评分分片获取单元810,配置为通过秘密分享获取所述总评分矩阵的第k评分矩阵分片。对象分片获取单元820,配置为通过秘密分享,获取初始化的所述P个对象的对象特征矩阵的第k对象矩阵分片。用户分片获取单元830,配置为通过秘密分享,获取初始化的所述M个用户的用户特征矩阵的第k用户矩阵分片。迭代更新单元840,配置为执行多次迭代更新,其中任一次迭代更新通过以下模块执行:多分片获取模块841,配置为对于任意的第一用户和第一对象,从所述第k评分矩阵分片中获取第一用户对第一对象的第k评分分片;从上次迭代的第k对象矩阵分片中获取第一对象的第k对象特征分片;以及从上次迭代的第k用户矩阵分片中获取第一用户的第k用户特征分片;误差分片计算模块842,配置为基于所述第k用户特征分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,得到所述第一用户和第一对象的特征向量相似度的第k相似度分片,将第k相似度分片和第k评分分片之差作为第k误差分片;用户梯度分片计算模块843,配置为基于所述第k误差分片和第k对象特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算用户特征更新梯度,得到第k用户梯度分片;对象梯度计算模块844,配置为基于所述第k误差分片和第k用户特征分片,通过与其他N-1方进行秘密分享矩阵运算,计算对象特征更新梯度,得到第k对象梯度分片;用户分片更新模块845,配置为根据所述第k用户梯度分片,更新所述第k用户特征分片;对象分片更新模块846,配置为根据所述第k对象梯度分片,更新所述第k对象特征分片。
[0107] 在一个实施例中,所述第k方具有所述总评分矩阵的第k评分子矩阵;所述评分分片获取单元810具体配置为:将所述第k评分子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收其他评分子矩阵的第k分片;将所述第k评分子矩阵的第k分片,和其他评分子矩阵的第k分片拼接,形成该第k评分矩阵分片。
[0108] 在一个实施例中,所述第k方具有所述总评分矩阵的第k评分子矩阵,所述第k评分子矩阵由M个用户对第k方中的Pk个对象的评分构成。
[0109] 在一个具体的实施例中,所述对象分片获取单元820具体配置为:初始化Pk个对象对应的Pk个对象特征向量,形成第k对象子矩阵;通过秘密分享将所述第k对象子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他对象子矩阵的第k分片;将所述第k对象子矩阵的第k分片和其他对象子矩阵的第k分片拼接,形成所述第k对象矩阵分片。
[0110] 在一个具体的实施例中,所述第k方为初始化用户特征向量的指定方;所述用户分片获取单元830具体配置为:初始化M个用户对应的M个用户特征向量,形成用户特征矩阵;通过秘密分享将所述用户特征矩阵拆分为N个分片,保留其中的所述第k用户矩阵分片,将其他N-1个分片对应发送给其他N-1方。
[0111] 在一个具体的实施例中,所述装置800还包括用户矩阵重构单元851,配置为:将更新后的第k用户特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他用户特征分片;将所述更新后的第k用户特征分片和所述接收的其他用户特征分片拼接,形成更新后的用户特征矩阵。
[0112] 在一个具体的实施例中,所述装置800还包括对象子矩阵重构单元852,配置为:将更新后的所述第k对象矩阵分片中属于其他对象子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k对象子矩阵的其他分片;将所述更新后的所述第k对象矩阵分片中属于所述第k对象子矩阵的第k分片,和所述接收的其他分片拼接,形成更新后的第k对象子矩阵。
[0113] 在一个实施例中,其中所述第k方具有所述总评分矩阵的第k评分子矩阵,所述第k评分子矩阵由第k方中的Mk个用户对P个对象的评分构成。
[0114] 在一个具体的实施例中,所述用户分片获取单元830具体配置为:初始化M k个用户对应的M k个用户特征向量,形成第k用户子矩阵;通过秘密分享将所述第k用户子矩阵拆分为N个分片,保留其中的第k分片,将其他N-1个分片对应发送给其他N-1方;并且,从其他N-1方接收初始化的其他用户子矩阵的第k分片;将所述第k用户子矩阵的第k分片和其他用户子矩阵的第k分片拼接,形成所述第k用户矩阵分片。
[0115] 在一个具体的实施例中,所述第k方为初始化对象特征向量的指定方;所述对象分片获取单元820具体配置为:初始化P个对象对应的P个对象特征向量,形成对象特征矩阵;通过秘密分享将所述对象特征矩阵拆分为N个分片,保留其中的所述第k对象矩阵分片,将其他N-1个分片对应发送给其他N-1方。
[0116] 在一个具体的实施例中,所述装置800还包括对象矩阵重构单元861,配置为:将更新后的第k对象特征分片分别发送给其他N-1方,并从其他N-1方接收更新后的其他对象特征分片;将所述更新后的第k对象特征分片和所述接收的其他对象特征分片拼接,形成更新后的对象特征矩阵。
[0117] 在一个具体的实施例中,所述装置800还包括用户子矩阵重构单元862,配置为:将更新后的所述第k用户矩阵分片中属于其他用户子矩阵的第k分片,对应发送给其他N-1方,并从其他N-1方接收更新后的属于所述第k用户子矩阵的其他分片;将所述更新后的所述第k用户矩阵分片中属于所述第k用户子矩阵的第k分片,和所述接收的其他分片拼接,形成更新后的第k用户子矩阵。
[0118] 综上,采用本说明书实施例披露的上述装置,多方不仅不进行评分数据、对象数据和用户数据的明文交换,用户特征矩阵和对象特征矩阵也拆分为特征分片,各自只维护特征分片的迭代更新,直到迭代结束,才会重构得到特征矩阵,从而构建各自的对象推荐模型,进而做出更加精准的对象推荐,同时,极大地保证了联合训练过程中,隐私数据的安全性。
[0119] 根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图6所描述的方法。
[0120] 根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图6所描述的方法。
[0121] 本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0122] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。