论文《LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation》阅读

论文《LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation》阅读

论文概况

这篇文章是何向南教授刚刚发表在SIGIR 2020上的作品,作者介绍了一个轻量版的GCN模型做推荐系统。

论文地址:LightGCN

Introduction

这篇文章的亮点在于将以往的GCN-based CF方法中的特征转换和非线性激活函数给去掉了,aggregation的方式就是将embedding简单地加权相加。作者在其之前的成果NGCF的基础上修改得到了LightGCN模型。

具体地,结点的embedding是这么表示的:

e u k + 1 = A G G ( e u k , e i k : i ∈ N u ) (2) e_u^{k+1} = AGG( e_u^{k}, { e_i^{k} : i \in \it{N}_u } ) \tag{2} euk+1=AGG(euk,eik:iNu)(2)

本文作者直接将同等维度的向量相加作为AGG的形式,这也体现了Light的特点。

向量形式如下式所示:

E ( K + 1 ) = D − 1 2 A D − 1 2 E ( K ) (7) E^{(K+1)} = D^{-\frac{1}{2}} A D^{-\frac{1}{2}} E^{(K)} \tag{7} E(K+1)=D21AD21E(K)(7)

最终做输出的是向量相乘得到 u 对 i 的score,向量使用之前K层embedding的加权相加,如下式所示:

E = α 0 E ( 0 ) + α 1 E ( 1 ) + α 2 E ( 2 ) + α K E ( K ) = α 0 E ( 0 ) + α 1 A ~ E ( 0 ) + α 2 A ~ 2 E ( 0 ) + α K A ~ K E ( 0 ) (8) E=\alpha_{0} E^{(0)} + \alpha_{1}E^{(1)} + \alpha_{2} E^{(2)} + \alpha_{K} E^{(K)} \\ = \alpha_{0} E^{(0)} + \alpha_{1}\tilde{A}E^{(0)} + \alpha_{2} \tilde{A}^2 E^{(0)} + \alpha_{K} \tilde{A}^K E^{(0)} \tag{8} E=α0E(0)+α1E(1)+α2E(2)+αKE(K)=α0E(0)+α1A~E(0)+α2A~2E(0)+αKA~KE(0)(8)

模型分析

LightGCN与SGCN的关系

文章借鉴了SGCN中取消在邻接矩阵中添加单位矩阵的做法,推导如下:

E ( k + 1 ) = ( D + I ) − 1 2 ( A + I ) ( D + I ) − 1 2 E ( k ) (9) E^{(k+1)}=(D+I)^{-\frac{1}{2}} (A+I) (D+I)^{-\frac{1}{2}} E^{(k)} \tag{9} E(k+1)=(D+I)21(A+I)(D+I)21E(k)(9)

作者在后文的推导中省略了 ( D + I ) − 1 2 (D+I)^{-\frac{1}{2}} (D+I)21这一项,因为这一项唯一的作用就是归一化,去掉不影响推导。展开上式,可以得到:

E ( k ) = ( A + I ) E ( k − 1 ) = ( A + I ) K E ( 0 ) = ( K 0 ) E ( 0 ) + ( K 1 ) A E ( 0 ) + ( K 2 ) A 2 E ( 0 ) + ⋯ + ( K K ) A K E ( 0 ) (10) E^{(k)}= (A+I) E^{(k-1)} = (A+I)^K E^{(0)} \\ = \binom{K}{0}E^{(0)} + \binom{K}{1}AE^{(0)} + \binom{K}{2}A^2E^{(0)} + \dots + \binom{K}{K}A^{K}E^{(0)} \tag{10} E(k)=(A+I)E(k1)=(A+I)KE(0)=(0K)E(0)+(1K)AE(0)+(2K)A2E(0)++(KK)AKE(0)(10)

