推荐系统--联邦学习下的矩阵分解(6)
推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)
9 应用于联邦学习的矩阵分解
这个部分主要参考以下两篇论文:
2008-Collaborative Filtering for Implicit Feedback Datasets
Federated collaborative filtering for privacy-preserving presonalized recommendation system
9.1 Collaborative Filtering for Implicit Feedback Datasets
在该模型中对ruir_{ui}rui引入喜好变量和置信度变量。
- 喜好变量fuif_{ui}fui是一个二元变量,表示用户是否具有该无偏偏好,定义如下:
fui={1rui>00rui=0(1)f_{u i}=\left\{\begin{array}{cc} 1 & r_{u i}>0 \\ 0 & r_{u i}=0 \end{array}\right. \tag1 fui={10rui>0rui=0(1) - 置信度变量 cuic_{ui}cui表示用户对物品喜好的置信程度,定义如下:
cui=1+αrui(2)c_{u i}=1+\alpha r_{u i} \tag2 cui=1+αrui(2)
α\alphaα是超参数。 - 整体的损失函数如下:
最终得到如下优化目标函数:
J=minp⋆,q⋆∑u,icui(fui−puTqi)2+λ(∑u∥pu∥2+∑i∥qi∥2)(3)J = \min _{p_{\star}, q_{\star}} \sum_{u, i} c_{u i}\left(f_{u i}-p_{u}^{T} q_{i}\right)^{2}+\lambda\left(\sum_{u}\left\|p_{u}\right\|^{2}+\sum_{i}\left\|q_{i}\right\|^{2}\right) \tag3 J=p⋆,q⋆minu,i∑cui(fui−puTqi)2+λ(u∑∥pu∥2+i∑∥qi∥2)(3)
λ\lambdaλ是惩罚项,用于惩罚两个参数,防止过拟合
这个问题是非凸函数, 作者使用的是ALS(交替最小二乘法)优化方法。如果固定其中一个参数将其看做是常数的话,那么整个问题就变成了一元二次函数,可以很容易的得到极小值点。根据这种思想就有了交替最小二乘法: - 初始化pu1p_u^1pu1,qi1q_i^1qi1
- 循环kkk,k=1,2,…k = 1, 2, \dotsk=1,2,…
– [ ] puk+1=argminpuJ(puk,qik)p_u^{k+1} = \arg \min_{p_u} J(p_u^k, q_i^k)puk+1=argminpuJ(puk,qik)
– [ ] qik+1=argminqiJ(puk+1,qik)q_i^{k+1} = \arg \min_{q_i} J(p_u^{k+1}, q_i^k)qik+1=argminqiJ(puk+1,qik)
固定qiq_iqi的值,对pup_upu进行搜索:
12∂J∂pu=∑icui(puTqi−fui)qi+λpu=∑icui(qiTpu−fui)qi+λpu=QTCuQpu−QTCuf(u)+λpu\begin{aligned} \frac{1}{2} \frac{\partial J}{\partial p_{u}} &=\sum_{i} c_{u i}\left(p_{u}^{T} q_{i}-f_{u i}\right) q_{i}+\lambda p_{u} \\ &=\sum_{i} c_{u i}\left(q_{i}^{T} p_{u}-f_{u i}\right) q_{i}+\lambda p_{u} \\ &=Q^{T} C^{u} Q p_{u}-Q^{T} C^{u} f(u)+\lambda p_{u} \end{aligned} 21∂pu∂J=i∑cui(puTqi−fui)qi+λpu=i∑cui(qiTpu−fui)qi+λpu=QTCuQpu−QTCuf(u)+λpu
得到:
pu=(QTCuQ+λI)−1QTCuf(u)p_{u}=\left(Q^{T} C^{u} Q+\lambda I\right)^{-1} Q^{T} C^{u} f(u) pu=(QTCuQ+λI)−1QTCuf(u)
同理可得:
12∂J∂qi=∑u[cui(puTqi−fui)]pu+λqi\begin{aligned} \frac{1}{2}\frac{\partial J}{\partial {q}_{i}}&= \sum_{u}\left[c_{u i}\left({p}_{u}^{T}{q}_{i}- f_{u i}\right)\right] {p}_{u}+ \lambda {q}_{i} \end{aligned} 21∂qi∂J=u∑[cui(puTqi−fui)]pu+λqi
qi=(PTCiP+λI)−1PTCif(i)q_{i}=\left(P^{T} C^{i} P+\lambda I\right)^{-1} P^{T} C^{i} f(i) qi=(PTCiP+λI)−1PTCif(i)
9.2 Federated collaborative filtering for privacy-preserving presonalized recommendation system
9.2.1 分析
联邦学习的思想是“数据不出本地”,现在对之前的计算进行分析:
- 用户uuu利用自己的数据,就可以实现pup_upu的更新;
- 对qiq_iqi的更新需要用到所有用户的个人数据,需要将数据整合到一起,但是这与联邦学习的定义不符。
文章采用梯度下降的方法对qi{q}_{i}qi进行更新:
qi=qi−γ∂J∂qi\begin{aligned} {q}_{i}&={q}_{i}-\gamma \frac{\partial J}{\partial {q}_{i}} \end{aligned} qi=qi−γ∂qi∂J
用户只用自己的个人数据就可以求出部分梯度,最终将所有人求出的梯度进行整合即可。
与ALS相比:
- ALS可以一步到位直接到达参数qiq_iqi的较小值点
- 梯度下降需要迭代多次才能到达一个较小值点
- 梯度下降可以在用户本地进行,最终只需要将所有用户的梯度整合一下取平均即可
9.2.2 步骤
联邦学习范式中的协同过滤。 主模型 YYY(项目-因素矩阵,有时候也用QQQ,或者VVV,不同文献使用的符号系统不同,为了和图片一致,我这里依然采用YYY)在服务器上更新,然后分发到客户端。 每个特定于用户的模型 XXX(用户-因素矩阵,有时候也用PPP,或者UUU,不同文献使用的符号系统不同,为了和图片一致,我这里依然采用XXX)保留在本地客户端上,并使用本地用户数据和来自服务器的 YYY 在客户端上进行更新。 通过 YYY 的梯度的更新在每个客户端上计算并传输到服务器,在那里它们被聚合以更新主模型 YYY。
- 所有项目因子向量 yiy_iyi , i=1,…,Mi = 1, \dots, Mi=1,…,M 在服务器上更新,然后分发给每个客户端 uuu。
- 用户因子向量 xux_uxu, u∈1,...,Nu \in {1, . . . , N}u∈1,...,N 在客户端 uuu 上本地更新,使用用户 uuu 自己的数据和 yiy_iyi, i=1,…,Mi = 1, \dots, Mi=1,…,M来自服务器。
- 通过梯度 δyuiδy_{ui}δyui 的更新是针对每个客户端 uuu 上的项目 tit_iti 计算的,并传输到服务器,在那里梯度被聚合以更新 yiy_iyi。 这与现有的联邦学习架构形成对比,其中客户端直接计算参数 yuiy_{ui}yui 的更新,然后在服务器上聚合以更新主模型。
以下公式是从论文中摘录下来的:
符号说明:
p(u)p(u)p(u)就是前文的f(u)f(u)f(u):表示用户的购买记录;
符号说明:
puip_{ui}pui就是前文的fuif_{ui}fui:表示用户是否具有该无偏偏好;
推荐系统--联邦学习下的矩阵分解(6)相关推荐
- 推荐系统组队学习03、矩阵分解
矩阵分解 矩阵分解 矩阵分解算法的原理 **矩阵分解算法的求解** Basic SVD 编程实现 补充 协同过滤算法: 特点: 仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直 ...
- 矩阵sum_推荐系统——从协同过滤到矩阵分解
本文简单扼要地介绍推荐算法中的两种经典算法:协同过滤和矩阵分解.内容有以下三部分 协同过滤算法 矩阵分解 协同过滤与矩阵分解的关系 早期的推荐系统以业务理解为核心,通过复杂的规则描述来向用户推荐商品, ...
- 【BI学习心得05-SVD矩阵分解与基于内容的推荐】
内容目录 写在前面的话 1.矩阵的几种分解方式 1.1共轭转置 Conjugate transpose 1.2Hermitian 1.3正定 positive definite 1.4正交矩阵 ort ...
- 矩阵分解java_推荐系统基础:使用PyTorch进行矩阵分解进行动漫的推荐
我们一天会遇到很多次推荐--当我们决定在Netflix/Youtube上看什么,购物网站上的商品推荐,Spotify上的歌曲推荐,Instagram上的朋友推荐,LinkedIn上的工作推荐--列表还 ...
- 矩阵奇异值分解特征值分解_推荐系统中的奇异值分解与矩阵分解
矩阵奇异值分解特征值分解 Recently, after watching the Recommender Systems class of Prof. Andrew Ng's Machine Lea ...
- 横向联邦学习下隐私保护安全聚合:问题,方法,与展望
开放隐私计算 以下文章来源于隐私计算研习社 ,作者董业 隐私计算研习社. 开放隐私计算社区 本文总结面向横向联邦学习的主要安全聚合技术路线和经典方法,对各条技术路线所处理的问题和经典方法的核心思想做一 ...
- python实现lfm_推荐系统召回算法之——LFM(矩阵分解)
目录 1.LFM算法原理 2.LFM数学原理 3.应用场景 4.python实现 5.总结 算法原理:LFM(later factor model)是一种基于矩阵分解的召回算法,输入UI点展矩阵,输出 ...
- 联邦学习怎样应用在推荐系统中?
来源:知乎丨羊老头 说起联邦学习,大家再熟悉不过了,由于其能在数据不移动的前提下协同训练一个全局共享的模型,迅速成为了人工智能安全领域的一个研究热点.推荐系统作为人工智能领域最振奋人心的应用之一,与联 ...
- 基于联邦学习的推荐系统综述
基于联邦学习的推荐系统综述 参考文献 基于联邦学习的推荐系统综述 Federated Recommendation Systems Journal-CN-SSI-22-Survey-Slides (作 ...
最新文章
- python的none是什么-Python中的None与Null(空字符)的区别
- 如何在windows7上安装启明星系统。
- Java正則表達式詳解
- hdu 6168 Numbers
- PL/SQL详细介绍
- java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
- qpython获取手机gps_基于Python获取照片的GPS位置信息
- 一个软件系统哪些可独立实现
- Linux下创建Django项目并访问
- 移植busybox构建最小根文件系统
- selenium模拟点击的几种方法探讨
- Dlib-人脸识别API说明
- 图解安装simsun字体后OO乱码的摸黑解决办法【转贴自http://linux.hiweed.com】
- 智能化系统之门禁系统
- 如果你热爱编码,就应该少写代码
- Tungsten Fabric中文社区介绍
- matlab图像自动标注程序,基于MATLAB/GUI的图像语义自动标注系统
- 【Romance of the Three Kingdoms】
- 019动物识别检测网页版
- 今天凌晨,AWS一口气又双叒叕发布了N个新服务
热门文章
- 计算机英语audios啥意思,2020考研英语词汇:audio是什么意思
- c语言查看进程模块,计算机二级考试C语言辅导:进程模块查看
- c语言双链表排序交换节点_图解:单链表翻转的三种方式!
- 解决:如何在Android Studio中找出自己项目文件的所在位置
- click事件在什么时候出发_剖析setTimeout和click点击事件的触发顺序
- 编程加速服务器_FPGA加速驱动新时代的数据洪流,下篇
- 为什么代码正确却没有爬虫的信息_为什么敷面膜没有效果?原来这才是敷面膜的正确步骤...
- 快速了解Java集合框架
- python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
- c语言入门经典18个程序