PyTorch图神经网络(四)
1.GraphSAGE
从这里开始的第三篇,开始将更加偏向实际使用的图神经网络了。GraphSAGE是一种图神经网络架构,旨在处理大型图。
邻居采样:
这里引入了一个基本概念:小批量。在大型图中,我们无法考虑图中的所有信息,因此,我们只能考虑节点以及他的邻居。书中的n跳意思就是走过n条边能够到达的点(这些边可以重复)。因此,每个图神经网络层都是根据节点的邻居计算该节点的嵌入,有n个GNN层就能够计算n跳的邻居。
随着n的增大,n hop得到的邻居数量会迅速增长,因此,GarphSAGE提出了邻居采样,仅采样预定义数量的邻居。这使得聚合在大型图中能够实现。但是,这不是在大型图中融合特征的唯一方法,书中还说了Pinterst公司用随机游走实现了这一点。但本质上,都是通过人为的限制使得采集到的节点数量在能够计算的范围内。
聚合:
上面已经说了如何选择相邻的节点,我们现在只需要知道如何计算嵌入即可。GraphSAGE作者提出了三种方案:
1.均值聚合器
2.长短期记忆(LSTM)聚合器
3.池化聚合器
还有其他更多的聚合器,但目的都是聚合相邻节点的嵌入来产生当前节点的嵌入。
在书中对PubMed数据集进行分类训练的时候,是用邻居采样得到小型的图输入到网络中,预测中心点的类别;最终推理的时候把整张图都输入到网络中来预测每一个点的类别。
后面关于蛋白质数据集的分类,虽然是多标签的数据集,但是本质和单标签的数据集一样,并且都是对节点进行分类,所以看懂代码就行了,重点是理解邻居采样和聚合的过程。