【机器学习】— 2 图神经网络GNN

一、说明

        在本文中,我们探讨了图神经网络(GNN)在推荐系统中的潜力,强调了它们相对于传统矩阵完成方法的优势。GNN为利用图论来改进推荐系统提供了一个强大的框架。在本文中,我们将在推荐系统的背景下概述图论和图神经网络(GNN)。

在推荐系统系列的第一部分中,我们讨论了任务和常用的各种类型的推荐系统,以及基于业务上下文的相关指标。在本文中,我们将在推荐系统的背景下概述图论和图神经网络(GNN)。

二、经典矩阵补全方法

        推荐系统的一种流行技术是利用经典的机器学习方法进行矩阵补全,这是一种协同过滤方法。给定用户数 m 和数项 n,它旨在填充用户-项交互矩阵 R(维度为 mxn)中的缺失值。为了实现这一点,我们将每个用户和项目映射到大小为 k 的嵌入 — 向量空间中的抽象表示。这些嵌入可能会捕获电影类型或用户人口统计数据等特征,但很多时候是潜在的未知特征。生成用户嵌入矩阵 U(维度为 mxk)和项目嵌入矩阵 I(维度为 nxk)。 为了预测用户-项目对,我们计算转置项目矩阵和用户矩阵的点积。最初,潜在矩阵是随机初始化的,我们使用基于已知用户-项交互的损失函数优化嵌入。

图 1:此图显示了用户-项交互矩阵 R,以及我们如何在用户和项嵌入矩阵之间取点积来预测 R 矩阵中的特定值。

        但是,此方法在处理稀疏矩阵时会遇到性能问题。在用户仅与数百万个可用项中的几个项交互的情况下,经典的矩阵完成方法可能是不够的,因为它们只考虑用户和项之间的直接连接。为了解决这一限制,基于图神经网络(GNN)的推荐系统已成为一种更有效的替代方案。

        GNN 不仅通过考虑单个用户的偏好,还集成来自相邻用户的信息,在稀疏数据集中提供改进的性能。通过利用图形结构,GNN 可以更全面地捕获用户和项目之间的关系,从而实现更准确和个性化的推荐。让我们首先提醒自己一些关于图论的知识。

三、图论概述

3.1 什么是图表?

        图形是一种数据结构,将实体集合表示为节点(顶点),并将其关系表示为边。它是建模和理解各种真实场景的强大工具。例如,图表可以表示银行交易,其中节点符号化银行账户,边表示它们之间的交易。同样,社交网络图以人为节点,边缘描绘个人之间的关系。

图 2:图形示例。

        图表的类型

        根据其特征,有不同类型的图形。 有向图具有具有特定方向的边。 例如,在银行交易图中,每条边表示从发送方到接收方的交易,从而建立明确的方向。另一方面,无向图不会为边分配方向。在社交网络中,无向边缘表示两个人之间的联系或相识,没有任何固有的方向性。

        图形也可以分为同构或异构。 同类图具有单一类型的节点和边,而异构图可能包含多种类型。例如,在电子商务方案中,可能有两种类型的节点:一种表示可供销售的商品,另一种表示用户。不同类型的边缘可以表示不同的交互,例如用户单击项目或进行购买。

图 3:有向图、无向图、齐次图和异构图的示例

        二分图是一种特定类型的异构图,在建模推荐系统方面非常有用。它们涉及两组不同的节点,例如用户和项目,边缘专门连接来自不同集的节点。二分图有效地捕获用户-项目交互,并启用高效的推荐算法来利用丰富的网络结构。

图 4:二分图示例。

3.2 我们如何存储图形数据?

        有多种方法可以存储图形数据。一种方法是使用邻接矩阵,表示为 A ∈ {0, 1}ⁿxⁿ,其中 n 是图中的节点数矩阵的 (i, j) 条目 Ai,j 表示节点 vi 和 vj 之间的连通性,如果有连接 vi 和 vj 的边,则为 Ai,j = 1。对于无向图,邻接矩阵是对称的,即 Ai,j = Aj,i。但是,对于大型和稀疏图(如社交网络),邻接矩阵可能是内存密集型的。这是因为邻接矩阵随节点数而缩放。在拥有数百万个节点的社交网络中,大多数人彼此不认识。这将导致一个大矩阵,其中大多数单元格为空。

        为了解决这个问题,邻接列表表示形式对内存效率更高。 它将节点之间的边描述为元组 (i,j),其中 (0,1) 表示节点 0 和 1 之间的边。例如,对于图 5 中的图形,邻接列表为 [(A,B)、(B,D)、(B,C)、(D,C)]。

