HCCF:超图携手对比学习

2022-09-19 10:20:13 浏览数 (2)

关注我们,一起学习~

title:Hypergraph Contrastive Collaborative Filtering link:https://arxiv.org/pdf/2204.12200.pdf code:https://github.com/akaxlh/HCCF from:SIGIR 2022

预备知识:超图:https://zhuanlan.zhihu.com/p/361471954

不得不说现在超图也是图学习中挺火的一块领域,最近看到了好多用超图做推荐的,所以今天跟大家分享一篇超图结合对比学习的推荐方法,时间不足的小伙伴可以进入第二节懒人阅读

1. 导读

协同过滤 (CF) 已经成为将用户和商品参数化到潜在表征空间的基本范式,它们的相关模式来自交互数据。现有的基于GNN的推荐方法中存在两个挑战尚未得到很好的探索:

  • i) 基于图的 CF 架构的过度平滑效应可能导致无法区分的用户表征导致推荐结果的退化。
  • ii) 监督信号(即用户-商品交互)在现实中通常是稀缺且偏斜分布的,这限制了 CF 范式的表征能力。

本文提出了一种新的自监督推荐框架HCCF,以通过超图增强的跨视图对比学习架构共同捕获局部和全局协同关系。超图结构学习增强基于 GNN 的 CF 范式的判别能力,从而全面捕捉用户之间复杂的高阶依赖关系。并且,HCCF 模型有效地将超图结构编码与自监督学习相结合,以增强推荐系统的表征质量。

2. 懒人阅读

本文主要是在图结构上结合对比学习进行协同过滤,

  • 局部协同关系编码,这部分是利用常见的方法如LightGCN这类方法进行信息传递和聚合,并且在聚合的时候利用残差的方式连接前一层和当前层的计算结果,缓解过度平滑
  • 全局依赖关系,这部分采用超图结构,首先,超图中节点对应的超边矩阵是可学习的,因此超图的结构是学习得到的;其次,为了避免直接学习上述超边矩阵这样一个稠密的大矩阵,作者对其进行了分解,由节点embedding和参数W计算,有点类似于FM中的分解;然后,分层映射部分,是在多层超图消息传播的过程中对超边也进行交互,即整个传播过程中,通过超图结构聚合节点embedding,当前层节点的embedding是由局部协同部分得到,并且交互超边embedding;
  • 聚合多阶消息传播得到的用户/商品局部embedding和超图embedding,进行预测,利用pairwise损失计算损失值
  • 对比学习阶段是约束每一层超图得到的embedding和局部协同部分得到的embedding的一致性,从而得到较好的表征
  • 在原始图结构和超图结构中引入边dropout防止过拟合

3. 方法

