Wang Y., Zhao Y., Zhang Y. and Derr T. Collaboration-aware graph convolutional network for recommender systems. arXiv preprint arXiv:2207.06221, 2022.

GCN 已经被广泛应用在了推荐系统中, 但是往往只是简单地应用. 作者考虑了 \(A_{ij} \in \{0, 1\}\) 的合理性, 构建新的‘邻接矩阵’来帮助推荐系统更好地运用协同过滤的信息.

符号说明

  • \(\mathcal{G = (V, E)}\);
  • \(\mathcal{V = U \cup I}\);
  • \(A \in \{0, 1\}^{\mathcal{|V| \times |V|}}\);
  • \(e_{pq} \in \mathcal{E}, \: \text{ if } A_{pq} = 1\);
  • \(\mathcal{N}_p^l\), \(l\)-hops neighbors;
  • \(\tilde{\mathcal{N}}_p^1 = \mathcal{N}_p^1 \cup \{p\}\);
  • \(P_{pq}^l \in \mathscr{P}_{pq}^l\), \(p, q\) 间长度为 \(l\) 的路径, \(\mathscr{P}_{pq}^l = \empty\), 如果不存在这样的路径;
  • \(\mathbf{E}^0 \in \mathbb{R}^{(n + m) \times d^0}\), 初始的 embeddings.

本文思路

  • LightGCN:

    \[y_{ui}^L = (\sum_{l=0}^L \beta_l \bm{e}_u^L)^T (\sum_{l=0}^L \beta_l \bm{e}_i^L), \]

    它等价于

    \[(\sum_{l_1=0}^L \sum_{j \in \mathcal{N}_u^{l_1}} \sum_{l_2=l_1}^L \beta_{l_2} \alpha_{ju}^{l_2} \bm{e}_j^0)^T (\sum_{l_1=0}^L \sum_{v \in \mathcal{N}_i^{l_1}} \sum_{l_2=l_1}^L \beta_{l_2} \alpha_{vi}^{l_2} \bm{e}_v^0)^T, \]

    故 LightGCN 实际上能够利用到各 hop 的一个协同信息:

  • 但是, 作者认为, LightGCN 的这种利用方式可能并不有效, 于是作者提出了如下的一个指标, 用于衡量 \(j\)\(u\) 的一个重要性:

    \[\phi_u^L(j) = \frac{1}{\mathcal{N}_u^1} \sum_{i \in \mathcal{N}_u^1} \sum_{l=1}^L \beta^{2l} \sum_{P_{ji}^{2l} \in \mathscr{P}_{ji}^{2l}} \frac{1}{f(\{\mathcal{N}_k^1| k \in P_{ji}^{2l}\})}, \forall j \in \mathcal{N}_u^1, \forall u \in \mathcal{U}. \]

    直观地说, 该指标通过 \(u\) 的 1-hop neighbors 和 \(j\) 的各级路径来构建二者的关系 (取决于 \(L\)\(f\) 的选择).

  • 说实话, 对于 \(L > 1\) 的情况我感觉构建合理的 \(f\) 可能不是一件非常容易的事情. 让我们看一下 \(L=1\) 的情况下, 取不同的 \(f\) 会有什么效果:

    1. \(f(\{\mathcal{N}_k^1| k \in P_{ji}^{2l}\} = |\mathcal{N}_i^1 \cup \mathcal{N}_j^1|\):

      \[\phi_u^i(j) =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \frac{|\mathcal{N}_i^1 \cap \mathcal{N}_j^1|}{|\mathcal{N}_i^1 \cap \mathcal{N}_j^1|} =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \text{JC}(i, j). \]

      注意到, \(\text{JC}(A, B) = \frac{|A \cap B|}{|A \cup B|}\) 描述了两个集合的 Jaccard Similarity.

    2. \(f(\{\mathcal{N}_k^1| k \in P_{ji}^{2l}\} = \sqrt{|\mathcal{N}_i^1 \cup \mathcal{N}_j^1|}\):

      \[\phi_u^i(j) =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \frac{|\mathcal{N}_i^1 \cap \mathcal{N}_j^1|}{\sqrt{|\mathcal{N}_i^1 \cap \mathcal{N}_j^1|}} =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \text{SC}(i, j). \]

      注意到, \(\text{SC}(A, B) = \frac{|A \cap B|}{\sqrt{|A \cup B|}}\) 描述了两个集合的 Salton Cosine Similarity.

    3. \(f(\{\mathcal{N}_k^1| k \in P_{ji}^{2l}\} = 1\):

      \[\phi_u^i(j) =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} |\mathcal{N}_i^1 \cap \mathcal{N}_j^1| =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \text{CN}(i, j). \]

      注意到, \(\text{CN}(A, B) = |A \cap B|\) 描述了两个集合的 Common Neighbors.

    4. \(f(\{\mathcal{N}_k^1| k \in P_{ji}^{2l}\} = |\mathcal{N}_i^1|\cdot|\mathcal{N}_j^1|\):

      \[\phi_u^i(j) =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \frac{|\mathcal{N}_i^1 \cap \mathcal{N}_j^1|}{|\mathcal{N}_i^1|\cdot|\mathcal{N}_j^1|} =\frac{\beta_1}{|\mathcal{N}_u^1|} \sum_{i \in \mathcal{N}_u^1} \text{LHN}(i, j). \]

      注意到, \(\text{LHN}(A, B) = \frac{|A \cap B|}{|A| \cdot |B|}\) 描述了两个集合的 Leicht-Holme-Nerman.

  • 总结来说, 上述的这些 \(\phi_u^1(j)\) 实际上是 2-hop 信息的一种度量, 原则上, \(j\)\(u\) 的 1-hop neighbors 的接触越多则 \(j\) 越重要. 而 \(f\) 在这里起到了一个 normalization 的作用, 它是重要的. 通过实验可以发现, \(\text{CN}\) 的效果最差, 或许就是因为它缺少 normalization 的原因.

  • 有了 CIR, 我们可以定义一个新的(非对称)权重矩阵:

    \[\Phi_{ij} = \left \{ \begin{array}{ll} \phi_i(j) & \text{ if } A_{ij} > 0, \\ 0 & \text{ if } A_{ij} = 0. \end{array} \right . \]

    它建模了 \(i, j\) 的联系.

  • 基于此, 我们可以通过

    \[\bm{e}_i^{l+1} = \sum_{j \in \mathcal{N}_i^1} (\gamma \frac{\Phi_{ij}}{\sum_{k \in \mathcal{N}_i^1} \Phi_{ik}} + d_i^{-1/2}d_j^{-1/2}) \bm{e}_j^l \]

    其中第一部分表示来自重定义权重矩阵的信息, \(\gamma\) 用于调整自定义和本来的权重矩阵的平衡. 事实上, 当 \(\gamma=0\) 的时候, 就退化为 LightGCN 了.

代码

[official]

原文地址:http://www.cnblogs.com/MTandHJ/p/16860458.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性