当前位置:   article > 正文

神经网络学习笔记4——GNN图神经和GCN图卷积网络_gcn模型图

gcn模型图

系列文章目录

博客依托于国外GNN综述
结合沐神视频



图神经

什么是图:
图是一种对节点和节点间关系建模的数据结构,是机器学习中唯一的非欧几里得数据,图分析可用于节点分类、链接预测和聚类。

GNN的来源:
CNN:CNN可以提取大量本地紧密特征并组合为高阶特征,但CNN只能够操作欧几里得数据。CNN的关键在于局部连接、权值共享、多层使用;
graph embedding:在低维向量上学习表示图节点、边或者子图。思想源于特征学习和单词嵌入,第一个图嵌入学习方法是DeepWalk,它把节点看做单词并在图上随机游走,并且在它们上面使用SkipGram模型;

基于以上两种思想,GNN会在图结构上聚合信息,因此可以对输入/输出的元素及元素间的独立性进行建模。GNN还可以同时使用RNN核对图上的扩散过程进行建模。

GNN的优势:

  1. 标准神经网络(CNN、RNN)无法解决图输入无序性,因为它们将点的特征看做是特定的输入;
  2. 两点之间的边代表着独立信息,在标准神经网络中,这种信息被看做是点的信息,而GNN可以通过图结构来进行传播,而不是将其看做是特征;通常而言,GNN更新隐藏节点的状态,是通过近邻节点的权值和;
  3. 高级人工只能需要更高的可解释性;标准神经网络可以生成合成图像或文档,但无法生成图;GNN可以生成无结构的数据(多种应用:文字分类、神经机器翻译、关系提取、图像分类);

GNN不足:

  1. 更新节点的隐藏状态是低效的;
  2. 在迭代中使用相同的参数,更新节点隐藏状态是时序的;
  3. 在边上有一些信息化的特征无法在原始GNN中建模;如何学习边的隐藏状态也是问题;

一、图是什么?

图是由一个实体顶点(nodes)和关系边(edges)构成
在这里插入图片描述在这里插入图片描述在这里插入图片描述

1、 全局U:包含节点数、最长路径。是全局的图,有时称为主节点,是一个虚构的节点,用一种抽象的方法与点和边相连。
2、 顶点V:包含节点身份、邻居数量
3、 边E:包含边缘身份、边缘权重。可以通过将方向性与边(有向、无向)相关联来专门化图。

在这里插入图片描述
图片与稀疏矩阵与图之间的转换:
1、 image Pixels:图片的像素点位置
2、 Adjacency Matrix:稀疏矩阵
3、 Graph:无向图网络

可以看见image Pixels的1-1和2-2的像素位置信息可以通过二维稀疏矩阵和三维图网络表达出来,一个像素可以通过与邻居像素确定坐标方位,从而固定所在区域。

二、机器学习中使用图

1、邻接矩阵的表达

机器学习模型通常采用矩形或网格状数组作为输入。图有多达四种类型的信息,希望使用这些信息进行预测:节点V、边E、全局上下文U和边与点的连接性。

其中图的连接性更为复杂,也许最较好的选择是使用邻接矩阵去表达,因为这较容易使用张量表示。然而这种表示存在一些缺点。一些复杂的图中节点数可能达到数百万级,每个节点的边距可能变化很大,这会产生非常稀疏的邻接矩阵,不仅空间效率低下,而且想通过GPU去处理较大的稀疏矩阵,还是一个比较难的基础问题。

除此之外,还有一个问题就是有许多邻接矩阵可以通过不同的编码方式来表达相同的连通性,但这不能保证这些不同的矩阵在深度神经网络中会产生相同的结果(也就是说,它们不是置换不变的)。意思也就是对于同一张图片有多种编码方式来将他转换成不同的邻接矩阵,但这些邻接矩阵表达的点边连接性是一样的,是同一张图片,而神经网络面对这些不同矩阵迭代学习出来的结果区别可能很大。就像下图ABCD四个相连节点就已经存在24种邻接矩阵方案。

在这里插入图片描述

对于这些问题,有人提出了一种优雅且节省内存的方法——邻接列表。
邻接列表包含了边的数量和节点之间连接关系,有多少条边就有多少个项,每个项都记载了对应边所连接的两个节点序号。可以避免在图的不连接部分进行计算和存储,另一个方面来说顺序对邻接列表影响不大,既是储存高效也是与顺序无关。

在这里插入图片描述

2、GNN

1.独自更新

GNN 采用“图入图出”架构,这些模型类型接受图作为输入,加载到其节点、边和全局上下文到模型中,并逐步更新这些传入信息,而不改变输入的连接性图形,也就是只对属性进行变化但是不改变图的结构。

比如说对U、V、E使用单独的多层感知器 (MLP),对于每个节点向量应用 MLP 并返回一个学习的节点向量。对每条边做同样的事情并返回学习每个边的信息。对于全局上下文向量并返回学习整个图的信息。
在这里插入图片描述

与神经网络模块或层一样,我们可以将这些 GNN 层堆叠在一起构建一个简单的 GNNs。
GNN最后一层的输出如何在任务中进行预测呢,比如面对二分类的情况,可以很容易地扩展到多类或回归的情况。

