Paper Reading: GraphHash: Graph Clustering Enables Parameter Efficiency in Recommender Systems


Paper Reading 是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具体的细节还需要以原文的内容为准,博客中的图表若未另外说明则均来自原文。

论文概况 详细
标题 《GraphHash: Graph Clustering Enables Parameter Efficiency in Recommender Systems》
作者 Xinyi Wu, Donald Loveland, Runjin Chen, Yozen Liu, Xin Chen, Leonardo Neves, Ali Jadbabaie, Mingxuan Ju, Neil Shah, Tong Zhao
发表会议/期刊 The ACM Web Conference
发表年份 2025
会议/期刊等级 CCF-A
论文代码 https://github.com/snap-research/GraphHash

作者单位:

  1. Massachusetts Institute of Technology, Cambridge, USA(麻省理工学院)
  2. The University of Michigan, Ann Arbor, USA(密歇根大学安娜堡分校)
  3. The University of Texas at Austin, Austin, USA(德克萨斯大学奥斯汀分校)
  4. Snap Inc., USA(Snap 公司)

研究动机

深度推荐系统在内容发现、商品推荐和定向广告等场景中扮演着重要角色,其性能在很大程度上依赖于嵌入表。嵌入表将用户 ID 和物品 ID 等高基数类别特征映射为稠密向量,随着在线平台规模扩大,嵌入表的内存消耗成为关键瓶颈。Meta 的单个用户嵌入表就能消耗数百 GB 内存,内存占用的增加推高了硬件要求和训练成本,限制了模型的部署能力和可扩展性。

为应对这一挑战,工业界常用哈希技巧将不同实体映射到更少的桶中,通过共享嵌入来减少嵌入表行数。最直接的模运算哈希仅依据 ID 数值分配桶,简单有效但会强制不相似的实体共享同一嵌入,引发冲突导致性能下降。后续改进包括双重哈希缓解冲突、融合频率信息和特征信息等方法。现有嵌入表压缩方法大多基于 ID 或特征的启发式策略,忽略了用户物品交互中蕴含的协同信息。

协同过滤和图学习的发展已经证明了用户物品交互关系对推荐质量的提升作用。图神经网络通过消息传递机制迭代聚合邻居信息,有效捕获了交互图中的结构信息。大规模图上的消息传递涉及稀疏矩阵操作,计算开销较大,难以在对效率要求极高的工业场景中部署。如何利用图信息设计哈希函数以减少嵌入表规模,同时提供比传统消息传递更高效的替代方案,成为一个值得探索的问题。

综上所述,现有嵌入表压缩方法忽视了交互图中的协同信号,而图神经网络的消息传递又计算开销过高。本文针对这一矛盾,提出了 GraphHash 方法,利用基于模块度的二部图聚类将交互模式相似的实体分配到同一桶中,在预处理阶段高效地完成图信息的利用。

文章贡献

本文针对大规模推荐系统中嵌入表内存消耗过大的问题,提出了利用用户物品交互图进行嵌入表压缩的图方法 GraphHash。GraphHash 在用户物品二部图上执行基于模块度的聚类,将交互模式相似的用户和物品分配到同一个嵌入桶中,使哈希冲突发生在行为相似的实体之间,从而大幅降低冲突对推荐性能的负面影响。方法的理论基础在于模块度最大化目标与消息传递之间通过随机游走建立的内在关联,模块度聚类可以看作一种更粗粒度但更高效的嵌入平滑方式。GraphHash 采用 Louvain 等快速模块度优化算法实现,可扩展到大规模交互图,作为即插即用的替代方案直接替换传统 ID 哈希。本文还提出了 DoubleGraphHash 变体,将图聚类哈希与随机哈希结合进一步缓解冲突。在多个公开数据集上的实验表明,GraphHash 在检索任务上优于最强基线。

预备知识

理解本文方法需要掌握两个概念。模块度(Modularity)。 模块度是衡量图聚类质量的经典指标,用于评估簇内边密度相对于随机零模型的超出程度。值越高说明簇内连接越紧密、簇间连接越稀疏,聚类效果越好。对于二部图 \(G(U, I, E)\),其中 \(U\) 是用户集合,\(I\) 是物品集合,\(A \in \mathbb{R}^{|U| \times |I|}\) 是邻接矩阵,模块度定义为:

