【推荐系统】User-Item CF:LR-GCCF

💡 本次解读的文章是 2020 年发表于 AAAI 的一篇基于图卷积神经网络的用户物品协同过滤推荐算法论文, 这篇论文证实了去除图卷积网络中非线性模块会提升推荐性能,并基于此提出了一种专门针对用户-物品协调过滤(CF)的残差网络结构,缓解了具有稀疏用户-物品交互数据的图卷积聚合操作中的过平滑问题。

一、背景介绍

随着近年来图卷积神经网络技术(GCN)的发展,目前该项技术已经在多个领域取得了成效,在推荐系统领域,虽然基于 GCN 的推荐算法取得了一定的效果,但是本文认为基于 GCN 的协同过滤(CF)算法中的两个重要问题仍然没有被解决:1)GCNs 的邻域聚合遵循图卷积操作和非线性变换这两个步骤,其中,图卷积操作对聚合邻域信息和建模高阶图结构是有效的,但引入额外复杂度的非线性变换是否合适的问题有待讨论;2)目前大多数基于 GCN 的模型只能堆叠极少层(例如 2 层),这是因为图卷积操作是一种特殊的图拉普拉斯平滑,随着深度的增加,尤其是在稀疏图结构中,容易引起过度平滑效应,导致更高层的邻居对每个节点来说是不可区分的,而如何更好地对图结构进行建模的同时,避免这一过程中的过度平滑效应,仍然是一个值得思考的问题。

二、本文贡献

(1)从大多数图任务中分析了 CF 的独特性,并证明了去除非线性变换能提升推荐的性能;
(2)提出融入线性残差学习的 GCN 模型,捕捉低阶和高阶特征,以此缓解过度平滑问题。

三、LR-GCCF 模型

本文提出的 LR-GCCF 模型改进了现有基于 GCN 模型的不足,具有两个特点:1)在每一层的特征传播步骤中,使用简单的线性嵌入传播取代非线性变换;2)使用一种基于残差的网络结构来克服以往容易过平滑的局限性。

(1)二分图构建

在符号表示上, U \mathcal{U} U 表示有 M M M 个用户的用户集( ∣ U ∣ = M |\mathcal{U}| = M U=M), V \mathcal{V} V 表示有 N N N 个物品的物品集( ∣ V ∣ = N |\mathcal{V}| = N V=N), R ∈ R M × N \mathbf{R} \in \mathbb{R}^{M \times N} RRM×N 表示用户对物品的评分矩阵,其中, r a i = 1 r_{ai}=1 rai=1 表示用户 a a a 喜欢物品 i i i,否则取零。对于给定的评分表,用户-物品二分图可表示为 G = < U ∪ V , A > \mathcal{G} = <\mathcal{U} \cup \mathcal{V},\mathbf{A}> G=<UV,A> A \mathbf{A} A 由评分矩阵 R \mathbf{R} R 构建得到:
A = [ R 0 N × M 0 M × N R T ] \mathbf{A}=\left[\begin{array}{cc}\mathbf{R} & \mathbf{0}^{N \times M} \\ \mathbf{0}^{M \times N} & \mathbf{R}^{\mathbf{T}}\end{array}\right] A=[R0M×N0N×MRT]

(2)线性嵌入传播

