【深度学习】基于图形的机器学习:概述

一、说明

        图神经网络(GNN)在数据科学和机器学习中越来越受到关注,但在专家圈之外仍然知之甚少。为了掌握这种令人兴奋的方法,我们必须从更广泛的图形机器学习(GML)领域开始。许多在线资源谈论GNN和GML,就好像它们是可互换的概念,或者好像GNN是一种灵丹妙药,使其他GML方法过时。事实并非如此。GML的主要目的之一是压缩大型稀疏图数据结构,以实现可行的预测和推理。GNN是实现这一目标的一种方法,也许是最先进的方法,但不是唯一的方法。理解这一点将有助于为本系列的后续部分奠定更好的基础,我们将更详细地介绍特定类型的GNN和相关GML方法。

        在这篇文章中,我们将:

  • 简要回顾一下图形数据结构
  • 涵盖 GML 任务及其解决的问题类型
  • 研究压缩的概念及其在驱动不同GML方法(包括GNN)方面的重要性

二、什么是图(graph)?

        如果您正在阅读本文,您可能已经对图形数据结构有一些了解。如果没有,我建议阅读有关属性图的此资源或有关图形数据库概念的此资源。我将在这里做一个非常简短的回顾:

        图由通过关系连接的节点组成。有几种不同的方法可以对图形数据进行建模。为简单起见,我将使用属性图模型,该模型有三个主要组件:

  1. 表示实体(有时称为顶点)的节点
  2. 表示节点之间的关联或交互的关系(有时称为边或链接),以及
  3. 表示节点或关系的属性的属性。

图片来源:作者

三、什么是图机器学习(GML)?

        图机器学习 (GML) 的核心是将机器学习应用于专门用于预测性和规范性任务的图形。GML 在供应链、欺诈检测、推荐、客户 360、药物发现等方面拥有各种用例。

        理解GML的最佳方法之一是通过它可以完成的不同类型的ML任务。我在下面将其分解为有监督和无监督的学习。

3.1 受监督的 GML 任务

        下图概述了监督学习中最常见的三个GML任务:

图片来源:作者

要进一步扩展:

  1. 节点属性预测: 预测离散或连续节点属性。人们可以将节点属性预测视为预测有关事物的形容词,例如金融服务平台上的帐户是否应归类为欺诈或如何对在线零售商店中的产品进行分类。
  2. 链路预测:预测两个节点之间是否存在关系,以及有关该关系的潜在一些属性。链接预测对于实体解析等应用程序很有帮助,在这些应用程序中,我们希望预测两个节点是否反映相同的底层实体;推荐系统,我们希望预测用户接下来想要购买或与之互动的内容;和生物信息学,用于预测蛋白质和药物相互作用等。对于每种情况,我们都关心预测实体之间的关联、相似性或潜在操作或交互
  3. 图形属性预测:预测图或子图的离散或连续属性。图形属性预测在您希望将每个实体建模为单个图形以进行预测的域中非常有用,而不是将实体建模为表示完整数据集的较大图形中的节点。用例包括材料科学、生物信息学和药物发现,其中单个图形可以表示您想要进行预测的分子或蛋白质。

3.2 无监督的 GML 任务

        以下是无监督学习最常见的四个GML任务:

图片来源:作者

进一步详细说明这些:

  1. 表征学习:在保持重要信号的同时降低维数是GML应用的核心主题。图表示学习通过从图结构生成低维特征来明确地做到这一点,通常用于下游探索性数据分析 (EDA) 和 ML。
  2. 社区检测(关系聚类):社区检测是一种聚类技术,用于识别图中密集互连的节点组。社区检测在异常检测、欺诈和调查分析、社交网络分析和生物学方面具有各种实际应用。
  3. 相似性: GML中的相似性是指在图中查找和测量相似的节点对。相似性适用于许多用例,包括推荐、实体解析以及异常和欺诈检测。常见的相似性技术包括节点相似性算法、拓扑链路预测和 K-最近内博尔 (KNN)。
  4. 中心性和寻路:我将它们组合在一起,因为它们往往与 ML 任务的关联较少,而与分析度量的关联更多。但是,它们在技术上仍然适合这里,因此为了完整起见,我将介绍它们。中心性在图形中查找重要或有影响力的节点。中心性在许多用例中无处不在,包括欺诈和异常检测、推荐、供应链、物流和基础设施问题。路径查找用于查找图形中成本最低的路径或评估路径的质量和可用性。寻路可以使许多处理物理系统的用例受益,例如物流、供应链、运输和基础设施。

