【论文阅读】HCCF:Hypergraph Contrastive Collaborative Filtering

论文出处:SIGIR 2022 CCF-A

论文地址:Hypergraph Contrastive Collaborative Filtering

论文代码:akaxlh/HCCF: HCCF, SIGIR 2022

目录

摘要

介绍

研究背景与核心问题

现有方法局限性

HCCF的创新解决方案

技术优势

定义与相关工作 

协同过滤的技术演进

1. 传统协同过滤方法

2. 图神经网络革命

3. 当前技术瓶颈

超图学习的创新应用

1. 超图基础理论

2. 推荐系统中的实践

3. HCCF的突破

对比学习的新范式

1. 自监督学习浪潮

2. 推荐系统中的应用

3. HCCF的独特视角

方法 

数据表示与图构建

1.1 基础数据表示

1.2 嵌入初始化

局部图卷积通道

2.1 轻量图卷积层

2.2 多阶表示融合

超图全局编码通道

3.1 动态超图构建

3.2 分层消息传递

对比学习模块

4.1 视图生成

4.2 对比损失计算

联合优化策略

5.1 推荐主任务

5.2 正则化项

5.3 联合训练

复杂度优化技巧

6.1 稀疏矩阵计算

6.2 内存效率优化

6.3 分布式训练

理论保证

7.1 梯度分析

7.2 泛化边界

实验


摘要

协同过滤(CF)已经成为将用户和项目参数化到潜在表示空间的基本范式,并从交互数据中获取它们的相关模式。在各种CF技术中,基于gnn的推荐系统(如PinSage和LightGCN)的开发提供了最先进的性能。然而,在现有的解决方案中,有两个关键的挑战没有得到很好的探讨:i)基于更深层次的基于图的CF架构的过度平滑效应,可能导致用户表示无法区分和推荐结果的退化。ii)监督信号(即用户-物品交互)在现实中通常是稀缺的,分布是倾斜的,这限制了CF范式的表示能力。为了解决这些挑战,我们提出了一个新的自监督推荐框架超图对比协同过滤(Hypergraph contrast Collaborative Filtering, HCCF),通过超图增强的跨视图对比学习架构来共同捕获局部和全局协作关系。特别地,设计的超图结构学习增强了基于gnn的CF范式的判别能力,从而全面捕获用户之间复杂的高阶依赖关系。此外,我们的HCCF模型有效地将超图结构编码与自监督学习结合起来,基于超图增强的自我区分来增强推荐系统的表示质量。在三个基准数据集上的大量实验表明,我们的模型优于各种最先进的推荐方法,并且对稀疏的用户交互数据具有鲁棒性。我们的模型实现代码可在https://github.com/akaxlh/HCCF上获得。

介绍

研究背景与核心问题

这篇论文聚焦于推荐系统领域的基础范式——协同过滤(CF)技术。当前基于图神经网络(GNN)的推荐模型(如PinSage、LightGCN等)虽然取得了state-of-the-art的性能,但仍存在两个关键挑战未被很好解决:

  1. 过平滑效应:随着GNN层数加深,用户表示会变得难以区分,导致推荐质量下降。论文图1通过热力图直观展示了现有模型(如LightGCN、PinSage等)存在的这一问题。

  2. 数据稀疏性:实际场景中用户-物品交互数据通常非常稀疏且分布不均,这严重限制了CF模型的表示能力。例如在Yelp数据集中,交互矩阵密度仅为0.0021。

现有方法局限性

论文分析了三类主流推荐方法的不足:

  1. 传统CF方法:如矩阵分解等,无法捕捉高阶协作信号

  2. GNN-based方法:如NGCF、LightGCN等,存在过平滑问题

  3. 自监督方法:如SGL等,随机掩码可能丢失重要交互信息

特别指出,现有方法大多只关注局部用户-物品交互,而忽视了全局的用户间依赖关系。

HCCF的创新解决方案

论文提出超图对比协同过滤框架(HCCF),核心创新包括:

  1. 双通道建模

    • 局部视图:用户-物品交互图

    • 全局视图:超图结构捕获高阶依赖

  2. 自监督对比学习

    • 将局部和全局表示作为对比视图

    • 设计基于InfoNCE的对比损失函数

  3. 参数化超图学习

    • 低秩参数化降低计算复杂度

    • 分层超图映射增强表示能力

技术优势

HCCF相比现有方法具有三大优势:

  1. 缓解过平滑:通过超图引入全局依赖,避免局部邻居过度平滑

  2. 增强鲁棒性:对比学习提供自监督信号,缓解数据稀疏问题

  3. 可解释性:学习到的超图结构反映用户间潜在关联模式

定义与相关工作 

协同过滤的技术演进