如图所示为HCCF的整体架构。

  • 首先,利用基于图的消息传递模块作为编码器来捕获用户和商品之间的局部协同相似性。(人话:用常用的图提取用户和商品的embedding
  • 其次,提出一种新的具有全局依赖结构学习的超图神经网络,以全面捕捉图神经 CF 范式的全局协作效应。(人话:学习一个超图结构来反映依赖关系
  • 最后,引入了一种新的超图对比学习架构,具有互补的自提炼视图。

3.1 局部协同关系编码

按照常见的协同过滤范式,分别用

e_i^{(u)}in mathbb{R}^d

,

e_j^{(v)}in mathbb{R}^d

表示每个用户

u_i

和商品

v_j

的embedding。令

E^{(u)}in mathbb{R}^{I times d}

,

E^{(v)} in mathbb{R}^{J times d}

来表示所有用户和商品的embedding矩阵。基于LightGCN,局部图embedding的消息传播方式如下,z为从邻域聚合消息后的表征,σ为leakyrelu激活函数,

bar{mathcal{A}} in mathbb{R}^{Itimes J}

表示标准化的邻接矩阵,由用户-商品交互矩阵计算得到,公式如下,其中

D_{(u)} in mathbb{R}^{Itimes I}

,

D_{(v)} in mathbb{R}^{Jtimes J}

表示对角度矩阵。N为当前节点的邻居节点。

mathbf{z}_{i}^{(u)}=sigmaleft(overline{mathcal{A}}_{i, *} cdot mathbf{E}^{(v)}right), quad mathbf{z}_{j}^{(v)}=sigmaleft(overline{mathcal{A}}_{*, j} cdot mathbf{E}^{(u)}right)
overline{mathcal{A}}=mathbf{D}_{(u)}^{-1 / 2} cdot mathcal{A} cdot mathbf{D}_{(v)}^{-1 / 2}, quad overline{mathcal{A}}_{i, j}=frac{mathcal{A}_{i, j}}{sqrt{left|mathcal{N}_{i}right| cdotleft|mathcal{N}_{j}right|}}

通过集成多个embedding传播层,细化用户/商品表征以聚合局部邻域信息生成上下文embedding。假设

e^{(u)}_{i,l}

,

e^{(v)}_{j,l}

表示用户

u_i

和商品

v_j

在第

l

层GNN的embedding。从

l-1

层到

l

层的消息传递公式如下:

mathbf{e}_{i, l}^{(u)}=mathbf{z}_{i, l}^{(u)} mathbf{e}_{i, l-1}^{(u)}, quad mathbf{e}_{j, l}^{(v)}=mathbf{z}_{j, l}^{(v)} mathbf{e}_{j, l-1}^{(v)}

利用残差连接对源节点和目标节点进行自信息合并这强调了中心节点的语义并缓解了GNN的过度平滑问题

3.2 超图全局依赖学习

3.2.1 超图消息传递范式

超图由一组顶点和超边组成,其中每个超边可以连接任意数量的顶点。(根据“预备知识”的链接,根据一个准则将一阶节点分为一组,这一组节点就由一个超边连接)在超图协同过滤场景中,利用超边对跨用户和商品的全局感知信息进行传递。超图消息传递范式的模型结构如图3所示

定义用户和商品的超图依赖矩阵为

mathcal{H}^{(u)} in mathbb{R}^{Itimes H}

mathcal{H}^{(v)} in mathbb{R}^{J times H}

其中H表示超边的数量,消息传递方式可以表示为下式,其中

Lambda^{(u)} in R^{H times d}

表示用户对应的超边embedding,σ为leakyrelu,

Gamma_{l}^{(u)} in mathbb{R}^{I times d}

表示在第

l

传播层下的超图表征空间中用户的超embedding。同理可得商品的超embedding

Gamma_l^{(v)}

。而

E_{l-1}^{(u)}

表示在局部图消息传播时得到的用户表征矩阵,H为可学习参数矩阵。

Gamma_{l}^{(u)}=sigmaleft(mathcal{H}^{(u)} Lambda^{(u)}right)=sigmaleft(mathcal{H}^{(u)} cdot mathcal{H}^{(u) top} cdot mathbf{E}_{l-1}^{(u)}right)

3.2.2 参数化超图结构学习

通过学习上述的H矩阵来得到用户和商品的基于超图的依赖结构,这里以用户的

mathcal{H}^{(u)}

为例,商品的超图矩阵计算方式也是类似的。通过可训练的

mathcal{H}^{(u)} in mathbb{R}^{Itimes H}

可以通过

mathcal{H}^{(u)}mathcal{H}^{(u)T}

得到节点与节点之间的关系。直接学习上述这样一个稠密矩阵H需要高昂的计算成本。作者以低秩方式将矩阵参数化到潜在空间(这里有点类似FM中将w分解为v),具体如下

mathcal{H}^{(u)}=mathbf{E}^{(u)} cdot mathbf{W}^{(u)}, quad mathcal{H}^{(v)}=mathbf{E}^{(v)} cdot mathbf{W}^{(v)}

3.2.3 分层超图映射

为了进一步进行超边特征交互,通过堆叠大小为H的不同超边层来增强HCCF。上面的超边集将作为第一个超图层,它将与深层超图层非线性交互。深层的超边embedding用编码函数ψ()得到,如下所示,

Lambda

为是用户或商品的超边embedding,E为用户或商品表征,V为可学习参数,σ为leakyrelu函数。

bar{Lambda}=psi^{c}(mathbf{Lambda}), psi(mathbf{X})=sigma(mathbf{V} mathbf{X}) mathbf{X}, mathbf{Lambda}=mathcal{H}^{top} mathbf{E}

根据上式可以得到用户或商品经过分层超图映射后的表征为,

Gamma_{l}=sigma(mathcal{H} cdot bar{Lambda})=sigmaleft(mathcal{H} cdot psi^{c}left(mathcal{H}^{top} cdot mathbf{E}right)right)

3.3 多阶聚合和预测

为了将局部依赖编码与全局协作关系建模相结合,本文迭代地执行图局部embedding传播和超图信息聚合,公式如下,其中

z_{i,l}^{(u)}

l

阶从邻居聚合信息后得到的用户表征,

Gamma_{i,l}^{(u)}

通过超图得到的第

l

阶用户表征,

mathbf{e}_{i, l}^{(u)}=mathbf{z}_{i, l}^{(u)} Gamma_{i, l}^{(u)} mathbf{e}_{i, l-1}^{(u)}, mathbf{e}_{j, l}^{(v)}=mathbf{z}_{j, l}^{(v)} Gamma_{j, l}^{(v)} mathbf{e}_{j, l-1}^{(v)}

进一步将残差操作应用于embedding聚合。通过元素embedding求和生成多阶用户/商品embedding,并利用它们的内积来估计用户和项目之间的交互偏好得分,公式如下,

Psi_{i}^{(u)}=sum_{l=0}^{L} mathbf{E}_{i, l}^{(u)}, Psi_{j}^{(v)}=sum_{l=0}^{L} mathbf{E}_{j, l}^{(v)}, operatorname{Pr}_{i, j}=Psi_{i}^{(u) top} Psi_{j}^{(v)}

采用pairwise损失函数,如下,对于每个用户

u_i

采样S个正负样本

mathcal{L}_{r}=sum_{i=0}^{I} sum_{s=1}^{S} max left(0,1-operatorname{Pr}_{i, p_{s}} operatorname{Pr}_{i, n_{s}}right)

3.4 超图增强的对比学习

3.4.1 超图引导的对比

通过最大化显式用户-商品交互关系和隐式基于超图的依赖关系之间的一致性来设计对比学习组件。生成两个表示视图,即 i) 用户-商品交互图上的局部协作关系编码, ii) 用户/商品之间的全局超图结构学习。这种对比学习利用了用户和商品的自判别,从局部和全局表征空间提供辅助监督信号。

