GNN(Graph Neural Network)
GNN是为了解决图(Graph)结构的数据,比如社交网络、分子结构、树
比如预测一个分子结构会不会发生突变
更形象的例子:
预测一个人是不是凶手,当然可以使用各种特征做分类。比如实验2 classification。但是还可以考虑的一个特征是人与人之间的联系
所以如何在预测一个人的类别时同时考虑和其他人关系,这就构成了图,GNN处理的就是这种结构,一种图结构
首先提出3个挑战:
- 如何利用结构和关系来帮助模型?
- 怎么处理大型图,比如有20k节点?
- 如果图很大,有可能不能所有的节点都有label,怎么处理?
首先第3个问题,可以找最近节点近似
我们知道卷积可以作用在以矩阵形式分布的存储结构上,典型的例子就是图片,那么如何作用在图上?
有2种解决方法:
- 将卷积(相关性)的概念推广到图>>基于空间的卷积(Spatial-based Convolution)
- 回到信号处理中卷积的定义>>频谱卷积(类似图像处理中的频域滤波?)
Spatial-based Convolution
Aggregate: 用 neighbor feature update 下一層的 hidden state(当然包括自己的feature)
Readout: 把所有 nodes 的 feature 集合起來代表整個 graph
NN4G (Neural Networks for Graph)
输入:
以求顶点v3为例,转成hidden layer,首先有个w
然后做Aggregate:
注意:还要加原本的x
Readout:
每层的节点加起来(求均值?),然后每层加起来
DCNN (Diffusion-Convolution Neural Network )
DCNN原理类似图像金字塔,叠加不同视野尺度,这里是叠加不同距离的邻居,个人理解
:
节点的特征表示:
类似的还有DGC (Diffusion Graph Convolution),是直接加起来就结束了
MoNET (Mixture Model Networks)
节点之间相加是可以加权重的,每个邻居的重要性是不一样。
比如:
GAT (Graph Attention Networks)
类似MoNET,但是这里权重也是学到的:
GIN (Graph Isomorphism Network)
结论:
说明节点直接应该相加,而不是均值或者求最大。因为: