LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation

Posted 馒头and花卷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation相关的知识,希望对你有一定的参考价值。

Cai X., Huang C., Xia L. and Ren X. LightGCL: Simple yet effective graph contrastive learning for recommendation. In International Conference on Learning Representations (ICLR), 2023.

一种简单的图对比学习: 利用近似的 SVD 生成另一个 views.

符号说明

  • \\(u_i, v_j\\), user, item, 分别有 \\(I, J\\) 个;
  • \\(\\mathbfe_i^(u), \\mathbfe_j^(v) \\in \\mathbbR^d\\), 对应的 embeddings;
  • \\(\\mathbfE^(u) \\in \\mathbbR^I \\times d, \\mathbfE^(v) \\in \\mathbbR^J \\times d\\);

基本流程

模型的基本流程

  • \\(l\\) 层经过如下的操作:

    \\[\\mathbfz_il^u = \\sigma( p(\\tilde\\mathcalA_i, :) \\cdot \\mathbfE_l-1^(v)), \\quad \\mathbfz_j,l^u = \\sigma( p(\\tilde\\mathcalA_:, j) \\cdot \\mathbfE_l-1^(u)), \\]

    其中 \\(\\tildeA\\) 是\'邻接\'矩阵 (根据作者的描述, 实际上应该是交互矩阵), \\(\\sigma(\\cdot)\\) 表示 LeakyReLU (negative slope: 0.5). \\(p(\\cdot)\\) 代表 edge dropout.

  • 在每一层结束后, 还需要经过 residual connection:

    \\[\\mathbfe_i,l^(u) = \\mathbfz_i,l^(u) + \\mathbfe_i, l-1^(u), \\quad \\mathbfe_j,l^(v) = \\mathbfz_j,l^(v) + \\mathbfe_j, l-1^(v). \\]

  • 最后的特征表示为:

    \\[\\mathbfe_i^(u) = \\sum_l=0^L \\bme_i, l^(u), \\quad \\mathbfe_j^(v) = \\sum_l=0^L \\bme_j, l^(v), \\]

    然后通过内积计算 score:

    \\[\\haty_i, j = \\mathbfe_i^(u)^T \\mathbfe_j^(v). \\]

另一个 View

  • 作者的想法是, 对邻接矩阵 \\(\\tildeA\\) 做 (近似) 奇异值分解:

    \\[\\tildeA \\approx \\hatU_q \\hatS_q \\hatV_q^T =: \\hat\\mathcalA. \\]

  • 然后用该邻接矩阵得到另一个 View, 注意, 在实际上使用中, 并不会真的算出 \\(\\hat\\mathcalA\\), 而是

    \\[\\mathbfG_l^(u) = \\sigma(\\hat\\mathcalA \\mathbfE_l-1^(v)) = \\sigma(\\hatU_q \\hatS_q \\hatV_q^T \\mathbfE_l-1^(v)), \\quad \\mathbfG_l^(v) = \\sigma(\\hat\\mathcalA^T \\mathbfE_l-1^(u)) = \\sigma(\\hatV_q \\hatS_q \\hatU_q^T \\mathbfE_l-1^(u)). \\]

    因为 \\(\\hatU, \\hatV\\) 都是低秩的矩阵, 如果此一来我们不需要维护稠密的矩阵 \\(\\hat\\mathcalA\\), 且运算也更快.

优化

  • 接下来只需要简单地运用 InfoNCE 损失即可:

    \\[\\mathcalL_s^(u) = \\sum_i=0^L\\sum_l=0^L -\\log \\frac\\exp(s(\\mathbfz_i,l^(u), \\mathbfg_i,l^(u)) / \\tau)\\sum_i\'=0^L \\exp(s(\\mathbfz_i,l^(u), \\mathbfg_i\',l^(u)) / \\tau), \\]

    即同一个结点为正样本对, 不同结点直接互为负样本对. 特别地, 作者每个 batch 都会利用 node dropout 来避免过拟合 (也就是说, LightGCL edge dropout 和 node dropout 都用了, 这么一看也不简单啊).

  • 最后的总损失为:

    \\[\\mathcalL = \\mathcalL_r + \\lambda_1 \\cdot (\\mathcalL_s^(u) + \\mathcalL_s^(v)) + \\lambda_2 \\cdot \\|\\Theta\\|_2^2, \\\\ \\mathcalL_r = \\sum_i=0^I \\sum_s=1^S \\max(0, 1 - \\haty_i, p_s + \\haty_i, n_s). \\]

代码

official

以上是关于LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation的主要内容,如果未能解决你的问题,请参考以下文章

lnmp 环境require(): open_basedir restriction in effe

一个简单、移动友好、可自定义的快速/实时搜索jQuery插件。

D. Yet Another Yet Another Task (ST表模版 + 单调队列)

CF-1359 D. Yet Another Yet Another Task ST表+单调队列

CF-1359 D. Yet Another Yet Another Task ST表+单调队列

Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task