背景
大型图中节点的低维嵌入在各种预测任务中非常有用。GraphSage是一种通用的归纳框架,它利用节点特征信息(例如,文本属性)有效地为以前看不见的数据生成节点嵌入。相比于对每个节点训练单独的嵌入,GraphSage学习了一个函数,通过对节点局部邻域的特征进行采样和聚合来生成嵌入。
如图1所示,不同于对每个节点训练一个对应的嵌入向量,GraphSage训练一组聚合器函数,这些函数学习聚合来自节点邻居的特征信息。
算法实现
GraphSage的核心思想是聚合节点本地邻域的特征信息。具体算法如下:
输入:
包括图,特征,遍历次数K,
权重矩阵,非线性函数,
可微聚合器函数,邻居函数
输出:
每个节点的向量表示
第一步(1):对于每个节点获取其特征作为基准特征。
第二步(2—8):
遍历1到K,在每次遍历中遍历每个节点v。以第一次遍历为例,对于节点v,首先获取其邻居集合N(v),使用可微聚合器函数聚合邻居集合里面所有的节点的基准特征得到聚合邻居特征。连接基准特征和聚合邻居特征得到联合特征,使用权重矩阵与联合特征相乘得到此次遍历后的节点特征。最后对特征进行归一化,结束此次遍历。
第三步(9):将每个节点的第K次遍历后的特征作为节点的向量表示。
在GraphSage中并没有用完整的邻居,而是采用了固定规模的邻居集,以保持每批的计算足迹固定。
聚合器架构
与 N-D 格子(例如句子、图像或 3D 体积)上的机器学习不同,节点的邻居没有自然排序;因此,算法 1 中的聚合器函数必须对一组无序向量进行操作。
。。。