碎片笔记|图数据与图神经网络基础介绍

news2024/11/20 18:41:20

前言:前段时间了解了一下图神经网络,本篇博客记录一下相关知识,以备不时之需。

强烈推荐这篇博客(作者来自 Google Research),个人认为是图神经网络基础入门的不二选择!

目录

  • 一、图数据
    • 1.1 定义&表示形式
    • 1.2 相关任务
      • 1.2.1 图层面的分类 / 回归
      • 1.2.2 节点层面的分类 / 回归
      • 1.2.3 边层面的分类 / 回归
    • 1.3 建模难点
  • 二、图神经网络
    • 2.1 工作原理
    • 2.2 经典模型
      • 2.2.1 Graph Convolution Networks (GCN)
      • 2.2.2 Graph Sample and Aggregate (GraphSAGE)
      • 2.2.3 Graph Attention Networks (GAT)


一、图数据

随着机器学习、深度学习的发展,语音、图像、自然语言处理逐渐取得了很大的突破,然而语音、图像、文本都是很简单的序列或者网格数据,是很结构化的数据,深度学习很善于处理该种类型的数据。
在这里插入图片描述

然而现实世界中并不是所有的事物都可以表示成一个序列或者一个网格,例如社交网络、知识图谱、复杂的文件系统等,也就是说很多事物都是非结构化的。

在这里插入图片描述

1.1 定义&表示形式

图数据是由节点(Node)和边(Edge)组成的数据,最简单的方式是使用邻接矩阵来表示图形结构,从而捕捉图形中的节点和边的相关性。假设图中的节点数为n,那么邻接矩阵就是一个n*n的矩阵,如果节点之间有关联,则在邻接矩阵中表示为1,无关联则为0。如下图,鲁班与其他英雄都没有关联,表现在邻接矩阵当中就是它所在的行与列为全零。
在这里插入图片描述
图数据的信息包含3个层面,分别是节点信息(V)、边信息(E)、图整体(U)信息,它们通常是用向量来表示。而图神经网络就是通过学习数据从而得到3个层面向量的最优表示。

1.2 相关任务

1.2.1 图层面的分类 / 回归

例:分子是天然的图,原子是节点,化学键是边。现在要做一个分类,有一个苯环的分子分一类,两个苯环的分子分一类。这是图层面的分类任务。

在这里插入图片描述

1.2.2 节点层面的分类 / 回归

例:假设一个跆拳道俱乐部里有A、B两个教练,所有的会员都是节点。有一天A、B两个跆拳道教练决裂,那么各个学员是愿意和A在一个阵营还是愿意和B在一个阵营?这是节点层面的分类任务。

在这里插入图片描述

1.2.3 边层面的分类 / 回归

例:UFO拳击赛上,首先通过语义分割把台上的人和环境分离开来。赛场上的人都是节点,现在要做一个预测,预测的是这些人之间的关系,是对抗关系?还是观众watch的关系?还是裁判watch的关系?这是边层面的分类任务。

在这里插入图片描述

1.3 建模难点

相比于简单的文本和图像,这种网络类型的非结构化的数据非常复杂,处理它的难点包括:

  • 图的大小是任意的,图的拓扑结构复杂,没有像图像一样的空间局部性
  • 图没有固定的节点顺序,或者说没有一个参考节点
  • 图经常是动态图,而且包含多模态的特征

那么对于这类数据我们该如何建模呢?能否将深度学习进行扩展使得能够建模该类数据呢?这些问题催生了图神经网络。


二、图神经网络

相比较于神经网络最基本的网络结构全连接层(MLP),特征矩阵乘以权重矩阵,图神经网络多了一个邻接矩阵。计算形式很简单,三个矩阵相乘再加上一个非线性变换。

在这里插入图片描述

2.1 工作原理

一个比较常见的图神经网络的应用模式如下图,输入是一个图,经过多层图卷积等各种操作以及激活函数,最终得到各个节点的表示,以便于进行节点分类、链接预测、图与子图的生成等任务。

在这里插入图片描述
对图神经网络有一个直观的感受与理解之后,我们来了解一下它的工作原理,如下图所示,GNN是对图中的所有属性进行的一个可以优化的变换,它的输入是一个图,输出也是个图。它只对属性向量(即上文所述的V、E、U)进行变换,但它不会改变图的连接性(即哪些点互相连接经过GNN后是不会变的)。在获取优化后的属性向量之后,再根据实际的任务,后接全连接神经网络,进行分类和回归。大家可以把图神经网络看做是一个图数据的在三个维度的特征提取器。

在这里插入图片描述

