首页 > 其他分享 >NCL论文阅读笔记

NCL论文阅读笔记

时间:2024-01-21 11:00:11浏览次数:22  
标签:嵌入 论文 语义 用户 笔记 节点 NCL 邻居 对比

Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning论文阅读笔记

Abstract

​ 目前的对比方法通常采用随机抽样的方式构建对比对,忽略了用户之间的相邻关系,不能充分利用对比学习作为推荐的潜力

​ 为了解决上面的问题,我们提出了一种新的对比学习方式,即邻域丰富对比学习(Neighbor-enriched Contrastive Learning NCL),它明确地将潜在的邻居合并到对比对中。具体来说,我们分别从图结构和语义空间中引入一个用户(或一个项目的)邻居。对于交互图上的结构邻居,我们开发了一个新的结构对比目标,它将用户(或项目)和它们的结构邻居视为正对比对。在实现中,用户(或项目)和邻居的表示对应于不同GNN层的输出。此外为了挖掘语义空间中潜在的邻域关系,我们假设具有相似表示的用户在语义邻域内,并将这些语义邻域纳入原型对比目标,提出的NCL可以用EM算法进行优化

Introduction

​ 这里首先讲一下现存方法的缺点,通过随机抽样节点或破坏子图来构造对比对。缺乏考虑如何为推荐任务构建更有意义的对比学习任务。

​ 除了直接的用户-项目交互外,还存在多种对推荐任务有用的潜在关系,我们的目标是设计更有效的持续学习方法,在神经图协同过滤中利用这些有用的关系。特别地,我们考虑节点级关系,它比图级关系更有效。我们将这些附加关系描述为节点的丰富邻域,这可以从两个方面来定义:

  • 结构邻居指的是通过高阶路径进行结构连接的节点
  • 语义邻居指的是语义上可能在图上无法直接到达的相似邻居。

我们的目标是利用这些丰富的节点关系来改善节点表示的学习,即编码用户偏好或项目特征

​ 为了对丰富的邻域进行整合和建模,我们提出了邻域丰富的对比学习,这是一个与模型无关的对比学习框架。NCL基于两种扩展邻居构建节点级对比目标。但是节点级的对比目标通常需要对每个节点进行两两学习,是很耗时的。所以考虑到效率问题,我们为每种邻居学习一个有代表性的嵌入,这样一个节点的对比学习就可以通过两个有代表性的嵌入(结构或语义)来完成。

​ 具体来说,对于结构邻居,我们注意到GNN的第k层输入涉及到k跳邻居的聚合信息。因此我们利用GNN的第k层输入作为一个节点的k跳邻居的表示(这里好怪啊)。我们设计了一个结构感知的对比一个学习目标,它提取一个节点的表示和其结构邻居的代表性嵌入,对于语义邻居,我们设计了一个典型的对比学习目标来捕获节点与其原型之间的相关性。粗略的说,一个原型可以看作是表示空间中语义相似的邻居簇的质心。由于原型是潜在的,我们进一步提出使用期望最大化算法来推断原型。本文的主要贡献如下:

  • 提出了一个名为NCL的与模型无关的对比学习框架,它结合了结构邻居和语义邻居,以改进神经图的协同过滤。
  • 提出学习两种邻居的代表性嵌入,这样对比学习只能在一个节点和相应的代表性嵌入之间进行,这在很大程度上提高了算法的效率

Method

NCL的模型结构如下:

pFF5BQJ.md.png

Graph Collaborative Filtering BackBone

就是采用了LightGCN

Contrastive Learning with Structural Neighbors

​ 将每个用户或项目和它的结构邻居进行对比,结构邻居的表示通过GNN的层传播进行聚合,base-GNN模型的第l层输出\(z(l)\)是每个节点的l跳邻居的加权和

​ 因为交互图是一个二部图,我们可以从GNN的偶数层输出中得到齐次邻域的表示。然后将用户自身的嵌入和偶数层GNN的相应输出的嵌入视为正对

​ 也就是最初的用户嵌入和第偶数跳的用户嵌入进行对比

Contrastive Learning with Semantic Neighbors

​ 结构对比损失对用户和项目的齐次邻居平等对待,会在噪声中引入对比对。为了减少结构邻居的噪声影响,我们通过合并语义邻居来扩展对比对,语义邻居是指图上不可到达的节点,但是具有相似的特征或偏好

​ 可以通过学习每个用户和项目的潜在原型来识别语义邻居。在此基础上,进一步提出了原型对比目标来探索潜在的语义邻居。因为相似的用户/项目倾向于落在邻近的嵌入空间中,而原型是代表一组语义邻居的集群的中心。因此对用户和项目的嵌入应用聚类算法来获得用户或项目的原型。但是由于这个过程不能端到端优化,所以学习了EM算法的原型对比目标。(说是加了个EM算法,实际上最后就是搞成InfoNCE损失嘛)

