当前位置: 首页 > news >正文

图机器学习-图神经网络

图神经网络

前面讲了图机器学习的一些传统方法,现在正式进入到课程的核心部分:图神经网络。

Design of GNN

那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢?

在这里插入图片描述

对于别的类型的神经网络,往往我们都是处理一些类似网格的或者序列信号,但是这些方法往往不能直接运用到图数据中。一个原因是在图数据中不同的节点往往没有固定顺序,拓扑结构非常复杂,并且不同图的大小往往不一样(比如做分子结构毒性预测,不同的分子很可能含有的原子数目不一样)。另一个原因是图数据很可能具有多模态的信息,甚至可能出现异质的节点。

一个处理图数据最简单的想法是将描述图结构的邻接矩阵和节点的特征整合成一个新的矩阵,并且将这个矩阵放到传统的神经网络中作为输入。

在这里插入图片描述

这个方法的问题在于神经网络输入层的大小和节点的数量呈O(|V|)的关系,对于不同大小的图没法处理,并且对于节点在邻接矩阵中的位置很敏感。

对于graph representation我们需要保证permutation invariance的性质,即对于同一个图不同的order plan经过一个函数f过后的值需要是相同的。
在这里插入图片描述
对于node representation我们需要保证permutation equivariance的性质。
在这里插入图片描述

对于同一个图的相同位置的节点,经过函数f映射过后需要拥有相同的值。

图神经网络里面包含了多个permutation equivariant/invariant的函数。

图神经网络的一个key idea就是通过聚合节点的local network的邻居的信息来生成node embedding。

在这里插入图片描述

每一个计算图的深度可以是任意的,

在这里插入图片描述

对于layer0的embedding就是当前节点的feature,其它layer的则是结合了节点本身信息和它从k hop邻居节点收集到的信息。

在这里插入图片描述

一个比较经典的想法如上所示。个人比较疑惑的点在于hv(k)h_v^{(k)}hv(k)是怎么求出来的,按照计算图来看,单个的计算图中假设第(k+1)layer中有节点v那么第k个layer中必然没有节点v。目前我倾向于认为由于有多个计算图的存在,每个计算图中对于相同节点的embedding都是相同的,所以即使某一个计算图中没有某个embedding也没有关系。

在实际的操作的过程中,很多aggregation的操作很多时候能够使用(稀疏)矩阵运算给高效的执行。

对于图神经网络有一个很重要的点是它的inductive capability,在我们训练的过程中不同的计算图中模型的参数是共享的。此时模型的参数是sublinear in |V|,并且可以泛化到没有见过的节点。

还有一个比较有意思的点是在课件中提到transformer可以被视作一种特殊的GNN,具体可以参考

Transformers are Graph Neural Networks | by Chaitanya K. Joshi | Towards Data Science

一层GNN主要做了两件事情,第一件是收集邻居节点的信息,第二件事情是将这些信息和自己本身的信息做aggregation。

Classical GNN Layers

Graph Convolutional Networks (GCN)

将GCN layer写成message+aggregation的形式

在这里插入图片描述

我们可以得到GCN的aggregation其实是做了一个sum的操作,而message的部分则是做了一个 normalization。

GraphSAGE

在这里插入图片描述

这个是做了一个两阶段的aggregation,先是从邻居节点进行聚合,然后是将聚合的产物和上一层的本节点的embedding拼接然后再进行聚合。公式里面的AGG有多种方式,比如常见的取mean,取max等等,甚至还可以接一个LSTM。在GraphSAGE中还可能会使用l2 normalization。

Graph Attention Network

在前面介绍的GCN和GraphSAGE中对于邻居节点都赋予了相同的重要性,在GAT中我们使用注意力机制,使得能够给不同的邻居节点分配不同的权重。

在这里插入图片描述

假设我们有两个不同的节点u,v。我们可以使用下面的式子来计算u的消息对于v的重要程度evue_{vu}evu(注意:evue_{vu}evueuve_{uv}euv是不同的)。

在这里插入图片描述

这个最终注意力的计算需要再经过一个softmax操作。

我们也可以有multi-head attention,最终再整合多个attention head的结果。

Others

在GNN中假如神经网络的层数过多很可能会出现over smoothing的情况。不同的节点可能最终embedding的结果非常相似导致效果不好。这是由于增大层数之后GNN的receptive field变大导致不同的节点的field高度重叠,增大了区分的难度。

在这里插入图片描述

假如我们真的需要很多层的GNN我们可以参考Resnet,创造一些shortcut来延缓over smoothing的副作用。

在这里插入图片描述

使GNN的表达能力变强的方法:

(1)让aggregation操作都使用神经网络来刻画。

在这里插入图片描述

(2)在GNN layer前面或者后面增加别的layer

在这里插入图片描述

相关文章:

图机器学习-图神经网络

图神经网络 前面讲了图机器学习的一些传统方法,现在正式进入到课程的核心部分:图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢? 对于别的类型的神经网络,往往我们都是处理一些类似网…...

配置Airbyte资源限制

资源限制有三种不同的级别配置:Instance-wide - 应用到Airbyte实例创建的Sync Job的所有容器上。Connector-specific - 应用到Airbyte实例创建的Sync Job的所有指定类型连接器的容器上Connection-specific - 应用到Airbyte实例创建的Sync Job的所有指定管道的容器上…...

python实现PCA降维画分类散点图并标出95%的置信区间