向量信息储存在节点时,进行二元或N分类预测,并且图已经包含节点信息,那么方法很简单——对于每个节点更新,应用全连接层+softmax得到输出。
在这里插入图片描述

向量信息存储在边时,但节点中没有信息仍需要对节点进行预测时,可以从边E收集信息并将这些信息提供给节点进行预测。可以通过pooling汇聚来做到这一点,应用全连接层+softmax得到输出。池化分两步进行:

  1. 收集每个节点连接边E的向量信息与全局上下文U信息,并将它们连接成一个矩阵。
  2. 然后对于聚合收集的向量,通常进行求和操作。
    在这里插入图片描述
    在这里插入图片描述

还有很多比如向量信息储存在边时预测边,向量信息储存在节点时预测边,向量信息储存在节点和边时预测全局上下文等等方案,不管
向量信息存储在哪里都可以通过汇聚操作得到想要的那个属性的向量信息。

以下就是一个简单GNNs模型图:
在这里插入图片描述

  1. 输入一个GNN图
  2. 对U、V、E分别进行对应的MLP处理
  3. 输出属性更新结构不变的图
  4. 汇聚层+全连接层+softmax
  5. 输出结果

2.VE交互更新

但在这个最简单的 GNNs 模型中,我们根本没有在 GNN 层内使用图的连通性。每个节点都是独立处理的,每条边也是如此,以及全局上下文。我们只在汇集信息进行预测时使用连接性,并没有很充分利用好图的信息。

这里是复用pooling汇聚来做到这一点,在把节点V传入MLP模型前,根据点线连接找到对应的邻接节点也就是一近邻,并把他们进行汇聚层产生新的向量后,再传入MLP中,也就是加多了一个简单聚合步,类似于没有加权和的卷积操作,这也是图卷积神经网络的思路。
在这里插入图片描述
在这里插入图片描述

通过将消息传递 GNN 层堆叠在一起,一个节点最终可以整合获取来自整个图的信息,比如在三层之后,一个节点拥有离它三步之遥的节点的信息,完成整个图的较长距离的信息传递过程。
在这里插入图片描述

从点与点之间引出一个问题,关于VE两者之间的信息交换。

根据之前的点边聚合信息思路,组合成新的节点和边表示:节点到节点(线性)、边到边(线性)、节点到边(边缘层)、边到节点(节点层),多种组合方式,不同方式有不同结果:

  1. 从顶点到边-边更新-边到顶点-点更新
  2. 从边到顶点-点更新-顶点到边-边更新
  3. 交替更新,同时进行
    在这里插入图片描述

3.UVE交互更新

网络存在一个缺陷:当图中存在两个相距很远的节点,可能无法有效的快速的相互传递信息。对于一个节点,如果我们有 k 层,则信息将最多传播 k 步,从而产生信息滞后。如果这个处于网络边缘的节点很重要的话,那可能会造成一定的影响。一种解决方案是让所有节点能够相互传递信息。不幸的是,对于大型图,这很快就会变得计算成本高昂(尽管这种称为“虚拟边”的方法已用于诸如分子之类的小型图)。

这个问题的一种解决方案是使用图 (U) 的全局表示,有时称为主节点 或上下文向量。这个全局上下文向量连接到网络中的所有其他节点和边,并且可以充当它们之间的桥梁以传递信息。

  1. U与V相连,信息从顶点汇聚到边时,U也会传进去。
  2. U与E相连,信息从边汇聚到顶点时,U也会传进去。
  3. U自更新时,其实就是将顶点和边的信息汇合去更新。
    在这里插入图片描述

3、GCN

GCN也是一个神经网络层。它的层与层之间的传播方式是:
在这里插入图片描述
其中:

  1. Aˇ=A+I,I是单位矩阵
  2. Dˇ是Aˇ的度矩阵(degree matrix),公式为 Dˇii=∑jAˇii
  3. H是每一层的特征,对于输入层的话,H就是X
  4. σ是非线性激活函数

图卷积神经网络是用其他节点的信息来推导该节点的信息。
另外,图中的每个结点无时无刻不因为邻居和更远的点的影响而在改变着自己的状态直到最终的平衡,关系越亲近的邻居影响越大。

图数据中的空间特征具有以下特点:
1) 节点特征:每个节点有自己的特征;(体现在点上)
2) 结构特征:图数据中的每个节点具有结构特征,即节点与节点存在一定的联系。(体现在边上)

总地来说,图数据既要考虑节点信息,也要考虑结构信息,图卷积神经网络就可以自动化地既学习节点特征,又能学习节点与节点之间的关联信息。


总结

所有图属性都学习了表示,因此我们可以在池化期间通过调节我们感兴趣的属性相对于其余属性的信息来利用它们。例如,对于一个节点,可以考虑来自相邻节点、连接边和全局信息的信息。为了使新节点嵌入所有这些可能的信息源,可以简单地将它们连接起来。此外,还可以通过线性映射将它们映射到同一空间并添加它们或应用特征调制层,这可以被认为是一种特征化注意机制。在这里插入图片描述

建议去看一下这篇国外博客,尝试去操作一下这些交互图,可以有效提高理解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/833697
推荐阅读
相关标签
  

闽ICP备14008679号