SGCL: Unifying Self-Supervised and Supervised Learning for Graph Recommendation

作者:Weizhi Zhang et.al.

论文链接:http://arxiv.org/abs/2507.13336

发布日期:2025-07-17

解读时间:2025-07-19 18:56:42

论文摘要

Recommender systems (RecSys) are essential for online platforms, providing personalized suggestions to users within a vast sea of information. Self-supervised graph learning seeks to harness high-order collaborative filtering signals through unsupervised augmentation on the user-item bipartite graph, primarily leveraging a multi-task learning framework that includes both supervised recommendation loss and self-supervised contrastive loss. However, this separate design introduces additional graph convolution processes and creates inconsistencies in gradient directions due to disparate losses, resulting in prolonged training times and sub-optimal performance. In this study, we introduce a unified framework of Supervised Graph Contrastive Learning for recommendation (SGCL) to address these issues. SGCL uniquely combines the training of recommendation and unsupervised contrastive losses into a cohesive supervised contrastive learning loss, aligning both tasks within a single optimization direction for exceptionally fast training. Extensive experiments on three real-world datasets show that SGCL outperforms state-of-the-art methods, achieving superior accuracy and efficiency.

AI解读

好的,我将尽力按照您的要求,对这篇论文进行详细分析,并侧重于方法、技术细节以及第三部分的关键内容。

1. 核心方法与创新点

这篇论文的核心方法是提出了一个名为“Supervised Graph Contrastive Learning for Recommendation (SGCL)”的框架,用于图推荐系统。它的主要目标是解决传统自监督图学习推荐方法中存在的优化效率低、梯度不一致等问题,并力求达到更高的推荐精度和效率。

创新点:

* 统一的损失函数: 传统的自监督图学习推荐通常采用多任务学习框架,即同时优化一个推荐损失(比如BPR)和一个自监督对比学习损失。SGCL 的核心创新是将这两个损失函数 融合 成一个单一的“监督图对比学习损失”,避免了多任务学习中梯度方向不一致的问题,让训练更加稳定和快速。

* 消除冗余计算: 传统方法通常需要对原始图进行多次增强(augmentation),并在增强后的图上进行多次图卷积操作。SGCL 在损失函数的设计上避免了对图进行增强,直接使用原始图进行训练,从而消除了冗余的图卷积计算,提升了效率。SGCL也去掉了耗时的负采样过程。

* 优化简单直接: 避免了多任务学习中对不同任务损失权重(通常是lambda λ)的繁琐调优,简化了训练流程,降低了超参数调整的难度。

技术亮点:

* 通过巧妙设计损失函数,将监督信息(用户-物品交互)融入到对比学习过程中,从而更好地利用了已有的交互数据。
* 避免了复杂的图增强和负采样,使得模型训练更加高效。
* 简化了模型结构,只需要一个图编码器(Graph Encoder),降低了计算复杂度。

与现有方法的区别:

* 损失函数: 传统方法使用分开的推荐损失和对比学习损失,SGCL 使用融合的监督图对比学习损失。
* 图增强: 传统方法依赖图增强,SGCL 避免了图增强。
* 优化方式: 传统方法是多任务学习,SGCL 是单任务学习。

2. 算法细节与流程

SGCL 的核心思想是:与其分开优化推荐和对比学习两个目标,不如将它们融合到一个目标中。 具体流程如下:

1. 输入: 用户-物品交互图,表示用户和物品之间的交互关系。每个用户和物品都用初始的ID 嵌入向量表示。($u_i^0$ 和 $v_j^0$)
2. 图卷积: 使用轻量级的图卷积操作(Light Graph Convolution, LGC)来聚合邻居节点的信息。LGC的核心思想是,将每个节点的表示向量更新为其邻居节点表示向量的加权平均。这实际上是在图上传播用户和物品的信息,使得相似的用户和物品的表示向量更加接近。
3. 表示合成: 将各层的表示向量进行加权平均,得到最终的用户和物品的表示向量。($u_i$ 和 $v_j$)
4. 监督图对比学习损失(SGCL Loss): 这是 SGCL 的核心。它基于以下思想:对于一个已知的用户-物品交互 (i, j),我们希望用户 i 的表示向量 $u_i$ 和物品 j 的表示向量 $v_j$ 尽可能相似。同时,用户 i 的表示向量 $u_i$ 应该与其他物品的表示向量 $v_{j'}$ 不同,物品 j 的表示向量 $v_j$应该与其他用户的表示向量 $u_{i'}$不同。