GNN对属性向量优化的方法叫做消息传递机制。比如最原始的GNN是SUM求和传递机制;到后面发展成图卷积网络(GCN)就考虑到了节点的度,度越大,权重越小,使用了加权的SUM;再到后面发展为图注意力网络GAT,在消息传递过程中引入了注意力机制;目前的SOTA模型研究也都专注在了消息传递机制的研究。见下图所示。

在这里插入图片描述

接下来将以几个经典的GNN models为线来介绍图神经网络的发展历程。

2.2 经典模型

2.2.1 Graph Convolution Networks (GCN)

论文信息:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS (ICLR, 2017)
代码:https://github.com/tkipf/pygcn
数据集:https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz

GCN可谓是图神经网络的“开山之作”,它首次将图像处理中的卷积操作简单的用到图结构数据处理中来。

GCN的缺点也是很显然易见的,第一,GCN需要将整个图放到内存和显存,这将非常耗内存和显存,处理不了大图;第二,GCN在训练时需要知道整个图的结构信息(包括待预测的节点), 这在现实某些任务中也不能实现(比如用今天训练的图模型预测明天的数据,那么明天的节点是拿不到的)。

2.2.2 Graph Sample and Aggregate (GraphSAGE)

为了解决GCN的两个缺点问题,GraphSAGE被提了出来。在介绍GraphSAGE之前,先介绍一下Inductive learning(归纳学习)和Transductive learning(转导学习)。注意到图数据和其他类型数据的不同,图数据中的每一个节点可以通过边的关系利用其他节点的信息。这就导致一个问题,GCN输入了整个图,训练节点收集邻居节点信息的时候,用到了测试和验证集的样本,我们把这个称为Transductive learning。然而,我们所处理的大多数的机器学习问题都是Inductive learning,因为我们刻意的将样本集分为训练/验证/测试,并且训练的时候只用训练样本。这样对图来说有个好处,可以处理图中新来的节点,可以利用已知节点的信息为未知节点生成embedding,GraphSAGE就是这么干的。

GraphSAGE是一个Inductive Learning框架,具体实现中,训练时它仅仅保留训练样本到训练样本的边,然后包含Sample和Aggregate两大步骤,Sample是指如何对邻居的个数进行采样,Aggregate是指拿到邻居节点的embedding之后如何汇聚这些embedding以更新自己的embedding信息。

2.2.3 Graph Attention Networks (GAT)

GAT在传播过程引入自注意力(self-attention)机制,每个节点的隐藏状态通过注意其邻居节点来计算。

论文信息:GRAPH ATTENTION NETWORKS (ICLR, 2018)
代码:https://github.com/Diego999/pyGAT

在这里插入图片描述


参考资料

  1. A Gentle Introduction to Graph Neural Networks (distill.pub)
  2. Understanding Convolutions on Graphs (distill.pub)
  3. 图神经网络(GNN)最简单全面原理与代码实现! - 知乎 (zhihu.com)
  4. 图神经网络从入门到入门 - 知乎 (zhihu.com)
  5. 图神经网络入门(一)GCN图卷积网络 - 知乎 (zhihu.com)
  6. pytorch框架下—GCN代码详细解读_gcn代码详解_MelvinDong的博客-CSDN博客
  7. Graph Attention Networks (GAT)pytorch源码解读 - 知乎 (zhihu.com)
  8. 零基础多图详解图神经网络(GNN/GCN)【论文精读】_哔哩哔哩_bilibili
  9. 1. 1.1_图基本知识_哔哩哔哩_bilibili

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

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

相关文章

@RequestMapping 注解以及其它使用方式

😀前言 本篇主要讲解RequestMapping 注解以及其它使用方式 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉&#…

SpringMVC之异常处理

SpringMVC之异常处理 异常分为编译时异常和运行时异常,编译时异常我们trycatch捕获,捕获后自行处理,而运行时异常是不可预期的,就需要规范编码来避免,在SpringMVC中,不管是编译异常还是运行时异常&#xff…

jenkins 连接服务器,提示Can‘t connect to server

在Jenkins 添加服务器时,提示 Cant connect to server,如图 搞了好久,不知道为什么不行~原来是行的,现在删了 新建一个也不行。

浅谈KNX总线技术在图书馆智能照明系统的应用

安科瑞 华楠 摘要:系统引入KNX总线实现的照明分布式智能控制,在提高馆所照明系统的节能效果、视觉效果和稳定性的基础上,展现了KNX总线部署便捷、扩充性强、可靠性高等自身要求,通过提升照明管理效率,营造了信息时代背…

蒙特卡洛树搜索(MCTS)在AlphaGo Zero中

