GNN/GCN

GNN/GCN

Distill:https://distill.pub/2021/gnn-intro/

GNN/GCN_第1张图片

三大问题:

  1. Graph-level task(分类)
  2. Node-level task(顶点属性判断)
  3. 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的结构图如下:

GNN/GCN_第2张图片

局限性:

变换的时候没有使用图的结构信息,没有把图的信息更新进图

改进:passing messages

GNN/GCN_第3张图片

最简单的消息传递:更新一个顶点时,和邻居顶点加在一起,进入MLP

和CNN类似,和相邻像素相连,卷积核权重都一样,通道就是MLP

可以在早期进行边和顶点信息汇聚:

  1. 把顶点信息传递给边,边信息更新,再把更新过的边信息汇聚给顶点,顶点更新(维度不一样)
  2. 反过来结果不同
  3. 交替更新

全局信息U怎么做?

图大,消息传递很远,加入master node或者叫做context vector(和所有顶点相连,和所有边相连),即U

U和E,V所有东西相连,汇聚边/顶点,也会把U加入,更新U会把所有EV拿进来,进入MLP

类似attention,把q相近的信息拿过来

汇聚:mean,max,sum

其他图

  1. 有不同边(有向无向)
  2. 有子图
  3. 。。。。

图采样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

你可能感兴趣的:(人工智能,深度学习)