算法流程 (文字描述):

1. 初始化: 对用户和物品的嵌入向量进行随机初始化。
2. 图卷积: 通过多层图卷积操作,对用户和物品的嵌入向量进行更新。
3. 计算 SGCL Loss: 基于用户-物品交互数据,计算 SGCL Loss。
4. 反向传播与优化: 利用梯度下降等优化算法,更新用户和物品的嵌入向量,使得 SGCL Loss 最小化。
5. 重复步骤 2-4: 直到模型收敛。
6. 推荐: 使用学习到的用户和物品的嵌入向量,预测用户对未交互物品的偏好程度,进行推荐。

算法的技术优势和创新之处:

* 高效: 避免了图增强和负采样,减少了计算量。
* 稳定: 单一的损失函数避免了梯度冲突,使得训练更加稳定。
* 简单: 不需要调整多任务学习的权重,降低了超参数调整的难度。
* 充分利用监督信息: 通过将监督信息融入到对比学习过程中,更好地利用了已有的交互数据。

3. 详细解读论文第三部分

论文第三部分详细介绍了 SGCL 的具体实现细节和时间复杂度分析。

3.1 监督图对比学习 (Supervised Graph Contrastive Learning)

这一部分首先回顾了图推荐任务的背景,假设我们观察到了一对交互的用户和物品,它们分别有初始的ID嵌入向量 $u_i^0$ 和 $v_j^0$。为了学习到用户和物品的表示,论文采用了light graph convolution,它通过聚合相连邻居的表示来更新节点表示:

$$
u_i^{k+1} = \sum_{j \in N_i} \frac{1}{\sqrt{|N_i|}\sqrt{|N_j|}} v_j^k,
$$

$$
v_j^{k+1} = \sum_{i \in N_j} \frac{1}{\sqrt{|N_i|}\sqrt{|N_j|}} u_i^k,
$$

其中,$u_i^k$ 和 $v_j^k$ 分别表示用户 $u_i$ 和物品 $v_j$ 在第 $k$ 层的嵌入向量,$N_i$ 和 $N_j$ 分别表示用户 $u_i$ 和物品 $v_j$ 的邻居节点集合。$\frac{1}{\sqrt{|N_i|}\sqrt{|N_j|}}$ 是一个归一化因子,用于平衡不同节点的度带来的影响。

在经过 $K$ 层图卷积之后,最终的协同过滤嵌入向量通过对各层的表示进行加权平均得到:

$$
u_i = \sum_{k=0}^{K} \alpha_k u_i^k; \quad v_j = \sum_{k=0}^{K} \alpha_k v_j^k,
$$

其中,$\alpha_k$ 是第 $k$ 层的表示权重,$K$ 是总的层数。论文默认设置 $\alpha_k = \frac{1}{K+1}$,除非特别说明。

论文指出,传统的自监督图推荐方法中的对比损失 $L_{gcl}$ 无法显式地学习已有的交互数据中的监督信号。因此,需要一个推荐损失 $L_{rec}$ 来利用标签信息,并且需要额外调整一个权重 $\lambda$ 来平衡两个损失,缓解梯度不一致的问题。

为了将监督信号和自监督学习策略结合起来,论文提出了新的监督图对比学习(SGCL)损失函数:

$$
L_{sgcl} = \sum_{(i,j) \in B} -\log \frac{\exp(u_i^\top v_j / \tau)}{\sum_{(i',j') \in B} [\exp(u_i^\top u_{i'} / \tau) + \exp(v_j^\top v_{j'} / \tau)]},
$$

