文章目录
前言
1 Introduction
2 Roadmap
3 Spatial-based GNN
NN4G (Neural Networks for Graph)论文地址
DCNN (Diffusion-Convolution Neural Network )
MoNET (Mixture Model Networks)
GraphSage
GAT (Graph Attention Networks)
GIN (Graph Isomorphism Network)
最近看的论文里面主要是就是图神经网络Graph Nerual Networks,然后就来学习下李宏毅机器学习中的图神经网络的内容,记个笔记。视频地址
GNN简单来说就是Graph + Nerual Networks,关键问题就是将图的结构和图中每个节点和边的特征转化为一般的神经网络的输入(张量)。
可以做的事情主要包括:分类和生成
如何做?模仿卷积的过程
然后卷积有两种方式:基于空间的卷积(Spatial-based convolution)和基于频域的卷积(Spectral-based convolution)
本次介绍的内容大致如下:
Tasks, Dataset, and Benchmark这些我没做过实验,没看。
Aggregation
Aggregation是Convolution在GNN中的推广。Aggregation就是在某一个layer中用某node及其neighbor的feature得到下一个layer中该node的feature。
Readout
Readout有点像是全连接在GNN中的推广。Readout就是汇总整个图的信息,最终得到一个特征来表示这整个图(Graph Representation)。
主要的思想就是模仿之前的卷积操作,之前的卷积操作的是某个点的所有邻居,因此在GNN当中也是通过这样的方式下更新下一层(在GNN中叫做aggregation)。当然图上所说的Aggregate也会包括这个节点本身的特征feature。
另外还有就是会需要整个图的表示,叫做readout。
输入层
假如是一个化学分子,输入层的图中的结点就是一个原子。不同原子有不同的特征, 其特征可以是任何和原子相关的化学特征,所以需要embedding(将高维特征映射到低维特征),做完embedding也就得到了隐藏层h0h0。
隐藏层h0h0
如何做embedding呢?让原特征乘以embedding matrix就得到隐藏层h0。如下图所示,以1个结点为例,输入层中结点v3的特征是x3,该结点embedding时的计算式为。embedding后就得到了隐藏层h0,然后再对隐藏层h0进行Aggregation就得到了隐藏层h1。
input layer经过embedding之后到hidden layer 0。然后更新的话是将其相邻的节点相加然后乘以权重再加上之前input layer的原始输入。
关于为什么要相加的问题:如果不用相加的话,你就很难去处理节点间邻居数量不同这个巨大的区别 。另外,相加是最简单也是被证实最有效的利用邻点信息的方法。
整个图的表示是通过求出每一层整个图中的顶点间的特征均值,然后各自乘以相应的权重再把每一层得到的结果相加。
论文地址
每一层的更新方式:如第一层,更新某个节点首先找到与它距离为1的节点(也就是邻居节点),然后用原始的输入相加取平均值再乘以权重。第二层,更新更新某个节点首先找到与它距离为2的节点(这样也包括了它自自己本身),然后用原始的输入相加取平均值再乘以权重。
以此类推,叠加k个隐藏层后就可以获取各结点k范围内的信息。如下图所示,令1个隐藏层中多个结点的特征形成矩阵(1行是1个结点的特征),多个隐藏层的特征就形成多个通道H0 H1 H2。。
node features
当我们需要每个节点的feature时候,采用一下的方式来表示图中每个节点的特征:
如何表达整个图的特征呢?如下图所示,将每个通道的特征flatten,然后再乘以参数w得到y1即可。
如对节点1来说,也就是将每一层的节点1提出来,然后乘以权重得到最后节点1的表示。按照类似的操作可以得到其余节点的表示。
还有种处理方式:DGC (Diffusion Graph Convolution)
这里就直接将每一层对应的节点相加。
论文地址
之前只是简单的相加,并没有考虑到一个节点的邻居之间的区别(有的邻居可能更重要一点)。NN4G、DCNN都是将邻居结点的特征直接相加,并没有考虑各个邻居结点特征的重要性,而MoNET考虑了这个问题。
MoNET定义了结点距离的概念,基于结点距离表示各个邻居结点特征的重要性然后对各个邻居结点进行加权求和,而不是简单地取均值或求和。
其中的deg表示的是节点的度。无向图当中也就是说有几个和它相连接的节点。这里定义的距离公式可以有不同的。也就是给每个节点不同的权重weighted sum。
然后就是图中的公式最后一个w() 有个地方写错了,应该是而不是。
SAmple and aggreGatE(GraphSAGE),在transductive和inductive setting上都能work。
论文链接:https://arxiv.org/abs/1706.02216
GraphSAGE的Aggregation除了mean,还有max pooling和LSTM。LSTM用来处理序列数据,但图中结点的邻居并没有序列关系,但如果每次在邻居中随机取样出不同顺序,那也许可以忽略顺序学习到顺序无关的信息。
论文地址
不止是简单的weighted sum, 不是像之前那样定的weight ,而且要让他自己去学习这个weight。对邻居做Attention,就是不同的邻居给出不同的weight。
假如我们有1个和上例中(NN4G)一样的输入图。在做aggregation时,我们通过函数f计算各个邻居结点v0,v2,v4对结点v3的重要性,然后做加权求和。
细节还没完全搞懂,但是目前用得最广的就是这个。
论文地址
提供了一些关于图神经网络 什么方式的aggregate能够work的理论证明和结论。
下面的就是例子证明max和mean的缺点。对比的两个图,如果用max或者mean的话是看不出来两个图的区别的。
公式中epsilon可以为0,因此也就是所有相邻节点和其本身节点相加就可以的。