此代码以数据集鸢尾花为例,对其使用PCA降维后,绘制了三个类别的样本点和对应的置信圆(即椭圆)。先放效果图。 下面是完整代码: from matplotlib.patches import Ellipsedef plot_point_cov(points, nstd3, axNone, **…...

Mysql高级之索引结构详解

Mysql的索引详解1.索引定义2.索引结构2.1数据结构分析2.1.1熟知的数据结构2.1.2分析为什么这么多的数据结构不全适用于索引结构2.2Hash结构2.3B tree结构3.索引分类3.1聚集索引(聚簇索引)3.2非聚集索引(稀疏索引)3.3联合索引3.4主…...

【线程-J.U.C】

Lock J.U.C最核心组件,Lock接口出现之前,多线程的并发安全只能由synchronized处理,但java5之后,Lock的出现可以解决synchronized的短板,更加灵活。 Lock本质上是一个接口,定义了释放锁(unlock&…...

docker布署spring boot jar包项目

目录docker 安装创建目录制作镜像启动容器查看日志docker 安装 Docker安装、详解与部署 创建目录 服务器中创建一个目录,存放项目jar包和Dockerfile 文件 mkdir /目录位置创建目录后创建Dockerfile文件,上传jar包到同一目录下 创建dockerfile vim Doc…...

极简Vue3教程--Pinia状态管理

Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近pia(西班牙语中的菠萝)的词;Pinia开始于大概2019年,最初是作为一个实验为Vue重新设计状态管理,让它用起来像组合式API&#x…...

常用的map转bean互转方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 常用的map转bean互转方法一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib BeanMap工具类 不太好用五、reflect 反射来玩 不太好玩六、I…...

2.4G收发一体芯片NRF24L01P跟国产软硬件兼容 SI24R1对比

超低功耗高性能 2.4GHz GFSK 无线收发器芯片Si24R1,软硬件兼容NRF24L01P. Si24R1 是一颗工作在 2.4GHz ISM 频段,专为低功耗无线场合设计,集成嵌入式ARQ 基带协议引擎的无线收发器芯片。工作频率范围为 2400MHz-2525MHz,共有 126个…...

设计模式之七大原则(一)——单一职责原则、开放-关闭原则

目录一、设计模式的目的二、设计模式的七大原则1.单一职责原则2.开放-关闭原则一、设计模式的目的 设计模式的目的是为了提高代码重用性、可读性、可扩展性、可靠性,使得程序呈现出高内聚、低耦合的特性。 代码重用性(相同功能的代码,不用多…...

C++ set、unordered_set、multiset它们之间的区别与一些使用方法(不断更新)

set、unordered_set、multiset是什么?以及它们之间的区别 首先,它们三个都是C标准库提供的关联容器中的一种。只不过set、multiset容器是有序的,而unordered_set容器是无序的 std::set 是 C 标准库中的一个容器,其存储的元素按设…...

hadoop调优

hadoop调优 1 HDFS核心参数 1.1 NameNode内存生产配置 1.1.1 NameNode内存计算 每个文件块大概占用150byte,如果一台服务器128G,能存储的文件块如下 128 (G)* 1024(MB) * 1024(KB) * 1024(Byte) / 150 Byte 9.1 亿 1.1.2 Hadoop2.x 在Hadoop2.x中…...

EM@三角函数诱导公式

文章目录诱导公式单位圆坐标和三角函数记忆口诀符号看象限奇变偶不变例常用诱导公式🎈常用部分(5对)倒数关系六种三角函数间的转换关系小结ReflectionsShifts and periodicity诱导公式 诱导公式 - 维基百科,自由的百科全书 (wikipedia.org) 单位圆坐标…...

是不是只能学IT互联网技术才有发展前途?

当然不是,三百六十行,行行出状元。 但我们需要认清一个现实是,我们正处于一个信息爆炸的时代,掌握紧跟潮流的技术,才可以让我们更自信地面对每天的生活,才有多余的精力、财力来享受生活。“人生在世&#…...

Linux 进程:exit和_exit的辨析

目录1.接口与函数2.缓冲区3.exit 与 _exit(1)_exit(2)exit这里来认识exit函数和 _exit接口 ,它们的作用是类似的,都是在调用后退出程序,可以在程序的任何地方调用。 1.接口与函数 exit函数和_exit接口,一个函数,一个…...

智能电子标签——商超版价签

2.1英寸TFT黑白电子价签 ★ 快速变价,高效运营 ★ 市场实用,布局物联网未来 ★ 更好客户体验 ★ 降低系统成本,具备竞争力 ★ 2.1英寸黑白红电子价签 ★ 电池低能耗,常规使用三年 ★ 穿透力强不慣障碍 ★ 2.4G载波&#x…...

计算机网络自检

1 计网体系结构 因特网结构: 计网三个组成成分: 工作方式-其中2个部分: 功能-两个子网: 5个XAN分别是: 传输技术,两者的主要区别: 4种基本网络拓扑结构: 3种交换技术: 协…...

DC真实数据都有哪些?Filecoin为DC数据存储的解决方案又是什么?

对于生活在数字时代的我们而言,数据或许就和平日呼吸的空气一样,已经不需要我们再去思考其概念。我们的日常生活中无时无刻都有数据的身影,日常的购物消费、出行、学习、记录,当我们每天生活有数字化加持的小区里,工作…...

解决vscode无法自动更新

一.前言 要在vscode里面安装插件,被提示版本不匹配,然后得更新,然后我发现我的'帮助'菜单栏下没有检查更新,然后我去&…...

315线上知识竞赛答题活动方案及模板分享

315线上知识竞赛答题活动方案及模板分享在315国际消费者权益日来临之际, 很多单位推出有奖知识竞答, 希望大家在了解专业知识的同时, 还可以拿到自己喜欢的奖品!这是消费者委员会和监管局联合举办的“315消费知识在线有奖竞答”活…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...