HHGR论文阅读笔记
Abstract
群体推荐的基本挑战是对成员之间的相关性进行建模。现有的方法大多采用启发式或基于注意的偏好聚合策略来综合群体偏好。但是这些模型主要关注了用户之间的成对连接,而忽略了组内外复杂的高阶交互。此外由于组-项目交互严重稀疏,组推荐严重存在数据稀疏性问题
在本文中,我们提出了一个自监督的超图学习来实现两个目标
- 捕获用户的组内和组间之间的交互
- 缓解数据本身的稀疏性问题
为了实现这两个目标,对于目标一,我们开发了一个基于用户和组级超图的层次超图卷积网络来建模组内和组外用户之间复杂的丛状相关性,对于目标二,我们设计了一个双尺度节点退出策略来创建自监督信号,可以针对稀疏度问题来规范用户表示
Introduction
组推荐旨在在小组成员之间达成公式,产生能够迎合大多数小组成员的建议。然而,用户的影响因群体而异,导致了决策的困难。一个群体的偏好可能由于其它用户成员和其它群体的偏好的影响而有所不同。因此一个关键问题是在群体推荐研究中对用户和群体的复杂交互建模
但是现有的组推荐不能很好的模拟用户和组之间的交互。许多采用了启发式规则,比如平均、最小痛苦和最大满意度等,它们忽略了用户交互的影响。还有一些利用深度学习的组推荐模型,这些模型只关注了用户的成对连接,而忽略了组内部和组之外复杂的高阶交互。此外由于许多组是在时间上形成的,因此组-项目交互记录非常稀疏,使得直接从交互数据中学习准确的组偏好更加困难。
所提出的层次超图由两个层次组成:用户级和组级,其中每个层次的超图都包含相应的节点类型。在用户级超图中,每个超边连接属于同一组的用户集。为了利用用户间信息丰富的组间交互,我们采用了三角形主题,允许每个组选择最相关的组来获取信息,形成超级超图中的超边。
许多现有的基于SSL的模型通常在用户-项目图中进行节点/边退出,以增强监督信号,但是这样会导致丢弃一些基本的信息。因此我们提出了一种双尺度节点丢弃策略来创建具有不同和更细粒度的监督标签。其背后的直觉是并不是所有的用户-用户交互都会显著影响最终的群体决策,而利用部分信息可以帮助学习不变表示。同时两个不同粒度的视图可以在某种程度上防止基本信息的丢失(例如删除重要的节点)。具体地说,在粗粒度上,我们从用户级超图结构中随机删除一些节点。因此当一个被删除的节点属于多个组时,它将消失在所有相关的超边中。对于细粒度的节点退出,我们只从一个特定的组中删除一些成员节点,这并不影响该节点在其他组中的存在。然后我们最大化从两个粒度学习到的节点表示之间的互信息,以规范用户和组表示针对稀疏性问题。最后我们统一了推荐任务和自监督学习任务,通过两阶段训练的方法来优化模型参数,本文的主要贡献如下:
- 设计了一个层次超图学习框架来捕获组推荐中用户的组内和组间的交互
- 提出了一种具有不同粒度的SSL策略来增强用户和组表示,缓解数据稀疏性问题,该策略与超图卷积网络的分层设计无缝结合
组推荐任务中有三种交互的行为:用户-项目交互,组-项目交互和用户-组交互
Method
在本节中,我们首先介绍所提出的模型HHGR(组推荐的层次超图学习框架),然后提出它的自监督变体,S2-HHGR,具有双尺度退出策略。提出的框架包括三部分:
- 层次超图,通过从用户级别传播到组级别来捕获组内部和外部的用户交互
- 双尺度自监督学习,包含细粒度和粗粒度的节点退出策略,细化用户和组表示,缓解数据稀疏性问题
- 模型优化,统一了组推荐和自监督学习的目标,增强了这两项任务
模型的总体结构如下:
层次图卷积
我们设计了一种新的层次超图卷积,在用户级和组级的层次超图上执行嵌入传播机制
用户级超图
超图构造: 在组推荐中,用户在组内和组外都是关联的,传统的图结构只能支持用户之间的成对关系,因此我们用一个超图来建模用户的交互,在用户级超图中,可以通过一个超边来连接多个用户或者用户组
用户表示学习:我们的目标是利用集群式的用户交互来学习它们的影响,其中相关的用户应该受到组内用户的影响,为了实现这一点,我们引入了超图卷积操作来捕获用户在其邻居之间的交互,并学习每个用户的动态表示。超图卷积的定义如下:
\(P^{(l+1)}=\sigma(D_{ul}^{-1}H_{ul}W_{ul}B_{ul}^{-1}H_{ul}^{T}P^{(l)}\Theta^{(l)})\)
D表示用户级超图的顶点度矩阵,B表示超边的度矩阵,都起到了归一化的作用。\(\Theta\)是两个卷积层之间的参数矩阵。\(P_l\)是第l层的用户嵌入,但是最近发现非线性激活是冗余的,于是将超图卷积改为:
\(P^{(l+1)}=D_{ul}^{-1}H_{ul}B_{ul}^{-1}H_{ul}^{T}P^{(l)}\Theta^{(l)}\)
组表示学习:我们的目标是获得组嵌入来估计它们对项目的偏好。由于组成员就具有不同的重要性,所以我们对用户成员的表示进行加权和,来生成注意力的组表示,这些权重可以反映用户对团队决策的贡献
\(\begin{gathered}\tilde{\boldsymbol{z_{g_m}}}=\sum_{u\in g_m}\alpha_u\boldsymbol{p_u},\\\alpha_u=\frac{\exp\left(\boldsymbol{\rho_u}\boldsymbol{W_\mathrm{agg}}\boldsymbol{x}^T\right)}{\sum_{j\in g_m}\exp\left(\boldsymbol{\rho_j}\boldsymbol{W_\mathrm{agg}}\boldsymbol{x}^T\right)}\end{gathered}\)
组级别超图
超图构建:
一个用户通常属于多个组,这意味着它与不同组的其他用户相连接。但是并非所有的用户交互都会影响用户的偏好。为了选择信息丰富的用户交互,优化用户间的组间交互,我们采用三元主题关系作为主题诱导的超边来构建组级超图,由于三元主题可以增加社会关系的同质性凝聚力,它的交互是一种更强的纽带,这对用户交互的建模非常有益。具体来说,我们首先将用户级超图转化为投影图,其中组的超边作为节点。在投影图中,如果两个组的超边有共同的用户成员,它们将被连接起来,以确保组之间的偏好的相关性。然后我们采用三元关系在组超图中选择最相关的组,如果任何三个组符合三元关系的定义,我们将这三个组定义为一个三元关系诱导的超边,组级超图用\(G_{gl}\)表示
群表示学习:
直观地说,一个三元关系可以看作是连接三个不同节点的封闭路径,基于主题的邻接矩阵可以表示为\(H_{gl}H_{gl}^T\)
\(H_{gl}H_{gl}^T=(CC)\odot C\)
为什么这样计算的就不详细解释了
与用户超图的卷积类似,群组级超图转换后的超图卷积可以定义为:
\(Z^{(l+1)}=D_{gl}^{-1}H_{gl}H_{gl}^{T}Z^{(l)}\Psi^{(l)}\)
D是超图三元关系\(H_{gl}H_{gl}^T\)的度矩阵,\(H_{gl}H_{gl}^T\)可以看作是基于三元关系诱导的邻接矩阵
损失函数
我们采用成对学习任务损失函数来优化用户级超图中的用户和项目表示,设计如下:
组级别的损失函数类似
然后进行联合训练,损失函数由两部分损失组成
双尺度自监督促进组推荐
尽管超图建模具有显著的能力,但是由于组的形成很少,只能观察到很少的组-项目交互,这可能导致次优的推荐性能。一些模型利用用户成员偏好来综合组偏好,并缓解稀疏性问题。然而它们忽略了用户-项目交互也很稀疏的问题。所有为了解决这个问题和完善用户和组的表示,我们提出了一个双尺度节点退出策略的分层超图来增加原始数据和创建两种类型的自监督信号对比学习来提高HHGR的性能
对于HHGR的自监督变体,我们升级了之前的设计,使用两个新的超图卷积网络来学习用户表示,它可以与双尺度自监督策略无缝耦合
粗粒度的节点退出策略
我们以粗粒度的粒度来丢弃一部分用户,其中缺失节点的大小是一个超参数。当丢弃超图中的某些节点时不能删除超边。此外当一个被删除的节点属于多个组超边时,该节点将在所有某些超边中被删除,粗粒度的节点删除函数定义为:
\(h_c=f_{coarse}(a_c,h_{ul})=a_c\odot h_{ul}\)
\(h_c\)表示粗粒度超图关联矩阵\(H_c\)的列向量,\(a_c\in\{0,1\}^{|\mathcal{U}|}\)是一个掩码向量,在给定概率下的项为0,控制\(H_{ul}\)中节点的退出幅度。在粗粒度节点删除后,我们可以得到一个受扰动的用户级超图。我们可以通过一个新的超图卷积网络\(g_c(\cdot)\)对其进行编码,以获得粗粒度的用户表示\(P^{'}\),它可以作为原始用户表示的一个数据增强
细粒度的节点退出策略
我们通过在一个特定的组超边缘中删除一定数量的用户来干扰图的构造。我们定义了一个细粒度的节点退出函数:
\(h_f=f_{fine}(a_f,h_{ul})=a_f\odot h_{ul}\)
其中,\(a_f\in\{0,1\}^{|\mathcal{U}|}\)是细粒度掩码向量,它只在一个超边中以固定的概率丢弃节点。与粗粒度策略不同,每次相乘后,它就会被重新分配,然后就是通过新的图卷积网络来编码\(P^{''}\)以获得一个新的用户表示
最终的用户表示为\(P=P^{'}+P^{''}\)
概括一下粗粒度和细粒度的区别:
粗粒度就是在全图上以给定概率mask掉节点
细粒度就是只在一个超边上以一定概率mask节点
对比学习部分:
在建立了不同的节点粒度增强视图后,我们将同一节点的粒度视为正对,将任何不同节点的粒度视为负对,万平米希望来自两个任务的用户表示向量的分布尽可能的接近,设计了一个鉴别函数\(f_D(\cdot)\)来学习两个输入向量之间的得分,采用交叉熵损失作为对比损失函数