LightGCN阅读笔记

652 阅读1分钟

《LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation》

1、问题描述

问题:NGCF中的GCN操作存在冗余。

对于user-item二部图,如果输入为ID embedding的时候,GNN的feature transform以及非线性操作没什么用,只保留GNN最核心的邻居聚合操作就行了(对比NGCF)。

Input node feature:

  • 包含title/abstract等语义信息时,feature transform以及非线性操作有必要
  • CF场景下,仅为ID embedding时,feature transform以及非线性操作可以去掉

2、LightGCN

image.png

2.0 Input node feature

h(0)=Embedding(ID)h^{(0)} = Embedding(ID)

LightGCN网络中唯一的参数:embedding。

2.1 邻居聚合

hu(l+1)=iNu1NuNihi(l)hi(l+1)=uNi1NuNihu(l)h_u^{(l+1)} = \sum_{i \in N_u}\frac{1}{\sqrt{|N_u|}\sqrt{|N_i|}}h_i^{(l)} \\ h_i^{(l+1)} = \sum_{u\in N_i}\frac{1}{\sqrt{|N_u|}\sqrt{|N_i|}}h_u^{(l)}

只保留了对称归一化和邻居聚合。

问题解释
去掉W_2的同时,为什么把 iNu(hi(l)hu(l))\sum_{i \in N_u} (h_i^{(l)} \odot h_u^{(l)}) 也去掉了?
去掉W_1的同时,self-connection hu(l)h_u^{(l)} 也去掉了?最后JK连接,有类似的效果,所以去掉了

2.2 层组合(类似jumping knowledge)

hu=l=0Lαlhu(l)hi=l=0Lαlhi(l)αl=1L+1h_u = \sum_{l=0}^{L}\alpha_{l}h_u^{(l)} \\ h_i = \sum_{l=0}^{L}\alpha_{l}h_i^{(l)}\\ \alpha_{l} = \frac{1}{L+1}

相当于把每一层进行加权求和/mean。注意,从0层原始特征开始。

2.3 损失函数

yui=huhiLoss=u=1MiNujNulnσ(yuiyuj)+λWembedding2y_{ui} = h_u \odot h_i \\ Loss = -\sum_{u=1}^{M} \sum_{i\in N_u} \sum_{j \notin N_u} ln \sigma (y_{ui} - y_{uj}) + \lambda||W_{embedding}||^2

点积表示分数,bayes personalized ranking loss希望u和i如果是邻居,分越高越好。后面是L2正则化,防止过拟合。

3、实验

3.1 数据集

和NGCF的一样:

  • Gowalla
  • Amazon-book
  • Yelp2018

3.2 baseline

  • NGCF (其他比如GCMC, PinSage)
  • Mult-VAE:CF方法
  • GRMF:矩阵分解方法

3.3 评估指标

  • recall@k(item集合评估指标)

    • 可以简单理解为,user的推荐集合中,和真实的user行为比较,相关的item所占的比例
  • NDCG@k(item排序评估指标)

    • 按照排名依次衰减权重
  • zhuanlan.zhihu.com/p/67287992

3.4 实验结果

最主要的还是对于NGCF的消融实验,发现左乘W和leakyrelu没什么用。

image.png

  • NGCF-f:去掉W_1, W_2
  • NGCF-n:去掉leakyrelu
  • NGCF-fn:都去掉

不同层数:

image.png

和其他baseline的比较:

image.png