基于同态加密的矩阵分解推荐方法技术

技术编号:22055651 阅读:19 留言:0更新日期:2019-09-07 15:23
本发明专利技术公开一种基于同态加密的矩阵分解推荐方法,采用同态加密算法,在用户计算梯度传输到服务器进行数据聚合之前,进行加密传输,在数据发送到服务器上后,由于每个用户的梯度是经过加密的,服务器无法根据梯度推断用户信息;针对在梯度下降矩阵分解的计算时需要进行多次迭代,用户端计算压力大且传输数据通信量大的问题,本发明专利技术采用小批量梯度方法与随机投影降维相结合的方法,在降低计算量和数据通信量的同时,保证了数据效用性。

Matrix Decomposition Recommendation Method Based on Homomorphic Encryption

【技术实现步骤摘要】
基于同态加密的矩阵分解推荐方法
本专利技术涉及推荐系统
,具体涉及一种基于同态加密的矩阵分解推荐方法。
技术介绍
互联网的出现和普及给用户带来便利的同时存储了大量的信息,在一个信息过载,用户需求的多样性也在不断提升的时代,如何能在海量数据中,根据用户的偏向性,提取出与用户兴趣一致的信息,以满足用户个性化需求的信息,已成为一大难题,而推荐系统正是解决该问题的一个有力工具,受到了学术界与工业界众多的关注和研究。推荐系统应用于不同的领域,它推荐的对象也各不相同,面对信息的多元化、多样化,通常推荐系统需要收集与挖掘用户的历史行为数据,对用户历史行为数据进行建模分析,并以此为基础预测用户未来的行为,例如Google利用搜索历史数据提供个性化广告服务,Amazon利用购买历史提供购买推荐,Netflix根据历史观影提供视频推荐等等。传统的推荐算法有:基于内容推荐、协同过滤推荐和混合推荐算法等。相比传统的推荐算法,基于矩阵分解的推荐算法有更低的均方根误差(RMES),更高的推荐精确度,因此受到了越来越多的关注。然而,无论是基于何种推荐算法,都必须依赖于用户的个人信息,用户需要把各自的历史数据提供给服务器,如此一来,这就存在隐私泄露的风险,随着人们对隐私保护问题的重视,更多的数据拥有者不愿意提供自身的数据。为解决以上问题,基于同态加密的矩阵分解算法被提了出来,其主要思想是用户历史数据保存在本地,然后利用梯度下降的方法在用户端与服务器(推荐系统)之间,根据原始评分矩阵,迭代计算分解的用户特征矩阵与项目特征矩阵,填补空缺评分,最后在用户端本地进行推荐。相当于每个用户根据自己的历史数据记录对空缺项目做评分预测,然后在本地做推荐,以保证数据的安全性。不过在这样的分布式场景下做矩阵分解,在数据交互的过程中,服务器还是能够根据用户交互的梯度去推断用户的历史数据,为了防止隐私泄露,最自然的想法就是在每个用户传输梯度数据之前进行扰乱,再发送到服务器上,以保证用户隐私。相比已有的矩阵分解推荐算法,基于同态加密的矩阵分解算法存在以下优势和挑战:在分布式场景下,用户无需将自身的数据发送给服务器,即使是做推荐时,也是在各个用户本地进行推荐,服务器既无法获取用户历史数据,也无法预测用户行为。因此在分布式应用场景下,一定程度上可以防止服务器恶意收集或推测用户数据。但是分布式的场景下的矩阵分解推荐方法,依然存在隐私安全问题。比如常见的电影推荐,推荐系统通常要获取用户对某个电影的评分数据,以此来做分析推荐。通常在进行梯度下降矩阵分解时,每次迭代中用户与服务器都会进行交互,用户在本地计算后发送梯度给服务器时,如果直接发送原始梯度数据,服务器就有可能推断出用户对哪个电影是有评分的。有相关工作提出采用差分隐私保护模型,来保护数据安全,但与此同时也牺牲了部分的数据效用性,因为在经过每一轮的迭代梯度下降计算时,每个用户需计算各自的梯度后进行加噪再发送到服务器,所以当迭代计算完成时,矩阵分解得出的特征矩阵会存在很大的误差,也直接导致推荐效果的下降。因此在做推荐时,如何保护用户的梯度数据不能被恶意服务器推断出隐私信息同时能够保证更好的推荐效果也成为一大挑战。此外,我们注意到,采用矩阵分解梯度下降算法进行推荐时,需要在用户端与服务器之间不断地进行迭代的计算时,也就是用户与服务器之间的交互频繁,而且采用传统的梯度下降方式会导致收敛速度过慢,传输数据量大,用户端需要频繁计算,无疑会增加用户端的计算压力,因此,如何提升减少计算量和通讯开销也成为一个亟待解决的问题。
技术实现思路
本专利技术针对分布式的应用场景下,矩阵分解算法需要用户端与服务器端频繁的数据交互,导致可能存在数据被推断的隐私安全问题,提供一种基于同态加密的矩阵分解推荐方法。为解决上述问题,本专利技术是通过以下技术方案实现的:基于同态加密的矩阵分解推荐方法,其具体包括步骤如下:步骤1、服务器使用符合正态分布的随机变量生成项目特征矩阵,并将该项目特征矩阵发送给每个用户,作为初始的项目特征矩阵V0;同时,每个用户使用符合正态分布的随机变量生成每个用户的特征,作为初始的用户特征ui0;步骤2、令迭代次数t=1;步骤3、每个用户基于上一迭代的项目特征矩阵Vt-1和上一迭代的用户特征uit-1,计算该用户的用户特征梯度和该用户关于各个项目的项目特征梯度;步骤4、每个用户生成一个随机明文,并使用统一的加密函数对该随机明文加密后形成随机密文,发送到服务器;步骤5、服务器随机选取2个用户所发送来的随机密文进行相加后,形成噪声密文,并将该噪声密文的正值发送给这2个用中的其中一个用户,而将该噪声密文的负值发送给这2个用中的另一个用户;步骤6、用户收到服务器发送回来的噪声密文的正值或负值,并对其进行解密后形成噪声,并利用该噪声对该用户关于敏感项目的项目特征梯度进行加噪;步骤7、服务器使用符合高斯分布的随机变量生成随机矩阵,并将发送给每个用户;步骤8、每个用户利用服务器发来的随机矩阵对所有项目特征梯度进行降维后,发送到服务器进行聚合,求得所有降维后的项目特征梯度的项目梯度均值;步骤9、服务器将项目梯度均值发送给每个用户,每个用户利用随机矩阵的逆矩阵将项目梯度均值恢复到原始的维度后,并据此得到当前迭代的项目特征矩阵Vt和当前迭代的用户特征uit;步骤10、每个用户计算当前迭代的项目特征矩阵Vt和当前迭代的用户特征uit的内积所对应的损失函数,并发送给服务器;步骤11、服务器判断所有用户损失函数之和是否小于预设损失值或迭代次数是否达到预设迭代次数;如果满足,则迭代终止,此时每个用户计算该用户的预测评分矩阵Mi,并将评分矩阵Mi中选出k个最高的预测评分所对应的项目推荐给该用户;其中k为设定值;否则,迭代次数t+1,并返回步骤3,继续迭代。上述步骤3中,第i个用户的用户特征梯度为:式中,rij表示第i个用户对第j个项目的评分,vjt-1表示上一次迭代的项目特征矩阵Vt-1的第j列,uit-1表示第i个用户上一次迭代的用户特征,j=1,2,…,m,m为项目个数;=1,2,…,n,n为用户个数,t表示迭代次数。上述步骤3中,第i个用户对第j个项目的项目特征梯度为:式中,rij表示第i个用户对第j个项目的评分,vjt-1表示上一次迭代的项目特征矩阵Vt-1的第j列,uit-1表示第i个用户上一次迭代的用户特征,j=1,2,…,m,m为项目个数;I=1,2,…,n,n为用户个数,t表示迭代次数。上述步骤4中,随机明文的取值范围为[-1,1]。上述步骤4中,所有用户所采用的加密函数相同。上述步骤5和6中,当用户数量为奇数时,最后一个用户的随机密文需要与之前已被选择过的用户的随机密文进行相加后,形成噪声密文,并分别将噪声密文的正值和负值分别发给最后一个用户和之前已被选择过的用户;此时,最后一个用户利用解密所得到的噪声对该用户关于敏感项目的当前项目特征梯度进行加噪,而之前已被选择过的用户需要利用解密所得到的噪声对该用户关于敏感项目的当前项目特征梯度进行再次加噪。上述步骤9中,当前迭代的项目特征矩阵Vt为:当前迭代的用户特征uit为:式中,表示第i个用户对第j个项目的项目特征梯度,表示第i个用户的用户特征梯度,Vt-1表示上一次迭代的项目特征矩阵,ui本文档来自技高网
...