这里是用了多项式的展开,可以看到公式(10)中,第一行添加了自连接,但是随着多项式展开,每一项中的自连接(单位矩阵)都被乘掉了,效果等同于不加单位矩阵的原邻接矩阵的加权之和。

这里其实也比较容易理解,在一个图中,一个节点a的embedding在传到邻接节点b后,在第二轮传播的时候b就又会传到自己a;同理,第三轮的时候隔两跳的节点c也会传播到b,并在第四轮传回给a。因此,加不加单位矩阵就无所谓了,反正自己的embedding早晚会被其他节点给传回来,就是这个道理。

LightGCN与APPNP的关系

文章使用APPNP的结论来证明LightGCN可以消除GCN中层增加带来的过度平滑问题。APPNP使用类似PageRank算法来消除过度平滑,做法就是在每次传播中保留最初的embedding,如下式所示:
E ( K + 1 ) = β E ( 0 ) + ( 1 − β ) A ~ E ( K ) (11) E^{(K+1)} = \beta E^{(0)} + (1-\beta) \tilde{A} E^{(K)} \tag{11} E(K+1)=βE(0)+(1β)A~E(K)(11)

将上式展开,可以得到

E ( K ) = β E ( 0 ) + ( 1 − β ) A ~ E ( K − 1 ) = β E ( 0 ) + β ( 1 − β ) A ~ E ( 0 ) + β ( 1 − β ) 2 A ~ 2 E ( 0 ) + ⋯ + ( 1 − β ) K A ~ K E ( 0 ) (12) E^{(K)} = \beta E^{(0)} + (1-\beta) \tilde{A} E^{(K-1)} \\ = \beta E^{(0)} + \beta(1-\beta) \tilde{A} E^{(0)} + \beta(1-\beta) ^2 \tilde{A}^2 E^{(0)} + \dots + (1-\beta) ^K \tilde{A}^K E^{(0)} \tag{12} E(K)=βE(0)+(1β)A~E(K1)=βE(0)+β(1β)A~E(0)+β(1β)2A~2E(0)++(1β)KA~KE(0)(12)

与公式(8)进行对比即可得出结论,通过将公式8中的 α 0 \alpha_{0} α0 α 1 \alpha_{1} α1 α K \alpha_{K} αK 设置成公式(12)中 β \beta β 的形式,两个公式就是等价的,因此就可以解决过度平滑问题。

这个解释我个人认为比较牵强,因为文中已经提到作者设置 α \alpha α 的方式是在均匀分布于 1 / ( K + 1 ) 1/(K+1) 1/(K+1),但是APPNP之所以能够消除过度平滑,原因在于每次迭代都会保留比例为 β \beta β 大小的原始embedding,这并不是随便设置系数就可以保持一致的。

二阶embedding平滑

作者提出了一个平滑系数,即
c v → u = 1 ∣ N u ∣ ∣ N v ∣ ∑ i ∈ N u ∩ N v 1 ∣ N i ∣ (14) c_{v\rightarrow u} = \frac{1}{\sqrt{| \it{N} _u| | \it{N} _v|}} \sum\limits_{i \in \it{N}_u \cap \it{N}_v}{\frac{1}{|\it{N_i}|}} \tag{14} cvu=Nu∣∣Nv 1iNuNvNi1(14)

公式说明两个节点u和v(此处以用户举例,item同)平滑系数 c v → u c_{v\rightarrow u} cvu(v对u的影响)受3方面影响:1)共同连接的item,越多,u和v相似性越高;2)item的受欢迎程度(即节点i的度),越多,u和v相似性越低(因为分散开了);3)v的活跃程度,越活越,相似性越低(因为不止被一个影响)。

模型训练

损失函数使用BPR损失函数(加L2正则化项),即认为交互过的item的被喜爱程度大于未交互item,公式略(之前的文章介绍过,可以参考)。

总结

本文的推导过程是比较丰富的,将模型介绍得非常饱满。具体的更多细节请阅读原文,欢迎评论区交流。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值