3.4.2 跨视图协同监督

同一用户/商品的不同视图视为正对

(z_{i,l},Gamma_{i,l})

,并将不同用户/商品的视图视为负对。模型通过对比生成的正例和负例来学习判别表征。使用 InfoNCE将用户表征的对比损失正式定义为下式,其中s()为余弦相似度,

mathcal{L}_{s}^{(u)}=sum_{i=0}^{I} sum_{l=0}^{L}-log frac{exp left(sleft(mathbf{z}_{i, l}^{(u)}, Gamma_{i, l}^{(u)}right) / tauright)}{sum_{i^{prime}=0}^{I} exp left(sleft(mathbf{z}_{i, l}^{(u)}, Gamma_{i^{prime}, l}^{(u)}right) / tauright)}

3.4.3 图结构上的数据增强

为了进一步缓解跨视图对比学习过程中的过度拟合问题,在用户-商品交互图和学习的超图结构上设计边dropout,如下,

circ

表示逐元素相乘,

M_G in mathbb{R}^{Itimes J}

M_H in mathbb{R}^{J times H}

是掩码矩阵用于dropout,

overline{mathcal{A}}:=mathbf{M}_{G} circ overline{mathcal{A}} ; quad mathcal{H}:=mathbf{M}_{H} circ mathcal{H}

总体损失函数如下,

mathcal{L}=mathcal{L}_{r} lambda_{1} cdotleft(mathcal{L}_{s}^{(u)} mathcal{L}_{s}^{(v)}right) lambda_{2} cdot|Theta|_{mathrm{F}}^{2}

4. 结果

0 人点赞