【技术保护点】
1.基于同态加密的矩阵分解推荐方法,其特征是,包括步骤如下:步骤1、服务器使用符合正态分布的随机变量生成项目特征矩阵,并将该项目特征矩阵发送给每个用户,作为初始的项目特征矩阵V

【技术特征摘要】
1.基于同态加密的矩阵分解推荐方法,其特征是,包括步骤如下:步骤1、服务器使用符合正态分布的随机变量生成项目特征矩阵,并将该项目特征矩阵发送给每个用户,作为初始的项目特征矩阵V0;同时,每个用户使用符合正态分布的随机变量生成每个用户的特征,作为初始的用户特征ui0;步骤2、令迭代次数t=1;步骤3、每个用户基于上一迭代的项目特征矩阵Vt-1和上一迭代的用户特征uit-1,计算该用户的用户特征梯度和该用户关于各个项目的项目特征梯度;步骤4、每个用户生成一个随机明文,并使用统一的加密函数对该随机明文加密后形成随机密文,发送到服务器;步骤5、服务器随机选取2个用户所发送来的随机密文进行相加后,形成噪声密文,并将该噪声密文的正值发送给这2个用中的其中一个用户,而将该噪声密文的负值发送给这2个用中的另一个用户;步骤6、用户收到服务器发送回来的噪声密文的正值或负值,并对其进行解密后形成噪声,并利用该噪声对该用户关于敏感项目的项目特征梯度进行加噪;步骤7、服务器使用符合高斯分布的随机变量生成随机矩阵,并将发送给每个用户;步骤8、每个用户利用服务器发来的随机矩阵对所有项目特征梯度进行降维后,发送到服务器进行聚合,求得所有降维后的项目特征梯度的项目梯度均值;步骤9、服务器将项目梯度均值发送给每个用户,每个用户利用随机矩阵的逆矩阵将项目梯度均值恢复到原始的维度后,并据此得到当前迭代的项目特征矩阵Vt和当前迭代的用户特征uit;步骤10、每个用户计算当前迭代的项目特征矩阵Vt和当前迭代的用户特征uit的内积所对应的损失函数,并发送给服务器;步骤11、服务器判断所有用户损失函数之和是否小于预设损失值或迭代次数是否达到预设迭代次数;如果满足,则迭代终止,此时每个用户计算该用户的预测评分矩阵Mi,并将评分矩阵Mi中选出k个最高的预测评分所对应的项目推荐给该用户;其中k为设定值;否则,迭代次数t+1,并返回步骤3,继续迭代。2.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤3中,第i个用户的用户特征梯度为:式中,rij表示第i...

【专利技术属性】
技术研发人员:李先贤李东城王利娥刘鹏李春培
申请(专利权)人:广西师范大学
类型:发明
国别省市:广西,45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1