1. 传统协同过滤方法
  • 矩阵分解:如BiasMF通过低维潜在空间建模用户-物品交互

  • 神经网络扩展:NCF用MLP替代内积,增强非线性建模能力

  • 自编码器应用:AutoRec通过重建损失学习表示

2. 图神经网络革命
  • 早期探索:GC-MC首次将图卷积应用于推荐

  • 高阶连接建模:NGCF通过多层传播捕获多跳关系

  • 架构简化:LightGCN去除非线性变换,验证了"less is more"的哲学

3. 当前技术瓶颈
  • 过平滑效应:随层数增加节点表示趋于相似

  • 数据稀疏性:长尾物品和冷启动用户表现不佳

  • 全局依赖缺失:现有方法难以捕获非直接相连的用户关系

超图学习的创新应用

1. 超图基础理论
  • 与传统图的区别:超边可连接任意数量节点

  • 核心优势:自然建模高阶关系,适合群体行为分析

2. 推荐系统中的实践
  • HyRec:将用户作为超边连接其交互物品

  • DHCF:双通道跳转超图卷积

  • 现有局限:依赖预定义超图结构,缺乏自适应学习

3. HCCF的突破

对比学习的新范式

1. 自监督学习浪潮
  • 计算机视觉:SimCLR证明对比学习的强大表征能力

  • 自然语言处理:InfoNCE损失在句子嵌入中的应用

  • 图数据:GraphCL探索图级别的对比

2. 推荐系统中的应用
  • SGL:通过节点/边dropout生成对比视图

  • MHCN:最大化节点与图级别的互信息

  • 关键挑战:如何定义适合推荐任务的语义保持增强

3. HCCF的独特视角
  • 视图构建:局部交互图vs全局超图

  • 信号增强:利用学到的超图结构作为自然增强

  • 理论保证:通过梯度分析证明对困难负样本的关注

方法 

数据表示与图构建

1.1 基础数据表示

设推荐系统中有$|\mathcal{U}|$个用户和$|\mathcal{V}|$个物品,用户-物品交互数据表示为稀疏矩阵:

其中元素$a_{ij}=1$表示观测到正反馈(如点击、购买)。为处理数据稀疏性,采用基于度的归一化:

这里度矩阵$\mathbf{D}_u = \text{diag}(\mathbf{A}\mathbf{1})$$\mathbf{D}_v = \text{diag}(\mathbf{A}^\top\mathbf{1})$分别对应用户和物品的交互次数。

1.2 嵌入初始化

初始化可训练的参数矩阵:

其中$d$为嵌入维度(默认64),采用Xavier均匀初始化:

局部图卷积通道

2.1 轻量图卷积层

与传统GCN不同,HCCF移除了非线性变换和特征变换矩阵,每层仅保留邻域聚合:

其中残差连接防止层数加深时的梯度消失。以2层传播为例:

2.2 多阶表示融合

聚合各层表示得到最终局部编码:

这种加权平均策略被证明比直接使用最后一层表示更稳定。

超图全局编码通道

3.1 动态超图构建

传统超图需要预定义超边,HCCF创新性地通过可学习矩阵自动构建:

其中$H$为超边数量(默认128)。超图邻接矩阵通过$\mathcal{H}\mathcal{H}^\top$计算,其元素$(\mathcal{H}\mathcal{H}^\top)_{ij}$反映用户$i$$j$的全局相关性。

3.2 分层消息传递

设计3层超图卷积网络:

其中$\mathbf{\nabla}_*$为可学习的超边交互矩阵,$\sigma$为LeakyReLU(负斜率0.2)。

对比学习模块

4.1 视图生成

对每个用户$u_i$生成两个视图:

  • 局部视图$\mathbf{z}i = \text{L2-Norm}(\mathbf{E}{\text{local}}[i,:])$

  • 全局视图$\gamma_i = \text{L2-Norm}(\mathbf{\Gamma}[i,:])$

4.2 对比损失计算

采用InfoNCE损失函数:

其中:

  • $s_{ij} = \mathbf{z}_i^\top \gamma_j$为余弦相似度

  • $\tau=0.5$为温度系数

  • $B$为批次大小(默认1024)

该损失最大化正样本对$(z_i,\gamma_i)$的相似度,同时推远负样本对$(z_i,\gamma_j)_{j\neq i}$。

联合优化策略

5.1 推荐主任务

采用BPR损失优化推荐性能:

其中$(j^+,j^-)$分别表示正负样本物品。

5.2 正则化项

控制模型复杂度:

5.3 联合训练

最终目标函数:

采用Adam优化器,初始学习率$10^{-3}$,每10个epoch衰减0.96。

复杂度优化技巧

6.1 稀疏矩阵计算

邻接矩阵乘法采用CSR格式存储和计算:

