李宏毅深度学习-图神经网络GNN

news2024/11/24 17:25:53

图卷积的开源代码网站DGL

好用的还是 GAT, GIN(指出最好的卷积 就是 hi + 邻居特征(而且只能用 sum))

Introduction

GNN 可以理解为是由 Graph(图) + Nerual Networks 组合而成的,图结构应该都在数据结构与算法里了解得很清楚,关键要解决的问题是:将图的结构和图中每个节点和边的特征转化为一般的神经网络的输入(张量)

常见GNN应用

可以做的事情主要包括:分类和生成
① 对化学分子结构特征进行分类,判断其特征是否属于会导致突变的那类
在这里插入图片描述

② 学习若干个分子结构特征后,能够去生成类似结构的分子(GraphVAE)

新冠靶向药的开发。
在生成的过程中可以加入很多constraint,例如:是新药,比较好合成,有效性等。
在这里插入图片描述

如何做

现有问题
1.How do we utilize the structures and relationship to help our model?关系杂
2.What if the graph is larger, like 20k nodes?模型大
3.What if we don‘t have the all the labels?无标签
看下面一个例子来理解,现有这样一个图结构:

蓝色是Unlabeled Node,褐色是Labeled Node
现在要推断黄圈中的节点的标签。
思想是A node can learn the structure from its neighbors(近朱者赤,近墨者黑), but how?
在这里插入图片描述
在这里插入图片描述
和filter相乘相加后就得到feature map。如何把卷积操作移植到Graph上?
Solution 1: Generalize the concept of convolution (corelation) to graph >> Spatial-based convolution空间
Solution 2: Back to the definition of convolution in signal processing>> Spectral-based convolution频域
第一种是把CNN的操作Generalize到GNN上。
第二种是借鉴信号处理中做法来进行卷积操作。

RoadMap

根据上面的两种Solutions,本次课程的内容如下:
在这里插入图片描述

Spatial-based GNN

基于空间特征的图神经网络

这个是solution 1,因此是根据CNN的卷积进行移植:
在这里插入图片描述
要把下面的图中箭头所指的节点进行更新得到下一层的状态

在这里插入图片描述
注意上图中的箭头所指的节点是
在这里插入图片描述
Terminology:
ØAggregate: 用 neighbor feature update 下一层的 hidden state
ØReadout: 把所有 nodes 的 feature 集合起來代表整个 graph(类似LSTM把整个句子向量压缩为一个向量)
在这里插入图片描述

法1:NN4G (Neural Networks for Graph)09年

input layer 首先经过基本的 embedding 之后到 hidden layer 0。然后更新的话是将其相邻的节点相加然后乘以权重再加上之前 input layer 的原始输入。

Aggregate 更新方法