图 5a:图形示例 — 图 5b:图 4a 中图形的邻接矩阵。

        邻接列表表示形式提供了更高的内存效率,特别是对于稀疏图,因为它仅存储有关连接节点的必要信息。这使其成为处理大规模图形数据(例如社交网络)的首选,其中连接数与节点总数相比通常有限。

四、推荐系统中的图神经网络

        与传统的矩阵完成方法类似,GNN 可以为用户和项目生成嵌入,以预测看不见的用户-项目交互。但是,它们提供了一种显式合并高阶图结构的方法,并且可以捕获数据本身中可能不可用的潜在或隐藏相关性。

        给定一个图,我们的目标是将每个节点 v 映射到其自己的 d 维最终嵌入,其中基于其网络邻域特征以及自身特征的相似节点最终应在其最终嵌入空间中彼此接近。

图 6:节点编码到嵌入空间。

4.1 图形神经网络层

        GNN 的一层在图中的所有直接邻居之间交换信息,为图中的每个节点生成新的节点嵌入。在 2 层 GNN 模型中,每个节点将根据其 2 跳邻域生成其第 2 层嵌入。 K-hop 邻域是指距离感兴趣节点 K 边的所有节点。这是一个迭代过程,其中邻居变量通过传递消息(一种消息传递方法)与每个变量“对话”。

图 7:2 层 GNN 中特定目标节点的输入图和计算图

        在此图像中,我们看到节点 A 的第 2 层表示是通过以某种方式聚合其直接邻居 [B,C,D] 的第 1 层嵌入并对其应用黑盒转换或神经网络生成的。这些嵌入又由其第 0 层 [X_A、X_B...X_F] 嵌入直接相邻要素,这是初始输入要素。每一层都会生成一个新的节点嵌入,节点的 K 层嵌入从距离自身的 K 跳节点获取信息。

4.2 图神经网络的特点、优势和局限性

        图神经网络(GNN)具有几个显着的特征和优势,使其与传统的矩阵补全方法区分开来。这些特征有助于它们在推荐系统中的有效性。让我们探索这些功能:

  • 阶次不变性: GNN 是顺序不变的,这意味着节点的标记顺序不会影响结果。计算图考虑节点连接而不是节点顺序,利用顺序不变的聚合函数(如平均值、最大/最小池化)进行消息传递。
  • 大小不变性: GNN 中的每个节点都有自己的计算图,这使得 GNN 的大小不变。这允许各个节点根据其本地邻域处理和集成信息,从而实现个性化和灵活的学习。下图显示了上图中每个节点的计算图。

图 8:图 7 输入图中每个节点的计算图。

  • 处理稀疏矩阵:与经典的矩阵补全方法不同,GNN 擅长处理稀疏矩阵。它们超越了直接节点交互,并捕获了高阶图结构中存在的隐藏相关性。此功能增强了它们在交互受限的场景中的性能
  • 端到端学习: GNN 提供端到端学习,同时优化嵌入和预测任务。这减轻了对手动特征工程的需求,简化了推荐管道。此外,GNN 可以很好地适应不断发展的用户/项目功能,从而减少对重大代码修改的需求。

        尽管GNN具有优势,但它们也有应考虑的局限性:

  • 计算复杂性:GNN 可能是计算密集型的,特别是对于大型图形和深度架构。与更简单的模型相比,训练GNN可能需要大量的计算资源和更长的训练时间。
  • 可解释性:与传统方法相比,GNN的复杂性可能使它们的可解释性降低。了解基于 GNN 的建议背后的内部工作原理和推理可能具有挑战性。

