文章目录
Graph Neural Networks顾名思义由Graph和Neural Network组成。Graph由节点和边组成,节点有节点的性质,边有边的性质。
09年Franco Scarselli提出The Graph Neural Network Model,能够将其用于化学分子会不会突变。
- GraphVAE用于药物研发。
如何把graph输入到NN中?这就是GNN需要处理的最大的问题。GNN想要做的事情就是抽取与周围节点之间的关系。通常有两种做法:
但是常用的算法是GAT和GCN。
Spatial-based convolution
用neighbor feature更新下一代的hidden state,我们乘这个操作叫做Aggregate。: 把所有 nodes 的 feature集合起来代表整个 graph的操作称之为Readout。那具体怎么做呢?
NN4G (Neural Networks for Graph)
假设我们的输入如下图所示:
节点分别有个特征,特征代表的是节点的一些特殊属性,比如在化学分子里面,就表示不同的原子所具有的属性。
对于节点,先经过一个编码得到第0层隐藏层的输出,之后在第一层隐藏层,需要考虑与节点相邻的三个节点,得到第1层隐藏层的输出,上述就是Aggregate所做的事情。
那Readout怎么考虑整张图的node feature呢?NN4G里面是将每一层的输出平均出来再加权。
DCNN (Diffusion-Convolution Neural Network )
同样对于下面这个输入:
第0层隐藏层的输出,其中表示距离这个节点距离为1的节点,将其平均再乘上一个权重。
第1层隐藏层的输出。可以看出它同样是基于输入图所做一些计算,并不是在第0层的输出上接着算的。
之后将每个隐藏层计算得到的结果排成一个矩阵,每个节点乘上一个权重就能得到Node features输出:
如果是将每个隐藏层计算得到的结果排成一个矩阵再加起来直接得到输出,而不是乘上权重矩阵的话,就是DGC (Diffusion Graph Convolution)这篇文章的工作。
MoNET (Mixture Model Networks)
Geometric deep learning on graphs and manifolds using mixture model CNNs在处理neighbor node的时候不是将其平均起来,而是考虑邻居节点的加权。
GraphSAGE
GAT (Graph Attention Networks)
GIN (Graph Isomorphism Network)
这篇文章主要是在理论上分析了什么样的做法会work,在处理邻居节点时,不希望去取max或者mean。
Spectral-based convolution
卷积操作在频域里面就是相乘,因此对输入图和Filter做傅里叶变换,然后相乘再做反变换可以得到相同的结果:
这里老板给任务了,先做去了,后面还有一部分,也比较深入了,未完,以后有看到更好的资料再来把这里补上吧:
- https://www.youtube.com/watch?v=M9ht8vsVEw8