四、压缩如何成为 GML 的关键

        我看到了Matt Ranger的这篇有趣的博客文章,它很好地解释了这一点:GML最重要的目标之一,在很大程度上也是自然语言处理,是压缩大型稀疏数据结构,同时保持重要的预测和推理信号。

        考虑一个由邻接矩阵表示的常规图形,一个方阵,其中每行和每列代表一个节点。如果关系从节点 A 到节点 B,则行 A 和列 B 交点处的单元格为 1;否则,为 0。下面是一些小的正则图及其邻接矩阵的插图。

图片来源:作者

        请注意,上述邻接矩阵中的许多单元格均为 0。如果将其缩放到大型图形,尤其是在实际应用中发现的图形,则零的比例会增加,邻接矩阵将变为大部分为零。

        使用来自大型图形可视化工具和方法的推荐图视觉对象和来自Beck,Fabian等人的矩阵图像创建的 Last.fm 说明性示例。 通过多个层次结构的可视化比较来识别模块化模式

        发生这种情况是因为随着这些图的增长,平均度中心性增长得更慢或根本不增长。在社交网络中,邓巴数等概念证明了这一点,邓巴数是对可以与之保持稳定社会关系的人数的认知限制。您也可以直观地了解其他类型的图表,例如金融交易图表或推荐系统的用户购买图表。随着这些图表的增长,一个人可以参与的潜在唯一交易或购买的数量增长速度远远快于他们这样做的能力。即,如果一个网站上有六种产品,一个用户购买其中的一半是可行的,但如果有数十万种,那就没有那么多了。结果,您最终会得到非常大且稀疏的数据结构。

        如果你可以直接将这些稀疏数据结构用于机器学习,你就不需要GNN或任何GML——你只需将它们作为特征插入到传统的ML模型中。但是,这是不可能的。它不会扩展,甚至超过这个范围,它还会导致围绕收敛和估计的数学问题,从而使ML模型不明确且不可行。因此,GML 的基本关键是压缩这些数据结构;可以说,这是GML的全部意义所在。

五、如何完成压缩?— 图机器学习方法

        在最高级别,有三种GML方法可以实现这种压缩。

图片来源:作者

经典图形算法

        经典的图形算法包括PageRank,Louvain和Dijkstra的最短路径。它们可以独立用于无监督的社区检测、相似性、中心性或寻路。经典算法的结果也可以用作传统下游模型的特征,例如线性和逻辑回归、随机森林或执行 GML 任务的神经网络。

        经典的图算法往往很简单,易于上手,并且相对可解释和可解释。但是,与其他GML方法相比,它们可能需要更多的手动工作和主题专业知识(SME)。这使得经典的图算法成为实验和开发中的首选,以帮助了解什么在你的图上效果最好。对于更简单的问题,它们也可以在生产中做得很好,但更复杂的用例可能需要升级到另一种 GML 方法。

非GNN图嵌入

        图嵌入是表征学习的一种形式。一些图嵌入技术利用GNN架构,而另一些则没有。后一组,即非GNN,是这种方法的重点。相反,这些嵌入技术依赖于矩阵分解/分解、随机投影、随机游走或散列函数架构。一些例子包括Node2vec(基于随机漫游),FastRP(随机投影和矩阵运算)和HashGNN(散列函数架构)。

        图形嵌入涉及生成数字或二进制特征向量来表示节点、关系、路径或整个图形。其中最重要的是节点嵌入,是最基本和最常用的。基本思想是为每个节点生成一个向量,使得向量之间的相似性(例如点积)近似于图中节点之间的相似性。下面是一个小型Zachary空手道俱乐部网络的说明性示例。请注意如何将邻接矩阵压缩为每个节点的二维嵌入向量,以及这些向量如何聚类在一起以反映图形社区结构。大多数现实世界的嵌入将具有两个以上的维度(2 到 128 或更高)来表示具有数百万或数十亿个节点的更大的真实世界图,但基本直觉是相同的。

图片来源:作者

与上述相同的逻辑适用于关系、路径和整个图嵌入:嵌入向量中的相似性应近似于图结构中的相似性。这样可以在保持重要信号的同时完成压缩,使嵌入可用于各种下游 ML 任务。

与传统图形算法相比,非GNN嵌入可以从减少的手动工作量和所需的SME中受益。虽然非GNN嵌入通常需要超参数调优才能正确,但它们往往更容易在不同的图上自动化和泛化。此外,一些非GNN嵌入,如FastRP和HashGNN,可以很好地扩展到商品硬件上的大型图,因为它们不需要模型训练。与基于 GNN 的方法相比,这可能是一个巨大的好处。