\[Q = \frac{1}{m}\sum_{C \in P}\sum_{u,i \in C}\left(A_{ui} - \frac{k_u d_i}{m}\right) \]

其中 \(m = |E|\) 是边数,\(k_u\) 是用户 \(u\) 的度数,\(d_i\) 是物品 \(i\) 的度数,\(P\) 是聚类划分。直接优化模块度是 NP 难问题,实际中使用 Louvain 等贪心启发式算法求解,可高效处理十亿级节点的图。

推荐系统中的嵌入表。 推荐系统通过用户嵌入和物品嵌入的交互(如点积)生成推荐结果,这些嵌入存储在深度推荐系统的嵌入表中,用户和物品各有一张表。检索任务通过比较用户与物品嵌入的相似度来推荐相关物品,CTR 预测任务估计用户与特定物品交互的概率。两个任务都依赖用户物品交互的建模,交互通常表示为二部图。

本文方法

GraphHash 的整体框架如图所示,思路是利用快速图聚类算法在预处理阶段对用户物品交互图进行聚类,将聚类结果作为哈希分配,实现即插即用的图基哈希方案,可集成到任何使用嵌入表的推荐模型中。
image

基于模块度的二部图聚类

GraphHash 使用模块度作为二部图聚类的目标函数。模块度的直观含义是:簇内实际边数与随机图零模型下期望边数的差值,值越大说明簇内连接越密集,聚类质量越好。具体而言,对于用户物品二部图 \(G(U, I, E)\),邻接矩阵 \(A_{ui} = 1\) 表示用户 \(u\) 与物品 \(i\) 有交互,否则为 0。聚类划分 \(P\) 的模块度 \(Q\) 计算了每个簇 \(C\) 中所有用户物品对的实际边权 \(A_{ui}\) 与随机期望 \(\frac{k_u d_i}{m}\) 之差的总和,再除以总边数 \(m\) 进行归一化。其中 \(k_u = \sum_j A_{uj}\) 是用户 \(u\) 的度数,\(d_i = \sum_j A_{ji}\) 是物品 \(i\) 的度数。

直接优化模块度是 NP 难问题,本文采用 Louvain 算法求解。Louvain 算法基于贪心启发式,通过两个阶段迭代优化:

  1. 第一阶段:将每个节点尝试移动到相邻簇中,选择使模块度增量最大的移动;
  2. 第二阶段:将每个簇压缩为单个节点,构建新图并重复第一阶段。

该算法高效且可扩展到十亿级节点的图。用 \(\mathcal{A}\) 表示 Louvain 算法,则节点 \(x\) 的聚类分配为 \(\mathcal{A}(x)\)

GraphHash 哈希机制

获得聚类分配后定义哈希桶分配,同一簇中的用户或物品共享同一个嵌入,这与传统哈希函数中同桶实体共享嵌入的机制一致。不同之处在于,GraphHash 中的同桶实体是基于交互模式相似性聚集的,而非随机分配。

形式化地,设 \(U\) 为用户集合,\(I\) 为物品集合,哈希函数 \(H\) 将这些 ID 映射到更小的桶集合 \(B\)。GraphHash 的桶分配从聚类分配 \(\mathcal{A}(U)\)\(\mathcal{A}(I)\) 导出。为保证分配的一致性和有序性,使用重标号函数 \(\ell\) 将簇标号映射为连续整数。GraphHash 定义为:

\[\text{GraphHash}(x) = \ell(\mathcal{A}(x)), \quad \forall x \in U, I \]

该方法只需对现有代码做最小修改,可即插即用集成到任何使用嵌入表的推荐模型中。GraphHash 具有确定性,即给定用户物品交互图,Louvain 算法的输出是确定的。这使 GraphHash 表现得像常规哈希函数,可以方便地与双重哈希等现有技术结合。

DoubleGraphHash 变体

利用 GraphHash 的确定性,本文提出 DoubleGraphHash 变体,结合随机哈希函数 \(H\) 和 GraphHash 来进一步缓解冲突:

\[\text{DoubleGraphHash}(x) = (H(x), \text{GraphHash}(x)), \quad \forall x \in U, I \]