E ∈ R ( M + N ) × D \mathbf{E} \in \mathbb{R}^{(M+N) \times D} ER(M+N)×D 表示用户和物品的自由嵌入(与以节点特征作为固定输入数据的 GCN 任务不同,嵌入矩阵是未知的,需要在 LR-GCCF 中训练进行训练),矩阵的前M行,即 E [ 1 : M ] \mathbf{E}[1:M] E[1:M] 为用户嵌入子矩阵, E [ M + 1 : M + N ] \mathbf{E}[M+1:M+N] E[M+1:M+N] 为物品嵌入子矩阵,LR-GCCF 将嵌入作为输入:
E 0 = E \mathbf{E}^{0} = \mathbf{E} E0=E
在迭代的过程中,第 k + 1 k+1 k+1 层的嵌入表示由第 k k k 层的嵌入表示线性聚合获得:
E k + 1 = S E k W k \mathbf{E}^{k+1} = \mathbf{S}\mathbf{E}^{k}\mathbf{W}^{k} Ek+1=SEkWk
其中, S = D ~ − 0.5 A ~ D ~ − 0.5 \mathbf{S}=\tilde{\mathbf{D}}^{-0.5} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-0.5} S=D~0.5A~D~0.5 表示添加自环的标准化邻接矩阵, A ~ = A + I \tilde{\mathbf{A}} = \mathbf{A} + \mathbf{I} A~=A+I 表示添加自环, D ~ \tilde{\mathbf{D}} D~ A ~ \tilde{\mathbf{A}} A~ 的度矩阵, W k \mathbf{W}^{k} Wk 是可训练的线性变换参数。上述矩阵形式等价于将每个用户 u u u 和每个物品 i i i 的更新嵌入建模为:
[ E k + 1 ] u = e u k + 1 = [ 1 d u e u k + ∑ j ∈ R u 1 d j × d u e j k ] W k \left[\mathbf{E}^{k+1}\right]_u=\mathbf{e}_u^{k+1}=\left[\frac{1}{d_u} \mathbf{e}_u^k+\sum_{j \in R_u} \frac{1}{d_j \times d_u} \mathbf{e}_j^k\right] \mathbf{W}^k [Ek+1]u=euk+1= du1euk+jRudj×du1ejk Wk
[ E k + 1 ] i = e i k + 1 = [ 1 d i e i k + ∑ u ∈ R i 1 d i × d u e u k ] W k \left[\mathbf{E}^{k+1}\right]_i=\mathbf{e}_i^{k+1}=\left[\frac{1}{d_i} \mathbf{e}_i^k+\sum_{u \in R_i} \frac{1}{d_i \times d_u} \mathbf{e}_u^k\right] \mathbf{W}^k [Ek+1]i=eik+1=[di1eik+uRidi×du1euk]Wk
其中, d i ( d u ) d_{i}(d_{u}) di(du) 是物品 i i i(用户 u u u)的对角度, R ∗ R_{*} R 是二分图 G \mathcal{G} G 中节点( ∗ * )的邻居。

(3)残差偏好预测

在深度为 K K K 的模型中,第 K K K 层的输出为 E K \mathbf{E}^{K} EK(由上述传播过程求得),对于每个用户(物品), e u K \mathbf{e}_u^K euK e i K \mathbf{e}_i^K eiK)捕获最多 K K K 阶二分图相似性。之后,基于用户潜在向量和物品潜在向量之间的内积求取偏好 r ^ u i \hat{r}_{ui} r^ui
r ^ u i = < e u K , e i K > \hat{r}_{u i}=<\mathbf{e}_u^K, \mathbf{e}_i^K> r^ui=<euK,eiK>
在实际应用中,大多数基于 GCN 的变体和推荐模型,在 K = 2 K = 2 K=2 时取得了最好的性能。这些 GCN 变体和推荐模型的总体趋势是:性能随着 K K K 从 0 增加到 2 而增加,随着 K K K 继续增加,性能迅速下降,一个可能的原因是深层的节点嵌入趋于过度平滑,即它们更相似,而区别信息更少。基于此,本文引入了残差学习机制,将上述偏好公式进行了扩展,得到 r ^ u i k + 1 = r ^ u i k + < e u k + 1 , e i k + 1 > \hat{r}_{ui}^{k+1}=\hat{r}_{ui}^{k}+<\mathbf{e}_{u}^{k+1},\mathbf{e}_{i}^{k+1}> r^uik+1=r^uik+<euk+1,eik+1>,则扩展后的残差预测展开式可表示为:
r ^ u i = r ^ u i K − 1 + < e u K , e i K > = r ^ u i K − 2 + < e u K − 1 , e i K − 1 > + < e u K , e i K > = r ^ u i 0 + < e u 1 , e i 1 > + … + < e u K , e i K > = < e u 0 ∥ e u 1 ∥ … ∥ e u K , e i 0 ∥ e i 1 ∥ … ∥ e i K > . \begin{aligned} \hat{r}_{u i} & =\hat{r}_{u i}^{K-1}+<\mathbf{e}_u^K, \mathbf{e}_i^K> \\ & =\hat{r}_{u i}^{K-2}+<\mathbf{e}_u^{K-1}, \mathbf{e}_i^{K-1}>+<\mathbf{e}_u^K, \mathbf{e}_i^K> \\ & =\hat{r}_{u i}^0+<\mathbf{e}_u^1, \mathbf{e}_i^1>+\ldots+<\mathbf{e}_u^K, \mathbf{e}_i^K> \\ & =<\mathbf{e}_u^0\left\|\mathbf{e}_u^1\right\| \ldots\left\|\mathbf{e}_u^K, \quad \mathbf{e}_i^0\right\| \mathbf{e}_i^1\|\ldots\| \mathbf{e}_i^K>.\end{aligned} r^ui=r^uiK1+<euK,eiK>=r^uiK2+<euK1,eiK1>+<euK,eiK>=r^ui0+<eu1,ei1>++<euK,eiK>=<eu0 eu1 euK,ei0 ei1eiK>.