五、结论

          通过利用嵌入在图结构中的丰富信息,GNN可以捕获复杂的模式,发现潜在特征,并在推荐过程中考虑相邻用户的影响。这种方法增强了推荐系统做出准确预测的能力,即使在经典方法难以生存的稀疏数据集中也是如此。

        随着推荐系统领域的不断发展,GNN已成为解决传统方法局限性的有前途的解决方案。 他们适应不同领域并自动从数据中学习的能力使他们非常适合在各种情况下提供相关和量身定制的建议。

        在本系列的下一部分中,我们将深入研究GNN的数学基础,特别关注LightGCN在电影推荐系统中的应用。通过了解基本原理和算法,我们可以进一步了解GNN如何改变推荐系统的格局。

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

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

相关文章

shell 简单且常用的几种

目录 一、配置环境的shell脚本 二、系统资源脚本 一、要求 二、脚本内容 三、脚本解析 四、赋权并验证 一、配置环境的shell脚本 systemctl stop firewalld systemctl disable firewalld systemctl stop NetworkManager systemctl disable NetworkManager setenforce…

vue3学习笔记

1.创建项目 2. 3.setup 4. 5. 6. 7.生命周期函数 8. 9. 10. 11. 12.pinia

企业如何为服务器找到合适的托管机房?

企业的服务器在业务经营中扮演着很重要的角色,提供可靠的数据存储和备份功能、计算能力和软件支持、网络通信连接等功能,是企业运行中关键的组成部分。因此,企业的服务器需要得到妥善的保管,为它们选择一个合适的托管机房十分有必…

IDEA下方工具栏SideBar没有Services解决方法 IDEA配合微服务学习多端口管理打开Services栏方法

问题 微服务学习时,一次要打开多个端口,比如8080给order模块、8081给user模块……这就需要用idea管理多端口。 这时候就可以用到Services栏进行管理。 解决 首先看下方Sidebar没有Services。 打开Services 打开方式一:手动打开 在IDEA中…

Vue--BM记事本

效果如下&#xff1a; 用到了如下的技术&#xff1a; 1.列表渲染&#xff1a;v-for key的设置 2.删除功能&#xff1a;v-on调用参数 fliter过滤 覆盖修改原数组 3.添加功能&#xff1a;v-model绑定&#xff0c;unshift修改原数组添加 html文件如下&#xff1a; <!DOCTYPE …

互联网发展历程:保护与隔离,防火墙的安全壁垒

互联网的快速发展&#xff0c;不仅带来了便利和连接&#xff0c;也引发了越来越多的安全威胁。在数字时代&#xff0c;保护数据和网络安全变得尤为重要。然而&#xff0c;在早期的网络中&#xff0c;安全问题常常让人担忧。 安全问题的困扰&#xff1a;网络威胁日益增加 随着互…

工厂方法模式【Factory Method Pattern】

前言 1.工厂模式概念 实例化对象&#xff0c;用工厂方法代替new操作(重点) 工厂模式包括工厂方法模式和抽象工厂模式 抽象工厂模式是工厂方法模式的扩展 2.什么情况下适合工厂模式 有一组类似的对象需要创建 在编码时不能预见需要创建哪种类的实例 系统需要考虑扩展性&#xff…

Vue中实现自动匹配搜索框内容 关键字高亮文字显示

实现效果如下: 1.首先需要给输入框进行双向绑定 2.拿到搜索的结果去渲染页面 将返回的结果和搜索的关键字进行比对 如果相同的 就变红 上代码 html部分 //输入框<div class"search"><div class"shuru"><input type"请输入要查询的…

Springboot + Vue ElementUI 实现MySQLPostgresql可视化

一、功能展示&#xff1a; PostgreSQL教程--实现类似于MySQL的show create table功能实现见末尾 效果如图&#xff1a; DB连接配置维护&#xff1a; Schema功能&#xff1a;集成Screw生成文档&#xff0c;导出库的表结构&#xff0c;导出表结构和数据 表对象操作&#xff1a;…

【Unity小技巧】Unity探究自制对象池和官方内置对象池(ObjectPool)的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 对象池&#xff08;Object Pool&#xff09;是一种软件设计模式&#xff0c;用于管理和重用已创建的对象。在对象池中&#xff0c;一组预先创建的对象被维护在一个池中&#xff0c;并在需要时…