def sparse_dense_matmul(sparse, dense):return torch.sparse.mm(sparse, dense)  # 使用CUDA加速
6.2 内存效率优化
  • 梯度检查点:在超图卷积层中缓存中间结果

  • 混合精度训练:对$\mathcal{H}$矩阵使用FP16存储

6.3 分布式训练

采用数据并行策略:

torchrun --nproc_per_node=4 train.py \--batch_size=4096 \--embed_dim=64

理论保证

7.1 梯度分析

对比损失对负样本的梯度为:

$s_{ij}$较大(困难负样本)时,梯度幅值显著增强。

7.2 泛化边界

根据[2],对比学习的泛化误差上界为:

说明增大批次大小$B$和超边数$H$可以提升泛化能力。

实验

实验部分在Yelp、MovieLens和Amazon-book三个基准数据集上进行了全面验证,首先将每个数据集按7:1:2划分训练/验证/测试集,采用全排序评估策略避免采样偏差,以Recall@N和NDCG@N为核心指标对比了15种基线方法(包括传统矩阵分解、GNN方法和最新自监督模型)。消融实验通过构建四个变体(-HHM移除分层超图映射、-LowR取消低秩分解、-Hyper仅用局部图、-CCL禁用对比学习)验证各模块必要性,特别针对数据稀疏场景按用户交互次数分组测试,结果显示在交互少于20次的极端稀疏用户上HCCF相比LightGCN提升31.6%,同时通过测量嵌入平滑度(MAD指标)证实模型能将过平滑程度降低7.3%,所有实验均使用Tesla V100 GPU重复5次取平均,统计检验p值<0.01确认结果显著性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914645.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914645.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Retrofit+RxJava:打造声明式REST客户端的艺术 —— 像点咖啡一样调用API

目录一、告别Callback地狱&#xff1a;声明式编程的魅力1.1 传统网络请求的痛点1.2 Retrofit的声明式革命二、Retrofit核心配置工厂2.1 构建Retrofit实例2.2 常用注解速查表三、RxJava响应式魔法3.1 链式调用优雅变身3.2 超能力操作符盘点四、实战演练&#xff1a;构建天气查询…

【离线数仓项目】——任务调度与数据可视化实战

摘要 本文主要围绕离线数仓项目中的任务调度与数据可视化实战展开&#xff0c;介绍了业务流程虚拟节点、离线数仓任务调度、数据可视化等方面的内容&#xff0c;涉及DataWorks和QuickBI等工具的使用&#xff0c;并提供了相关的博文参考和项目实战域信息。 1. 任务调度管理实战…

【视频格式转换】.264格式转为mp4格式

背景 视频格式转换是多媒体处理中的常见需求&#xff0c;尤其在视频编辑、存储或跨平台播放时。H.264&#xff08;即AVC&#xff09;是一种广泛使用的视频编码标准&#xff0c;以其高压缩率和良好兼容性著称&#xff0c;但通常以容器格式&#xff08;如.264裸流文件&#xff0…

JAVA学习笔记 使用notepad++开发JAVA-003

目录 1 前言 2 部署notepad的java开发环境 2.1 下载并安装notepad 2.2 设置新建文件的语言 2.3 安装NppExec插件 2.4 编写JAVA脚本 2.5 设置脚本执行快捷键 2.6 效果测试 3 小结 1 前言 JAVA可以使用记事本来编写代码&#xff0c;但是这种方式效率十分低下。我们可以使…

Vue Router 完全指南:从入门到实战,高效管理前端路由

前言在现代化的前端开发中&#xff0c;路由管理是构建单页应用&#xff08;SPA&#xff09;的核心功能之一。Vue.js 作为主流的前端框架之一&#xff0c;提供了强大的官方路由库Vue Router&#xff0c;帮助开发者高效管理页面跳转、动态加载、权限控制等关键需求。无论是构建企…

Sentinel热点参数限流完整示例实现

Sentinel热点参数限流完整示例实现 1. 添加Maven依赖 (pom.xml) <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2.2.7.RELEASE</version> </depend…

正则表达式深度解析:从LeetCode 3136题说起

正则表达式深度解析&#xff1a;从LeetCode 3136题说起 引言 正则表达式&#xff08;Regular Expression&#xff0c;简称RegEx&#xff09;是一种强大的字符串匹配工具&#xff0c;在字符串处理、数据验证、文本搜索等场景中有着广泛的应用。本文将以LeetCode 3136题"有效…

映美打印机-URL页面打印