但是,非GNN嵌入也有一些权衡。由于涉及更广义的数学运算,它们比经典图算法更不易于解释和解释。它们通常也是转导的,尽管Neo4j图数据科学的最新改进允许其中一些在某些应用程序中有效地进行归纳行为。我们将在本系列的后面更深入地介绍转导和感应设置;它与预测新的看不见的数据的能力有关,是GML的一个重要考虑点。

图神经网络 (GNN)

图网络的原理图

         GNN 是一种神经网络模型,它将图数据作为输入,将其转换为中间嵌入,并将嵌入馈送到与预测任务对齐的最后一层。此预测任务可以是有监督的(节点属性预测、链接预测、图属性预测)或无监督的(聚类、相似性或只是用于表示学习的最终输出嵌入)。因此,与经典算法和非GNN嵌入不同,经典算法和非GNN嵌入将结果作为特征传递给下游ML模型,特别是对于监督任务,GNN是完全端到端的图形原生解决方案。

        GNN 具有与完整的端到端解决方案相关的各种好处。值得注意的是,中间嵌入是在训练过程中学习的,理论上,它会自动从图中推断出最重要的信息。由于具有经过训练的模型,最新的GNN也是归纳的。

        GNN也有一些弱点。这包括高复杂性、缩放困难以及低可解释性和可解释性。由于过度平滑和其他数学原理,GNN 也可能在深度方面受到限制。

        我将在我的下一篇博客GNN:它们是什么以及它们为什么重要中更多地讨论GNN。同时,如果你想开始学习图机器学习,请查看Neo4j图数据科学。数据科学家和工程师可以在此处找到入门技术文档。

六、总结一下

        这篇文章的最大收获:

  • 图形机器学习 (GML) 是一个广泛的领域,具有许多用例应用程序,包含多个不同的监督和无监督 ML 任务
  • GML的主要目的之一是压缩大型稀疏图结构,同时保持用于预测和推理的重要信号。
  • GNN 是实现此压缩的多种 GML 方法之一。
参考和引用

扎克·布鲁门菲尔德

 

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

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

相关文章

SSIS对SQL Server向Mysql数据转发表数据 (一)

开发工具 Visual Stuido 2019 、SSIS、SQL Server 2016、Mysql 8.0.30 1、配置VS2019的添加相应的功能,勾选SQL Server Data Tools,下载就行我用的VS2019版本还需要下载下面几个插件,链接我放在下面了 Microsoft Analysis Services Projects - Visual St…

CSS伪元素详解以及伪元素与伪类的区别

伪元素常常被误解为伪类,主要在于他们的语法相似,都是对于选择器功能的扩展,相似程度很高导致被混淆。 本文通过详细介绍伪元素和常见的使用方法,最后也会分析下伪元素与伪类的基本区别。 基本描述 CSS伪元素也是应用于选择器的…

结构型-代理模式(Proxy Pattern)

概述 代理模式是一种结构型设计模式,它使得代理对象可以控制对实际对象的访问。在代理模式中,代理对象通过持有对实际对象的引用,来代替实际对象进行操作。 代理对象对客户端隐藏了实际对象的细节,并可以在调用实际对象之前或之…

【ARM 常见汇编指令学习 4 -- ARM64 比较指令 cbnz 与 b.ne 区别】

文章目录 B.NE 指令格式CBNZ 指令格式 上篇文章&#xff1a;ARM 常见汇编指令学习 3 – ARM64 无符号位域提取指令 UBFX 下篇文章&#xff1a;ARM 常见汇编指令学习 5 – arm64汇编指令 wzr 和 xzr B.NE 指令格式 B.NE <label>B.NE指令的含义是&#xff1a;如果上一个指…

无线温湿度信息收集点模块的组成和工作状态及编程与组网建议

在传感技术与物联网的不断发展下&#xff0c;无线温湿度信息收集点模块作为一种重要的终端设备&#xff0c;被广泛应用于各个领域。本文将详细介绍该模块的组成和工作状态&#xff0c;并给出编程和组网的建议。 一、组成 该无线温湿度信息收集点模块由以下几个核心组成部分构成…

自然语言处理从入门到应用——LangChain:模型(Models)-[文本嵌入模型Ⅰ]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 本文将介绍如何在LangChain中使用Embedding类。Embedding类是一种与嵌入交互的类。有很多嵌入提供商&#xff0c;如&#xff1a;OpenAI、Cohere、Hugging Face等&#xff0c;这个类旨在为所有这些提供一个标准接口。 …

