一般在看paper的时候,论文里面实验部分会提到本文的模型采用的是Inductive还是Transductive,例如下图(JK-NET):
那么具体什么是Inductive和Transductive?
图数据和其它数据不同,图数据中每个节点可以通过边的连接来利用其邻域节点的信息,这也就导致了一个问题:如果训练集上的节点通过边关联到了预测集或者验证集的节点,那么在训练的时候能否用它们的信息呢?
Transductive
如果训练时用到了测试集或验证集样本的信息(或者说,测试集和验证集在训练的时候是可见的), 那么这种学习方式就叫做transductive learning。我们经典的图卷积开篇之作中GCN使用的就是Transductive,他在训练的时候输入了整个邻接矩阵的信息,这也就保留了训练集和测试集以及验证集之间的边,聚合了这些节点的特征信息。
Inductive
如果训练时没有用到测试集或验证集样本的信息(或者说,测试集和验证集在训练的时候是不可见的), 那么这种学习方式就叫做Inductive learning。这其中的代表为GraphSAGE,在具体实现中,训练时它仅仅保留训练样本到训练样本的边,删除了训练样本和测试样本以及验证样本的边。inductive learning 的优点是可以利用已知节点的信息为未知节点生成Embedding。
下图为GAT模型实验部分设置:
而有些论文则没有说明是不是inductive的,此时就需要我们自己分析,就以FastGCN来说,它是通过对训练集节点进行采样来进行聚合信息的,那么其在训练的时候就没有用到非训练集的节点,因此是Inductive的。
最后插一幅别人的很好的图,图中有错字影响不大:
参考来自DataWhale