其中,$B$ 表示一个batch的交互数据,$(i, j)$ 表示batch中已知的用户-物品交互对,$(i', j')$ 表示batch中其余的用户和物品。$\tau$ 是一个温度超参数,用于控制对比学习的敏感度。这个公式的含义是,对于batch中的每个已知的用户-物品交互 $(i, j)$,我们希望用户 $i$ 和物品 $j$ 的相似度尽可能高,同时用户 $i$ 和其他用户的相似度、物品 $j$ 和其他物品的相似度尽可能低。

论文强调,这个损失函数不需要任何形式的数据增强,直接将用户-物品交互作为正样本,从而避免了复杂的图增强和耗时的负采样过程,使得SGCL的训练过程非常高效。更重要的是,SGCL 不需要使用多任务学习,而只需要一个监督图对比损失进行训练。

3.2 时间复杂度

论文对SGCL和其他主流方法(LightGCN, SGL)的时间复杂度进行了分析。

* $|E|$ 表示边的数量
* $K$ 表示图卷积的层数
* $d$ 表示嵌入向量的维度
* $p$ 表示SGL中保留边的概率
* $N_v$ 表示负采样的物品数量

1. 邻接矩阵归一化: LightGCN 和 SGCL 都没有图结构的修改,而 SGL 需要drop掉一些边来构造两个modified的邻接矩阵,所以复杂度是LightGCN/SGCL的三倍。
2. 图卷积: SGL 在对比学习中改变了两次图结构,所以额外需要 $4p|E|Kd$ 的复杂度。LightGCN 和 SGCL 在图卷积之前没有augmentation,所以更高效,复杂度为 $2|E|Kd$。
3. 采样: SGCL不需要BPR loss,所以不需要采样。LightGCN 和 SGL 需要 $2BN_v$ 来做负采样。
4. GCL Loss: SGL 将用户和物品的loss分开计算($L_{gcl}^u$ 和 $L_{gcl}^v$),所以总的时间复杂度是 $O(2Bd + 2B^2d)$。 SGCL 基于用户和物品的联合嵌入学习过程,batch中的复杂度是 $O(Bd + 2B^2d)$。

论文通过表格总结了三种方法在不同步骤的时间复杂度。

4. 实现细节与注意事项

关键实现细节:

* 图卷积层数 K: 通常设置为 2 或 3。增加层数可以捕捉更高阶的邻居信息,但也会增加计算量和过拟合的风险。
* 嵌入维度 d: 通常设置为 64 或 128。更大的嵌入维度可以提升模型的表达能力,但也会增加计算量和过拟合的风险。
* 温度参数 τ: 用于控制对比学习的敏感度。较小的 τ 会使得模型更加关注 hard negative samples,但也容易导致训练不稳定。
* 优化器: 建议使用 Adam 优化器,并设置合适的学习率。
* 批次大小: 设置合适的批次大小,以充分利用 GPU 的并行计算能力。

实现难点和解决方案:

* 内存占用: 图卷积操作可能导致内存占用过高。可以使用 mini-batch training 或图采样等技术来降低内存占用。
* 梯度消失/爆炸: 深度图卷积网络容易出现梯度消失或爆炸的问题。可以使用梯度裁剪或残差连接等技术来缓解这个问题。
* 过拟合: 图推荐模型容易出现过拟合的问题。可以使用 dropout、L2 正则化或 early stopping 等技术来缓解这个问题。

优化建议和最佳实践:

* 参数初始化: 使用合适的参数初始化方法,例如 Xavier 或 He 初始化。
* 学习率调整: 使用学习率衰减策略,例如 cosine annealing 或 step decay。
* 模型集成: 将多个 SGCL 模型集成起来,可以提升推荐效果。

参数设置和调优方法:

* 图卷积层数 K: 可以通过实验来选择合适的 K 值。通常来说,较小的 K 值适用于稀疏图,较大的 K 值适用于稠密图。
* 嵌入维度 d: 可以通过实验来选择合适的 d 值。通常来说,更大的数据集需要更大的 d 值。
* 温度参数 τ: 可以通过网格搜索或随机搜索来选择合适的 τ 值。
* 学习率: 可以通过网格搜索或随机搜索来选择合适的学习率。
* 正则化系数: 可以通过网格搜索或随机搜索来选择合适的正则化系数。

希望以上分析对您有所帮助!
返回论文列表