​ 也就是用户嵌入和对所有用户进行聚类后的该用户所属的聚类中心进行对比

Conclusion

在这项工作中,提出了一种新的对比学习的凡是,名为邻域丰富对比学习,以明确地捕获潜在的节点相关性到对比学习,用于图协同过滤。我们分别从图的结构和语义空间的两个方面来考虑用户(或项目)的邻居。首先,为了利用交互图上的结构邻居,我们开发了一个新的结构对比目标,可以基于gnn的协同过滤方法相结合。其次,为了利用语义邻居,我们通过将嵌入进行聚类,并将语义邻居合并到原型对比目标中,来推导出用户/项目的原型

标签:嵌入,论文,语义,用户,笔记,节点,NCL,邻居,对比
From: https://www.cnblogs.com/anewpro-techshare/p/17977608

相关文章

  • 如何使用Markdown编写笔记
    Markdown是什么?Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(JohnGruber)。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。由于Markdown的轻量化、易读易写特性,并且对于图片......
  • 【数字图像处理_冈萨雷斯】笔记:(一)绪论
    一、绪论1.图像处理分类:低级处理(输入输出都是图像,如降噪、对比度增强、锐化)中级处理(输入图像输出特征,如分割、分类、识别)高级处理(远端位置识别、视觉认知)2.数字图像处理诞生可追溯至20世纪60年代,得益于机器使用和空间项目开发计算机断层成像CT和X射线是数字图......
  • 完全没有数模基础都能看懂的神经网络笔记【零基础系列】
    神经网络算法前言(可跳过)作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可......
  • [SQLAlchemy] SQLAlchemy学习笔记: 基础使用
    InstallationpipinstallSQLAlchemymakesurethatissql-alchemy2创建引擎数据库url格式一般为dialect+driver://username:password@host:port/database#PyMySQL-python里的数据库驱动engine=create_engine("mysql+pymysql://scott:tiger@localhost/foo?charset=utf......
  • 大三寒假学习进度笔记11
    今日对之前学习的pyspark内容进行了梳理,同时尝试了通过SparkSQL的JDBC方式从mysql读取数据和写入数据#coding:utf8frompyspark.sqlimportSparkSessionfrompyspark.sql.typesimportStructType,StringType,IntegerTypeimportpandasaspdif__name__=='__main__......
  • bitcask论文翻译/笔记
    翻译论文来源:bitcask-intro.pdf(riak.com)背景介绍Bitcask的起源与Riak分布式数据库的历史紧密相连。在Riak的K/V集群中,每个节点都使用了可插拔的本地存储;几乎任何结构的K/V存储都可以用作每个主机的存储引擎。这种可插拔性使得Riak的处理能够并行化,从而可以在不影响代码库其......
  • 学习笔记8
    Streaming原理可以参考官网教程:http://spark.apache.org/docs/latest/streaming-programming-guide.html,SparkStreaming提供了称为离散流或DStream的高级抽象,它表示连续的数据流,在内部DStream表示为RDD序列,每个RDD包含一定间隔的数据,如下图所示:所有对于DStream的操作都会相应地......
  • 序列化之@JsonComponent、@JsonInclude、@JsonSerialize、@JsonIgnore、JsonProperty
    前言:很多时候,例如前端需要字段user可能只是需要用到user中的userName属性,而后端传过去的却是一整个user对象,这样显然是不行的。那有没有一种技术,可以把后端传给前端的user类型的值改变为userName类型的值呢?@JsonComponent、@JsonInclude、@JsonSerialize可以在序列化的时候动手脚,可......
  • 1/20 学习进度笔记
    完成了搜索引擎日志分析小案例数据由两万条一下六列相同格式的单个数据组成 分别对应:搜索时间  用户ID搜索内容URL返回排名用户点击顺序用户点击的URL 使用到了python的jieba插件进行热词的分析TODO:需求1:用户搜索关键‘词’分析需求1结果:[('sc......
  • 数据库学习笔记(二)—— MySQL 之 存储引擎和索引篇
    存储引擎和索引 前言关于MySQL的学习着实有些混乱,虽然才到学习笔记二,但学习笔记四都已经写完了,其他写一点,可以说是东一榔头西一棒槌;写出的东西也不忍直视,省略了很多细节,还基本上都是到处搬运的,可即便是搬运,也都绞尽脑汁了。网上的知识大多都模糊不清,甚至还错误百出,为了......