GNN/GCN
Distill:https://distill.pub/2021/gnn-intro/
三大问题:
- Graph-level task(分类)
- Node-level task(顶点属性判断)
- Edge-level task(边的属性判断)
信息存储:(存储高效,不受排序影响)
- Nodes:标量/向量
- Edges:标量/向量
- Adjacency List:长度和边一样,第i个项表示第i个边连哪两个顶点
- Global:标量/向量
“message passing neural network” framework 是 graph-in,graph-out,不改变图的连接性
最简单的GNN
nodes向量,edges向量,全局向量分别构造一个MLP,作为一个层。不考虑所有的连接信息。
Pooling操作
最后一层输出怎么得到预测值?
假如对顶点做预测:二分类:对每个顶点进入输出维度为2的MLP,softmax,注意,只有一个MLP,所有顶点共享
没有对应顶点的向量怎么做?
该顶点连接的边向量和全局向量拿出来相加(假设维度相同),进入MLP,输出
如果只有顶点没有边向量?
把顶点向量汇聚(相加)到边上(相连的顶点)可以+U向量,进入边的MLP,输出
如果没有全局向量只有顶点向量怎么做?
顶点向量加起来进入U的MLP,输出
最简单的GNN的结构图如下:
局限性:
变换的时候没有使用图的结构信息,没有把图的信息更新进图
改进:passing messages
最简单的消息传递:更新一个顶点时,和邻居顶点加在一起,进入MLP
和CNN类似,和相邻像素相连,卷积核权重都一样,通道就是MLP
可以在早期进行边和顶点信息汇聚:
- 把顶点信息传递给边,边信息更新,再把更新过的边信息汇聚给顶点,顶点更新(维度不一样)
- 反过来结果不同
- 交替更新
全局信息U怎么做?
图大,消息传递很远,加入master node或者叫做context vector(和所有顶点相连,和所有边相连),即U
U和E,V所有东西相连,汇聚边/顶点,也会把U加入,更新U会把所有EV拿进来,进入MLP
类似attention,把q相近的信息拿过来
汇聚:mean,max,sum
其他图
- 有不同边(有向无向)
- 有子图
- 。。。。
图采样batching
1.随机采样点,之后找邻居,做子图减小存储
2.随机采样一个点随机走,固定随机走多少步得到子图
3.随机走几步,找邻居点
4.diffusion sampling:取一个点,把N近邻往前走k步,得到子图
Inductive biases
任何一个机器学习都有假设
CNN:空间变换不变性
RNN:时序连续性
GNN:保持图的对称性(无论顶点怎么交换,GNN不变)
汇聚操作中Max Mean Sum都差不多
GCN as subgraph function approximators
GCN:(带了汇聚的那个)如果有k层,只看邻居的话,每个顶点看到其子图,最远k步
点和边对偶
graph attention networks
卷积权重和位置相关,GNN权重需要对位置不敏感
权重可以取决于顶点向量之间的关系,点乘,softmax,顶点获得权重
图的可解释性
点和边对偶
graph attention networks
卷积权重和位置相关,GNN权重需要对位置不敏感
权重可以取决于顶点向量之间的关系,点乘,softmax,顶点获得权重
图的可解释性
generative modelling