推荐系统--联邦学习下的矩阵分解(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

在该模型中对 r u i r_{ui} rui引入喜好变量和置信度变量。

  • 喜好变量 f u i f_{ui} fui是一个二元变量,表示用户是否具有该无偏偏好,定义如下:
    f u i = { 1 r u i > 0 0 r u i = 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)
  • 置信度变量 c u i c_{ui} cui表示用户对物品喜好的置信程度,定义如下:
    c u i = 1 + α r u i (2) c_{u i}=1+\alpha r_{u i} \tag2 cui=1+αrui(2)
    α \alpha α是超参数。
  • 整体的损失函数如下:
    最终得到如下优化目标函数:
    J = min ⁡ p ⋆ , q ⋆ ∑ u , i c u i ( f u i − p u T q i ) 2 + λ ( ∑ u ∥ p u ∥ 2 + ∑ i ∥ q i ∥ 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,qminu,icui(fuipuTqi)2+λ(upu2+iqi2)(3)
    λ \lambda λ是惩罚项,用于惩罚两个参数,防止过拟合
    这个问题是非凸函数, 作者使用的是ALS(交替最小二乘法)优化方法。如果固定其中一个参数将其看做是常数的话,那么整个问题就变成了一元二次函数,可以很容易的得到极小值点。根据这种思想就有了交替最小二乘法:
  • 初始化 p u 1 p_u^1 pu1 q i 1 q_i^1 qi1
  • 循环 k k k k = 1 , 2 , … k = 1, 2, \dots k=1,2,
    – [ ] p u k + 1 = arg ⁡ min ⁡ p u J ( p u k , q i k ) p_u^{k+1} = \arg \min_{p_u} J(p_u^k, q_i^k) puk+1=argminpuJ(puk,qik)
    – [ ] q i k + 1 = arg ⁡ min ⁡ q i J ( p u k + 1 , q i k ) q_i^{k+1} = \arg \min_{q_i} J(p_u^{k+1}, q_i^k) qik+1=argminqiJ(puk+1,qik)

固定 q i q_i qi的值,对 p u p_u pu进行搜索:
1 2 ∂ J ∂ p u = ∑ i c u i ( p u T q i − f u i ) q i + λ p u = ∑ i c u i ( q i T p u − f u i ) q i + λ p u = Q T C u Q p u − Q T C u f ( u ) + λ p u \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} 21puJ=icui(puTqifui)qi+λpu=icui(qiTpufui)qi+λpu=QTCuQpuQTCuf(u)+λpu
得到:
p u = ( Q T C u Q + λ I ) − 1 Q T C u f ( u ) p_{u}=\left(Q^{T} C^{u} Q+\lambda I\right)^{-1} Q^{T} C^{u} f(u) pu=(QTCuQ+λI)1QTCuf(u)
同理可得:
1 2 ∂ J ∂ q i = ∑ u [ c u i ( p u T q i − f u i ) ] p u + λ q i \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} 21qiJ=u[cui(puTqifui)]pu+λqi
q i = ( P T C i P + λ I ) − 1 P T C i f ( 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 分析

联邦学习的思想是“数据不出本地”,现在对之前的计算进行分析:

  • 用户 u u u利用自己的数据,就可以实现 p u p_u pu的更新;
  • q i q_i qi的更新需要用到所有用户的个人数据,需要将数据整合到一起,但是这与联邦学习的定义不符。

文章采用梯度下降的方法对 q i {q}_{i} qi进行更新:
q i = q i − γ ∂ J ∂ q i \begin{aligned} {q}_{i}&={q}_{i}-\gamma \frac{\partial J}{\partial {q}_{i}} \end{aligned} qi=qiγqiJ
用户只用自己的个人数据就可以求出部分梯度,最终将所有人求出的梯度进行整合即可。

与ALS相比:

  • ALS可以一步到位直接到达参数 q i q_i qi的较小值点
  • 梯度下降需要迭代多次才能到达一个较小值点
  • 梯度下降可以在用户本地进行,最终只需要将所有用户的梯度整合一下取平均即可

9.2.2 步骤

联邦学习范式中的协同过滤。 主模型 Y Y Y(项目-因素矩阵,有时候也用 Q Q Q,或者 V V V,不同文献使用的符号系统不同,为了和图片一致,我这里依然采用 Y Y Y)在服务器上更新,然后分发到客户端。 每个特定于用户的模型 X X X(用户-因素矩阵,有时候也用 P P P,或者 U U U,不同文献使用的符号系统不同,为了和图片一致,我这里依然采用 X X X)保留在本地客户端上,并使用本地用户数据和来自服务器的 Y Y Y 在客户端上进行更新。 通过 Y Y Y 的梯度的更新在每个客户端上计算并传输到服务器,在那里它们被聚合以更新主模型 Y Y Y
推荐系统--联邦学习下的矩阵分解(6)_第1张图片

  • 所有项目因子向量 y i y_i yi , i = 1 , … , M i = 1, \dots, M i=1,,M 在服务器上更新,然后分发给每个客户端 u u u
  • 用户因子向量 x u x_u xu, u ∈ 1 , . . . , N u \in {1, . . . , N} u1,...,N 在客户端 u u u 上本地更新,使用用户 u u u 自己的数据和 y i y_i yi, i = 1 , … , M i = 1, \dots, M i=1,,M来自服务器。
  • 通过梯度 δ y u i δy_{ui} δyui 的更新是针对每个客户端 u u u 上的项目 t i t_i ti 计算的,并传输到服务器,在那里梯度被聚合以更新 y i y_i yi。 这与现有的联邦学习架构形成对比,其中客户端直接计算参数 y u i y_{ui} yui 的更新,然后在服务器上聚合以更新主模型。
    推荐系统--联邦学习下的矩阵分解(6)_第2张图片
    以下公式是从论文中摘录下来的:
    在这里插入图片描述
    符号说明:
    p ( u ) p(u) p(u)就是前文的 f ( u ) f(u) f(u):表示用户的购买记录;
    在这里插入图片描述
    在这里插入图片描述
    符号说明:
    p u i p_{ui} pui就是前文的 f u i f_{ui} fui:表示用户是否具有该无偏偏好;

在这里插入图片描述

你可能感兴趣的:(推荐系统,联邦学习,推荐算法)