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

【斯坦福大学公开课CS224W——图机器学习】七、图神经网络2: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在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《深入浅出神经网络:gnn原理解析》这本书是一本关于神经网络的入门书籍。本书主要介绍了神经网络的发展历程、基本概念、原理及其应用。 首先,本书介绍了神经网络的概念和发展历程。神经网络是一种以形结构为基础的人工神经网络,它最初是由Yann LeCun等人提出的。近些年,由于其在社交网络、推荐系统等领域的广泛应用,神经网络逐渐被视作一种重要的机器学习方法,受到了越来越多的关注和研究。 接着,本书阐述了神经网络的基本概念和原理。与传统的神经网络不同,神经网络的输入是一个形结构,而且形结构中的节点之间具有不同的边权和节点边关系。因此,神经网络需要将这种复杂的结构转换为向量表示,以便进行进一步的计算。这一过程使用了各种技术,包括卷积神经网络(GCN)、注意力机制等。 最后,本书对神经网络的应用进行了介绍。神经网络有广泛的应用领域,包括社交网络分析、推荐系统、自然语言处理等。本书重点介绍了神经网络在社交网络分析和推荐系统中的应用实例,包括社交网络中用户关系的分析、推荐系统中商品推荐的优化等。 总的来说,《深入浅出神经网络:gnn原理解析》这本书语言简洁、内容全面,非常适合初学者入门。同时,本书也适合对神经网络有一定了解,想要进一步深入研究的读者参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yozu_Roo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值