四、模型训练

在获取了残差预测向量表示后,对残差预测向量公式进行进一步地转换:

r ^ u i = < e u 0 ∥ e u 1 ∥ … ∥ e u K , e v 0 ∥ e v 1 ∥ … ∥ e v K > = < [ E 0 ] u ∥ … ∥ [ S K E 0 W 0 … W K ] u , [ E 0 ] i ∥ … ∥ [ S K E 0 W 0 … W K ] i > = < [ E 0 ] u ∥ … ∥ [ S K E 0 Y K ] u , [ E 0 ] i ∥ … ∥ [ S K E 0 Y K ] i > \begin{aligned} \hat{r}_{u i}= & <\mathbf{e}_u^0\left\|\mathbf{e}_u^1\right\| \ldots\left\|\mathbf{e}_u^K, \quad \mathbf{e}_v^0\right\| \mathbf{e}_v^1\|\ldots\| \mathbf{e}_v^K> \\ =< & {\left[\mathbf{E}^0\right]_u\|\ldots\|\left[\mathbf{S}^K \mathbf{E}^0 \mathbf{W}^0 \ldots \mathbf{W}^K\right]_u, } \\ & {\left[\mathbf{E}^0\right]_i\|\ldots\|\left[\mathbf{S}^K \mathbf{E}^0 \mathbf{W}^0 \ldots \mathbf{W}^K\right]_i>} \\ = & <\left[\mathbf{E}^0\right]_u\|\ldots\|\left[\mathbf{S}^K \mathbf{E}^0 \mathbf{Y}^K\right]_u, \quad\left[\mathbf{E}^0\right]_i\|\ldots\|\left[\mathbf{S}^K \mathbf{E}^0 \mathbf{Y}^K\right]_i>\end{aligned} r^ui==<=<eu0 eu1 euK,ev0 ev1evK>[E0]u[SKE0W0WK]u,[E0]i[SKE0W0WK]i><[E0]u[SKE0YK]u,[E0]i[SKE0YK]i>
其中, Y K = W 0 W 1 . . . W K \mathbf{Y}^{K} = \mathbf{W}^{0}\mathbf{W}^{1}...\mathbf{W}^{K} YK=W0W1...WK(意味着在实际训练过程中可用一个矩阵参数代替多个矩阵参数,极大减少参数的数量), S K \mathbf{S}^{K} SK 表示 S \mathbf{S} S K K K 次幂。由于本文关注的是隐式反馈,因此采用 BPR 中基于成对排序的损失函数:
min ⁡ Θ L ( R , R ^ ) = ∑ a = 1 M ∑ ( i , j ) ∈ D a − ln ⁡ ( s ( r ^ a i − r ^ a j ) ) + λ ∥ Θ 1 ∥ 2 \min _{\Theta} \mathcal{L}(\mathbf{R}, \hat{\mathbf{R}})=\sum_{a=1}^M \sum_{(i, j) \in D_a}-\ln \left(s\left(\hat{r}_{a i}-\hat{r}_{a j}\right)\right)+\lambda\left\|\Theta_1\right\|^2 ΘminL(R,R^)=a=1M(i,j)Daln(s(r^air^aj))+λΘ12
其中, Θ = [ Θ 1 , Θ 2 ] \Theta = [\Theta_{1}, \Theta_{2}] Θ=[Θ1,Θ2] Θ 1 = [ E 0 ] \Theta_{1}=[\mathbf{E}^{0}] Θ1=[E0] Θ = [ [ Y k ] k = 1 K ] \Theta = [[\mathbf{Y}^{k}]^{K}_{k=1}] Θ=[[Yk]k=1K] λ \lambda λ 是是控制用户和物品自由嵌入矩阵复杂度的正则化参数, D a = { ( i , j ) ∣ i ∈ R a ∧ j ∈ V − R a } D_a=\left\{(i, j) \mid i \in R_a \wedge j \in V-R_a\right\} Da={(i,j)iRajVRa} 表示成对训练数据, R a R_{a} Ra表示用户 a a a 评分过的物品集。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值