参考论文:Inductive Representation Learning on Large Graphs
参考博客:https://blog.csdn.net/yyl424525/article/details/100532849
What is GraphSAGE?
MotIvation: 先前的工作如GCN等,需要把所有节点输入网络进行训练才能得到结点的embedding,对于新加入的节点,未能快速产生它的embedding.
Idea: 作者提出一种新的产生节点embedding的思路:直接学习一种产生节点embedding的方法,对于单个节点,通过聚合其邻居结点的信息来获得自身的embedding.
Algorithm: 具体算法如下:
产生embedding Z 的步骤包括两步:
(1)采样邻居:对邻居进行随机采样(设置采样倍率为超参数,控制每层节点数,节省运算成本)
(2)聚合:
代码第4行:要想得到某个中心节点 v 第k层的邻居特征 ,就需要聚合其在k-1层的邻居特征,依次类推(0层的特征为
),最终完成对每个节点邻居特征的整合输出。
代码第5行:将聚合后的邻居特征与中心节点上一层的特征进行拼接,然后送到一个单层网络里面得到中心节点新的特征向量。
代码第7行:对节点的特征向量进行归一化处理。
关于聚合函数(Aggregator)的选择:
(1)平均/加和(mean/sum)聚合算子;(2)池化(pooling)聚合算子;(3)LSTM聚合算子
聚合操作需满足:1.对节点数量的自适应性:无论邻居数量如何变化,聚合输出维度必须一致;2.对聚合节点具有排列不变性:不论节点排列顺序如何,输出结果必须一样;3.聚合操作必须可导。
实验部分详见论文。