Disentangled Contrastive Learning for Social Recommendation论文阅读笔记
Disentangled Contrastive Learning for Social Recommendation论文阅读笔记
Abstract
存在的问题:大多数社会推荐模型统一了用户对用户-项目交互(协作领域)和社会关系(社会领域)的表示。然而,这种方法可能无法在两个领域中建模用户的异构行为模式,从而损害了用户表示的表达性。
解决方法:我们提出了一个新的解耦对比学习框架的社会推荐(DcRec)。更具体地说,我们建议从项目和社交领域学习解耦用户的表征。此外,解耦对比学习被设计用于在解耦用户的社会推荐表征之间进行知识转移。
Introduction
在社交推荐中,用户在每个领域(即协作领域和社交领域)的中与不同的目标(即物品和社交朋友)进行交互,并具有不同的目的。因此,在两个域中的用户的行为模式可能是异构的。在真实场景中,用户倾向于与其朋友的朋友建立联系,但他/她不太可能在短时间内购买具有类似功能的物品。然而,对用户偏好进行建模的现成方式采用了统一的用户对用户-项目交互和用户-用户社会关系的表示。它们不足以模拟用户对社交朋友和社交推荐项目的异构行为模式。
为了解决这个问题,我们建议将用户行为分解为两个领域,以便学习分解用户在社会推荐中的表现。主要的挑战是如何在两个领域学习知识,同时将知识从社会领域转移到协作领域进行社会推荐。
我们开发了一个新的基于对比学习的框架来解决上述问题。更具体地说,引入领域分离,将用户的行为分离为协作领域和社会领域。此外,我们提出了解耦对比学习目标,通过最大化解耦表示之间的互信息,将知识从社会领域转移到协作领域。值得注意的是,当DGCL 提出了一种隐式解耦对比学习方法来捕获图的多个方面时,我们明确地从不同的领域分离数据,并基于独立的邻接矩阵传播节点的表示。
本文的主要贡献可以总结为:
- 我们引入了一种的方法来学习用户的表示,其中可以学习解开用户的表示,以反映他们在两个领域的项目和社交朋友的偏好。
- 我们提出了一种新的社会推荐的解耦对比学习框架(DcRec),该框架可以利用对比学习的力量将知识从社会领域转移到协作领域
Method
本文的模型示意图如下:
在这项工作中,我们提出了一个社会推荐的解耦对比学习框架(DcRec),该框架遵循自我监督对比学习的一般范式,通过最大化不同观点在同一实例上的表示一致性。
该架构由三个主要部分组成:
- 域分离,将输入数据分解为两个子域;
- 编码器,在两个域上使用不同的编码器从两种不同的角度学习表示;
- 解耦对比学习,通过联合优化解耦对比学习任务和主要推荐任务,将知识从社会领域转移到推荐建模任务中。
域分离
为了减轻社会领域和协作领域之间语义差异的影响,我们将输入数据分解为两个域,分别由协作域的用户-项目交互矩阵A𝐼和社会域的社会关系矩阵A𝑆表示。
在域解耦后,我们进行数据增强,以获得每个域中数据的不同视图。由于社会推荐中的数据可以自然地表示为图,因此输入(即用户-项目交互A𝐼和社会关系A𝑆)可以通过基于图的数据增强方法进行增强,如边缘添加、边缘退出和节点退出,可以表述如下:
\(\begin{array}{l}\mathbf{A}_S^{(1)}=H_S^{(1)}(\mathbf{A}_S),\mathbf{A}_S^{(2)}=H_S^{(2)}(\mathbf{A}_S),\\\mathbf{A}_I^{(1)}=H_I^{(1)}(\mathbf{A}_I),\mathbf{A}_I^{(2)}=H_I^{(2)}(\mathbf{A}_I),\end{array}\)
其中,𝐻𝑆(·)和𝐻𝐼(·)分别表示在社会领域和协作领域中生成两个视图的独立增强函数
编码器
为了建模用户-项目交互和社会关系,我们利用编码器来学习每个领域中的用户和项目的表示。此外,为了保证在来自两个不同领域的用户表示之间进行跨领域对比学习时的语义一致性,我们还将用户的表示投射到相同的语义空间中。在这里,我们使用𝑅𝑒𝑐(·)和𝐹(·)分别来表示项目和社会领域中的编码器。请注意,任何基于协同过滤(CF)的模型。可以在协作域中设置为推荐编码器𝑅𝑒𝑐(·),我们可以将图神经网络(GNNs)方法设置为社会编码器𝐹(·)。
协作域中的推荐编码器
协作域编码器的目的是通过从两个增强视图中编码用户-项目交互(即A𝐼(1)和A𝐼(2))来学习用户和项目的表示。我们可以从两个视图(即A𝐼(1)和A𝐼(2))获得用户和项的表示,如下:
\(\mathbf{U}_I^{(1)},\mathbf{V}_I^{(1)}=\mathrm{Rec}(\mathbf{A}_I^{(1)};\Theta_I),\mathbf{U}_I^{(2)},\mathbf{V}_I^{(2)}=\mathrm{Rec}(\mathbf{A}_I^{(2)};\Theta_I)\)
此外,我们还使用这个编码器𝑅𝑒𝑐(·)来通过BPR loss 并学习最终的用户和项目表示
\(\mathbf{U},\mathbf{V}=\mathrm{Rec}(\mathbf{A}_I;\Theta_I).\)
社交域中的GNN编码器
社会领域的编码器旨在通过捕获用户之间的社会关系来学习用户的表征。在这里,由于gnn在图结构数据建模中具有良好的表达能力,我们采用通用的gnn方法作为编码器(即𝐹(·))来获得社会领域的用户表示如下:
\(\mathbf{U}_S^{(1)}=\mathrm{F}(\mathbf{A}_S^{(1)};\Theta_S),\mathbf{U}_S^{(2)}=\mathrm{F}(\mathbf{A}_S^{(2)};\Theta_S)\)
语义投影
由于用户从协作领域和社会领域学习到的表示形式在语义上是异构的,因此我们建议将它们投射到相同的语义空间中。具体来说,在社会领域,我们采用多层感知器(MLPs)对用户的表示进行如下投影:
\(\widetilde{\mathbf{U}_S}^{(1)}=\text{MLP}(\mathbf{U}_S^{(1)};\theta_S),\widetilde{\mathbf{U}_S}^{(2)}=\text{MLP}(\mathbf{U}_S^{(2)};\theta_S),\)
类似地,我们可以在协作域上也进行投影操作,获取\(\widetilde{\mathbf{U}}_I^{(1)}\mathrm{~and~}\widetilde{\mathbf{U}}_I^{(2)}\)
解耦对比学习
解耦对比学习包括跨域对比学习和特定域的对比学习。我们设计了跨领域的对比学习,以便将知识从社会领域转移到协作领域。为了从未标记的数据中提取自我监督信号,我们引入了特定领域的损失,以最大限度地提高每个域中同一实例上不同视图之间的表示一致性。
跨域对比学习
为了将知识从社会领域转移到协作领域,我们设计了基于投影用户表示的跨域对比学习损失:
\(\mathcal{L}_C=L(\widetilde{\mathbf{U}}_S^{(1)},\widetilde{\mathbf{U}}_I^{(1)})+L(\widetilde{\mathbf{U}}_S^{(1)},\widetilde{\mathbf{U}}_I^{(2)})+L(\widetilde{\mathbf{U}}_S^{(2)},\widetilde{\mathbf{U}}_I^{(1)})+L(\widetilde{\mathbf{U}}_S^{(2)},\widetilde{\mathbf{U}}_I^{(2)})\)
𝐿(·,·)表示一种常见的对比性学习损失,它将相同用户在这些不同视图中的表示与其他用户的表示区分开来
领域特定的对比学习损失
为了增强每个领域中每个实例的学习表示的表达性,我们在这两个领域设计了特定领域的对比学习损失:
其中,L𝑆和L𝐼分别是社会领域和协作领域的特定领域的对比学习损失。
最终总的损失函数如下:
\(\mathcal{L}=\mathcal{L}_{main}+\lambda_1(\mathcal{L}_I+\mathcal{L}_S)+\lambda_2\mathcal{L}_C+\lambda_3\|\zeta\|_2,\)