LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation

He X., Deng K., Wang X., Li Y., Zhang Y. and Wang M. LightGCN: simplifying and powering graph convolution network for recommendation. In International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR), 2020.

LightGCN 极大简化了先前的 NGCF (主要去掉了特征转换部分和非线性激活函数部分).

符号说明

  • \(u \in \mathcal{U}, |\mathcal{U}| = M\), 用户;
  • \(i \in \mathcal{I}, |\mathcal{I}| = N\), item;
  • \(R \in \{0, 1\}^{M \times N}\), 交互矩阵, 用户 \(i\) 和 item \(i\) 有交互才为 1 否则为 0;
  • \(\mathcal{N}_u = \{i \in \mathcal{I}| R_{ui} = 1\}\);
  • \(\mathcal{N}_i = \{u \in \mathcal{U}| R_{ui} = 1\}\);
  • \(\bm{e}^{(0)} \in \mathbb{R}^d\), 根据user (item) 的 ID 转换得到的 embedding;
  • \(\bm{e}^{(l)} \in \mathbb{R}^d\), GCN 的第 \(l\) 层的一个特征;
  • \(E^{(l)} \in \mathbb{R}^{(M + N) \times d}\), 每一行是一个 \(\bm{e}\).
  • \(\sigma(\cdot)\), 非线性激活函数.

主要内容

NGCF

  1. 获取初始的 ID embeddings:

    \[\bm{e}_u^{(0)}, \bm{e}_i^{(0)}; \]

  2. NGCG 的每一层通过邻接的结点的特征进行聚合:

    \[\bm{e}_{u}^{(k+1)} = \sigma(W_1 \bm{e}_u^{(k)} + \sum_{i \in \mathcal{N}_u} \frac{1}{\sqrt{|\mathcal{N_u}| |\mathcal{N}_i| }} (W_1 \bm{e}_i^{(k)} + W_2 (\bm{e}_i^{(k)} \odot \bm{e}_{u}^{(k)}))), \\ \bm{e}_{i}^{(k+1)} = \sigma(W_1 \bm{e}_i^{(k)} + \sum_{u \in \mathcal{N}_i} \frac{1}{\sqrt{|\mathcal{N_u}| |\mathcal{N}_i| }} (W_1 \bm{e}_u^{(k)} + W_2 (\bm{e}_u^{(k)} \odot \bm{e}_{i}^{(k)}))). \]

  3. 由此得到

    \[(\bm{e}_u^{(0)}, \cdots, \bm{e}_u^{(L)}), \\ (\bm{e}_i^{(0)}, \cdots, \bm{e}_i^{(L)}); \]

  4. 连接得到最后的特征:

    \[\bm{e}_u = \bm{e}_u^{(0)} \oplus \cdots \oplus \bm{e}_u^{(L)}, \\ \bm{e}_i = \bm{e}_i^{(0)} \oplus \cdots \oplus \bm{e}_i^{(L)}; \]

  5. 通过内积

    \[\bm{e}_u^T \bm{e}_i \]

    进行预测.

作者通过消融发现, 特征转换部分 \(W_1, W_2\) 和非线性激活函数是不必要的:

图中:

  • NGCF-f: 去掉 \(W_1, W_2\);
  • NGCF-n: 去掉 \(\sigma(\cdot)\);
  • NGCG-fn: 去掉二者.

LightGCN

为此, 作者提出了一个简化的但更加高效的版本.

  1. 获取初始的 ID embeddings:

    \[\bm{e}_u^{(0)}, \bm{e}_i^{(0)}; \]

  2. NGCG 的每一层通过邻接的结点的特征进行聚合:

    \[\bm{e}_{u}^{(k+1)} = \sum_{i \in \mathcal{N}_u} \frac{1}{\sqrt{|\mathcal{N_u}| |\mathcal{N}_i| }} \bm{e}_i^{(k)}, \\ \bm{e}_{i}^{(k+1)} = \sum_{u \in \mathcal{N}_i} \frac{1}{\sqrt{|\mathcal{N_i}| |\mathcal{N}_u| }} \bm{e}_u^{(k)}; \\ \]

  3. 由此得到

    \[(\bm{e}_u^{(0)}, \cdots, \bm{e}_u^{(L)}), \\ (\bm{e}_i^{(0)}, \cdots, \bm{e}_i^{(L)}); \]

  4. 加权和得到最后的特征:

    \[\bm{e}_u = \sum_{k=0}^L \alpha_k \bm{e}_u^{(k)}, \\ \bm{e}_i = \sum_{k=0}^L \alpha_k \bm{e}_i^{(k)}, \]

    这里 \(\alpha_k\) 可以通过诸如注意力网络来学习, 作者推荐直接用 \(\frac{1}{L + 1}\);

  5. 通过内积

    \[\hat{y}_{ui} = \bm{e}_u^T \bm{e}_i \]

    进行预测;

  6. 通过 BPR 进行训练:

    \[L_{BPR} = - \sum_{u=1}^M \sum_{i \in \mathcal{N}(u)} \sum_{j \not = \mathcal{N}_u} \ln \sigma(\hat{y}_{ui} - \hat{y}_{uj}) + \lambda \|E^{(0)}\|^2. \]

分析

记邻接矩阵

\[A = \left ( \begin{array}{cc} \bm{0} & R \\ R^T & \bm{0} \end{array} \right ) \in \{0, 1\}^{(M + N) \times (M + N)}. \]

则 LightGCN 的流程可以简述为:

\[E^{k + 1} = (D^{-\frac{1}{2}} A D^{-\frac{1}{2}}) E^{(0)}, \]

其中 \(D\)\((M + N ) \times (M + N)\) 的对角矩阵, 对角线元素为 \(A\) 每一行的非零元素个数.

\(\tilde{A} := D^{-\frac{1}{2}} A D^{-\frac{1}{2}}\), 则最后的加权和的结果可以写为:

\[E = \sum_{k = 0}^L \alpha_k \tilde{A}^{k} E^{(0)}. \]

有了这些工具可以和以往的一些 GCN 框架进行对比 (不过我一时半会儿也不会回看这些论文, 就不写了). 总体来说, GCN 在推荐系统上的应用效果和 smooth 的程度有很大关系.

实验

  • 处理各层 embeddings 的实验:

作者比较了 LightGCN 和 Light-single (仅用最后的 \(\bm{e} := \bm{e}^{L}\) 进行预测), 可以发现, 对于后者, 加深层数是没有丝毫作用的, 大概也是 over-smoothing 了.

  • 不同的'标准化'特征方式的影响:

需要注意的是, 无论是 NGCF 还是 LightGCN 都采用了对称的方式'标准化'以避免scale的持续增加, 即 \(\frac{1}{\sqrt{|\mathcal{N}_u ||\mathcal{N}_i|}}\), 作者还比较了仅用一部分的结果. 可以发现, 对于正常的 LightGCN 结果是有提升的, 而在用了 \(L_1\) 之后反而起的反效果 (话说 \(L_1\) 怎么加? \(\frac{\bm{e}}{\|\bm{e}\|_1}\) ?).

  • 平滑度量: 作者做了 LightGCN 和 MF 所提取特征的平滑性的比较, 给出了一个指标, 具体回看论文.

代码

[PyTorch]
[TensorFlow]

posted @ 2022-06-15 23:02  馒头and花卷  阅读(308)  评论(0编辑  收藏  举报