LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation
Posted 馒头and花卷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation相关的知识,希望对你有一定的参考价值。
概
一种简单的图对比学习: 利用近似的 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). \\]
代码
以上是关于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