cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space

简介: cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space

本章主要内容:

本章主要介绍了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


  1. 我对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.


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


  1. 通用GNN框架

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

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

image.png

instantiation实例化(就是类似于Java编程里用类创建一个对象,将抽象的类具象化为对象……这样)

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

image.png

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

图增强分为:图特征增强 / 图结构增强

image.png

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

image.png

  • A General GNN Framework

image.png


2. A Single Layer of GNN


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

image.png


  1. GNN单层网络的目标是将一系列向量(上一层的自身和邻居的message)压缩到一个向量中(新的节点嵌入)

完成这个目标分成两步:信息处理,信息聚合(这里的聚合方法是需要ordering invariant的,也就是邻居节点信息聚合,聚合的顺序应当和结果无关)

image.png


  1. image.png

image.png


  1. image.png

image.png


  1. image.png

image.png



  1. image.png

image.png



  1. 经典GNN层(公式中橘色部分为信息聚合,红色部分为信息转换)

image.png

image.png

image.png

image.pngimage.png

image.pngimage.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png


  1. GAT示例:Cora Citation Net

attention机制可应用于多种GNN模型中。在很多案例中表现出了结果的提升。

如图显示,将节点嵌入降维到二维平面,节点不同颜色表示不同类,边的宽度表示归一化后的attention coefficient(8个attention head计算后求和)

image.png

t-SNE是一种降维技术


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

image.png

concretely具体地; 具体; 具体的; 有形地;

image.png


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

image.png


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

image.png


  1. GNN中的Dropout:应用在信息转换过程中的线性网络层上

image.png


  1. image.png

image.png


  1. 可以通过 GraphGym 来测试不同的GNN设计实例(我还没用过这个包)。


3. Stacking Layers of a GNN


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

image.png


  1. 连接GNN网络层的标准方式:按序堆叠

输入原始节点特征,输出L层后计算得到的节点嵌入向量

image.png


  1. 过平滑问题the over-smoothing problem6:如果GNN层数太多,不同节点的嵌入向量会收敛到同一个值(如果我们想用节点嵌入做节点分类任务,这就凉了)GNN的层跟别的神经网络的层不一样,GNN的层数说明的是它聚集多少跳邻居的信息

image.png


  1. GNN的感受野receptive field:决定该节点嵌入的节点组成的集合。

对K层GNN,每个节点都有一个K跳邻居的感受野。如图可见K越大,感受野越大

image.png


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

image.png


  1. 感受野 & 过平滑

节点嵌入受其感受野决定,两个节点间的感受野越重合,其嵌入就越相似。

堆叠很多GNN网络层→节点具有高度重合的感受野→节点嵌入高度相似→过平滑问题

image.png


  1. 由于过平滑问题,我们需要谨慎考虑增加GNN层。

第一步:分析解决问题所需的必要感受野(如测量图的直径7)

第二步:设置GNN层数 L 略大于我们想要的感受野

image.png


  1. 既然GNN层数不能太多,那么我们如何使一个浅的GNN网络更具有表现力呢?
  • 方法1:增加单层GNN的表现力,如将信息转换/信息聚合过程从一个简单的线性网络变成深度神经网络(如3层MLP)

image.png


  • 方法2:添加不是用来传递信息的网络层,也就是非GNN层,如对每个节点应用MLP(在GNN层之前或之后均可,分别叫 pre-process layers 和 post-process layers)

pre-processing layers:如果节点特征必须经过编码就很重要(如节点表示图像/文字时)

post-processing layers:如果在节点嵌入的基础上需要进行推理和转换就很重要(如图分类、知识图谱等任务中)colab28中的图分类任务就都有,用AtomEncoder作为pre-processing layer,池化层作为post-processing layer

image.png


  1. 如果实际任务还是需要很多层GNN网络,那么可以在GNN模型中增加skip connections9

通过对过平滑问题进行观察,我们可以发现,靠前的GNN层可能能更好地区分节点。(就很明显嘛这事)

因此我们可以在最终节点嵌入中增加靠前GNN层的影响力,实现方法是在GNN中直接添加捷径,保存上一层节点的嵌入向量(看后文应该是指在激活函数前,在聚合后的结果的基础上再加上前一层的嵌入向量)

image.png


  1. skip connections原理10:

相当于制造了多个模型(如图所示),N个skip connections就相当于创造了2 N 2^N2

N

条路径,每一条路径最多有N个模块。

这些路径都会对最终的节点嵌入产生影响,相当于自动获得了一个浅GNN和深GNN的融合模型。

image.png


  1. image.png

image.png


  1. skip connections也可以跨多层,直接跨到最后一层,在最后一层聚合之前各层的嵌入(通过concat / pooling / LSTM)

image.png


相关文章
|
2月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
158 1
|
4月前
|
机器学习/深度学习 算法 Python
【绝技揭秘】Andrew Ng 机器学习课程第十周:解锁梯度下降的神秘力量,带你飞速征服数据山峰!
【8月更文挑战第16天】Andrew Ng 的机器学习课程是学习该领域的经典资源。第十周聚焦于优化梯度下降算法以提升效率。课程涵盖不同类型的梯度下降(批量、随机及小批量)及其应用场景,介绍如何选择合适的批量大小和学习率调整策略。还介绍了动量法、RMSProp 和 Adam 优化器等高级技巧,这些方法能有效加速收敛并改善模型性能。通过实践案例展示如何使用 Python 和 NumPy 实现小批量梯度下降。
45 1
|
6月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
6月前
|
机器学习/深度学习 搜索推荐 PyTorch
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
【机器学习】图神经网络:深度解析图神经网络的基本构成和原理以及关键技术
1374 2
|
6月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
69 0
|
6月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
48 0
|
7月前
|
机器学习/深度学习 自然语言处理 PyTorch
fast.ai 机器学习笔记(四)(1)
fast.ai 机器学习笔记(四)
143 1
fast.ai 机器学习笔记(四)(1)
|
7月前
|
机器学习/深度学习 监控 算法
LabVIEW使用机器学习分类模型探索基于技能课程的学习
LabVIEW使用机器学习分类模型探索基于技能课程的学习
58 1
|
7月前
|
机器学习/深度学习 算法 图计算
图机器学习入门:基本概念介绍
图机器学习是机器学习的分支,专注于处理图形结构数据,其中节点代表实体,边表示实体间关系。本文介绍了图的基本概念,如无向图与有向图,以及图的性质,如节点度、邻接矩阵。此外,还讨论了加权图、自循环、多重图、双部图、异构图、平面图和循环图。图在描述数据关系和特征方面具有灵活性,为机器学习算法提供了丰富的结构信息。
189 0
|
7月前
|
机器学习/深度学习 Python 索引
fast.ai 机器学习笔记(二)(4)
fast.ai 机器学习笔记(二)
62 0
fast.ai 机器学习笔记(二)(4)

热门文章

最新文章