Diffusion-Based Graph Contrastive Learning for Recommendation with Implicit Feedback论文阅读笔记
Abstract
提出问题:
自监督学习模型大多采用随机辍学来构造附加的图视图,没有区分边的重要性。这些方法在捕获用户-项目交互图的结构属性方面的不足,导致了推荐性能的次优。
解决方案:
.在本文中,我们提出了一个图扩散对比学习(GDCL)框架来推荐来缩小这一差距。具体来说,我们在用户-项目交互图上执行图扩散。然后,通过学习每种关系的专用表示,对扩散图进行编码,以保持其异质性。利用对称对比学习目标,将扩散图的局部节点表示与用户项目交互图的局部节点表示进行对比,以更好地学习用户和项目表示。
Introduction
为了建立一个更有效的用户-项目交互图的增强视图,我们提出用图扩散代替随机dropout,通过平滑图上的邻域来协调空间信息的传递。扩散过程定义了一个从原始的未加权图中交换出来的加权图。这些权重是基于图的结构来衡量边的相对重要性的。因此,我们可以利用这些重要性分数来设计不同的稀疏化方法,从而为扩散图中的每个节点保留一个更有效的邻域。同时,大多数GNN模型通过增加卷积层的数量来整合高阶信息。迭代扩展不仅包含更多节点以学习更好的表征,还会引入更多噪声边,从而降低推荐性能。图扩散则没有这种限制,因为它可以将图中的连接从一跳扩展到多跳。我们通过一层聚合而不是堆叠多层 GNN 来获取更大邻域的信息。因此,真实图中的噪声问题可以得到进一步缓解。
在本文中,我们提出了一个简单而有效的图形扩散对比学习(GDCL)框架的项目推荐与用户的内隐反馈。现有的图扩散算法侧重于齐次图,其中包括单个节点类型。在GDCL中,我们首先设计了扩散算法来考虑异构图(即用户-项目交互图)中不同类型的节点。所导出的扩散图由节点之间的多种关系组成。具体地说,除了用户-项关系之外,还介绍了用户-用户关系和项-项关系。如果我们简单地应用基于图卷积网络(GCN)的编码器来像以前那样统一地处理它们,那么这些异构关系就不能被完全捕获。
因此,我们扩展了GCN,通过为每种类型的关系保持一个专用的表示法来建模扩散图的异质性,然后使用一个平均聚合器来融合它们。为了端到端训练整体模型,我们利用多任务训练范式来联合优化推荐任务和自监督学习任务。对于推荐任务,以前基于ssl的推荐模型仅依赖于用户-项目图进行用户偏好预测。与这些工作不同的是,我们利用从辅助视图(即扩散图)中学习到的表示和用户-项目图来改善用户和项目的表示学习。对于自监督任务,我们对比了由对称互信息最大化目标函数从两个视图编码的节点表示。
Method
本文的模型结构如下:
它由三个主要组成部分组成:1)基于扩散的图增强,2)图编码器,和3)自监督对比学习。接下来,我们将介绍每个组件的详细信息
基于扩散的图增强
图扩散近似
对于齐次图,其扩散矩阵可以表示为
\(\Pi=\sum_{k=0}^\infty\theta_k\mathbf{T}^k,\)
其中,T为广义转移矩阵,可由对称归一化邻接矩阵定义为\(\mathbf{T}=\mathbf{D}^{-1/2}\mathbf{AD}^{1/2}\),θk为Tk的加权系数。当考虑到两种特殊情况时,\(\Pi\)有封闭形式的解决方案,即个性化的页面排名(PPR)和热内核。然而,这两个解涉及到矩阵逆运算和矩阵指数运算,这在处理大规模图的计算上是不可行的。
我们采用一种有效的算法来近似扩散矩阵\(\Pi\)。具体来说,我们选择以下个性化PageRank来实例化\(\Pi\):
\(\Pi_{PPR}=\alpha(\mathbf{I}_n-(1-\alpha)\mathbf{D}^{-1}\mathbf{A})^{-1}\)
其中\(I_n\)为单位矩阵,α为随机游走中的传送概率。较大的传送概率意味着返回根节点的机会更高,因此我们可以保留更多的局部性信息。一个较小的传送概率使我们能够接触到一个更大的社区。我们可以调优α来为不同的数据集调整邻域的大小。在[2]中,使用推流算法来获得每一行\(\Pi_{PPR}\)的稀疏近似。注意,这个近似矩阵的每一行都可以使用分布式批处理数据处理管道并行预计算。然而,该算法是为同构图设计的,其中所有节点都是相同类型的。我们将其应用于包含两种不同类型的节点的用户-项目交互图G。精确地说,我们分别为用户节点和项目节点定义了传送概率\(\alpha_u\)和\(\alpha_v\)。对于近似图扩散矩阵\(\Pi_{PPR}\)中的第i行πi,我们首先确定节点类型,然后使用其相应的传送概率进行计算。因此,我们可以控制为不同类型的节点扩散到邻域的信息量。它对推荐系统具有实际应用价值。例如,真实世界的数据集通常比长尾用户有更多的长尾项目。在这种情况下,降低项目的传送概率可以帮助找到更多可能的相关的用户和项目,从而学习更好的表示。在算法1中总结了扩散矩阵近似算法的细节。
算法的流程如下:
扩散矩阵稀疏化
扩散矩阵\(\Pi_{PPR}\)是一个密集矩阵,其中每个元素反映了基于图结构的两个节点之间的相关性。如[1]所述,个性化PageRank向量的权重通常集中在节点的一个小子集上。因此,我们可以截断小的权值,但仍然可以得到一个很好的近似值。在这项工作中,我们提出了以下三种方法来稀疏扩散矩阵:
- Topk:对于\(\Pi_{PPR}\)中的每一行πi,我们分别保留了k个来自用户节点和项目节点的权重最高的条目,并将其他条目设置为零。即,我们将为扩散图中的每个节点保留2k个“邻居”。
- Topk-rand:我们首先在每行πi中选择k个权值最高的k个用户节点,遵循Topk方法。 然后,我们随机放弃选定的节点,放弃率为 ρ(可调整的超参数)。
- Topk-prob:这个方法类似于Topk-rand方法。唯一的区别是,在这种方法中,丢弃所选节点的概率与其在权值向量πi中的权重成正比。
由于Topk稀疏化方法是确定性的,我们用固定的稀疏化扩散矩阵来训练GDCL模型。另外两种稀疏化方法和方法是随机的。当使用Topk-rand和Topk-prob方法来训练所提出的模型时,我们在每个训练历元进行扩散矩阵稀疏化。我们用\(\tilde{\mathcal{G}}\)表示稀疏扩散图
图编码器
针对原始交互图和扩散图,我们设计了两种不同的图编码器来捕获两个图中的信息。首先,我们分别通过\(\mathbf{e}_u^{(0)}\text{ and }\mathbf{e}_v^{(0)}\)随机初始化一个用户u和一个项v的嵌入,它们由两个图编码器共享。
交互图的图编码器
这里使用的是LightGCN作为图编码器
扩散图的图编码器
第 3.1 节中构建的扩散图 \(\tilde{\mathcal{G}}\) 是由用户-物品互动图衍生而来的。其中包括两类节点。因此,\(\tilde{\mathcal{G}}\) 中建立了三类关系,包括用户-物品关系、用户-用户关系和物品-物品关系。为了有效捕捉 \(\tilde{\mathcal{G}}\) 的异构结构,我们提出了一种图扩散编码器,对这三种关系分别建模,并为每种关系保留一个专用表示。如图 2 所示,在 \(\tilde{\mathcal{G}}\) 中,每个节点的相邻节点既可以是用户,也可以是项目。我们根据节点类型将它们分成两组,并在每组中进行特征聚合。因此,每个用户(或项目)都会生成两个表征。一个是从用户-物品关系中衍生出来的,另一个是从用户-用户(或物品-物品)关系中衍生出来的。
传统的消息传递神经网络,如GCN,在每一层都聚集了它们的第一个邻居。高阶邻居只能通过层到层的传播来访问。图扩散过程通过创建到多跳节点的连接来打破这一约束,因此可以在更大的邻域上进行聚合,而不堆叠多个GNN层。具体来说,用户嵌入的推导如下:
\(\widehat{\mathbf{e}}_{u1}=\sum_{u^{\prime}\in\mathcal{N}_u^{(1)}}\pi_u(u^{\prime})\mathbf{e}_{u^{\prime}}^{(0)},\quad\widehat{\mathbf{e}}_{u2}=\sum_{v\in\mathcal{N}_u^{(2)}}\pi_u(v)\mathbf{e}_v^{(0)},\)
其中,\(\widehat{\mathbf{e}}_{u1}\mathrm{~and~}\widehat{\mathbf{e}}_{u2}\)是从用户-用户扩散图和用户-项目扩散图中得到的u的嵌入,\(\mathcal{N}_u^{(1)}\text{ and }\mathcal{N}_u^{(2)}\)表示用户u在用户-用户扩散图和用户-项目扩散图上的第一跳节点集。πu表示u的扩散向量,πu (v)表示扩散向量πu中的节点v的权值。然后,我们通过均值操作将这两个嵌入相结合:
\(\widehat{\mathbf{e}}_u=\text{MEAN}(\widehat{\mathbf{e}}_{u1},\widehat{\mathbf{e}}_{u2}),\)
其中,用户-用户扩散图和用户-物品扩散图中的用户嵌入平均值就是最终从扩散图中学习到的用户表示 eu。同样,我们也可以从扩散图中得到物品 v 的表示 ev。
自监督学习
也就是用扩散图跟原始图进行对比
使用互信息来定义对比学习的损失
\(\ell(\widetilde{\mathbf{e}}_u,\widehat{\mathbf{e}}_u)=\log(\frac{e^{cos(\widetilde{\mathbf{e}}_u,\widehat{\mathbf{e}}_u)/\tau}}{e^{cos(\widetilde{\mathbf{e}}_u,\widehat{\mathbf{e}}_u)/\tau}+\sum_{u^{\prime}\neq u}e^{cos(\widetilde{\mathbf{e}}_u,\widehat{\mathbf{e}}_u^{\prime})/\tau}+\sum_{u^{\prime}\neq u}e^{cos(\widetilde{\mathbf{e}}_u,\widetilde{\mathbf{e}}_u^{\prime})/\tau}}),\)
\(L_{ssl}^{user}=-\frac1{2|\mathcal{U}_\mathcal{B}|}\sum_{u\in\mathcal{U}_\mathcal{B}}[\ell(\widetilde{\mathbf{e}}_u,\widehat{\mathbf{e}}_u)+\ell(\widehat{\mathbf{e}}_u,\widetilde{\mathbf{e}}_u)].\)
\(L_{ssl}^{item}=-\frac1{2|\mathcal{V}_{\mathcal{B}}|}\sum_{v\in\mathcal{V}_{\mathcal{B}}}[\ell(\widetilde{\mathbf{e}}_v,\widehat{\mathbf{e}}_v)+\ell(\widehat{\mathbf{e}}_v,\widetilde{\mathbf{e}}_v)].\)
联合学习
\(\mathbf{e}_u=\widetilde{\mathbf{e}}_u+\widehat{\mathbf{e}}_u,\quad\mathbf{e}_v=\widetilde{\mathbf{e}}_v+\widehat{\mathbf{e}}_v,\)
\(\hat{y}_{uv}=\mathbf{e}_u^\top\mathbf{e}_v.\)
\(L_{rec}=\sum_{(u,v,w)\in\mathcal{D}_{\mathcal{B}}}-\log\sigma(\hat{y}_{uv}-\hat{y}_{uw}),\)
\(L=L_{rec}+\lambda_1(L_{ssl}^{user}+L_{ssl}^{item})+\lambda_2\|\Theta\|_2^2,\)