文章目录
Introduction
回顾其他的神经网络
我们先看看下面几个之前研究过的network。
初识图神经网络
图神经网络最重要的就是这个图(Graph)。
那么GNN的输入就是Graph,如下图所示:输入一张具有大量节点和边的Graph。
为什么要使用图神经网络
如下图,在分类应用中,我们可以输入一种分子结构,让分类器分类是否该分子导致突变。
还有就是在Generation应用中,让生成器生成我想要的结构分子。
还有就是在寻找凶手的时候。
我们可以像下面这样仅仅是用一个普通的分类器,将人物信息传入,判断是不是凶手。
但是,这些人物之间可能有潜在的关系,这时我们就要用GNN了。
那么下面提出了三个问题:
1.我们如何利用这些结构和关系去辅助我们的模型?
2.如果图很大,比如有两万个节点,又该怎么办?
3.如果有一些没有label的节点又该怎么办?
在我们实际生活中,没有label的节点远多于有label的节点,一个节点可以从他的邻居节点学习整个结构。
怎样实现GNN
我们用卷积的方式用一个kernel去扫描,能行吗?好像比较困难。
那么我们怎么样使用卷积将节点放入到特征空间?
GNN的学习路线图
Spatial-based和Spectral-based就是上面提到的两种方式。
Tasks, Dataset, and Benchmark
待补充
Spatial-based GNN
回顾一下卷积神经网络,用一个kernel去扫描整张图,然后做内积。
那么在GNN中,有两个术语:
1.Aggregate:用邻居特征去更新下一层的隐藏状态。
2.Readout:把所有节点的特征集合起来代表整个graph。
NN4G
如下图所示,我要更新节点V3:就是将各个邻居节点的特征向量相加,再成权重,再加上自己的特征向量乘以权重。
如何Readout?将每一层的所有的h取平均,然后再输入到一个神经网络中,最后输出一个y向量。
DCNN
此方法中d(3,’)=?都是指的最初的图里的v3和某一点的距离,每做一层距离就加一,最后可以叠很多层,mean(),是将符合括号内条件的向量相加得到的一个向量。
然后每一层都是v3的特征,将这些层拼成一个矩阵,然后与w相乘,就得到了v3的最终特征向量。
DGC
这种方式就直接将这些向量相加,上面的那种方法是拼起来乘个w。
MoNET
这个模型是加入了节点与节点之间的距离权重。
GraphSAGE
GAT
这个做法是找一个函数,然后输入V3和它的邻居节点,然后输出e,这个e就表示V3和某一结点的重要性。
GIN
Graph Signal Processing and Spectral-based GNN
待补充