蒙特卡洛树搜索(MCTS)在AlphaGo Zero中 一、说明 蒙特卡洛树(Monte Carlo Tree)是一种搜索算法,主要用于解决决策问题。它的核心思想是通过模拟游戏过程,评估各个节点的胜率,从而选择最优策略。…

dom靶场

靶场下载地址: https://www.vulnhub.com/entry/domdom-1,328/ 一、信息收集 获取主机ip nmap -sP 192.168.16.0/24netdiscover -r 192.168.16.0/24端口版本获取 nmap -sV -sC -A -p 1-65535 192.168.16.209开放端口只有80 目录扫描 这里扫描php后缀的文件 g…

cadence virtuoso GBW PM公式仿真

在virtuoso中用公式calculate的方法仿真单位增益带宽GBW和相位裕度 首先进行stb仿真 将增益曲线send to calculate,调用cross函数,threshold value设置为0,求0dB时的横坐标 GBW: 将相位曲线send to calculate,调用va…

TuyaOS 3.8.0操作系统新鲜出炉!IoT开发门槛再次被降低

作为降低物联网开发门槛的 TuyaOS 操作系统,此次迎来了重大更新!TuyaOS 3.8.0 新版本不仅更新了物联网各个板块的开发框架,还能实现与其他开发平台的无缝接入,致力于让开发者更轻松便捷地接入涂鸦 IoT PaaS。 TuyaOS 3.8.0 优化和…

等保案例 6

用户简介 江苏省监狱管理局是江苏省司法厅管理下的副厅级部门管理机构,是主管全省监狱工作的机关。随着信息化的发展,江苏省监狱管理局的监狱业务对网络和信息系统的依赖不断增加,网络流转的信息量不断增大,信息化建设的需求也日…

docker 第一章

目录 1.安装 docker 2.镜像、容器 3.总结 1.安装 docker 2.镜像、容器 3.总结 容器在 linux 上的本机运行,与其他容器共享主机的内核。它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量级。

Python基础教程:私有变量的访问和赋值教程

嗨喽~大家好呀,这里是魔王呐 ❤ ~! 首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 doc, __i…

File Upload

File Upload 文件上传功能是大部分WEB应用的常用功能,网站允许用户自行上传头像、照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,…

Camunda 7.x 系列【17】BusinessKey

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址:https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 需求场景2. 案例演示2.1 创建请假申请2.2 启动流程2.3 流程关联业务查询2.4 业务关联流程…

❤ 好玩有趣的Windows本地域名预设映射

❤ Win10 如何把本地ip映射成域名 1、 配置: Windows本地域名预设映射 打开相关的地址: C:\Windows\System32\drivers\etc配置方式: 打开hosts 文件 域名如:127.0.0.1 www.baidu.com 127.0.0.1 www.sellercentral.amazon.com2…

计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析

目录 一、引言1.1 计算机视觉的定义1.1.1 核心技术1.1.2 应用场景 1.2 历史背景及发展1.2.1 1960s-1980s: 初期阶段1.2.2 1990s-2000s: 机器学习时代1.2.3 2010s-现在: 深度学习的革命 1.3 应用领域概览1.3.1 工业自动化1.3.2 医疗图像分析1.3.3 自动驾驶1.3.4 虚拟现实与增强现…

日历应用行业研究:2022年全球市场规模大约为15.8亿元

日历应用程序可以通过提醒、安排会议和规划用户的日期、星期和月份来创建基本的时间块条目,以确保用户随时随地、尽可能高效地利用他们的时间。日历应用作为一个高效的时间管理工具,需要与项目管理工具,google邮箱,Outlook邮箱&am…

Go 安装配置

介绍Ubuntu20.04 安装和配置Go 1.安装Go 去这个地方下载Go https://go.dev/doc/install 如果之前安装过,可以参考这个(没有可以忽略) 下载完成后执行 sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz 然后修改环境变量 sudo ge…

SpringBoot的配置文件以及日志设置

在使用SpringBoot开发的过程中我们通常会用到配置文件来设置配置信息 以及使用日志来进行记录我们的操作,方便我们对错误的定位 配置文件的作用在于:设置端口,设置数据库连接信息,设置日志等等 在SpringBoot中,配置…

vue基础知识五:请描述下你对vue生命周期的理解?在created和mounted这两个生命周期中请求数据有什么区别呢?

一、生命周期是什么 生命周期(Life Cycle)的概念应用很广泛,特别是在政治、经济、环境、技术、社会等诸多领域经常出现,其基本涵义可以通俗地理解为“从摇篮到坟墓”(Cradle-to-Grave)的整个过程在Vue中实…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度,是前端性能优化中非常重要的环节,结合工作中的实践总结,梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令: "…