【斯坦福大学公开课CS224W——图机器学习】七、图神经网络2:GNN设计空间

本文主要是介绍【斯坦福大学公开课CS224W——图机器学习】七、图神经网络2:GNN设计空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【斯坦福大学公开课CS224W——图机器学习】七、图神经网络2:GNN设计空间

文章目录

  • 【斯坦福大学公开课CS224W——图机器学习】七、图神经网络2:GNN设计空间
    • 1. A General Perspective on Graph Neural Networks
      • 1.1 通用GNN框架
    • 2. A Single Layerof GNN
    • 3. 经典GNN层
      • 3.1 图卷积网络GCN
      • 3.2 GraphSAGE
      • 3.3 GAT
      • 3.4 实践应用中的GNN网络层
    • 4. Stacking Layers of a GNN

本章主要内容
本章主要介绍了GNN的设计空间design space,也就是设计一个GNN模型中的各种选择条件。(下一章继续讲这个)

本章首先讲了GNN单层的设计选择。
一层GNN包含信息转换和信息聚合两个部分。
讲了三种典型实例GCN、GraphSAGE、GAT。
GCN相当于用权重矩阵和节点度数归一化实现信息转换,用邻居节点求平均的方式实现聚合。
GraphSAGE可选用多种聚合方式来聚合邻居信息,然后聚合邻居信息和节点本身信息。在GraphSAGE中可以选用L2正则化。
GAT使用注意力机制为邻居对节点的信息影响程度加权,用线性转换后的邻居信息加权求和来实现节点嵌入的计算。注意力权重用一个可训练的模型attention mechanism计算出两节点间的attention coefficient,归一化得到权重值。此外可以应用多头机制增加鲁棒性。
在GNN层中还可以添加传统神经网络模块,如Batch Normalization、Dropout、非线性函数(激活函数)等。

然后讲了GNN多层堆叠方式。
叠太多层会导致过平滑问题。感受野可以用来解释这一问题。
对于浅GNN,可以通过增加单层GNN表现力、增加非GNN层来增加整体模型的表现力。
可以应用skip connections实现深GNN。skip connections可以让隐节点嵌入只跳一层,也可以全部跳到最后一层。

1. A General Perspective on Graph Neural Networks

我对design space的理解大概就是在设计模型的过程中,可以选择的各种实现方式所组成的空间。比如说可以选择怎么卷积,怎么聚合,怎么将每一层网络叠起来,用什么激活函数、用什么损失函数……用这些选项组合出模型实例,构成的空间就是design space。
在后期还有一个design space的课程。对于design space的进一步理解可以看Jure的论文 You, J., Ying, R., & Leskovec, J. (2020). Design Space for Graph Neural Networks. ArXiv, abs/2011.08843.

对deep graph encoders、GNN、聚合邻居信息等内容不再赘述。

1.1 通用GNN框架

(GNN的一层就是指计算图上的一层)

  1. 对GNN的一个网络层:要经历message(信息转换)和aggregation(信息聚合)两个环节,不同的实例应用不同的设计方式(如GCN,GraphSAGE,GAT……)

    在这里插入图片描述

  2. 连接GNN网络层:可以逐层有序堆叠,也可以添加skip connections

    在这里插入图片描述

  3. 图增强graph sugmentation:使原始输入图和应用在GNN中的计算图不完全相同(即对原始输入进行一定处理后,再得到GNN中应用的计算图)。
    图增强分为:图特征增强 / 图结构增强

    在这里插入图片描述

  4. 学习目标:有监督/无监督目标,节点/边/图级别目标

    在这里插入图片描述

2. A Single Layerof GNN

再回顾一遍在第一节中写过的GNN单层网络的设计空间:message transformation + message aggregation

GNN单层网络的目标是将一系列向量(上一层的自身和邻居的message)压缩到一个向量中(新的节点嵌入)
完成这个目标分成两步:信息处理,信息聚合(这里的聚合方法是需要ordering invariant的,也就是邻居节点信息聚合,聚合的顺序应当和结果无关)

在这里插入图片描述

message aggregation
直觉:对每个节点,聚合其邻居的节点信息:h v ( l ) = A G G ( l ) ( { m u ( l ) , u ∈ N ( v ) } )
举例:求和,求平均,求极大值

在这里插入图片描述

这种message aggregation会导致节点自身的信息丢失,因为对 h v ( l ) 的计算不直接依赖于 h v ( l − 1 )。
对此问题的解决方式:在计算 h v ( l )时包含 h v ( l − 1 ) :

  1. message computation:对节点本身及其邻居应用不同的权重矩阵
  2. message aggregation:聚合邻居信息,再将邻居信息与节点自身信息进行聚合(用concatenation或加总)

在这里插入图片描述

GNN单层网络就是合并上述两步:对每个节点,先计算出其自身与邻居的节点信息,然后计算其邻居与本身的信息聚合。
在这两步上都可以用非线性函数(激活函数)来增加其表现力:激活函数常写作 σ ( ⋅ ):如 ReLU ( ⋅ ) ,Sigmoid ( ⋅ ) ……

在这里插入图片描述

3. 经典GNN层

3.1 图卷积网络GCN

信息转换:对上一层的节点嵌入用本层的权重矩阵进行转换,用节点度数进行归一化(在不同GCN论文中会应用不同的归一化方式)
信息聚合:加总邻居信息,应用激活函数

