GNN 引入
假如要预测一个人是否是凶手。可以通过每个角色的特征训练出一个分类器。
有没有我们忽略的信息,或者我们可以利用但没有完全利用的信息。就是角色的关系。
这些角色关系可以让我们在做分类的时候获得一些额外的信息,可以帮助我们做更好的model。怎样同时考虑角色的特征和角色之间的关系,这个时候就要用GNN。
CNN 扩展到 GNN
对于CNN,通过卷积核,将一个点周围的邻居和卷积核对应相乘相加,得到下一层 feature map 的结果。这件事情能否 generalize 到 graph 上?
对于GNN,能否有一个类似卷积核的东西?
方法一:通过邻居 update ferture map。
方法二:信号处理的方法。先把信号转到 fourier domain 里面,再把转到 fourier domain 的信号和转到 fourier domain 的 filter response 做相乘,相乘之后再做 inverse fourier transform,就可以得到最后经过 filter 的信号。
如何在 graph 上做 convolution
有两种方式,就是上面讲的两个方法,一种是 Spatial-based 方法,一种是 Spectral-based 方法。
Spatial-based GNN
回顾 CNN 的做法
Spatial-based GNN 的做法
NN4G
看一下具体的 GNN 是如何做的
先做 embedding
embedding 是一个将离散变量转为连续向量表示的一个方式。
更新一个节点的做法
将邻居节点的特征相加,经过一个 transform,再加上该节点原本的特征。
Readout 的做法
DCNN
第一层是将跟节点3距离为1的节点取平均,第二层是将跟节点3距离为2的节点取平均。如果叠 k 层,就能看到 k 邻居的信息。
把每一层节点的特征叠起来。
得到最终某个节点的特征。
DGC
和 DCNN 的区别
MoNET
NN4G 是将每个节点相加,没有考虑邻居的权重。MoNET 考虑了邻居的权重。
GAT
MoNET 是定义了权重的计算方式,GAT 让网络自己去学这个权重。
做法是对邻居做 attention
GIN
结论是对邻居做 sum 而不是 mean 或 max
Spectral-based GNN
还是想像 CNN 一样做卷积
上图原理是时域卷积等于频域乘积
后面就听不懂了。。。
可以去看原视频
P43(选修)To Learn More - Graph Neural Netwo(2_2)
参考
P42 (选修)To Learn More - Graph Neural Network(1_2)
P43(选修)To Learn More - Graph Neural Netwo(2_2)