论文解析七: GNN与GCN(图神经网络)一站式详细讲解

1.GNN 图神经网络

图这个数据结构相对于之前讨论的文本(文本是一个序列)、图片(图片是一个矩阵),图相对来说更加复杂一点。

在这里插入图片描述

  • Layer1 的点是由 Layer2里它和它的邻居计算得来的
  • Layer2的点是由 Layer3里它和它们的邻居计算得来的
  • 所以说,当你的图越深的时候,你在顶部的那些点,是由它的邻居的邻居等等整个计算得来的,只要你足够深,很有可能你一个节点是能够处理到比较大范围的图里面的节点信息

图神经网络的实际应用(starting to,图神经网络还是一个比较新的领域,在应用上刚起步)

  • 药物的发现
  • 物理模拟
  • 虚假新闻检测
  • 车流量的检测
  • 推荐系统

本文旨在探索和解释现代的图神经网络

  • 什么数据可以表示成一张图
  • 图和别的数据有什么不同,为什么要做图神经网络,而不是使用最简单的卷积神经网络等
  • 构建了一个GNN,看各模块的具体结构
  • 提供了一个GNN的playground

2.什么是图

图是用来表示entity(实体)之间的关系

  • 实体就是一个点(node,顶点)
  • 关系就是一个边(edge)

在这里插入图片描述

  • 顶点(node)
  • 边:顶点之间的关系
  • 全局信息:每个顶点、每条边和整个图表示的信息

使用向量来标示顶点,边,全局属性
在这里插入图片描述

  • 顶点(黄色)可以用一个embeding(向量)来表示它里面的属性,一共有六个值,高矮表示值的大小
  • 边(蓝色)也可以使用向量来表示,长度可以和顶点不一样,这里使用的是一个长度为8的向量,即边中所有的属性用一个长度为8的向量来表示
  • 全局信息(粉色)可以用一个长为5的向量来表示

图神经网络所关注的重点

  • 怎样把所想要的数据表示成向量
  • 这些向量是不是能够通过数据来学到

图一共有两种

  • 没有方向的图:两个点之间相连的边是没有方向的,例如微信好友。
  • 有方向的图:两个点之间相连的边是有方向,例如关注与互关。

数据是如何表示成图的

1、如何将图片表示成一张图

​ 假设有一张高宽都为244的RGB三通道图,一般来说会把它表示成一个三个维度的tensor(在输入卷积神经网络的时候用的是tensor),但是也可以把它当作一个图,它的每个像素就是一个点,如果两个像素之间是连接关系的话,就连接一条边。

下图展示了如何把一张图片表示成图
在这里插入图片描述

  • 左边表示图片
  • 中间是表示成的邻接矩阵,它的每一行是一个顶点,每一列也是一个顶点,如果第 i 行和第 j 列之间值为1(图中蓝色的点)的话就表示第 i 个结点和第 j 个节点之间是有边的,每一个蓝色的点表示图中的一条边,剩下白色的点表示这些点之间是没有边的,通常是一个很大的非常稀疏化的矩阵
  • 右边表示由图片生成的图
2.如何将文本表示成图?

文本可以认为是一条序列,可以把其中每个词表示成顶点,那么每个词和下一个词之间有一条有向边(上一个词和下一个词之间有一条指向下一个词的有向边,在图上面叫做有向的路)
在这里插入图片描述

除了文本和图片能够表示成图之外,现实生活中还有很多数据也能表示成图:

下图所示是一个分子的示意图
在这里插入图片描述
小说中人物之间的交互图(关系网络)
在这里插入图片描述

还有比较常见的就是引用图

  • 假设一篇文章引用了另一篇文章的话,就从当前文章出发连一条边到另外一篇文章(这是一条有向边,不代表会相互引用,通常来说,很少会有两篇文章相互引用,一般是现在的文章引用之前的文章)
    在这里插入图片描述
  • grapgh表示图的个数
  • node表示顶点数
  • edge表示边的个数
  • mean表示平均每个点所连接的边的数量
  • min表示图中一个顶点所连接的边的数量的最小值
  • max表示图中一个顶点所连接的边的数量的最大值
  • 每一行就是一张图
  • 第一行是一个空手道俱乐部的社交网络图,第二个是分子图,第三和第四个是引用图

在图上面可以提出什么样的问题?

主要有三个层面,图层面的,顶点层面的,边层面的

图层面的

### 图神经网络GCNGAT模型的区别 #### GCN的特点 Graph Convolutional Network (GCN) 是一种用于处理图结构数据的深度学习架构。其核心思想是在节点及其一阶邻居之间执行聚合操作来更新节点表示[^1]。 GCN 的主要特点是通过谱域上的卷积操作实现,这使得该方法能够有效地捕捉局部邻接信息并进行平滑化处理。具体来说,在每一层中,GCN 将当前节点特征其相邻节点特征相加,并经过线性变换以及激活函数得到新的节点嵌入向量: ```python H^(l+1) = σ(Ã H^(l) W^(l)) ``` 其中 `σ` 表示激活函数;`W^(l)` 是第 l 层可训练权重矩阵;`Ã=D̃ ^()(A+I)D̃ ^()` 为归一化的拉普拉斯算子。 #### GAT的特点 Graph Attention Networks (GATs),则引入注意力机制到图神经网络框架内。不同于传统固定权值分配方式,GAT 使用自适应关注不同邻居的重要性程度来进行消息传递过程中的特征融合[^2]。 对于任意一对相连节点 i j ,计算它们之间的关联度得分 e_ij 并应用 Softmax 函数规范化这些分数作为最终边权重 α_ij 。之后利用此权重组合来自各个方向的信息形成新表征 h'_i : ```python α_{ij} = \frac{\exp(\text{LeakyReLU}(a^T [Wh_i || Wh_j]))}{\sum_k \exp(\text{LeakyReLU}(a^T [Wh_i || Wh_k]))} h'_i = σ (\sum_j α_{ij} Wh_j ) ``` 这里 a 是一个共享参数向量用来衡量两个顶点间的关系强度;|| 符号代表拼接运算符。 #### 差异对比 - **传播模式**: GCNs 基于固定的平均池化策略收集周围节点的消息,而 GAT 则采用灵活的关注力系数动态调整各条边上所携带的数据比重。 - **表达能力**: 因为加入了注意力建模环节,理论上讲 GAT 可以更好地捕获复杂依赖关系并且具备更强的表现力。 - **适用场景**: 当面对具有明显层次结构或者需要强调某些特定交互作用的任务时,GAT 或许会更加合适;反之如果目标仅限于简单分类预测,则两者性能可能相差不大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Unknown To Known

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

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

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

打赏作者

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

抵扣说明:

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

余额充值