每个隐藏层都是一个图,图中每个结点的权值 = 一个待学习的参数 w × 上一层这个结点所有相邻结点的权值和 + 原本在第一层 input layer 这个结点输入的值(例如: w 1 w_1 w1 * x 3 x_3 x3 就是 h 3 0 h_3^0 h30

需要注意的是,全连接神经网络的神经元是固定的,因此对于每个图输入后,最后进入全连接层的 vector 维度应该是一样的。因此 NN4G 使用的方法特点是:对于每个图都固定隐藏层数量,然后取每层的均值送入全连接神经网络,这样可以避免图大小的影响
在这里插入图片描述
关于为什么要相加的问题:如果不用相加的话,你就很难去处理节点间邻居数量不同这个巨大的区别 。另外,相加是最简单也是被证实最有效的利用邻点信息的方法。

Readout 方法:

通过求出整个图中的每个顶点间的特征均值(按照层数求平均),然后各自乘以相应的权重(需要学习)再把每个结点得到的结果相加。
在这里插入图片描述

法2:DCNN (Diffusion-Convolution Neural Network )15年

思想:对每一层进行更新时,第 n 层看离当前节点距离 n 的节点信息。
在这里插入图片描述

例如在第一层,更新结点 3 首先找到与它距离为 1 的节点(有 0、2、4),然后用这三个与节点距离为 1 的 结点的原始的输入相加取平均值(mean)再乘以权重;

在第二层,更新节点 3 首先找到与它距离为2的节点(有 1 和 自己本身,注意结点 3 和 3 本身的距离也是 2),然后用这几个符合条件的结点的原始的输入相加取平均值再乘以权重

这样就可以将每一层的节点特征组成一个矩阵,然后叠在一起。
当我们需要每个节点的feature 信息的时候,采用以下的方式来表示图中每个节点的特征:
在这里插入图片描述
每个节点的特征计算就把节点i对应的 h i 1 h_i^1 hi1 从堆叠结果中提取出来,然后点乘w即可。
在这里插入图片描述

如对节点 1 来说,也就是将每一层的结点 1 提出来,然后乘以权重得到最后结点 1 的表示。按照类似的操作可以得到其余结点的表示。

另一种方法:DGC (Diffusion Graph Convolution) —— 直接将每一层的结点 1 所在信息提出来相加求和
在这里插入图片描述

法3:MoNET (Mixture Model Networks)16年

特点:与之前只是将相关联结点信息相加求和相比,MoNET 考虑到一个节点的邻居跟之间的区别(例如,有的相邻结点和该结点之前的关系可能更重要一点)

思路

  • deg(x) 表示x的出入度数
  • u(x,y) 自定义的距离计算方式

这里定义的距离公式可以有不同的。也就是给每个节点不同的权重 weighted sum。
在这里插入图片描述

法4:GraphSAGE.18年

SAmple and aggreGatE
Can work on both transductive and inductive setting
GraphSAGE learns how to embed node features from neighbors
在这里插入图片描述
这个方法在提取邻居信息上提出了三种方式:
AGGREGATION: mean, max-pooling, or LSTM
在这里插入图片描述

法5:GAT (Graph Attention Networks).18年

特点:与 MoNET 相比,GAT 在定义距离公式时所用的权重 weighted sum 需要学习而得(相当于对邻居结点做 attention ,不同的邻居结点给出不同的 weight ),而不是事先规定好的。

在这里插入图片描述
在这里插入图片描述
GAT文献

理论:GIN (Graph Isomorphism Network)

提供了一些关于图神经网络什么方式的aggregate能够work的理论证明和结论。

更新第k层第v个节点的时候要把它的邻居做求和,然后加上该节点与某个常数的乘积。这里提的是直接求和,不是求平均,也不是做maxpooling。为什么?

特点:首先把邻居结点都求加相见 + 结点自己本身信息 × 系数,不用 maxpooling 和 meanpooling(例如在下图中,a 中 每个结点的特征值都一样。在邻居数值相同的状况,若选择 maxpooling 和 meanpooling,都无法确定最后选择的到底是 v 的哪个邻居结点,只有sum可以区别两者。 )

b:在邻居最大值相同的情况,取最大值会失败

c:在邻居最大值相同且平均相同的情况,只有总和成功

在这里插入图片描述
思想:用 sum 的方式对每个相邻结点的特征值相加 + 选用多层感知器(而不是一层)

公式中 ε 可以为 0,代表 其实 Graph 中所有相邻结点和其本身节点相加就可以。

Graph Signal Processing and Spectral-based GNN

这节讲的是solution 2,就是用信号处理的方式来进行特征提取。之前讲过,直接对图中的节点做卷积是不行的,因为不能把节点的邻居和CNN中的卷积核位置一一对应,然后做运算,于是借鉴信号处理的方法,先用傅里叶变化分别处理节点和卷积核,然后相乘,然后再反傅里叶变化得到结果

GCN

Graph Convolutional Networks 就是用上面的公式,设置k=1
在这里插入图片描述
展开:
在这里插入图片描述
最后形式:
在这里插入图片描述
大概意思是邻居乘以w取平均,然后加上bias,经过激活函数得结果。

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

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

相关文章

No.12 笔记 | 网络基础:ARP DNS TCP/IP与OSI模型

一、计算机网络:安全的基石 1. 网络的本质:数字世界的神经系统 定义:计算机的互联互通,实现资源共享和信息交换组成要素:发送者、接收者、介质、数据、协议(五大要素) 2. 网络架构&#xff1…

STM32PWM应用

一、输出比较(OC) OC(Output Compare)输出比较 可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前…

三菱FX3U定位控制接线示例(脉冲控制伺服)

一、FX3u系列基本单元(DC24V输入) 二、FX3u系列基本单元(晶体管输出) 脉冲输出用端子Y000、 Y001、 Y002为高速响应输出。 三、FX3UPLC链接MR-J4-A伺服连接实例 1、为了安全起见,不仅仅在可编程控制器侧,在伺服放大器侧也请设计正转限位和反转限位的限位…

查缺补漏----拥塞窗口

注意事项1: 首先区分超时和收到3个冗余ACK,显然超时更加严重。如下图所示: 如果网络出现超时,那么发送窗口cwnd变为1,门限值ssthresh变为原来拥塞窗口的一半 如果收到3个冗余ACK,发送窗口cwnd门限值ssth…

Java重修笔记 第六十一天 坦克大战(十一)IO 流 - 节点流和处理流、BufferedReader 和 BufferedWriter

节点流和处理流的区别和联系 1. 节点流是底层流/低级流,直接和数据源联系 2. 处理流是经过包装过后的节点流,也叫包装流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出 3. 处理流(包装流&…

二叉树基本概念讲解

一.树的概念 1.概念 树是⼀种非线性的数据结构,它是由 n(n>0)个有限结点组成⼀个具有层次关系的集合。把它叫 做树是因为它看起来像⼀棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有⼀个特殊的结点&#xff0c…

动态规划基础一>面试题 08.01. 三步问题

1.题目: 2.解析: 代码: public int waysToStep(int n) {/**1.创建dp表2.初始化3.填表4.返回值*/int MOD (int)1e9 7;//注意不能超出int范围,每做一次操作要取模//处理边界情况if(n 1 || n 2) return n;if(n 3) return 4;//1…

【小沐学CAD】ParaView Web的学习笔记(Python)

文章目录 1、简介1.1 visualizer1.2 Divvy1.3 Lite1.4 LightViz1.5 ArcticViewer1.6 HPCCloud1.7 glance1.8 trame 结语 1、简介 https://pvw.kitware.com/ VTK/ParaView Web,用于 Web 数据处理和可视化的框架 ParaViewWeb 是一个 Web 框架,用于在 Web …

[C++][第三方库][ODB]详细讲解

目录 1.介绍2.安装1.安装 build22.安装 odb-compiler3.安装 ODB 运行时库4.安装MySQL和客户端开发包5.安装 boost profile 库6.总体操作7.测试样例 3.ODB 常见操作1.ODB 类型映射2.ODB 编程1.指令2.示例 4.类与接口5.使用 1.介绍 ODB框架:数据库ORM框架 --> 对象…

vulnhub-Web Developer 1靶机

vulnhub:Web Developer: 1 ~ VulnHub 导入靶机,放在kali同网段,扫描 靶机在192.168.114.129,扫描端口 有网站服务,访问 没什么东西,扫目录 真不少,访问一下,也只是一些普通的Wordpr…

【机器学习】智驭未来:探索机器学习在食品生产中的革新之路

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 🔍1. 引言:探索机器学习在食品生产中的革新之路📒2. 机器学习在食品质量控制中的应用🌞实…

Crypto虐狗记---”你“和小鱼(六)

前言&#xff1a;剧情六 提示&#xff1a; 下载 手动&#xff1a; 脚本&#xff1a;我不会 参考大佬&#xff1a; 转轮机加密详解两种解题方法 -攻防世界-CSDN博客 import re sss1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < …

计算机的错误计算(一百一十五)

摘要 用错数定量解释计算机的错误计算&#xff08;一百一十四&#xff09;中的错误计算原因。 例1. 已知 计算 在 的错数&#xff0c;并与计算机的错误计算&#xff08;一百一十四&#xff09;中的相应错误数字个数做比较。 由 知&#xff0c; 再由 可得&#xff0c…

爬虫工程师必备工具——Postman和Fiddler的使用教程(11)

文章目录 1、工具获取2、基础使用教程2.1 Postman2.2 Fiddler2.2.1 简介2.2.2 工作原理2.2.3 功能设置2.2.4 使用方法1、工具获取 PostmanFiddler2、基础使用教程 2.1 Postman Postman是一款API调试工具,它简化了HTTP请求的构建、发送、响应查看以及测试流程,帮助开发人员高…

No.9 笔记 | PHP学习指南:从入门到精通的要点总结

一、PHP概述 1. Web技术基础 Web&#xff1a;由互相链接的超文本文件组成的系统URL&#xff1a;定位Web资源的地址HTTP&#xff1a;Web数据交换协议架构类型&#xff1a;B/S&#xff08;浏览器/服务器&#xff09;和C/S&#xff08;客户端/服务器&#xff09; 2. PHP简介 定…

无法加载响应数据: No data found for resourcewith given identifier

背景 学习黑马2022Redis教程&#xff0c;在开发P78达人探店功能&#xff0c;重新在前端登录的时候发现&#xff0c;所有的请求都需要发两遍才能成功。 失败的请求报错&#xff1a; 无法加载响应数据: No data found for resourcewith given identifier 排查 因为用到nginx,…

No.8 笔记 | SQL 查询语句:数据探索的钥匙

2024/10/7 心记 - 致在路上默默奋斗的你 在当今数字化的时代&#xff0c;网络安全已成为我们生活中不可或缺的一部分。它如同守护数字世界的隐形盾牌&#xff0c;保护着我们的隐私、数据和整个社会的稳定运行。 学习网络安全&#xff0c;是踏上一段充满挑战与机遇的征程。 每一…

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型)

Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型&#xff09; 目录 Pytorch实现心跳信号分类识别(支持LSTM,GRU,TCN模型&#xff09; 1. 项目说明 2. 数据说明 &#xff08;1&#xff09;心跳信号分类预测数据集 3. 模型训练 &#xff08;1&#xff09;项目安装 &am…

查缺补漏----IP通信过程

1.DHCP协议 H3刚接入网络时&#xff0c;只知道自己的MAC地址&#xff0c;所以需要通过DHCP协议请求自己的IP地址。 通过DHCP协议&#xff0c;得到IP地址、子网掩码、网关与DNS服务器IP地址。 DHCP协议是应用层协议(传输层为UDP)&#xff0c;请求报文是广播&#xff08;H3不知…

深入了解Python:那些常被忽略的知识点

作为现代编程语言的典范&#xff0c;Python以其简洁、高效和广泛的应用领域赢得了无数开发者的青睐。然而&#xff0c;即使是经验丰富的Python程序员&#xff0c;也可能不了解Python的一些特性或最佳实践。这篇文章将介绍Python中常被忽略的一些知识点&#xff0c;通过全面的分…