论文信息
- 标题:FedNCF: Federated Neural Collaborative Filtering for Privacy-preserving Recommender System
- 作者:Xueyong Jiang, Baisong Liu, Jiangchen Qin, Yunchong Zhang, Jiangbo Qian
- 发表年份:2022
- doi:10.1109/IJCNN55064.2022.9892909
1 INTRODUCTION
1.1 简要介绍背景和工作
- 介绍了GDPR推出了数据隐私新规定,为了解决用户的隐私安全问题,使用联邦学习是很有必要的。
- 虽然联邦学习能够不收集用户的隐私,但是从用户上传的梯度或者参数推断用户私人信息,所以本文使用差分隐私对上传数据进行加密。
- 联合推荐已有部分学者研究,但大多都是基于矩阵分解(MF),但联邦神经推荐系统研究十分有限,神经网络能够提高推荐质量,本文使用神经协同过滤(NCF)作为基础模型,提出基于联邦学习的联邦神经协同过滤(FedNCF)。
- 此外为了提高差分隐私的效用,本文提出了一个自适应差分隐私方法。该方法在由衰减率控制的每次迭代中仔细调整噪声尺度。 并采用截断的集中差分隐私(tCDP),它提供了对自适应噪声注入的严格而直接的隐私界限分析,以估计用户的隐私损失。
1.2 本文贡献
- 本文探索使用 MF 和神经网络在联邦范式中构建推荐系统,并提出了一种新的联邦推荐系统,称为 FedNCF,它可以利用高度分散的用户数据来协作训练 NCF 模型。
- 本文提出了一种新颖的自适应差分私有联邦学习算法,其中每次迭代中的噪声尺度由衰减率动态调整。截断的集中差分隐私(tCDP)被用来提供一个明确的数学表达式来估计用户的隐私损失。
- 本文对四个公共数据集的大量实验和分析表明,本文的方法可以在集中式 NCF 的情况下取得有竞争力的结果,同时保护用户隐私。
2 研究背景
2.1 差分隐私
2.2 截断的集中差分隐私(tCDP)
3 研究现状
3.1 联邦推荐系统
- FL 已被应用于训练智能手机键盘和主题建模的查询建议模型。 在将联邦学习应用于个性化推荐方面也有一些探索
- Ammad 等人提出了第一个基于 FL 的推荐系统(FCF)。 在 FCF 中,每个用户使用本地存储的数据计算模型梯度。 用户嵌入在本地维护和更新。 物品嵌入由服务器维护,并使用聚合梯度进行更新。
- 在 FCF 之后,Lin 等人提出了 FedRec 框架。 为了保护用户交互过的物品,FedRec 随机选择了一些没有被用户交互过的物品,并分配了虚拟评级。
- 柴等人提出了联邦矩阵分解 (FedMF) 方法,其中梯度通过同态加密进行加密。
- Anelli等人提出了FedeRank算法,利用“Learning to rank”范式解决 top-N 推荐。
- 大多数现有的工作构建了基于 MF 的联合推荐系统。本文专注于神经网络在 FL 中的利用。
3.2 差分隐私推荐系统
- 由于强大的隐私保障,差分隐私在数据推送、机器学习、社交网络等方面受到了极大的关注和广泛的研究。 个性化推荐是DP的经典应用场景之一。
- McSherry等人首先在协同过滤推荐系统中应用了差分隐私。
- Ribero罗等人提出了一种基于 MF 的联合推荐方法,并首次在联合推荐中引入了差分隐私。 张等人提出了一个差分私有 MF 模型和Jo-DPMF模型。
- 张等人 提出了 DS-ADMM++,将差分隐私集成到 DS-ADMM 中以提供隐私保护特性。
- 尽管上述研究有一些后续研究,但遗憾的是,没有一个旨在减少差分隐私噪声对推荐质量的影响。
4 理论方法
4.1 神经协同过滤(NCF)
\qquad
神经协同过滤将传统的用户和物品内积替换为神经架构来学习用户和物品的交互函数,如图 1 所示。每个用户和物品都表示为一个稀疏向量(one-hot identifier),然后 由嵌入层投影到密集向量(嵌入)中。 用户和物品嵌入被输入到多层神经架构中以预测分数。
\qquad NCF 包含三个模型:第一个是广义矩阵分解(GMF),其中用户和物品嵌入是按元素生成的,输出层将结果投影到预测分数。 第二个是多层感知器(MLP),其中嵌入被连接起来,然后将结果输入隐藏层。 第三是GMF和MLP的融合,即神经矩阵分解(NeuMF),其中GMF和MLP模型通过连接它们的输出层来组合。
4.2 联邦神经协同过滤
\qquad
本文提出的 FedNCF 方法的框架,它包括三种联邦学习算法:联邦广义矩阵分解 (FedGMF)、联邦多层感知 (FedMLP) 和联邦神经矩阵分解 (FedNeuMF)。 本质上,这些模型是相应 NCF 模型的联合版本。 FedNCF框架如图2所示
FedNCF框架设置
符号 | 定义 |
---|---|
i i i | 第 i i i个物品 |
u u u | 第 u u u个用户 |
U U U | 用户集合 |
I I I | 物品集合 |
F F F | 潜在因子的数量 |
p u p_u pu | 用户 u u u的嵌入向量 |
q i q_i qi | 物品 i i i的嵌入向量 |
Q Q Q | 全部物品嵌入向量, Q ∈ R ∣ I ∣ × F Q\in \mathbb{R}^{|I|\times F} Q∈R∣I∣×F |
W W W | 神经网络的参数 |
θ u \theta_u θu | 用户 u u u本地模型的参数集合, θ u = < p u , Q , W > \theta_u = \left<p_u,Q,W\right> θu=⟨pu,Q,W⟩ |
θ S \theta_S θS | 全局模型的参数集合, θ S = < Q , W > \theta_S = \left<Q,W\right> θS=⟨Q,W⟩ |
X | 用户物品评分矩阵, X ∈ R ∣ U ∣ × ∣ I ∣ X \in \mathbb{R}^{|U| \times |I|} X∈R∣U∣×∣I∣ |
x u i x_{ui} xui | 用户 u u u对物品 i i i的评分 |
X u X_{u} Xu | 用户 u u u对物品的评分, X u = { ( u , i , r ) ∣ x u i = r } X_u =\{ \left( u,i,r \right)|x_{ui}=r\} Xu={(u,i,r)∣xui=r} |
k k k | 每轮更新本地用户数量, k ∈ ∣ U ∣ k \in |U| k∈∣U∣ |
t t t | 更新轮数 |
U t − U^-_t Ut− | 第 t t t轮,从 U U U随机选取用户数为 k k k的子集 |
θ t − 1 S \theta_{t-1}^S θt−1S | 第 t − 1 t-1 t−1轮全局模型参数 |
L ( ϑ u : X u ) \mathcal{L}\left( \vartheta^u:X_u\right) L(ϑu:Xu) | 本地模型最小化损失函数 |
q q q | 每轮选择的用户比例, ∣ X u − ∣ = q ∣ X u ∣ |X_u^-|=q|X_u| ∣Xu−∣=q∣Xu∣ ,q<1 |
本地更新策略
\qquad
在
t
t
t时刻,从总体用户
U
U
U选择
k
k
k个用户记为
U
t
−
U_t^-
Ut−,每个用户本地模型参数
θ
u
\theta^u
θu按如下公式计算梯度:
Δ
ϑ
t
u
=
<
Δ
p
u
,
Δ
Q
t
,
Δ
W
t
>
=
∑
(
u
,
i
,
r
)
∈
X
u
−
∂
L
(
<
p
u
,
ϑ
t
−
1
S
>
;
x
u
i
)
∂
<
p
u
,
Q
,
W
>
\Delta \vartheta_t^u = \left< \Delta p_u , \Delta Q_t, \Delta W_t \right>=\sum_{(u,i,r) \in X_u^-}\frac{\partial \mathcal{L} \left(\left<p_u, \vartheta_{t-1}^S \right>;x_{ui} \right)}{\partial \left<p_u,Q,W \right>}
Δϑtu=⟨Δpu,ΔQt,ΔWt⟩=(u,i,r)∈Xu−∑∂⟨pu,Q,W⟩∂L(⟨pu,ϑt−1S⟩;xui)
\qquad
每个用户的嵌入向量不会上传到服务器
S
S
S,直接在本地使用学习率为
α
\alpha
α更新:
p
u
t
=
p
u
t
−
1
−
α
Δ
p
u
t
p_{u_t} = p_{u_{t-1}} - \alpha\Delta p_{u_t}
put=put−1−αΔput
\qquad
只有梯度
<
Δ
Q
t
,
Δ
W
t
>
\left<\Delta Q_t, \Delta W_t \right>
⟨ΔQt,ΔWt⟩会被上传到服务器
S
S
S。服务器可以基于非零物品嵌入梯度直接恢复整个用户交互历史,因为只有用户与之交互的物品具有非零梯度来更新它们的嵌入。 因此,本文随机抽样 M 个用户未交互的物品,并使用与实际物品嵌入梯度具有相同均值和方差的高斯分布随机生成它们的伪梯度。 然后将伪梯度
Φ
t
\Phi_t
Φt与物品嵌入的实际梯度结合,并将上传的梯度修改为:
g
t
u
=
<
Δ
Q
t
+
Φ
t
,
+
Δ
W
t
>
g_t^u = \left< \Delta Q_t + \Phi_t,+ \Delta W_t \right>
gtu=⟨ΔQt+Φt,+ΔWt⟩
\qquad 这里使用伪梯度的目的是让服务器无法知道用户对哪个物品进行了打分,这样就无法让服务器知道用户的交互记录。但恶意者仍能够从梯度中提取用户的个人信息,所以本文使用了自适应差分隐私。
全局更新策略
\qquad
当服务器
S
S
S从所有更新的用户
U
t
−
U_t^-
Ut−中收到了梯度
g
t
u
g_t^u
gtu,然后通过用户上传的梯度使用平均的方法得到
Q
Q
Q和
W
W
W的平均梯度:
g
t
S
=
1
∥
U
t
−
∥
∑
u
∈
U
t
−
g
t
u
g_t^S = \frac{1}{\|U_t^-\|} \sum_{u \in U_t^-}g_t^u
gtS=∥Ut−∥1u∈Ut−∑gtu
\qquad
使用学习率为
α
\alpha
α进行更新全局参数:
ϑ
t
S
=
ϑ
t
−
1
S
−
α
g
t
S
\vartheta_t^S = \vartheta_{t-1}^S - \alpha g_t^S
ϑtS=ϑt−1S−αgtS
\qquad
如算法1是FedNCF算法的框架:
4.3 自适应差分隐私(ADP)
\qquad
使用自适应差分隐私的目的是为了保护用户的上传的梯度免受推理攻击,即防止恶意者通过用户的梯度倒退用户的个人数据。
\qquad
本文使用的自适应差分隐私为了减少差分隐私带给模型准确率下降的影响,在逐渐逐渐训练的过程,减少注入的噪音。
\qquad
ADP模块有三个主要组件:梯度范数截断、自适应噪声添加和隐私预算组成:
- 梯度范数截断:之前裁剪梯度是通过一个阈值裁剪,然而不同层的梯度功能不同,不同层使用相同阈值可能会使得信息丢失态度,即添加噪声太大,导致模型的准确下降,本文将不同层使用不同的阈值。因此 m m m层的梯度 g u t g^t_u gut,重新定义为 g m ′ = g m / max ( 1 , ∥ g m ∥ 2 C m ) g_m^\prime = g_m/\max \left(1,\frac{\|g_m\|_2}{C_m} \right) gm′=gm/max(1,Cm∥gm∥2),其中 C m C_m Cm是 g m g_m gm的绝对平均值。
- 自适应添加噪声:在开始的时候梯度比较大,可以添加比较多的噪声,不需要精致的更新。当参数接近其最优值时,梯度减小,必须更精确地值。因此,将更小份额的隐私预算(更多噪音)分配给具有较大范数的梯度,将更大份额(更少噪音)分配给具有较小范数的梯度。