图神经网络(一)循环图神经网络

前言

在处理序列时,我们有RNN和Transformer等序列深度模型;在处理图像时,我们有CNN等利用卷积提取局部特征的深度模型。当我们处理一般的图结构时,由于其结构即不是序列那种线性结构,也不是图像中像素点的排列是有规律的,所以很难使用RNN或CNN对图结构建模。图神经网络就是一种在更一般的图结构上建模的深度模型。

图神经网络

数据结构

图的结构一般可以这样定义:G(V,E),表示图G的顶点结合是V,边集是E,每条边是一个二元组(u,v)或三元组(u,v,w)表示顶点u和顶点v有连边,边的权重为w。在图神经网络中,每个顶点有一个特征的表征向量$x_{u}$,每条边也可以有一个特征的表征向量$x_{u,v}$。

不动点定理

在介绍模型之前,先要介绍一下不动点定理。不动点定理是说,如果有一个压缩函数,将一个域内的点压缩到另一个域,且压缩后的域在压缩前的域的范围内,则可以证明在前一个域中存在一个点在压缩后保持不变。如果我们反复调用这个压缩函数,使得域最终收敛到一个点,将中间的压缩过程合并看成一个压缩函数,可以证明这个收敛点在初始域中也对应到同一个点,可以用下面的数学式子表示:

其中$F$是多次压缩函数合并后的压缩函数,$x$是收敛点。这个式子就是表示不动点定理。不动点定理为图神经网络能够收敛提供了理论基础。不动点定理的压缩条件可以用这个式子表示:

其中$d(\cdot)$表示求距离,这表示两个点在压缩后的域中的距离总是小于等于在压缩前的域中的距离。

模型

我们可以设置这么一个函数$f$,有下面的式子:

其中$h_{u}^{t+1}$表示第$t+1$次迭代节点$u$的表征向量,函数$f$的第一个参数是节点$u$的原始特征表征向量,第三个参数是一个集合表示与节点$u$相邻的节点的原始特征表征向量集合,第四个参数是一个集合表示与节点$u$相邻的节点的边的原始特征表征向量集合,第五个参数是一个集合表示与节点$u$相邻的节点在第$t$次迭代得到的表征向量集合。如果$f$是一个压缩函数,那么可以证明,经过多次迭代后每个节点都会收敛到一个特征表征向量。所以现在的关键是如何保证$f$是一个压缩函数。已知不动点定理要求:

变换一下公式可以得到:

将$y$替换成$x+\Delta x$,求距离看作是求增量,则上式可以看作是微分,即:

将$F$替换成前面提到的函数$f$,$x$替换成表征向量$h$,得到:

所以我们可以在原损失函数的基础上加上这个约束,将这个约束的系数调到很高给予很高的惩罚就可以保证$f$是一个压缩函数了,即目标函数为:

其中$\lambda$是一个超参数,用来调整使得函数$f$尽量满足压缩条件。图神经网络模型就是使用前馈神经网络作为函数$f$的运算,主要有以下学习步骤:
(1) 给定各个节点的初始化表征向量
(2) 使用神经网络对每个节点进行迭代运算,直到收敛
(3) 从收敛状态计算目标函数值,进行反向传播

学习到神经网络参数后,每次对于新的图,只需要将图的节点和边送入模型迭代计算到收敛即可。

门控图神经网络

上述的图神经网络在学习与预测时都非常复杂,因为需要迭代计算到收敛,而且也不能保证泛化时总能收敛。在泛化时,对于新节点,函数$f$不能保证是压缩的。门控图神经网络是使用RNN,LSTM,GRU等序列深度模型处理图数据,模型依然可以使用函数$f$表示,依然和上一章节的函数$f$有着相同的形式,只是这一次不再要求$f$是压缩函数,也不再要去每次计算都需要迭代到收敛。以GRU为例,可以有下面的计算式子:

其中$agg$表示一个聚合函数,将相邻节点的表征向量和边的特征表征向量聚合成一个向量。这种方法每次计算不需要迭代至收敛,设置一个迭代次数,每次只迭代固定步数。因为是迭代固定步数,所以也只能捕获图中在固定步数范围内的依赖关系,一个技巧是迭代图的直径长度次数,这样可以保证图中任意节点之间的依赖都可以捕获。门控图神经网络去除了以不动点定理作为理论依据,使得模型的学习与预测变得更简单。

最后在这里贴上本篇文章的参考文章:https://www.cnblogs.com/SivilTaram/p/graph_neural_network_1.html