美文网首页
Graph Embedding之GraphSAGE

Graph Embedding之GraphSAGE

作者: 老羊_肖恩 | 来源:发表于2019-11-13 17:43 被阅读0次

    Introduction

      GraphSAGE是大神Jure Leskovec团队在图表示学习领域的又一力作。首先,跟其他所有的Graph Embedding算法一样,作者认为Graph Embedding在图数据相关的机器学习领域有着举足轻重的作用。作者将Graph Embedding方法划分成了两大类:transductive和inductive两类,其中transductive方法需要将整个图中的所有数据都加入到Embedding过程中,并且不能对新加入的数据及未知的数据进行Embedding。而inductive方法不需要将整个图的数据全部加入到Embedding过程中,且对未知的数据具有很好的泛化能力。且inductive方法在具有相同特征的图之间具有一定的泛化能力,即:我们可以在一个图上训练好inductive方法,然后将其用在同类型的图上进行节点嵌入,因为改方法在同类型未知数据上具有很好的泛化能力。作者在本文中提出的GraphSAGE(SAmple and aggreGatE)就是一种典型的inductive方法,以inductive方式进行Graph Embedding通常比较困难,因为与transductive方法相比,为了对未知数据进行泛化,需要对新的子图向已经优化的节点嵌入进行校准。inductive框架必须能够识别一个顶点的邻域的结构属性——该顶点在图中的局部角色以及在全图中的位置。
      作者提出的GraphSAGE是一种inductive的顶点embedding方法,与使用矩阵因式分解的方法不同,GraphSAGE使用了顶点的特征(features)来学习一个可以泛化到未知数据的embedding方法。通过在学习算法中加入顶点特征,GraphSAGE同时学习了每个顶点的邻域的拓扑结构以及邻域内顶点特征的分布。GraphSAGE在利用中顶点的内容特征(如属性,文本内容等)的同时,也可以利用图中存在的所有的结构特征(如顶点度数,中心度等)。除此之外,GraphSAGE还可以用于顶点没用特征的图。
      与为每个顶点学习一个唯一的embedding向量不同,GraphSAGE为每个顶点学习一组可以聚合顶点领域信息的聚合函数(aggregator functions)。每个聚合函数学习一个不同hop或查找深度的邻域信息。如图1所示,红点两个aggregator函数,分别用来学习当前红点1-hop和2-hop的领域信息。蓝色表示红色顶点1-hop领域信息,绿色表示红色顶点2-hop领域信息。这样,在测试或推理时,就可以使用训练好的的系统,通过学习到的的聚合函数为完全未知的顶点生成embedding向量。我们设计了一个无监督的损失函数,该函数允许在没有特定任务监督的情况下训练GraphSAGE。另外作者还证明了GraphSAGE还可以在完全监督的方式下进行训练。

    Figure 1: Visual illustration of the GraphSAGE sample and aggregate approach

    算法描述

      GraphSAGE背后的核心思想是:学习如何从一个顶点的局部领域聚合信息。作者首先介绍了Embedding生成方法(即正向传播),即在假设GraphSAGE模型参数已经习得的情况下,如何未每个顶点生成embedding结果。然后介绍了如何利用标准的随机梯度下降(SGD)和反向传播技术(BP)来学习GraphSAGE的模型参数。

    1. Embedding generation (i.e., forward propagation) algorithm

      这部分主要阐述,在GraphSAGE模型参数已经学习好的情况下,如何利用该模型为每个顶点生成embedding结果。假设已经学习到\small K个聚合函数\small \text {AGGREGATE}_k,\forall k \in \lbrace 1, \dots,K \rbrace的所有参数\small W^k,\forall k \in \lbrace 1, \dots,K \rbrace。这些聚合函数用于在不同的层或查找深度之间传播信息。算法具体过程如Algorithm 1所示。

    Algorithm 1

      Algorithm 1背后最直观的认知就是:在每个迭代(查找深度)中,每个顶点会从领域中聚合信息,随着不断迭代,顶点会逐渐聚合途中查找深度越来越大的领域信息。Algorithm 1描述了在给定图\small G=(V,E)和每个顶点的特征\small X_v, \forall v \in V的Embedding生成过程。Algorithm 1外循环中的每一步都是这样进行的,其中\small k表示第\small k次循环,\small h^k表示一个顶点在当次循环中的表示:首先,对于每个顶点\small v \in V,将其直接领域中的表示信息\small \lbrace h_u^{k-1},\forall u \in N(v) \rbrace聚合成一个向量\small h_{N(v)}^{k-1}。需要注意的是,当次循环的聚合步骤依赖于上一循环的聚合结果,其中\small k=0的表示信息是初始化的时候输入的。当聚合完邻接顶点的特征向量后,GraphSAGE将顶点的当前特征表示\small h_v^{k-1}与领域信息聚合后的特征向量\small h_{N(v)}^{k-1}进行连接,然后这个连接后的向量喂给一个非线性的激活函数\sigma,将其转换成算法的在下一步中要使用的表示,即\small h_v^k,\forall v \in V。为了便于标记,我们将在深度\small K处的最终的特征向量输出表示为\small z_v \equiv h_v^K, \forall v \in V。Algorithm 1中的\small \text{AGGREGATE}可以通过一系列的aggregator来实现,后面会详细介绍。

    2. Learning the parameters of GraphSAGE

      为了以完全无监督的方式学习顶点的表示向量\small z_u,\forall u \in V,作者在GraphSAGE中应用了一个基于图的损失函数,并通过随机梯度下降(SGD)来调整权重矩阵\small W^k, \forall k \in \lbrace 1, \cdots, K \rbrace和每个聚合函数的参数。该基于图的损失函数鼓励邻近的顶点具有相似的特征表示,不相邻的顶点之间具有不同的表示。损失函数表示如下:
    J_G(z_u)=-\log(\sigma(\mathbf{z_u}^\top \mathbf{z_v}))-Q \cdot \Bbb E_{v_n \sim P_n(v)} \log(\sigma(-\mathbf{z_u}^\top \mathbf{z_{v_n}}))其中\small v是固定深度的随机游走序列中与顶点\small u邻接共现的顶点,\small \sigma是sigmoid函数,\small \P_n是一个负采样分布,\small Q是负采样的样本数目。与之前的embedding方法不同的是,我们喂入损失函数的表示\small z_u是由一个节点的局部领域信息的特征生成的,而不是为每个节点单独训练得到的一个唯一的嵌入向量。
      这种无监督场景模拟了向下游机器学习应用程序以服务或静态库存储的方式提供节点表示向量的情况。如果这些表示向量仅用于特定的下游任务,则该无监督损失函数可以简单地替换成用特定于任务的目标函数(如交叉熵损失)。

    Algorithm 2
    3. Aggregator Architectures

      与在N维的场景上的机器学习不同,一个顶点的邻域往往不具有自然顺序,因此Algorithm 1中的聚合函数必须能够操作一个无序的向量集合。理想情况下,这些聚合函数是对称的,同时可训练,且具有很高的表示能力。聚集函数的对称性保证了GraphSAGE的神经网络模型可以被训练和应用于任意有序的节点邻域特征集。因此作者在该文尝试了三种聚合函数:Mean aggregatorLSTM aggregator以及Pooling aggregator。关于这三种聚合函数的异同和应用场景,可以直接参考作者的 论文。

    参考:
    Inductive Representation Learning on Large Graphs
    https://cs.stanford.edu/~jure/index.html

    相关文章

      网友评论

          本文标题:Graph Embedding之GraphSAGE

          本文链接:https://www.haomeiwen.com/subject/jmdwoqtx.html