Self-supervised Graph Learning for Recommendation-----SIGIR2021(个人笔记)
论文:自监督图学习推荐系统 (SIGIR2021)
Code:https://github.com/wujcan/SGL-TensorFlow
https://github.com/wujcan/SGL-TensorFlow
GitHub - wujcan/SGL-Torch: SGL PyTorch version
https://github.com/wujcan/SGL-Torch
1. 前言
1.1 提出的问题(当前基于GCN的推荐模型)
- 稀疏监督信号 : 大多数模型在监督学习范式下处理推荐任务,监督信号来自观察到的用户项目交互。然而,与整个交互空间相比,观察到的交互非常稀疏,不足以学习高质量的表示。
- 不均的数据分布 : 观察到的相互作用通常呈现幂律(长尾)分布,其中长尾由缺乏监督信号的低度项(冷门项目)组成。相比之下,在邻域聚合和监督损失中,高次项(热门项目)出现的频率更高,从而对表示学习产生更大的影响。因此,GCN很容易偏向于热门项目,从而忽略了冷门(长尾)项目。
- 噪声的交互干扰 : 用户提供的大多数反馈都是隐式的(例如,点击、查看),而不是显式的(例如,评分、喜欢/不喜欢)。因此,观察到的交互通常包含噪音,例如,用户被误导点击了某个商品,在浏览或使用后感觉并不感兴趣。GCNs中的邻域聚合方案扩大了交互对表示学习的影响,使学习更容易受到交互噪声的影响。
1.2 做出的贡献
- 我们设计了一种新的学习范式SGL,它将节点自动识别为自我监督任务,为表示学习提供辅助信号。
- 除了减少程度偏差和增加对交互噪声的鲁棒性,我们在理论上证明,SGL本质上激励从难负样本中学习,由softmax损失函数中的温度超参数
控制。 - 我们在三个基准数据集上进行了大量实验,以证明SGL的优越性。
2. SGL模型

图1:SGL的总体系统框架。上层显示了监督学习任务的工作流程,底层显示了SSL任务的工作流程,并在图结构上进行了扩充。
2.1 图结构的数据增强
二部图建立在观察到的用户项目交互的基础上,因此包含了协同过滤信号。具体而言,第一跳邻居直接描述用户或项目节点——即,用户的历史项目(或项目的交互用户)可以被视为用户(或项目)的预先存在的特征。用户(或项目)的第二跳邻居节点表现出类似的用户行为(或类似的项目)。此外,从用户到项目的高阶路径反映了用户对项目的潜在兴趣。毫无疑问,挖掘图形结构中的固有模式有助于表示学习。因此,我们在图结构上设计了三个操作:节点丢失(ND) 、边丢失(ED) 和随机游走(RW) ,以创建不同的节点视图。运算符可以统一表示为:

其中,
, 将在图G上进行两个随机选择
和
,建立节点
和
的两个相关视图。下面分别介绍三种操作方式。
- Node Dropout (ND)
以概率
将图中的每个节点及其连接的边丢弃。
和
可以建模为:

其中
是两个掩码向量,应用于节点集
以生成两个子图。因此,这种增强有望从不同的增强视图中识别出有影响的节点,并使表示学习对结构变化不那么敏感。
- Edge Dropout (ED)
以概率
丢弃图中节点链接的边。两个独立的过程表示为:

式中
是边集 E 上的两个掩码向量。只有邻域内的部分连接有助于节点表示。因此,将这两个子图耦合在一起的目的是捕捉节点局部结构的有用模式,并进降低噪声的干扰,增加鲁棒性。
- Random Walk (RW)
上述两个操作生成的子图在所有图卷积层中共享。为了探索更高的性能,我们考虑用不同的子图分配不同的层。这可以看作是用随机游走为每个节点构造一个单独的子图(参见图2作为示例)。假设我们在每一层选择 ED(使用不同的比率或随机种子),我们可以通过使掩码向量对各层来计算RW:

其中,
是在第 l 层边集 E 的掩码向量。

图2:带有 ED (左)和 RW (右)的三层 GCN 模型中一个高阶连通性的小例子。与ED 相比, RW 中,图的结构在各层之间不断变化。因此,在节点
和
之间存在一条三阶路径,而在ED 中却不存在。(只涉及dropout和掩码操作,并且没有添加任何模型参数。)
2.2 对比学习
根据公式 (6),我们为每个节点生成了两个不同的视图,将同一节点的视图视为正对,表示为
,将任意不同节点的视图作为负对,表示为
。正对的辅助监督促进了同一节点的不同视图之间的相似性来进行预测,而负对的监督则加强了不同节点之间的差异。采用对比损失InfoNCE,以最大化正对的一致性,最小化负对的一致性:

其中,s(·)度量两个向量之间的相似性,设置为余弦相似函数;
是超参数,称为在softmax中的温度超参。类似地,我们得到了项目的对比损失
. 结合这两个损失,我们得到了自我监督任务的目标函数
。
2.3 多任务训练
为了改进SSL任务的推荐,我们利用多任务训练策略来联合优化经典推荐任务(参见等式(5))和自我监督学习任务(参见等式(10))。
补充:公式(5)BPR_loss:


其中,
为
中的模型参数集,因为
没有引入额外的参数。
和
分别是控制SSL和L2正则化强度的超参数。
3. 实验
3.1 实验准备
- 数据集

我们遵循中描述的相同策略,以7:1:2的比例将交互划分为训练、验证和测试集。对于测试集中的用户,我们遵循全排名协议来评估Top-K的推荐性能,并报告平均Recall@K和NDCG@K,其中K=20。
- 基线
NGCF、LightGCN、Mult-VAE、DNN+SSL
3.2 与LightGCN的比较

- ED 可以看作是 ND 的一种特殊情况,它会丢弃几个节点周围的边。因此,丢弃高阶节点会极大地改变图的结构,从而影响信息聚合,使训练不稳定。
- 将模型深度从1增加到3,可以提高SGL的性能。这说明利用 SSL 可以增强基于GCN的推荐模型的泛化能力,即不同节点之间的对比学习有希望解决节点表示的过平滑问题,进一步避免过拟合问题。
3.3 和基线对比

- SGL-ED的整体表现始终优于所有基线。这再次验证了整合自监督学习的合理性和有效性。
- LightGCN的性能优于NGCF和Mult-VAE,这与LightGCN论文的结果一致。在Alibaba-iFashion上,Mult-VAE性能与NGCF和LightGCN不分上下,而在Amazon-book上的表现则优于NGCF。
- DNN+SSL是Amazon-Book上最强的基线,显示了SSL在推荐中的巨大潜力。令人惊讶的是,在其他数据集上,DNN+SSL的性能比SGL-ED要差得多。这表明,在ID嵌入上直接使用SSL可能是次优的,比图表示上使用要差。此外,我们还进行了显著性验证,p值<0.05表明SGL-ED比最强基线的改进是显著的。