这种组合可以看作对更大基数哈希集合的近似,在减少嵌入表行数时减轻不同实体嵌入之间的冲突。双重哈希的思想已在之前工作中被证明有效,GraphHash 的确定性使其可以无缝融入这一框架。

为什么选择模块度?

选择模块度聚类而非其他聚类方法有一定的理论基础。模块度最大化目标与消息传递之间存在隐含的关联,可以通过随机游走的视角显现出来。从随机游走角度看,模块度可以重新表述为:在无偏随机游走一步后,随机游走者仍停留在起始簇内的概率,减去两个独立随机游走者同时处于该簇的概率(大时间渐近下的零模型)。即模块度衡量的是随机游走者在簇内停留的倾向是否显著高于随机水平。另一方面,一轮消息传递可以表示为:

\[X'_U = D_U^{-1/2} A D_I^{-1/2} X_I \]

\[X'_I = D_I^{-1/2} A^\top D_U^{-1/2} X_U \]

其中 \(X_U, X_I\) 分别是用户和物品嵌入,\(D_U, D_I\) 是对应的度对角矩阵,本质上是用邻居节点的嵌入递归平滑当前节点的嵌入。从随机游走视角看,消息传递等价于从每个根节点出发的随机游走者,按转移概率 \(D^{-1}A\) 加权聚合可达邻域内节点的嵌入。

在这个视角下,GraphHash 可以看作一种更粗粒度但更高效的图上平滑方式,与迭代式消息传递类似。两者有两个区别:

  1. 消息传递的层数是超参数,需要手动调优,而 GraphHash 中随机游走的停止点由模块度最大化自动确定,使停留在起始簇内的概率最大化。
  2. GraphHash 在同一簇内对节点嵌入做完全平滑,而消息传递通过迭代过程逐步平滑。

GraphHash 牺牲了部分嵌入粒度,换取了更高的计算效率,通过单步完全平滑替代了多层迭代计算。

实验结果

数据集和实验设置

本文在无上下文 top-k 检索和有上下文 CTR 预测两个推荐任务上评估所有哈希方法。检索任务使用 Gowalla、Yelp2018 和 AmazonBook 三个数据集,CTR 任务使用 Frappe、MovieLens-1M 和 MovieLens-20M 三个数据集。数据集统计信息如表所示:
image

检索任务的骨干模型包括矩阵分解(MF)、神经矩阵分解(NeuMF)、LightGCN 和 MF+DirectAU 损失,均使用 BPR 损失训练。CTR 任务的骨干模型包括 WideDeep、DLRM 和 DCNv2,均使用二元交叉熵损失(LogLoss)训练。使用的对比方法如下所示:

方法 描述
Random 模运算
Frequency 高频实体独占半桶,其余随机哈希
Double 双重哈希
Double frequency 高频实体独占半桶,其余双重哈希
LSH 基于特征的局部敏感哈希
LSH-structure 将一跳邻居模式作为特征进行 LSH 哈希
无哈希(完整模型) 作为参考基准

检索任务性能对比

检索任务的结果如表所示。GraphHash 在所有数据集和骨干模型上均取得最优性能,相对于最强基线的提升幅度显著,Recall@20 平均提升 101.52%,NDCG@20 平均提升 88.33%。唯一例外是 Yelp2018 数据集上使用 MF+DirectAU 损失作为骨干时,GraphHash 略低于双重频率哈希。

image

值得注意的是,GraphHash 的嵌入表行数少于所有基线方法,参数数量更少,在更短的嵌入表上取得了更优的性能。以 MF 骨干在 Gowalla 数据集上为例,完整模型参数为 4.534M,Random 哈希压缩到 0.744M 后 Recall@20 从 15.617 骤降至 0.766,Double frequency 哈希为 3.888,而 GraphHash 以 0.742M 参数达到 9.300 的 Recall@20,接近完整模型的 60%,远优于最强基线的 3.888。所有哈希方法从 BPR 损失切换到 DirectAU 损失时均出现显著性能下降。

CTR 任务性能对比

CTR 任务的结果如表所示。GraphHash 在 CTR 任务上的表现不如检索任务理想,引入 DoubleGraphHash 变体后性能大幅提升。DoubleGraphHash 在所有数据集和骨干模型上均取得最优性能,平均降低 2.9% 的 LogLoss,提升 0.2% 的 AUC。
image

对比检索和 CTR 任务的结果可以发现 GraphHash 在检索任务中表现最佳,在 CTR 任务中稍逊。DoubleGraphHash 结合了双重哈希,在 CTR 任务中成为最优方法。双重哈希方法在检索任务中表现不佳,但在 CTR 任务中是更强的基线。这些发现表明纯用户物品交互信息对检索任务更直接有益,检索任务中冲突问题相对不严重。CTR 任务中冲突避免技术对性能提升更为关键。

用户子群分析

按用户训练频率百分位将用户分为不同子群,分析各方法在不同用户群体上的表现,结果如图所示。对于检索任务,频率信息通常对高活跃度用户(power users)更有利,无论使用哪种骨干模型。GraphHash 在所有用户群体中取得更均衡的表现,趋势与无哈希模型更为接近。
image

训练目标的影响(RQ3)

本文研究了训练目标对哈希方法性能的影响,对比了 BPR 损失和 DirectAU 损失。DirectAU 损失引入了一个均匀性强度超参数 \(\gamma\),控制表示对齐和均匀性的平衡。实验结果如图所示,无哈希模型和 GraphHash 对 \(\gamma\) 的变化相当鲁棒,双重频率哈希在 \(\gamma\) 上存在一个特定的最优值点。这表明尽管哈希方法总体上与 DirectAU 的兼容性不如 BPR,GraphHash 使哈希对 \(\gamma\) 的选择更加鲁棒。
image

骨干 GNN 深度的影响(RQ4)

本文通过改变 LightGCN 骨干模型的深度来验证 GraphHash 与消息传递的理论关联,结果如图所示。随着骨干模型深度增加,三种方法(无哈希、随机哈希、GraphHash)的性能都有提升。GraphHash 始终优于随机哈希。特别值得注意的是,不使用任何额外消息传递层的 GraphHash,性能大致相当于使用一到两层消息传递的随机哈希模型,而后者的性能完全来自消息传递。
image

本文还进一步比较了 GraphHash 聚类与消息传递学习得到的簇内平滑度,结果如表所示。实验发现 GraphHash 找到的簇内平滑度甚至高于两层消息传递学习得到的平滑度,说明图聚类在捕捉相似结构方面的有效性。
image

聚类目标的影响(RQ5)

本文研究了不同聚类目标对性能的影响。首先分析了模块度聚类中分辨率参数的影响,结果如表所示。提高分辨率(即增加簇数量和嵌入表大小)对 GraphHash 和基线都有性能提升。GraphHash 在各种分辨率设置下始终优于双重频率哈希。
image

本文还将模块度聚类与谱共聚类(spectral co-clustering)进行了对比,结果如表所示。谱共聚类在检索任务中性能略优于模块度聚类,但聚类时间成本是后者的 9 倍以上。模块度聚类在性能和效率之间取得了更好的平衡,这也是选择 Louvain 算法的重要原因。
image

优点和创新点

个人认为,本文有如下一些优点和创新点可供参考学习:

  1. 传统哈希方法基于 ID 或特征的启发式策略,忽视了用户物品交互中的协同信号。GraphHash 将图聚类用于推荐系统的嵌入表压缩,利用模块度聚类将交互模式相似的实体分配到同一桶中,使哈希冲突发生在相似实体之间,降低了冲突的负面影响。
  2. 通过随机游走视角建立了模块度聚类与消息传递的理论联系,为方法提供了扎实的理论基础。模块度最大化等价于最大化随机游走者停留在起始簇内的概率,GraphHash 可以看作一种单步完全平滑的粗粒度消息传递替代方案。
  3. 即插即用的设计使 GraphHash 具有一定的工程价值,方法在预处理阶段完成,不改变模型训练和推理流程,可集成到任何使用嵌入表的推荐模型中,Louvain 算法的高效性保证了方法可扩展到工业级大规模图。
posted @ 2026-09-11 22:01  乌漆WhiteMoon  阅读(16)  评论(0)    收藏  举报