安卓:百度地图开发(超详细)

一、百度地图介绍 百度地图SDK是一套供开发者使用的软件开发工具包&#xff08;SDK&#xff09;&#xff0c;用于在Android应用程序中集成和使用百度地图功能。通过使用百度地图SDK&#xff0c;开发者可以实现在自己的应用中显示地图、获取定位信息、进行搜索、导航等功能。 百…

算法----二叉搜索树中第K小的元素

题目 二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff…

docker swarm查看日志汇总

目录 从头显示所有日志并持续输出 显示末尾最后5行并持续输出 查看最近五分钟内的日志 查看指定时间之后的日志并持续输出 从头显示所有日志并持续输出 docker service logs -f xx 显示末尾最后5行并持续输出 docker service logs -f -n 5 xx或docker service logs -f…

STL中的神秘“指针”:迭代器

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;C学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大…

NAT协议(网络地址转换协议)详解

NAT协议&#xff08;网络地址转换协议&#xff09;详解 为什么需要NATNAT的实现方式静态NAT动态NATNAPT NAT技术的优缺点优点缺点 NAT协议是将IP数据报头中的IP地址转换为另外一个IP地址的过程&#xff0c;主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代…

2023-7-26-第二十三式解释器模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

[vue] 新项目配置整理(没写完,回头有空继续)

省流版(vue2项目)&#xff1a; 脚手架&#xff1a;vue create xxxx vuex&#xff1a;npm i vuex3 router : npm install vue-router3 vue cli创建项目 vue create xxxx(项目名称) 添加基本配置 module.exports {lintOnSave: false, // 关闭eslint检查publicPath:./, //…

Longhorn vs Rook vs OpenEBS vs Portworx vs IOMesh:细说 5 款 K8s 持久化存储产品优劣势

云原生时代下&#xff0c;越来越多的企业开始使用 Kubernetes&#xff08;K8s&#xff09;承载数据库、消息中间件等“生产级”有状态工作负载。由于这些应用对数据持久保存、性能、容量扩展和快速交付具有较高的要求&#xff0c;企业往往需要采用专为 Kubernetes 环境设计的持…

【异常错误】deepspeed:Cannot specify num_nodes/gpus with include/exclude(deepspeed配置GPU id)

今天在使用deepspeed进行训练的时候&#xff0c;本来想使用GPU 4,5,6,7&#xff0c;但是设置了如下命令还是不管用&#xff1a; export CUDA_VISIBLE_DEVICES4,5,6,7 最后在deepspeed的配置文件中进行配置&#xff0c;才得以解决&#xff0c;期间遇到错误&#xff1a; [2023-0…

ViT-vision transformer

ViT-vision transformer 介绍 Transformer最早是在NLP领域提出的&#xff0c;受此启发&#xff0c;Google将其用于图像&#xff0c;并对分类流程作尽量少的修改。 起源&#xff1a;从机器翻译的角度来看&#xff0c;一个句子想要翻译好&#xff0c;必须考虑上下文的信息&…

使用easyui的tree组件实现给角色快捷分配权限功能

这篇文章主要介绍怎么实现角色权限的快捷分配功能&#xff0c;不需要像大多数项目的授权一样&#xff0c;使用类似穿梭框的组件来授权。 具体实现&#xff1a;通过菜单树的勾选和取消勾选来给角色分配权限&#xff0c;在这之前&#xff0c;需要得到角色的菜单树&#xff0c;角色…

笔记整理-SpringBoot中的扩展点

SpringBoot有哪些扩展点 aware 感知类接口 aware系列的扩展接口&#xff0c;允许spring应用感知/获取特定的上下文环境或对象。bean生命周期控制类接口 bean生命周期类的接口&#xff0c;可以控制spring容器对bean的处理。app生命周期控制类接口 app生命周期控制类接口&#xf…

【Lua学习笔记】Lua进阶——Table,迭代器

文章目录 官方唯一指定数据结构--tabletable的一万种用法字典和数组 迭代器ipairs()pairs() 回到Table 在【Lua学习笔记】Lua入门中我们讲到了Lua的一些入门知识点&#xff0c;本文将补充Lua的一些进阶知识 官方唯一指定数据结构–table 在上篇文章的最后&#xff0c;我们指出…

第九十四回 如何打造一个网络框架

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了"如何mock数据"相关的内容&#xff0c;本章回中将介绍如 何打造一个网络框架闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 最近在项目中使用dio处理网络相关的内容&#xff0c;有些地方的代…