阿里云ECS服务器和轻量应用服务器区别?怎么选择?

阿里云轻量应用服务器和云服务器ECS有什么区别&#xff1f;ECS是专业级云服务器&#xff0c;轻量应用服务器是轻量级服务器&#xff0c;轻量服务器使用门槛更低&#xff0c;适合个人开发者或中小企业新手使用&#xff0c;可视化运维&#xff0c;云服务器ECS适合集群类、高可用、…

浅析DIX与DIF(T10 PI)

文章目录 概述DIF与DIX端到端数据保护 DIFDIF保护类型 SCSI设备支持DIFStandard INQUIRY DataExtended INQUIRY Data VPD pageSPT字段GRD_CHK、APP_CHK、REF_CHK字段 READ CAPACITY(16)响应信息 SCSI命令请求读命令请求写命令请求 DIF盘格式化相关参考 概述 DIF与DIX DIF&…

【机器学习6】数据预处理(三)——处理类别数据(有序数据和标称数据)

处理类别数据 &#x1f331;简要理解处理类别数据的重要性☘️类别数据的分类☘️方便研究——用pandas创建包含多种特征的数据集&#x1f340;映射有序特征&#x1f340;标称特征标签编码&#x1f340;标称特征的独热编码&#x1f331;独热编码的优缺点 &#x1f331;简要理解…

ListNode相关

目录 2. 链表相关题目 2.1 合并两个有序链表&#xff08;简单&#xff09;&#xff1a;递归 2.2 删除排序链表中的重复元素&#xff08;简单&#xff09;&#xff1a;一次遍历 2.3 两链表相加&#xff08;中等&#xff09;&#xff1a;递归 2.4 删除链表倒数第N个节点&…

MySQL 索引为什么使用 B+ 树,而不使用红黑树 / B 树 ?

面试官问 &#xff1a;索引为什么使用 B 树&#xff0c;而不使用 B 树&#xff0c;不使用红黑树呢 首先 B 树和 B 树 都是多叉搜索树&#xff0c;然后我们先来观察一下 B 树和 B 树的数据结构&#xff1a; B 树的数据结构实现 >> B 树的数据结构实现 >> 【B 树相…

2023国赛数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 算法介绍FP树表示法构建FP树实现代码 建模资料 ## 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#xff0c…

代码随想录算法训练营day39 | 62. 不同路径,63. 不同路径 II

目录 62. 不同路径 63. 不同路径 II 62. 不同路径 类型&#xff1a;动态规划 难度&#xff1a;medium 思路&#xff1a; 应用二维数组的动态规划&#xff0c;到达某个方格的方法数目&#xff0c;为这个方格的上一个方格和左一个方格的方法数目和。 需要先初始化第一行和第一…

08.SpringBoot请求相应

文章目录 1 请求1.1 Postman1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致 1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象 1.4 数组集合参数1.4.1 数组1.4.2 集合 1.5 日期参数1.6 JSON参数1.7 路径参数 2 响应2.1 ResponseBody注解2.2 统一响应结果…

GAN!生成对抗网络GAN全维度介绍与实战

目录 一、引言1.1 生成对抗网络简介1.2 应用领域概览1.3 GAN的重要性 二、理论基础2.1 生成对抗网络的工作原理2.1.1 生成器生成过程 2.1.2 判别器判别过程 2.1.3 训练过程训练代码示例 2.1.4 平衡与收敛 2.2 数学背景2.2.1 损失函数生成器损失判别器损失 2.2.2 优化方法优化代…

收集的一些比较好的git网址

1、民间故事 https://github.com/folkstory/lingqiu/blob/master/%E4%BC%A0%E8%AF%B4%E9%83%A8%E5%88%86/%E4%BA%BA%E7%89%A9%E4%BC%A0%E8%AF%B4/%E2%80%9C%E6%B5%B7%E5%BA%95%E6%8D%9E%E6%9C%88%E2%80%9D%E7%9A%84%E6%AD%A6%E4%B8%BE.md 2、童话故事 https://gutenberg.org/c…