KDD2023 | Adaptive Graph Contrastive Learning for Recommendation | 用于推荐的自适应图对比学习
代码: https://github.com/HKUDS/AdaGCL
TLDR
本文提出了一种新的用于推荐的自适应图对比学习范式,通过两种不同的自适应对比视图生成器来实施数据增强,以此提升协同过滤的效果。作者分别使用图生成模型和图去噪模型作为可训练的对比视图生成器,以此引入额外的自监督信号,缓解推荐数据中的稀疏和噪声问题。与此同时,自适应的的对比视图还解决了此前基于传统数据增强方法导致的对比学习模型坍塌问题。
研究背景
近年来,图神经网络已经成为一种提升协同过滤推荐系统性能的有效方式。基于图神经网络的推荐系统的核心在于通过在用户-物品交互图上不断进行消息传递以细化用户和物品的嵌入表示。这一方法依赖于充足且高质量的训练数据。然而,在实际推荐场景中,用户的行为数据往往是充满噪声并且是有偏分布的。为了解决这一问题,近期一些推荐系统方法,比如SGL [1],利用自监督学习来提升用户表示的效果。这些方法通过构造对比视图来进行自监督学习,但是他们依赖于繁琐的数据增强方式的试错选择,并且由于对比视图通过相似的方法构造,容易生成相似的对比视图表示,导致模型学习崩溃的问题。
作者在上图中可视化了SGL模型各个视图的用户/物品嵌入表示。从图中可以清晰地发现,SGL的主视图和两个对比视图的嵌入表示非常相近,而当数据集中加入更多的噪声之后,这个现象更加严重。对比视图的嵌入相近会对对比学习的效果产生不利的影响,也就是所谓的模型坍塌问题。这一现象限制了自监督学习的效果。
为了解决上述问题,本文提出了一种新的用于推荐的自适应图对比学习范式(AdaGCL)。具体而言,作者分别设计了图生成模型和图去噪模型作为对比学习生成器,以实现可学习的对比视图。在可学习的对比视图的帮助下,AdaGCL将额外的高质量自监督信号引入了协同过滤范式,帮助缓解数据稀疏和数据噪声的问题。在三个公共数据集上充分的实验结果表明AdaGCL超过了多个目前的SOTA基线推荐模型。
模型方法
AdaGCL主要由两个可学习的对比视图生成器构成,分别是基于VGAE的图生成模型和设计的图去噪模型,原始的用户-物品交互图通过图生成模型和图去噪模型可以得到增强后的用户-物品交互图,之后分别通过图神经网络的到一对对比视图,和原始用户-物品交互图的到的主视图一起,进行联合学习。其中对比视图使用InfoNCE损失来优化自监督学习任务,主视图使用BPR损失来优化推荐任务。
协同关系学习
为了编码用户和物品之间的交互模式,作者遵循了常用的协同过滤范式,将用户和物品嵌入 d d d维的隐空间中。具体地,作者为用户 u i u_i ui和物品 v i v_i vi分别生成了形状为 R d \mathbb{R}^d Rd的嵌入向量 e i \mathbf{e}_i ei和 e j \mathbf{e}_j ej,同时定义形状分别为 R I × d \mathbb{R}^{I\times d} RI×d和 R J × d \mathbb{R}^{J\times d} RJ×d的用户嵌入矩阵 E ( u ) \mathbf{E}^{(u)} E(u)和物品嵌入矩阵 E ( v ) \mathbf{E}^{(v)} E(v)。为了实现多跳信息传播,作者使用了LightGCN [2]中的简化图神经网络作为嵌入传播层:
z i ( u ) = A ˉ i , ∗ ⋅ E ( v ) , z j ( v ) = A ˉ ∗ , j ⋅ E ( u ) \mathbf{z}_{i}^{(u)} = \bar{\mathcal{A}}_{i,*} \cdot \mathbf{E}^{(v)}, \ \ \ \ \ \mathbf{z}_{j}^{(v)} = \bar{\mathcal{A}}_{*,j} \cdot \mathbf{E}^{(u)} zi(u)=Aˉi,∗⋅E(v), zj(v)=Aˉ∗,j⋅E(u)
除此之外,根据下式得到用户-物品交互图 A \mathcal{A} A的归一化邻接矩阵 A ˉ \bar{\mathcal{A}} Aˉ:
A ˉ = D ( u ) − 1 / 2 ⋅ A ⋅ D ( v ) − 1 / 2 , A ˉ i , j = A i , j ∣ N i ∣ ⋅ ∣ N j ∣ \bar{\mathcal{A}} = \mathbf{D}_{(u)}^{-1/2}\cdot \mathcal{A} \cdot \mathbf{D}_{(v)}^{-1/2}, \ \ \ \ \bar{\mathcal{A}}_{i,j} = \frac{\mathcal{A}_{i,j}}{\sqrt{|\mathcal{N}_{i}|\cdot |\mathcal{N}_{j}|}} Aˉ=D(u)−1/2⋅A⋅D(v)−1/2, Aˉi,j=∣Ni∣⋅∣Nj∣Ai,j
之后,为了得到用户/物品表达并且聚合本地邻居信息实现语义嵌入,作者使用了多层的嵌入传播层,消息传递的过程如下所示:
e i , l ( u ) = z i , l ( u ) + e i , l − 1 ( u ) , e j , l ( v ) = z j , l ( v ) + e j , l − 1 ( v ) . \mathbf{e}_{i,l}^{(u)} = \mathbf{z}_{i,l}^{(u)} + \mathbf{e}_{i,l-1}^{(u)}, \ \ \ \mathbf{e}_{j,l}^{(v)} = \mathbf{z}_{j,l}^{(v)} + \mathbf{e}_{j,l-1}^{(v)}. ei,l(u)=zi,l(u)+ei,l−1(u), ej,l(v)=zj,l(v)+ej,l−1(v).
每个用户/物品节点最终的表示为将每层的嵌入表达求和,之后使用用户和物品最终表示的内积来预测用户对某个物品的喜好程度:
e i ( u ) = ∑ l = 0 L e i , l ( u ) , e j ( v ) = ∑ l = 0 L e j , l ( v ) , y ^ i , j = e i ( u ) ⊤ e j ( v ) . \mathbf{e}_{i}^{(u)} = \sum_{l=0}^{L}\mathbf{e}_{i,l}^{(u)},\ \ \mathbf{e}_{j}^{(v)} = \sum_{l=0}^{L}\mathbf{e}_{j,l}^{(v)},\ \ \hat{y}_{i,j} = \mathbf{e}_{i}^{(u)\top}\mathbf{e}_{j}^{(v)}. ei(u)=l=0∑Lei,l(u), ej(v)=l=0∑Lej,l(v), y^i,j=ei(u)⊤ej(v).
图对比学习的自适应视图生成器
- 双视图图对比学习范式
现有的图对比学习工作往往通过特定的方式来生成对比视图,比如随机丢弃节点、边 [1],或者构建超图 [3]。然而,选择合适的方法来生成对比视图可能会很麻烦,因为它通常依赖于繁琐的试错或者有限的预制视图选择池。这限制了这些方法的实用性和潜力。为了解决这个问题,作者提出用两个可学习的视图生成器来得到图对比学习的自适应视图。
除此之外,模型崩溃也为开发图对比学习的视图生成器提出了挑战,同一生成器生成的两个视图容易产生相似的分布,会导致不充分的对比优化。为了解决这个问题,作者提出使用两个不同的视图生成器,从不同的角度来增强用户-物品视图。具体来说,作者采用图生成模型和图去噪模型来作为两个视图生成器。图生成模型是基于原始图分布来重建视图,而图去噪模型则利用图的拓扑信息从用户-物品图中消除噪声以生成噪声更少的新视图。
在两个自适应对比视图的辅助下,作者遵循了现有自监督协同过滤工作的范式,将同一节点的两个视图中的表示作为正对(即, ( e i ′ (\textbf{e}^{'}_{i} (ei′, e i ′ ′ \textbf{e}^{''}_{i} ei′′)| u i ∈ U u_i \in \mathcal{U} ui∈U),将任何两个不同节点的两个视图中的表示作为负对(即, e i ′ \textbf{e}^{'}_{i} ei′, e i ′ ′ ′ \textbf{e}^{''}_{i'} ei′′′)| u i , u i ′ ∈ U u_i,u_{i'} \in \mathcal{U} ui,ui′∈U, u i ≠ u i ′ u_i \neq u_{i'} ui=ui′),目标是最大化正对一致性并最小化负队一致性,使用InfoNCE损失来优化自监督任务:
L s s l u s e r = ∑ u i ∈ U − log exp ( s ( e i ′ , e i ′ ′ ) / τ ) ∑ u i ′ ∈ U exp ( s ( e i ′ , e i ′ ′ ′ / τ ) \mathcal{L}_{ssl}^{user} = \sum_{u_i\in\mathcal{U}} -\text{log} \frac{\text{exp}(s(\textbf{e}'_{i}, \textbf{e}''_{i})/\tau)}{\sum_{u_{i'} \in \mathcal{U}}\text{exp}(s(\textbf{e}'_{i},\textbf{e}''_{i'}/\tau)} Lssluser=ui∈U∑−log∑ui′∈Uexp(s(ei′,ei′′′/τ)exp(s(ei′,ei′′)/τ)
- 视图生成器:图生成模型
受到近期图生成模型相关工作的启发,作者使用了变分图自编码器 [4]作为生成模型。变分图自编码器融合了变分自编码器和图生成,和普通的图自编码器相比,变分图自编码器引入了KL散度来降低过拟合的风险,支持生成更多样化的图,以提升不确定性。这有利于提供更具挑战性的对比视图。相较于目前受欢迎的生成对抗网络和扩散模型,变分图自编码器相对容易训练并且速度更快。
具体来说,作者使用一个多层图神经网络作为编码器来获得图嵌入表示,之后使用两个多层感知器(MLPs)来从图嵌入表示中获取均值和标准差,最后再用一个多层感知器(MLPs)作为解码器,将从高斯噪声中得到的均值和标准差解码成一个新的图。整体的训练损失如下:
L g e n = L k l + L d i s \mathcal{L}_{gen} = \mathcal{L}_{kl} + \mathcal{L}_{dis} Lgen=Lkl+Ldis
其中 L k l \mathcal{L}_{kl} Lkl表示节点嵌入表示分布和标准高斯分布之间的KL离散度, L d i s \mathcal{L}_{dis} Ldis是用来衡量生成的图和原始图之间相似度的交叉熵函数。
- 视图生成器:图去噪模型
图神经网络使用消息传递机制来通过输入的图传播并聚合信息,以得到节点表示。然而,输入图的质量很大程度上影响着模型的性能,因为在噪音边上聚合的信息会降低节点嵌入表示的质量。所以,对于第二个视图生成器,作者希望生成一个去噪的视图来增强模型对抗噪声数据的能力。
为了提升经过每层图神经网络之后节点嵌入表示的质量,作者提出了一种图神经网络,它包含了一个去噪层来过滤输入图中的噪声边。这个参数化网络如上图所示。该方法的主要出发点是使用参数化的网络来主动过滤输入图中的噪声边。
具体地,对于每一层图神经网络层,使用一个二进制矩阵 M l ∈ 0 , 1 ∣ V ∣ × ∣ V ∣ \mathbf{M}^{l} \in {0,1}^{|\mathcal{V}|\times|\mathcal{V}|} Ml∈0,1∣V∣×∣V∣来表示节点 u i u_i ui和 v j v_j vj之间是否存在边,如果之间是噪声边,则这个矩阵对应的值应该为0,起到消除该噪声边的作用。经过去噪层后的图可以表示为 A l = A ⊙ M l \mathbf{A}^{l} = \mathbf{A} \odot \mathbf{M}^{l} Al=A⊙Ml。用关于 A l \mathbf{A}^{l} Al的最少假设来减少噪声边最直接的想法是惩罚不同层 M l \mathbf{M}^{l} Ml中非零项的数量:
∑ l = 1 L ∣ ∣ M l ∣ ∣ 0 = ∑ l = 1 L ∑ ( u , v ) ∈ ε I [ m i , j l ≠ 0 ] \sum_{l=1}^{L}{||\mathbf{M}^{l}||}_{0} = \sum_{l=1}^{L} \sum_{(u,v)\in \varepsilon} \mathbb{I}[m_{i,j}^{l} \neq 0] l=1∑L∣∣Ml∣∣0=l=1∑L(u,v)∈ε∑I[mi,jl=0]
然而,由于其组合和不可微的性质,优化这个惩罚项在计算上是代价巨大的。为此,作者从以 π i , j l \pi_{i,j}^{l} πi,jl为参数的博努利分布中来获得二进制项 m i , j l m^{l}_{i,j} mi,jl。 m i , j l m^{l}_{i,j} mi,jl表示了边的质量。为了能够用梯度的方法高效地进行优化,作者使用了重参数技巧,将二进制项 m i , j l m^{l}_{i,j} mi,jl松弛到一个参数为 α i , j l ∈ R \alpha_{i,j}^{l} \in \mathbb{R} αi,jl∈R和独立随机变量 ε l \varepsilon^{l} εl的函数 g \mathcal{g} g,可以得到 m i , j l = g ( α i , j l , ε l ) m_{i,j}^{l} = g(\alpha_{i,j}^{l}, \varepsilon^{l}) mi,jl=g(αi,jl,εl)。
基于上述讨论,作者设计了一个去噪层来学习参数 α i , j l \alpha_{i,j}^{l} αi,jl,控制是否移除某一条边。最终,网络的优化损失可以表示为:
L c = ∑ l = 1 L ∑ ( u i , v j ) ∈ ε ( 1 − P σ ( s i , j l ) ( 0 ∣ θ l ) ) \mathcal{L}_{c} = \sum_{l=1}^{L} \sum_{(u_i,v_j)\in\varepsilon}(1 - \mathbb{P}_{\sigma(s_{i,j}^{l})}(0|\theta^{l})) Lc=l=1∑L(ui,vj)∈ε∑(1−Pσ(si,jl)(0∣θl))
任务相关的视图生成器学习
为了让生成的对比视图与下游的推荐任务更加相关,作者引入了常用的BPR损失作为任务相关的监督信息,联合监督视图生成器的优化:
L b p r = ∑ ( u , i , j ) ∈ O − log σ ( y ^ u i − y ^ u j ) \mathcal{L}_{bpr} = \sum_{(u,i,j)\in\mathcal{O}} - \text{log}\sigma(\hat{y}_{ui}-\hat{y}_{uj}) Lbpr=(u,i,j)∈O∑−logσ(y^ui−y^uj)
与此同时,更新前文提到的图生成模型和图去噪模型的优化损失如下:
L g e n = L k l + L d i s + L b p r g e n + λ 2 ∣ ∣ Θ ∣ ∣ F 2 \mathcal{L}_{gen} = \mathcal{L}_{kl} + \mathcal{L}_{dis} + \mathcal{L}_{bpr}^{gen} + \lambda_2 ||\Theta||_{\text{F}}^{2} Lgen=Lkl+Ldis+Lbprgen+λ2∣∣Θ∣∣F2
L d e n = L c + L b p r d e n + λ 2 ∣ ∣ Θ ∣ ∣ F 2 \mathcal{L}_{den} = \mathcal{L}_{c} + \mathcal{L}_{bpr}^{den} + \lambda_2 ||\Theta||_{\text{F}}^{2} Lden=Lc+Lbprden+λ2∣∣Θ∣∣F2
模型训练
AdaGCL框架的训练主要包含两个层次,首先是上层部分。这一部分作者使用了多任务训练策略来联合优化经典的推荐任务和自监督学习任务:
L u p p e r = L b p r + λ 1 L s s l + λ 2 ∣ ∣ Θ ∣ ∣ F 2 \mathcal{L}_{upper} = \mathcal{L}_{bpr} + \lambda_1 \mathcal{L}_{ssl} + \lambda_2||\Theta||_{\text{F}}^{2} Lupper=Lbpr+λ1Lssl+λ2∣∣Θ∣∣F2
下层部分是指两个对比视图生成器的优化任务,两个视图生成器可以一起优化:
L l o w e r = L g e n + L d e n \mathcal{L}_{lower} = \mathcal{L}_{gen} + \mathcal{L}_{den} Llower=Lgen+Lden
时间复杂度分析
作者还对模型的时间复杂度进行了分析,模型主要包含三个主要部分。首先,协同关系学习模块和LightGC类似,时间复杂度为 O ( L × ∣ A ∣ × d ) O(L \times |\mathcal{A}| \times d) O(L×∣A∣×d), L L L是GNN的层数, ∣ A ∣ |\mathcal{A}| ∣A∣是用户-物品交互图中边的数量, d d d是嵌入表示的维度。其次,图生成模型(变分图自编码器)的时间复杂度为 O ( ∣ A ∣ × d 2 ) O(|\mathcal{A}| \times d^2) O(∣A∣×d2),图去噪模型中的去噪层的时间复杂度为 O ( L × ∣ A ∣ × d 2 ) O(L \times |\mathcal{A}| \times d^2) O(L×∣A∣×d2)。最后,对比学习范式的时间复杂度为 O ( L × B × ( I + J ) × d ) O(L \times B \times (I + J) \times d) O(L×B×(I+J)×d),这里 B B B表示在单个训练批次中,用户/物品的数量。 I I I和 J J J分别表示用户和物品的数量。
实验结果
本文在三个公开数据集上对比15个最新的基线模型进行了广泛的实验,实验结果表明提出的AdaGCL在总体表现、缓解数据稀疏问题、对抗数据噪声等方面具有更好的性能。
作者还进行了完整的消融实验,实验结果表明所提出的各个子组件均有提升推荐效果的功能:
除此之外,作者还通过嵌入表达的可视化分析比较了基于随机增强方法的自监督推荐系统(SGL)和提出的AdaGCL在对抗噪声和缓解模型崩塌问题时的表现。实验结果表明,在自适应对比视图生成器的帮助下,AdaGCL可以更好地对抗噪声数据(图去噪模型),也可以缓解模型崩塌的问题(使用两个不同的对比视图生成器):
总结
本文中,作者提出了一种新颖的方法,通过自适应的视图生成器以提升自监督推荐系统的性能。作者引入了一种全新的推荐系统框架,AdaGCL,包含一个图生成模型和一个图去噪模型来构建对比视图,提供额外的自监督信号来更有效地建模用户-物品交互信息。该方法提升了模型的抗噪声能力,提升了基于图的推荐系统的整体性能。在多个数据集上的充分实验证明了模型出色的性能,超越了多个具有竞争力的基线模型,也证明了它与其他自监督推荐系统模型相比具有的优势。
Reference
[1] Jiancan Wu, Xiang Wang, Fuli Feng, Xiangnan He, Liang Chen, Jianxun Lian, and Xing Xie. 2021. Self-supervised graph learning for recommendation. In International Conference on Research and Development in Information Retrieval (SIGIR). 726–735.
[2] Xiangnan He, Kuan Deng, Xiang Wang, Yan Li, Yongdong Zhang, and Meng Wang. 2020. Lightgcn: Simplifying and powering graph convolution network for recommendation. In International Conference on Research and Development in Information Retrieval (SIGIR). 639–648.
[3] Liang haoXia, Chao Huang, Yong Xu, Jiashu Zhao, Dawei Yin, and Jimmy Huang. 2022. Hypergraph contrastive collaborative filtering. In International Conference on Research and Development in Information Retrieval (SIGIR). 70–79.
[4] Thomas N Kipf and Max Welling. 2016. Variational graph auto-encoders. arXiv preprint arXiv:1611.07308 (2016).