由于在实际的训练中,原始的图结构往往不是训练的最优图结构。下面我们考虑如何对图进行增强(graph augmentation),这个类似于数据扩增,提升训练效率,模型的泛化能力及测试集的准确率。
这种图增强的方法分为两种类型:
- 图特征增强;
- 图结构增强。
需要图增强的原因有如下几点:
- 输入图的节点可能比较缺乏特征;
- 图结构可能过于稀疏,从而没有足够的信息传递;
- 图结构可能过于稠密,进而导致信息传递出现冗余;
- 图可能过大,使得一整个图结构没办法直接放入GPU中进行训练。
针对上面几点,分别针对性地给出相应的方法。
① 缺乏特征
总体而言,针对这种情况,直接使用特征增强(feature augmentation)。但具体而言,需要使用特征增强的情况又分为两类:a. 完全没有节点特征信息;b. 一些图的结构难以直接被GNN学习。
a. 针对完全没有节点特征信息的情形(只有一个邻接矩阵的信息),可以用一个常数值作为每个节点的特征;或者使用每个节点的一个独立编码作为节点对应的特征,而后再转为 One-hot 编码。两种方法的示意图如下:
两种方法的优缺点分别如下:
b. 有些结构难以被GNN学习,例如下图所示的循环结构:
在GNN的消息传递机制中,这种循环结构会变成这种无穷长度的图形式,
这样就会使得GNN的训练失效。在实际的训练中,高效的训练图形式是下述这种二分树的形式: