目录
Feature Augmentation on Graphs
Augment sparse graphs——添加虚拟节点或边
Head的选择1:Concatenation + Linear
Head的选择2:Hierarchical Global Pooling
Training Graph Neural Networks
Supervised&Unsupervised learning
之前都是假设原始input graph = computational graph,但是存在以下问题:
1.features
input graph缺少features
2.graph structure
因此原始input graph不太可能是用于embedding的最优computational graph
1.Graph Feature augmentation
input graph缺少features——feature augmentation
2.Graph Structure augmentation
对应于只有邻接矩阵的情况
1.为节点分配常数值作为特征
2.为节点分配不同的ID(one-hot编码)
例如cycle结构,不同length的cycle图的节点都有相同的计算图,会得到相同的embedding,因此不能区分节点到底在哪个length的图上。可以使用cycle count作为节点特征。
还有其它难以学习的结构,可以使用Node degree、Clustering coefficient、PageRank、Centrality作为节点特征。
1.添加虚拟边
常用的方式:通过虚拟边连接2-hop的neighbors。将用于计算GNN的邻接矩阵A变为实现。(因为无权无权图邻接矩阵A 的n次幂的含义:每一个元素aij表示从节点i用n步走到
节点j有多少种路径)。
可以用在二部图上:例如作者-论文网络,相当于在一篇论文的共同作者/同作者的两篇论文间添加虚拟边,则可以直接交换信息,则GNN变浅运算速度加快
2.添加虚拟节点
虚拟节点会与图中的每一个节点相连。在一个稀疏图中,两个节点之间的最短路径距离很大,添加虚拟节点后,任意两个节点之间的距离变为2,添加虚拟节点之后图中节点的距离会更小,节点间传递message会更有效更快,图神经网络的深度也不用那么大。
以前的做法是图中所有的节点都用于messag传递,如果图中边太多(dense)或者图太大,则高degree的节点要从所有邻居节点AGG message太expensive。
idea:可以采样邻居节点用于message传递
在不同一层或者不同epoch training时对一个节点的邻居节点可以用不同的sample方法(采样不同的点),当图很大时,用sample的方法可以使GNN变小很多,将其缩放为大量小图,计算效率提升了,极大的减少了计算cost,但是也损失了一些表达能力,因为忽略了一些节点的message。
不同的任务levels需要不同的prediction heads。Node-level prediction、Edge-level prediction Graph-level prediction
可以直接使用node embeddings做预测,在GNN计算后得到d维node embeddings,假设做k-way prediction(分类:有k个类别,回归:在k个targets),使用k*d维的矩阵W将d维embedding映射到k维输出预测y上,接着便可以计算损失
使用node embeddings做预测,假设做k-way prediction,例如链接预测
将两个d维node embeddings拼接为一个2d维的向量,使用Linear将2维向量映射到k维向量
输出预测等于两个节点嵌入的点积。此方法仅适用于1-way预测(例如,链接预测:预测边的存在),如果想应用到k-way预测,则类似于多头注意力机制,使用k个参数矩阵W,点积乘W得到么一个预测,再将这些预测拼接起来。
使用图中的所有节点embeddings做预测
类似于在GNN layer里的AGG(.)
在小图上效果好。
Global pooling 在 (large) graph 可能会丢失一些信息
可以看到G1于G2 者的图结构不同, 但Global pooling的结果相同,因此无法区分这两个图
分层池化意味着不会将所有node embeddings同时汇合,而是先汇聚小子集内的节点,最后再将这些子集汇合到一起。
那应该决定汇聚节点子集的策略?使用社区检测的方法,聚合社区内节点成为超级节点,再进一步聚合超级节点,最后得一个超级节点,输入predication head。
在每个level使用2个独立的GNN:GNN A用于计算node embedding;GNN B 用于计算社区检测,计算节点属于哪个cluster。
在each pooling layer:
使用 GNN B 中的社区检测来聚合 GNN A 生成的节点嵌入
为每个cluster创建一个新的超级节点,留下clusters之间的 Edge 生成新的pooled network
GNN A和GNN B 可以并行训练。
ground-truth来自于Supervised labels与Unsupervised signals。Supervised learning是labels来自于外部,而Unsupervised learning的signals来自于图自身。两者的区别是监督信息来自于外部和内部的区别。
输出结果是离散值
1.多分类
accuarcy
2.二分类
Accuracy、Precision / Recal。lf the range of prediction is [0,1], we will use 0.5 as threshold。metrics对分类阈值敏感,且在样本不均衡时,accuarcy可以被虚假分类器欺骗,例如将所有样本分为样本数多的类被,值也会很高。
Metric对分类阈值不敏感的有ROC AUC
Training set:用于优化GNN的参数
Validation set:develop model/超参数
Test set:保密直到用于最终的评价performance
但是不能保证test set最后没有信息泄露
当划分image数据集时,每一个数据点是一张image,数据之间相互独立,不会有信息泄露。
但是划分graph dataset是不同的,data points之间不相互独立,节点之间相互连接,存在信息泄露,测试集会收到验证集或者训练集节点传递的message。
training / validation / test sets are 在same graph上,dataset包含one graph;entire graph可以在所有的dataset splits上观察到,只划分labels,即在每个split上都可以看到完整的graph,但只能看到split的labels;只适用于node/edge预测任务。
training / validation / test sets 在different graphs,dataset包含multiple graphs;
每个split只能观察split中的的图形。一个成功的模型应该推广到未见过的图形。适用于node/edge/graph任务。
移除边将entire分成multiple graphs,得到的多个graphs之间相互独立。这种做法会抛弃很多edge,会丢失很多图的信息,当graph很小时,最好不要采取。
只有inductive setting可以用于graph classification,因为需要在未见过的test上,inductive可以推广到未见过的数据上。
link prediction的预测是tricky:link prediction是unsupervised / self-supervised任务,需要自己创建labels和dataset splits。因此,要隐藏GNN中的一些边,让GNN预测边是否存在。
1.Step1:为original graph分配两种类型的边
Message edges:用于GNN的message passing
Supervision edges:用于计算objectives
在step1后,只有message edges会保留在图中,Supervision edges用于边预测时的监督信息,不会输入到GNN中。
Step 2: Split edges into train / validation / test
选择1:inductive边预测划分
选择2:Transductive 边预测划分
需要保密validation / test edges,为了训练 training set, 需要保密training set的supervision edges
在training time,使用training message edges预测training supervision edges。在validation time,使用training message edges & training supervision edges预测validation edges。在test time,使用training message edges & training supervision edges &validation edges预测test edges。
Transductive link prediction划分了四种类型的边:Training message edges Training supervision edges Validation edges Test edges