![cover](https://img-blog.csdnimg.cn/07a9add5fec443c98ee594b2bfdb0e06.png)
图机器学习——5.9 图神经网络:图的增广
由于在实际的训练中,原始的图结构往往不是训练的最优图结构。下面我们考虑如何对图进行增强(graph augmentation),这个类似于数据扩增,提升训练效率,模型的泛化能力及测试集的准确率。这种图增强的方法分为两种类型:图特征增强;图结构增强。需要图增强的原因有如下几点:输入图的节点可能比较缺乏特征;图结构可能过于稀疏,从而没有足够的信息传递;图结构可能过于稠密,进而导致信息传递出现冗余;图可
由于在实际的训练中,原始的图结构往往不是训练的最优图结构。下面我们考虑如何对图进行增强(graph augmentation),这个类似于数据扩增,提升训练效率,模型的泛化能力及测试集的准确率。
这种图增强的方法分为两种类型:
- 图特征增强;
- 图结构增强。
需要图增强的原因有如下几点:
- 输入图的节点可能比较缺乏特征;
- 图结构可能过于稀疏,从而没有足够的信息传递;
- 图结构可能过于稠密,进而导致信息传递出现冗余;
- 图可能过大,使得一整个图结构没办法直接放入GPU中进行训练。
针对上面几点,分别针对性地给出相应的方法。
① 缺乏特征
总体而言,针对这种情况,直接使用特征增强(feature augmentation)。但具体而言,需要使用特征增强的情况又分为两类:a. 完全没有节点特征信息;b. 一些图的结构难以直接被GNN学习。
a. 针对完全没有节点特征信息的情形(只有一个邻接矩阵的信息),可以用一个常数值作为每个节点的特征;或者使用每个节点的一个独立编码作为节点对应的特征,而后再转为 One-hot 编码。两种方法的示意图如下:
两种方法的优缺点分别如下:
b. 有些结构难以被GNN学习,例如下图所示的循环结构:
在GNN的消息传递机制中,这种循环结构会变成这种无穷长度的图形式,
这样就会使得GNN的训练失效。在实际的训练中,高效的训练图形式是下述这种二分树的形式:
因此,针对上面这种环的情况,是需要为节点加入特征,环中每个节点的特征为每个环的节点个数,并转化为计数编码(编码从0个节点开始)
除此之外,还有下述这些常见的节点嵌入的方法(前面都介绍过的方法)可以作为节点特征:
- 节点的度
- 聚类系数
- PageRank值
- 中心性
- …
② 针对稀疏图结构的增强
对于稀疏图结构的增强,通常针对原始结构增加虚拟边或者虚拟节点。
- 添加虚拟边
最常见的一个做法是将原本节点的二阶邻居(2-hop neighbors)也作为节点的邻居。换言之,就是使用 A + A 2 A + A^2 A+A2 来替代原本的邻接矩阵 A A A。
我们可以通过下面这个二部图(bipartite graph)来举例:
这是一个作者与论文连接的二部图,如果我们用上面所述的,考虑原本作者节点的二阶邻居也作为作者的邻居,那么就是额外考虑作者与作者之间的协作图。
- 添加虚拟节点
这种方法其实是有点像 PageRank 中,以一定概率跳到其他任意一个节点的感觉。具体而言,就是添加一个新的节点,使得这个节点与所有的边都有连接。
那么假如在一个非常稀疏的图中,有两个节点 A , B A, B A,B之间的最短路径为10。那么在添加了虚拟节点后,所有节点之间都存在一条距离为2的路径。同样, A , B A, B A,B之间的最短路径此时为2:
A − 虚拟节点 − B A- \text{虚拟节点} - B A−虚拟节点−B
这种方法能有效提升信息在GNN中的传递效率。
③ 针对稠密图结构的增强(Augmentation)
实际上对稠密的图结构的 augment 已经不能直译为“增强”,这里其实有一丝减弱的意味。具体而言,就是对每次的信息传递过程,进行随机采样的操作。这样不仅能增加图的丰富性,同时还能降低计算复杂度,通常都能提升实际的表现。
一个传统的图网络如下:
经过采样之后的图网络可以变为如下的这些形式:
更多推荐
所有评论(0)