图机器学习-图神经网络

news2024/11/23 9:01:04

图神经网络

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

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邻居节点收集到的信息。

在这里插入图片描述

一个比较经典的想法如上所示。个人比较疑惑的点在于 h v ( 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的重要程度 e v u e_{vu} evu(注意: e v u e_{vu} evu e u v e_{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

在这里插入图片描述

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

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

相关文章

win环境nginx下载安装和基本操作使用解析

win环境nginx下载安装和基本操作是我们技术人员必备的技能,今天我们大概梳理一下: 下载 地址:nginx: download 进入后点击: 选择某个版本,就可以下载了,然后解压到某个目录,进入配置文件&…

RAM IP Core

官方文档:ZYNQ 存储资源指导手册 (DS109) RAM 全称 Random Access Memory,随机存取存储器。 随时将数据写入任意指定地址的存储单元,或从任意地址读出数据。读写的速度是由时钟频率决定的。 RAM主要用于存放程序运行的中间数据、运算结果等…

MySQL实战45讲深入浅出索引下

select * from T where k between 3 and 5这个语句的执行流程是: 在 k 索引树上找到 k3 的记录,取得 ID 300;再到 ID 索引树查到 ID300 对应的 R3;在 k 索引树取下一个值 k5,取得 ID500.再回到 ID 索引树查到 ID500 …

深度学习-第T1周——实现mnist手写数字识别

深度学习-第T1周——实现mnist手写数字识别深度学习-第P1周——实现mnist手写数字识别一、前言二、我的环境三、前期工作1、导入依赖项并设置GPU2、导入数据集3、归一化4、可视化图片5、调整图片格式四、构建简单的CNN网络五、编译并训练模型1、设置超参数2、编写训练函数六、预…

【Python】Jupyter .ipynb

Jupyter启动Hello JupyterMarkdown纵然 Anaconda Pycharm 非常好用,但是既然学到 Jupyter,那就多掌握一份技能,毕竟 Jupyter 的确有他的优势在。 我认为 Jupyter 对于 Python 初学者来说,非常友善,他将一整个代码划分…

c#学习笔记

目录1.语句块2.Write和WriteLine的区别:3.params4.托管代码和非托管代码5.DllImport的使用:6.WriteLine、ReadLine和ReadKey:7.C#中访问修饰符8.类型的实例化9.成员可以分为两种:数据成员和函数成员10.枚举enum和结构struct的区别…

使用Debussy加载设计项目

Debussy是NOVAS Software, Inc(思源科技)用来进行HDL Debug & Analysis的工具,这套软体主要不是用来跑模拟或看波形,它最强大的功能是:能够在HDL source code、schematic diagram、waveform、state bubble diagram之间,即时做…

蓝桥杯-考勤刷卡

蓝桥杯-考勤刷卡1、问题描述2、解题思路3、代码实现1、问题描述 小蓝负责一个公司的考勤系统, 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗。 当员工刷卡时, 会在后台留下一条记录, 包括刷卡的时间和员工编号, 只 要在一天中员工刷过一次卡, 就认为他到岗了。 现在…

电子技术——数字逻辑反相器

电子技术——数字逻辑反相器 在学习完如何通过CMOS数字电路实现组合逻辑,接下来我们评估这种数字CMOS电路的性能。首先,我们考虑最基本的部件——反相器。 电压传导特性 下图是一个反相器的原理图: 在之前,我们已经介绍了MOSFE…

ATTCK v12版本战术介绍持久化(三)

一、引言在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术、持久化战术(一)及(二)知识,本期我们为大家介绍ATT&CK 14项战术中持久化战术(三)涉及的剩余子技术&…

汇编语言程序设计(一)

前言 在学习汇编语言之前,我们应该要知道汇编语言他是一门怎么样的语言。汇编语言是直接工作在硬件上的一门编程语言,学习汇编语言之前最好先了解一下计算机硬件系统的结构和工作原理。学习汇编语言的重点是学习如何利用硬件系统的编程结构和指令集进而…

高通平台开发系列讲解(显示篇)Gralloc模块

文章目录 一、什么是Gralloc模块二、Gralloc加载流程三、Gralloc模块的加载四、Gralloc设备的加载五、 fb设备的加载沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍显示过程中Gralloc模块。 一、什么是Gralloc模块 通过加载Gralloc抽象层,可以打开fb设备和…

【游戏逆向】寻路函数隐藏检测点分析

案例: 某游戏出现调用寻路函数失败异常崩溃。 基本情况分析: 在刚登陆游戏的时候直接调用寻路函数崩溃。 手动寻路以后再调用寻路不崩溃。(排除了函数编写错误的可能) 猜测可能检测方法: 有某一个标志位(全局类型)在游戏刚登陆的时候没…

【VS】【Qt】vs+ qt .natvis 失效问题

【VS】【Qt】vs qt .natvis 失效问题 .natvis文件用于调试时候自定义显示自定义类型的可视化提示。 一般这类文件存在 C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\Common7\Packages\Debugger\Visualizers路径下。 .natvis文件的规则在此不介绍&#xf…

剑指 Offer 23 链表中环的入口结点

摘要 链表中环的入口结点_牛客题霸_牛客网 剑指 Offer II 022. 链表中环的入口节点 141. 环形链表 142. 环形链表 II 一、是否有环(快慢指针) 我们可以根据上述思路来解决本题。具体地,我们定义两个指针,一快一慢。慢指针每次…

了解Cesium的笛卡尔类型和位置变量的单位

var position Cesium.Cartesian3.fromDegrees(100, 100, 2); 前文输出了position变量,是一个六位数,还带有多位小数;下面来看一下相关类的定义和position的单位;单位如果不对的话放置的模型可能到屏幕外面; 看一下相…

太赫兹频段耦合器设计相关经验总结

1拿到耦合器的频段后,确定中心频率和波导的宽度和高度 此处贴一张不同频段对应的波导尺寸图 需要注意的是1英寸 2.54厘米,需注意换算 具体网址:矩形波导尺寸 | 扩维 (qualwave.com) 仅列举我比较常用的太赫兹频段部分 2.以220~320GHz频段&a…

《后疫情时代大众行为及情感变化研究报告》|人们的饮食、工作、运动、社交、娱乐、学习、购物有哪些改变?

疫情三年,改变了很多人的生命轨迹。有人长期居家,宅出了一身的厨艺;有人启动线上模式,习惯了居家办公;有人失去了工作,生活一度陷入困境;有人痛定思痛,准备换个城市换个活法。 个体…

项目管理工具dhtmlxGantt甘特图入门教程(十六):数据序列转化为XML和JSON

这篇文章给大家讲解dhtmlxGantt将数据转化为XML何JSON格式。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足应用程序的所有需求,是完善的甘特图图表库 DhtmlxGantt正版试用下载(qun:764148812&#…

提取DWI数据的FA和MD

DWI简介 扩散加权磁共振成像(DWI )是使用特定的 MRI 序列以所获得的脑成像数据,该成像手段依靠水分子的扩散在 MR 图像中产生对比度。优于组织中的分子扩散不是自由的,而是反映了与许多障碍物(例如大分子,纤…