cs224w(图机器学习)2021冬季课程学习笔记7 Graph Neural Networks 1: GNN Model

简介: 本章主要内容:介绍深度学习基础。介绍GNN思想:聚合邻居信息。每一层都产生一种节点嵌入。将上一层的邻居信息聚合起来,连接本节点上一层信息,产生新的节点嵌入。第一层节点嵌入就是节点特征。GCN:用平均值作为聚合函数。GraphSAGE:用各种聚合函数。

1. Graph Neural Networks 1: GNN Model


  1. 回忆一下节点嵌入1任务。其目的在于将节点映射到d维向量,使得在图中相似的节点在向量域中也相似。

我们已经学习了 “Shallow” Encoding 的方法来进行映射过程,也就是使用一个大矩阵直接储存每个节点的表示向量,通过矩阵与向量乘法来实现嵌入过程。

这种方法的缺陷在于:

image.png

image.png

image.png


  1. image.png

image.png


  1. 一个GNN网络的结构如图:

image.png


  1. 通过网络可以解决的任务有:
  • 节点分类:预测节点的标签
  • 链接预测:预测两点是否相连
  • 社区发现:识别密集链接的节点簇
  • 网络相似性:度量图/子图间的相似性

image.png


  1. 传统机器学习难以应用在图结构上。具体原因在Lecture 中已经讲过,我也撰写过相应笔记,不再赘述。


2. Basics of Deep Learning


image.png

image.png

image.png

image.png

image.png

image.png

image.png


  1. 随机梯度下降stochastic gradient descent (SGD)

每一次梯度下降都需要计算所有数据集上的梯度,耗时太久,因此我们使用SGD的方法,将数据分成多个minibatch,每次用一个minibatch来计算梯度。

image.png

  1. minibatch SGD

SGD是梯度的无偏估计,但不保证收敛,所以一般需要调整学习率。

对SGD的改进优化器:Adam,Adagrad,Adadelta,RMSprop……等

术语:

image.png

image.png

image.png

image.png

image.png

image.png

image.pngimage.png

image.png

image.png

image.png

image.png



  1. 总结

image.png


3. Deep Learning for Graphs


  1. 本节内容:
  • local network neighborhoods

    聚合策略

    计算图

  • 叠层

     模型、参数、训练

     如何学习?

     无监督和有监督学习举例

image.png

image.png


  1. 我们可能很直接地想到,将邻接矩阵和特征合并在一起应用在深度神经网络上(如图,直接一个节点的邻接矩阵+特征合起来作为一个观测)。这种方法的问题在于:
  • 需要 O(|V|) 的参数
  • 不适用于不同大小的图
  • 对节点顺序敏感(我们需要一个即使改变了节点顺序,结果也不会变的模型)

image.png


  1. Idea: 将网格上的卷积神经网络泛化到图上,并应用到节点特征数据

image.png


  1. 图上无法定义固定的locality或滑动窗口,而且图是permutation invariant8的(节点顺序不固定)

image.png

image.png

image.png


  1. Graph Convolutional Networks

通过节点邻居定义其计算图,传播并转换信息,计算出节点表示(可以说是用邻居信息来表示一个节点)

image.png


  1. 核心思想:通过聚合邻居来生成节点嵌入

image.png

直觉:通过神经网络聚合邻居信息

image.png

直觉:通过节点邻居定义计算图(它的邻居是子节点,子节点的邻居又是子节点们的子节点……)

image.png


  1. 深度模型就是有很多层。

节点在每一层都有不同的表示向量,每一层节点嵌入是邻居上一层节点嵌入再加上它自己(相当于添加了自环)的聚合。

第0层是节点特征,第k层是节点通过聚合k hop邻居所形成的表示向量。

在这里就没有收敛的概念了,直接选择跑有限步(k)层。


  1. 邻居信息聚合neighborhood aggregation

不同聚合方法的区别就在于如何跨层聚合邻居节点信息(这是什么废话)。neighborhood aggregation方法必须要order invariant或者说permutation invariant8。

基础方法:从邻居获取信息求平均,再应用神经网络

这种deep encoder的数学公式:


  1. 如何训练模型:需要定义节点嵌入上的损失函数


  1. image.png


  1. 矩阵形式

很多种聚合方式都可以表示为(稀疏)矩阵操作的形式,如这个基础方法可以表示成图中这种形式:

我自己写了个求解过程(因为线性代数比较差所以没法直接看出来怎么算的,得一点点推)

补充:向量点积/矩阵乘法就是逐元素相乘然后累加,对邻接矩阵来说相当于对存在边的元素累加

对整个公式的矩阵化也可以实现:

这样就可以应用有效的稀疏矩阵操作(这部分我不了解,还没看)。

同时,也要注意,当aggregation函数过度复杂时,GNN可能无法被表示成矩阵形式。


(W和B要转置后放到右边,应该是因为矩阵尺寸的方向问题?(上一层嵌入维度×下一层嵌入维度))


  1. 如何训练GNN

