赞
踩
distill是网页形式的期刊,其中有许多非常棒的可视化讲解,力求把晦涩难懂的研究工作讲得通俗易懂。
非常适合初学者学习。
其中有两篇发布于
Sept.2,2021
的有关图神经网络的博客,文章脉络清晰。
以下将参考这两篇论文展开。
我们身边到处都是图,一系列对象以及他们之间的关系可以自然地表示为图。
图神经网络近期在能力和表现力上有了长足进步,应用有:细菌发现、物理模拟、虚假新闻检测、交通预测、推荐系统。
为什么要用图神经网络?
相对于传统的神经网络,GNN可以胜任更复杂的数据模型。在之后的文章中我们可以看到,图的结构更多变,输入没有固定的大小。图片和语言都可以看作是一类特殊的图数据。
应用在传统数据格式上的神经网络无法直接处理普遍格式的图数据。
什么是图?
图表示了一系列实体以及实体之间的关系。通常包含点集和边集。在GNN语境下,图通常包含三个要素。
图是非常强大、普遍且灵活的数据结构,这里用两个例子来说明图的普遍型,加深对于图概念的认识。
node
,将相邻关系看作是edge
。由此就可以将图表示成图数据的形式。word
序列,同样可以将单独的word
用node
表示,将相邻word
的连接关系用directed edge
表示。当然,用图结构来表示图像和文本是一种冗余的表示方式,它们都拥有
regular structures
正规结构,有各自更适合的相对精简的表示方式。
这里只是说明了图的强大表示能力。换句话说,图中元素个体之间的关系可以是随意组合的,而传统任务中元素个体之间的关系是单一不变的,可以理解图为更普遍的数据组织形式。
有了上面对于图的认识,接下来我们就可以专注于一些其它类型的数据,这些数据结构更多变,每个结点的临边个数可能不同,能够胜任这些数据的表示的数据结构只有图。
3D
结构。我们用node
表示原子,用edge
表示原子间的距离(化学键类型)。node
表示人,用edge
表示关系。聚类或分组。图上的问题粗略来分有三类:图-级别、边-级别、点级别。分别对应了图的三要素。
Zach's karate club
。简单来说就是将图中的点分成两类。可以类比计算机视觉中的实例分割任务,需要对每一个像素属于的类别进行预测。在解决图相关问题以前,第一步是解决图和神经网络的兼容问题。
机器学习通常接收矩阵或网格阵列作为输入,需要想办法将图表示成这种格式。
图中蕴含四种我们可能用到的信息:结点、边、全局信息、连通性。
下一个部分提出了问题的解决方案。
之前提到直接用邻接矩阵表示图的临界性信息会存在一些问题。为了方便解决图和神经网络的兼容性,构建可行的GNN,需要特殊处理邻接信息的表示。
采用邻接列表存储连通信息。解决了稀疏问题和顺序问题。
# Nodes
[0, 1, 1, 0, 0, 1, 1, 1]
# Edges
[2, 1, 1, 1, 2, 2, 1]
# Adjacency List
[[1, 0], [2, 0], [4, 3], [6, 2], [7, 3], [7, 4], [7, 5]]
#列表存储特征信息,用序号对应关系绑定边和连通性。
#这里用标量表示特征信息,通常使用向量表示。
有了这些准备,就可以着手开始构建GNN了。
GNN是对于全图属性的优化转换,同时保持了图的对称性。
GNN的输入和输出时具有相同连通性的图,只是对于结点、边和全局信息的嵌入属性做了优化更新。使用“消息传递神经网络”框架构建GNN。会用到图网络结构图表。
最简单的GNN中,只需要得到
V E U
的i虚拟的嵌入表示,不考虑连通性信息。
GNN使用独立的多层感知机(MLP)对所有的图的组成部分进行应用。输入是一个图,用MLP更新(U,V,E)
后输出新图。
U
n
→
f
U
n
→
U
n
+
1
U_n\rightarrow f_{U_n} \rightarrow U_{n+1}
Un→fUn→Un+1
E
n
→
f
E
n
→
E
n
+
1
E_n\rightarrow f_{E_n} \rightarrow E_{n+1}
En→fEn→En+1
V
n
→
f
V
n
→
V
n
+
1
V_n\rightarrow f_{V_n} \rightarrow V_{n+1}
Vn→fVn→Vn+1
输入输出的信息规模完全相同,只是更新了嵌入信息的值。
注意这里(U, V, E)
都是单独计算的,并没有用到连通性信息。
GNN的特点就是Pooling Inofrmation,上一个GNN实际过于简单。
假设目前需要对结点类型进行预测,最简单的方式就是使用上一种方法中输出的结点嵌入信息再过一次线性层得到分类结果。但这种方法过于直接,效果和适用范围受限。例如,当确实结点信息时,必要通过边信息的汇聚来得到缺失的结点的嵌入信息。
汇聚过程包括两步:
上述过程:
ρ
指汇聚函数,
C
指最终分类层
\rho指汇聚函数,C指最终分类层
ρ指汇聚函数,C指最终分类层
V
n
ρ
E
n
→
V
n
→
C
V
n
→
结点预测值
E
n
↗
V_n \quad \rho_{E_n\rightarrow V_n} \rightarrow C_{V_n} \rightarrow 结点预测值 \\ E_n \nearrow \qquad \qquad \qquad \qquad \qquad
VnρEn→Vn→CVn→结点预测值En↗
汇集函数 ρ \rho ρ可以跨类型实现信息汇聚的过程,上述方法是从边到结点的汇聚,通过各种
源--目标
组合可以实现不同的汇聚类型。
但目前仍没有使用到连通信息,接下来将说明连通信息如何引入。
可以通过GNN层内的汇聚实现更为复杂的预测。为了引入连通信息,可以让相邻结点之间或边之间进行信息传递,互相影响,通过连通信息实现汇聚。
信息传递工作包括三步:
U n → ρ V n → V n → f U n → U n + 1 U_n\rightarrow \rho_{V_n \rightarrow \ V_n}\rightarrow f_{U_n} \rightarrow U_{n+1} Un→ρVn→ Vn→fUn→Un+1
以上过程类似于卷积,都是通过邻居信息来更新结点(像素)信息。但在GNN中,邻居的个数是不固定的。
有了以上的方法,可以实现
(V, E, U)
之间或自身的信息汇聚过程,可以任意组合。达到补全缺失信息或提高预测能力的目标。
汇聚的顺序对最终效果是有影响的。
有关全局信息的解释
这里可以解释为什么要用到全局信息
U
。有些时候通过邻居的汇聚很难得到整个图的一些信息,可以先将所有结点的信息汇集到全局信息U
(也叫主结点、上下文向量),再将该信息汇聚到每一个结点,从而使结点获取到包含远端信息的全局信息。
最基础版GNN原理--大功告成
综上,所有的图属性都得到了学习的表示,我们可以在池化
pooling
过程中将我们感性趣的属性与其它信息相关联得到输出。
为了实现不同长度的嵌入信息之间的传递,可以利用线性层将所有信息映射到相同空间上。
(或使用特征调制层`feature-wise modulation layer, 可以被认为是一种特征调制注意力机制)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。