Deoscillated Graph Collaborative Filtering

Liu Z., Meng L., Jiang F., Zhang J. and Yu P. S. Deoscillated graph collaborative filtering. arXiv preprint arXiv:2011.02100, 2020.

作者认为鉴于推荐数据集二部图的特点, 采用 GCN 的训练会产生 osciilation 的问题, 并采用 cross-hop 来解决.

符号说明

  • \(\mathcal{G} = (\mathcal{V}, \mathcal{E})\), graph;
  • \(A\), 邻接矩阵;
  • \(\tilde{A} = D^{-1}A\);
  • \(e_v^{(l)} \in \mathbb{R}^d\), hidden features of \(l\)-th layer;
  • \(\mathcal{N}_v^{(k)}\), \(k\)-hop neighbors;

Motivation

  • 推荐数据集通常是二部图, user-item, 所以在此图上采用 GCN 它的更新方式如下图所示:

  • 每一次 propagation 仅和 users 或 items 产生联系;

  • 对于邻接矩阵 \(\tilde{A}\), 当 \(\mathcal{G}\) 是一个 regular (不可约, 非周期)的图时:

    \[\lim_{t \rightarrow +\infty} \tilde{A}^tx_0 = \pi, \]

    但是这一性质对于二部图是不成立的. 所以作者认为, 直接采用二部图进行更新会有 osciilation 的问题.

本文思路

  • 既然如此, 作者将 2-hop 邻居囊括进来用于更新:

  • 首先通过 Locality-Adaptive Layer (LA layer) 对每一个结点的特征进行放缩

    \[\tilde{E}^{(l)} = \Omega^{(l)} E^{(l)}, \\ \Omega^{(l)} = \text{diag}(\alpha^{(l)} \odot p) \in \mathbb{R}^{|\mathcal{V}| \times |\mathcal{V}|}. \]

    其中 \(\alpha^{(l)} \in [0, 1]^{|\mathcal{V}|}\) 是可训练的参数 (after sigmoid), \(p\) 是固定的参数;

  • \(C = A^2\), 定义:

    \[\mathcal{L} = D^{-1/2} A D^{-1/2}, \: \mathcal{L}_c = D_c^{-1/2} C D_{c}^{-1/2}. \]

  • 然后

    \[E^{(l)} = (\mathcal{L} + \mathcal{L}_c + I) \tilde{E}^{(l)}. \]

  • 最后的特征综合所有层的特征信息:

    \[E^* = \frac{1}{L + 1} \sum_{l=0}^L E^{(l)}. \]

注: 实际上 \(\mathcal{L}_c\) 中有很多非常小的数, 这会带来很多的计算上的浪费, 故作者选择

\[\tilde{L}_c[i, j] = \left \{ \begin{array}{ll} \mathcal{L}_c[i, j] & \text{ if } \mathcal{L}_c[i, j] > \epsilon \\ 0 & \text{otherwise} \\ \end{array} \right .. \]

注: 作者的实验结果有点奇怪, LightGCN 在 Gowalla 上的 NDCG@20 只有 0.1309, 不知道是不是数据处理不一样.

代码

[official]

posted @ 2022-10-30 15:55  馒头and花卷  阅读(76)  评论(0编辑  收藏  举报