image.png


  1. 模型设计:overview
  • 定义邻居聚合函数
  • 定义节点嵌入上的损失函数
  • 在节点集合(如计算图的batch)上做训练
  • 训练后的模型可以应用在训练过与没有训练过的节点上


  1. inductive  capability

因为聚合邻居的参数在所有节点之间共享,所以训练好的模型可以应用在没见过的节点/图上。比如动态图就有新增节点的情况。

模型参数数量是亚线性sublinear于 ∣ V ∣ 的(仅取决于嵌入维度和特征维度)(矩阵尺寸就是下一层嵌入维度×上一层嵌入维度,第0层嵌入维度就是特征维度嘛)。


  1. 总结

通过聚合邻居信息产生节点嵌入,本节阐述了这一总思想下的一个基本变体。具体GNN方法的区别在于信息如何跨层聚合。

接下来讲GraphSAGE。


4. Graph Convolutional Networks and GraphSAGE


image.png


  1. GCN vs. GraphSAGE

核心思想:基于local neighborhoods产生节点嵌入,用神经网络聚合邻居信息

GCN:邻居信息求平均,叠网络层

GraphSAGE:泛化neighborhood aggregation所采用的函数


5. 总结


本节课中介绍了:


  1. 神经网络基础:损失函数loss,优化optimization,梯度gradient,随机梯度下降SGD,非线性non-linearity,多层感知器MLP
  2. 图深度学习思想
  • 多层嵌入转换
  • 每一层都用上一层的嵌入作为输入
  • 聚合邻居和本身节点
  1. GCN Graph Convolutional Network:用求平均的方式做聚合,可以用矩阵形式来表示
  2. GraphSAGE:更有弹性的聚合函数


相关文章
|
机器学习/深度学习 供应链 算法
机器学习课程学习随笔
机器学习课程学习随笔
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
12月前
|
人工智能 自然语言处理 搜索推荐
全网首发 | PAI Model Gallery一键部署阶跃星辰Step-Video-T2V、Step-Audio-Chat模型
Step-Video-T2V 是一个最先进的 (SoTA) 文本转视频预训练模型,具有 300 亿个参数,能够生成高达 204 帧的视频;Step-Audio 则是行业内首个产品级的开源语音交互模型,通过结合 130B 参数的大语言模型,语音识别模型与语音合成模型,实现了端到端的文本、语音对话生成,能和用户自然地进行高质量对话。PAI Model Gallery 已支持阶跃星辰最新发布的 Step-Video-T2V 文生视频模型与 Step-Audio-Chat 大语言模型的一键部署,本文将详细介绍具体操作步骤。
|
机器学习/深度学习 算法 Python
【绝技揭秘】Andrew Ng 机器学习课程第十周:解锁梯度下降的神秘力量,带你飞速征服数据山峰!
【8月更文挑战第16天】Andrew Ng 的机器学习课程是学习该领域的经典资源。第十周聚焦于优化梯度下降算法以提升效率。课程涵盖不同类型的梯度下降(批量、随机及小批量)及其应用场景,介绍如何选择合适的批量大小和学习率调整策略。还介绍了动量法、RMSProp 和 Adam 优化器等高级技巧,这些方法能有效加速收敛并改善模型性能。通过实践案例展示如何使用 Python 和 NumPy 实现小批量梯度下降。
227 1
|
机器学习/深度学习 监控 算法
LabVIEW使用机器学习分类模型探索基于技能课程的学习
LabVIEW使用机器学习分类模型探索基于技能课程的学习
162 1
|
机器学习/深度学习
Coursera 吴恩达Machine Learning(机器学习)课程 |第五周测验答案(仅供参考)
Coursera 吴恩达Machine Learning(机器学习)课程 |第五周测验答案(仅供参考)
|
机器学习/深度学习 编解码 计算机视觉
Python机器学习和图像处理学习笔记
Python机器学习和图像处理学习笔记
|
机器学习/深度学习 算法 数据处理
Stanford 机器学习练习 Part 3 Neural Networks: Representation
从神经网络开始,感觉自己慢慢跟不上课程的节奏了,一些代码好多参考了别人的代码,而且,让我现在单独写也不一定写的出来了。学习就是一件慢慢积累的过程,两年前我学算法的时候,好多算法都完全看不懂,但后来,看的多了,做的多了,有一天就茅塞顿开。所有的困难都是一时的,只要坚持下去,一切问题都会解决的。没忍住发了点鸡汤文。
157 0
|
机器学习/深度学习 算法 搜索推荐
【吴恩达机器学习笔记】十五、大规模机器学习
【吴恩达机器学习笔记】十五、大规模机器学习
193 0
|
机器学习/深度学习 算法
【吴恩达机器学习笔记】九、机器学习系统的设计
【吴恩达机器学习笔记】九、机器学习系统的设计
164 0

热门文章

最新文章