<?php /** 打印 - 映美云 https://open.jolimark.com/doc/ */ namespace Home\Controller; use Admin\Logic\OrderLogic;class PrintController extends BaseController {private $appid "";private $appkey "";//打印机编号private $deviceIds &qu…

机器学习算法 ——XGBoost 的介绍和使用

前言&#xff1a; 最近在工作中遇到一个结构化数据回归预测的问题&#xff0c;用到了很多回归算法&#xff08;如多元线性回归等&#xff09;都没有很好的效果&#xff0c;于是使用了XGBoost&#xff0c;自己也冲三个特征参数人为的增加来几个&#xff0c;训练出来的效果还是很…

Linux操作系统之信号:保存与处理信号

目录 前言&#xff1a; 前文回顾与补充&#xff1a; 信号的保存 PCB里的信号保存 sigset_t 信号集操作函数 信号的处理 信号捕捉的流程&#xff1a;​编辑 操作系统的运行原理 硬件中断 时钟中断 死循环 软中断 总结&#xff1a; 前言&#xff1a; 在上一篇文…

Spring Boot 设置滚动日志logback

Spring Boot 的 logback 框架 Spring Boot 默认内置了 Logback 作为日志实现框架&#xff0c;只需要在resources文件夹下添加一个logback-spring.xml&#xff0c;springboot会按照你的设置自动开启logback日志功能。 配置 logback-spring.xml 实现每天产生一个日志文件&#xf…

如何定义一个只能在堆上或栈上生成对象的类

在C中&#xff0c;可以通过特定的技术手段来控制对象只能在堆(heap)或栈(stack)上创建。只能在堆上创建对象的类要实现这一点&#xff0c;我们需要阻止用户直接实例化对象&#xff0c;而只能通过new操作符创建。class HeapOnly { public:static HeapOnly* create() {return new…

1.1 前端-vue3项目的创建

构建工具先搭好vue3框架 vue2的vue-cli脚手架基于webpack构建工具创建vue的框架. 而在vue3&#xff0c;可以通过vite构建工具创建vue3项目&#xff0c;性能更优。 两者创建方式的区别&#xff1a;cmd命令基于的构建工具vue2/vue3vue create 项目名称&#xff08;或 vue ui图形化…

PHP password_get_info() 函数

password_get_info() 函数用于返回指定散列&#xff08;hash&#xff09;的相关信息。 PHP 版本要求: PHP 5 > 5.5.0, PHP 7 语法 array password_get_info ( string $hash ) 参数说明&#xff1a; $hash: 一个由 password_hash() 创建的散列值。 返回值 返回三个元素…

mac上的app如何自动分类

使用文件夹进行手动分类在Finder中创建文件夹&#xff0c;将同类应用拖入同一文件夹。右键点击Dock上的应用图标&#xff0c;选择「选项」→「在Finder中显示」&#xff0c;可快速定位应用安装位置。利用Launchpad自动分组打开Launchpad&#xff08;触控板四指捏合或按F4键&…

LLM面试题目 3

LLM面试题目 3 什么是自注意力机制(Self-Attention)?为什么它在LLM中很重要?如何评估LLM的性能?LLM面临的挑战有哪些?Transformer和RNN的区别是什么?LLM如何处理多轮对话? 题目讲解 什么是自注意力机制(Self-Attention)?为什么它在LLM中很重要? 自注意力机制是一种…

linux上的软挂载操作方法

针对linux上的软挂载 可以查看linux已经挂载和存储的磁盘分区 df -hfdisk 命令是检索相同信息的另一种方法&#xff0c;可以看到所有的磁盘分区 sudo fdisk -l 要将磁盘分区 /dev/sda1 挂载到 /home/visionx/EXD1 目录 步骤 1&#xff1a;准备工作 1.创建挂载目录&#xff08;如…

SecretFlow 隐语 (2) --- 隐语架构概览

在前边两篇文章中&#xff0c;介绍了数据要素和可信流通相关的内容&#xff0c;以及基于p2p模式的安装方法 SecretFlow 隐语 (1) --- 快速入门 关于在Linux上部署 SecretFlow --- P2P部署模式 由于安装过程中出现意外报错&#xff0c;现已提交issue等待官方技术人员查阅&#x…

PHP语言基础知识(超详细)第二节

二十七. 数组的遍历 1)通过函数进行遍历:(例:demo07) (此方式不能完全遍历数组,需要借助其他功能辅助)(不推荐,了解即可) key():返回数组中当前指针所在位置的键。 current():返回数组中当前指针所在位置的值。 例如:demo07: <?php/*key():返回数组中…

网络--OSPF实验

目录 OSPF实验报告 一、实验拓扑 二、实验要求 三、实验思路 1.IP地址划分 2. OSPF 部署 3. 其它配置 4. 验证测试 四、实验步骤 1.IP 地址配置 2.OSPF 部署 3.其它配置 4.验证测试 OSPF实验报告 一、实验拓扑 二、实验要求 1、R1-R3为区域0&#xff0c;R3-R4为…