在这里插入图片描述

img

3.2 GraphSAGE

在这里插入图片描述

GraphSAGE聚合邻居的方式:

Mean:邻居的加权平均值

Pool:对邻居向量做转换,再应用对称向量函数,如求和 Mean ( ⋅ ) 或求最大值 Max ( ⋅ )

LSTM:在reshuffle的邻居上应用LSTM

在这里插入图片描述

在GraphSAGE每一层上都可以做 L2 归一化,经过归一化后,所有向量都具有了相同的L2范式
有时可以提升模型的节点嵌入效果

在这里插入图片描述

3.3 GAT

在这里插入图片描述

img

这里的attend指的是给予其邻居不同的重要性importance

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

GAT的多头注意力机制multi-head attention:增加模型鲁棒性,使模型不卡死在奇怪的优化空间,在实践上平均表现更好。
用不同参数建立多个 attention 模型:

在这里插入图片描述

注意力机制的优点:
核心优点:隐式定义节点信息对邻居的importance value α v u

computationally efficient:对attentional coefficients的计算可以在图中所有边上同步运算,聚合过程可以在所有节点上同步运算
storage efficient:稀疏矩阵运算需要存储的元素数不超过 O ( V + E ) ,参数数目固定(a 的可训练参数尺寸与图尺寸无关)
localized:仅对本地网络邻居赋予权重
inductive capability:边间共享机制,与全局图结构无关(我的理解就是算出 attention mechanism 的参数之后就完全可以正常对新节点运算,不需要再重新计算什么参数了)

3.4 实践应用中的GNN网络层

实践应用中的GNN网络层:往往会应用传统神经网络模块,如在信息转换阶段应用Batch Normalization(使神经网络训练稳定)、Dropout(预防过拟合)、Attention / Gating3(控制信息重要性)等。

在这里插入图片描述

在这里插入图片描述

Batch Normalization:对一个batch的输入数据(节点嵌入)进行归一化,使其平均值为0,方差为1

在这里插入图片描述

Dropout5:在训练阶段,以概率p随机将神经元置为0;在测试阶段,用所有的神经元来进行计算

在这里插入图片描述

4. Stacking Layers of a GNN

再回顾一下第一节写的连接GNN网络层部分:

在这里插入图片描述

连接GNN网络层的标准方式:按序堆叠
输入原始节点特征,输出L层后计算得到的节点嵌入向量

在这里插入图片描述

过平滑问题the over-smoothing problem6:如果GNN层数太多,不同节点的嵌入向量会收敛到同一个值(如果我们想用节点嵌入做节点分类任务,这就凉了)

在这里插入图片描述

GNN的层跟别的神经网络的层不一样,GNN的层数说明的是它聚集多少跳邻居的信息

GNN的感受野receptive field:决定该节点嵌入的节点组成的集合。
对K层GNN,每个节点都有一个K跳邻居的感受野。如图可见K越大,感受野越大

在这里插入图片描述

对两个节点来说,K变大,感受野重合部分会迅速变大

在这里插入图片描述

感受野 & 过平滑
节点嵌入受其感受野决定,两个节点间的感受野越重合,其嵌入就越相似。
堆叠很多GNN网络层→节点具有高度重合的感受野→节点嵌入高度相似→过平滑问题

由于过平滑问题,我们需要谨慎考虑增加GNN层。
第一步:分析解决问题所需的必要感受野(如测量图的直径7)
第二步:设置GNN层数 L 略大于我们想要的感受野

既然GNN层数不能太多,那么我们如何使一个浅的GNN网络更具有表现力呢?

方法1:增加单层GNN的表现力,如将信息转换/信息聚合过程从一个简单的线性网络变成深度神经网络(如3层MLP)

方法2:**添加不是用来传递信息的网络层,也就是非GNN层,**如对每个节点应用MLP(在GNN层之前或之后均可,分别叫 pre-process layers 和 post-process layers)
pre-processing layers:如果节点特征必须经过编码就很重要(如节点表示图像/文字时)
post-processing layers:如果在节点嵌入的基础上需要进行推理和转换就很重要(如图分类、知识图谱等任务中)
在这里插入图片描述

如果实际任务还是需要很多层GNN网络,那么可以在GNN模型中增加skip connections9
通过对过平滑问题进行观察,我们可以发现,靠前的GNN层可能能更好地区分节点。(就很明显嘛这事)
因此我们可以在最终节点嵌入中增加靠前GNN层的影响力,实现方法是在GNN中直接添加捷径,保存上一层节点的嵌入向量(看后文应该是指在激活函数前,在聚合后的结果的基础上再加上前一层的嵌入向量)
在这里插入图片描述

skip connections原理10:
相当于制造了多个模型(如图所示),N个skip connections就相当于创造了 2^N 条路径,每一条路径最多有N个模块。
这些路径都会对最终的节点嵌入产生影响,相当于自动获得了一个浅GNN和深GNN的融合模型。

在这里插入图片描述

skip connections也可以跨多层,直接跨到最后一层,在最后一层聚合之前各层的嵌入(通过concat / pooling / LSTM)11在这里插入图片描述

这篇关于【斯坦福大学公开课CS224W——图机器学习】七、图神经网络2:GNN设计空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333221

相关文章

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen