在上一篇文章中介绍了GCN
【Graph Neural Network】GCN: 算法原理,实现和应用
GCN是一种在图中结合拓扑结构和顶点属性信息学习顶点的embedding表示的方法。然而GCN要求在一个确定的图中去学习顶点的embedding,无法直接泛化到在训练过程没有出现过的顶点,即属于一种直推式(transductive)的学习。
本文介绍的GraphSAGE则是一种能够利用顶点的属性信息高效产生未知顶点embedding的一种归纳式(inductive)学习的框架。
其核心思想是通过学习一个对邻居顶点进行聚合表示的函数来产生目标顶点的embedding向量。
GraphSAGE算法原理![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5a2d7b476aec5fc8a853982f06391adf.png)
GraphSAGE 是Graph SAmple and aggreGatE的缩写,其运行流程如上图所示,可以分为三个步骤
- 对图中每个顶点邻居顶点进行采样
- 根据聚合函数从聚合邻居顶点蕴含的信息
- 得到图中各顶点的向量表示供下游任务
采样邻居顶点
出于对计算效率的考虑,对每个顶点采样一定数量的邻居顶点作为待聚合信息的顶点。设采样数量为k,若顶点邻居数少于k,则采用有放回的抽样方法,直到采样出k个顶点。若顶点邻居数大于k,则采用无放回的抽样。
当然,若不考虑计算效率,我们完全可以对每个顶点利用其所有的邻居顶点进行信息聚合,这样是信息无损的。
生成向量的伪代码
这里K是网络的层数,也代表着每个顶点能够聚合的邻接点的跳数,如K=2的时候每个顶点可以最多根据其2跳邻接点的信息学习其自身的embedding表示。
在每一层的循环k中,对每个顶点v,首先使用v的邻接点的k-1层的embedding表示来产生其邻居顶点的第k层聚合表示 h N ( v ) k h^k_{N(v)} hN(v)k,之后将 h N ( v ) k h^k_{N(v)} hN(v)k和顶点v的第k-1层表示进行拼接,经过一个非线性变换产生顶点v的第k层embedding表示 h v k h^k_v hvk。
聚合函数的选取
由于在图中顶点的邻居是天然无序的,所以我们希望构造出的聚合函数是对称的(即改变输入的顺序,函数的输出结果不变),同时具有较高的表达能力。
-
MEAN aggregator
h v k ← σ ( W ⋅ MEAN ( { h v k − 1