在讨论GNN之前,我们先来了解一下什么是图。在计算机科学中,图是由顶点和边两部分组成的一种数据结构。图G可以通过顶点集合V和它包含的边E来进行描述。
根据顶点之间是否存在方向依赖关系,边可以是有向的,也可以是无向的。其中a是无向图,c为有向图。
在了解图神经网络之前,我们来复习一下与图神经网络相关的一些概念
图嵌入(Graph Embedding/Network Embedding,GE),属于表示学习的范畴,也可以叫做网络嵌入,图表示学习,网络表示学习等等。通常有两个层次的含义:
图嵌入的方式主要有三种:
图神经网络(Graph Neural Network, GNN)是指神经网络在图上应用的模型的统称,根据采用的技术不同和分类方法的不同,又可以分为下图中的不同种类,例如从传播的方式来看,图神经网络可以分为图卷积神经网络(GCN),图注意力网络(GAT,缩写为了跟GAN区分),Graph LSTM等等,本质上还是把文本图像的那一套网络结构技巧借鉴过来做了新的尝试。图神经网络是一种直接作用在图结构上面的神经网络。
在论文《Relational inductive biases, deep learning, and graph networks》中作者定义了图神经网络的通用结构,也就是现在的图神经网络的开山鼻祖 ,在这个框架中定义了和扩展了各种图神经网络,GN framework的主要计算单元是GN block,一个图到图的模块,它的输入是一个图 在图结构上进行计算然后得到的输出仍然是图结构的输出。在GN framework下,一个图可以被定义为一个三元组G=(u,V,E),u是图的全局表示,V={Vi},i=1:N^v代表图中N^v节点的集合,Vi表示节点i,E={(e_k,r_k,s_k)},k=1:N^e表示图中N^e条边的表示,e_k为边的表示r_k,s_k分别代表的是边的接收点和发送点。
每一个GN block包含三个更新函数Φ以及三个聚合函数ρ:
上式中E'_i={(e_k,r_k,s_k)},r_k=i.k=1:N^e,V’={V_i},i=1:N^v,E'=U_iE_i'={(e'_k,r_k,s_k)},k=1:N^e。
其中Φ^e应用于图中每条边的更新,Φ应用于图中每个节点的更新,Φ则用来更新图的全局表示;ρ函数将输入的表示集合整合为一个表示,该函数设计为 可以接收任意大小的集合输入,通常可以为加和、平均值或者最大值等不限输入个数的操作。
当一个GN block得到一个图G的输入时,计算通常从边到节点,再到全局进行。下图给出了一个GN block的更新过程。
一个GN block的计算可以被描述为如下几步:
GNN的一个引用就是在节点分类上面,本质上图中的每一个节点都与一个标签相关联,然后通过一标记的标签来预测为标记的标签。在节点分类中每个节点v都可以个节点v都可以用其特征x_v表示并且与已标记的标签t_v相关联。给定部分标记的图G,目标是利用这些标记的节点来预测未标记的节点标签。它通过学习得到每个节点的d维向量(状态)表示为h_v,同时包含其相邻节点的信息。
x_co[v] 代表连接顶点v的边的特征,h_ne[v]代表顶点v的邻居节点的嵌入表示,x_ne[v]代表顶点v的邻居节点特征。f是将输入投影到d维空间的转移函数,由于要求出h_v的唯一解,我们应用Banach不动点理论重写上述方程进行迭代更新。
H和X分别表示所有h和x的连接,通过将状态h_v以及特征x_v传递给输出函数g来计算GNN的输出。
这里的f和g都可以解释为全连接前馈神经网络,L1损失可以直接表述为如下函数:
它可以通过梯度下降进行优化,但是该论文指出的原始GNN有三个主要局限:
1.如果放宽了“固定点”的假设,则可以利用多层感知器来学习更稳定的表示,并删除迭代更新过程。 这是因为在原始方法中,不同的迭代使用转移函数f的相同参数,而不同MLP层中的不同参数允许分层特征提取;
2.不能处理边缘信息(例如知识图谱中的不同边可能表示节点之间的不同关系);
3. 固定点会限制节点分布的多样化,因此可能不适合学习节点表示。
虽然现在已经提出了几种GNN变体来解决上述问题。 但是他们不是论文的重点。
1.图卷积vs卷积
下图是图像卷积也就是通用cnn卷积的一个示例,数字图像是一个二维的离散信号,卷积过程就是利用一个卷积核在该图像矩阵上面滑动来提取特征,具体运算过程是:将图像上面的像素灰度值来与对应的卷积核上面的数值相乘,然后将相乘后的值相加作为卷积核对应的图像上面像素的灰度值。具体为什么要这么做可自行查看cnn的原理和定义,这里就不加阐述了,就把它当做一种定理来使用就行了。
用随机的共享的卷积核得到像素点的加权和从而提取到某种特定的特征,然后用反向传播来优化卷积核参数就可以自动的提取特征,是CNN特征提取的基石。
然而,现实中更多重要的数据集都是用图的形式存储的,例如社交网络信息,知识图谱,蛋白质网络,万维网等等。这些图网络的形式并不像图像,是排列整齐的矩阵形式,而是非结构化的信息,那有没有类似图像领域的卷积一样,有一个通用的范式来进行图特征的抽取呢?这就是图卷积在图卷积网络中的意义。
2.图卷积的形象话理解
我们先从其他的角度理解一下这个操作的物理含义,有一个形象化的理解,我们在试图得到节点表示的时候,容易想到的最方便有效的手段就是利用它周围的节点,也就是它的邻居节点或者邻居的邻居等等,这种思想可以归结为一句话:
图中的每个结点无时无刻不因为邻居和更远的点的影响而在改变着自己的状态直到最终的平衡,关系越亲近的邻居影响越大。
实际上从邻居节点获取信息的思想在很多领域都有应用,例如word2vec,例如pagerank。关于这个点展开的内容文章[2]有非常详细的解释。
更加细节的如何从傅立叶变换到拉普拉斯算子到拉普拉斯矩阵的数学推倒可以转向博客[7],为了避免数学功底没有那么强的初学者(比如我)被绕晕,我们先建立大纲,不要太发散。
3.图相关矩阵的定义
有什么东西来度量节点的邻居节点这个关系呢,学过图论的就会自然而然的想到邻接矩阵和拉普拉斯矩阵。举个简单的例子,对于下图中的左图(为了简单起见,举了无向图且边没有权重的例子)而言,它的度矩阵 D ,邻接矩阵A和拉普拉斯矩阵L, 分别如下图所示,度矩阵D只有对角线上有值,为对应节点的度,其余为0;邻接矩阵A只有在有边连接的两个节点之间为1,其余地方为0;拉普拉斯矩阵L为。但需要注意的是,这是最简单的一种拉普拉斯矩阵,除了这种定义,还有接下来介绍的几种拉普拉斯矩阵。
4.图卷积的通式
任何一个图卷积层都可以写成这样一个非线性函数:
H^{l+1}=f(H^l,A)
H^0=X为第一层的输入,X∈R^{N*D},N为图节点个数,D为每个节点特征向量的维度,A为邻接矩阵,不同模型在于使用的函数f不同。
拉普拉斯矩阵实现1
其中W^l为第l层的权重参数,σ(.)是非线性激活函数,列入ReLU。
这种思路是基于节点特征与其所有邻居节点有关的思想。邻接矩阵A与特征H相乘,等价于,某节点的邻居节点的特征相加。这样多层隐含层叠加,能利用多层邻居的信息。
但这样存在两个问题:
因此实现二和实现三针对这两点进行了优化
拉普拉斯矩阵实现2
拉普拉斯矩阵 L=D-A,学名Combinatorial Laplacian,是针对实现一的问题1的改进:
拉普拉斯矩阵实现3
这里的拉普拉斯矩阵本质上还是实现一的两个问题进行的改进:
其中deg(v_i),deg(v_j)分别为节点j和j的度,也就是度矩阵在i和j点的值。
可能有一点比较疑惑的是怎么两边乘以一个矩阵的逆就归一化了? 这里需要复习到矩阵取逆的本质是做什么。
我们回顾下矩阵的逆的定义,对于式子A*X=B,假如我们希望求矩阵X,那么当然是令等式两边都乘以A^{-1},然后式子就变成了X=A^{-1}*A*X=A^{-1}*B。
举个例子对于,单个节点运算来说,做归一化就是除以它节点的度,这样每一条邻接边信息传递的值就被规范化了,不会因为某一个节点有10条边而另一个只有1条边导致前者的影响力比后者大,因为做完归一化后者的权重只有0.1了,从单个节点上升到二维矩阵的运算,就是对矩阵求逆了,乘以矩阵的逆的本质,就是做矩阵除法完成归一化。但左右分别乘以节点i,j度的开方,就是考虑一条边的两边的点的度。
[1] https:// zhuanlan.zhihu.com/p/77729049 图嵌入的分类
[2] https://www.zhihu.com/question/54504471/answer/630639025 关于图卷积的物理学解释
[3] https://www.zhihu.com/question/54504471/answer/332657604拉普拉斯公式推倒细节,包括谱分解和傅立叶变换
[4] http://tkipf.github.io/graph-convolutional-networks 两篇论文细讲
[5] https://github.com/conferencesub/ICLR_2020各种图卷积核比较
[6] https://persagen.com/files/misc/scarselli2009graph.pdfGNN首次被提出的paper
[7] https://zhuanlan.zhihu.com/p/85287578 拉普拉斯矩阵和拉普拉斯算子的关系
[8] https://github.com/opprash/braveRL/tree/master/GNN 图神经网络及其定义
[9]https://yq.aliyun.com/articles/694432 图神经网络简介
[10]https://mp.weixin.qq.com/?s__biz=MzI4MDYzNzg4Mw==&mid=2247490775&idx=3&sn=d14a585aa789d057f52396241b8428b1&chksm=ebb42403dcc3ad150dec4f57242ea2f8defb157d0a6ee58fce82f7e1fd628629218a9a5ff4d4&mpshare=1&scene=23&srcid=&sharer_sharetime=1579417079575&sharer_shareid=fc524225b6e78f30e915df15248fac48#rd 一文读懂图卷积GCN
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。