专栏首页AI研习社神经网络图的简介(基本概念,DeepWalk以及GraphSage算法)

神经网络图的简介(基本概念,DeepWalk以及GraphSage算法)

本文为 AI 研习社编译的技术博客,原标题 : A Gentle Introduction to Graph Neural Networks (Basics, DeepWalk, and GraphSage) 作者 | 黃功詳 Steeve HuangFollow 翻译 | GuardSkill、丝特芬妮•理 校对 | 酱番梨 审核 | 约翰逊·李加薪 整理 | 立鱼王 原文链接: https://towardsdatascience.com/a-gentle-introduction-to-graph-neural-network-basics-deepwalk-and-graphsage-db5d540d50b3

图片来源: Pexels

近来,图神经网络(GNN)在各个领域广受关注,比如社交网络,知识图谱,推荐系统以及生命科学。GNN在对图节点之间依赖关系进行建模的强大功能使得与图分析相关的研究领域取得了突破。 本文旨在介绍图形神经网络的基础知识两种较高级的算法,DeepWalk和GraphSage。

在我们学习GAN之前,大家先了解一下什么图。在计算机科学中,图是一种数据结构,由顶点和边组成。图G可以通过顶点集合V和它包含的边E来进行描述。

根据顶点之间是否存在方向性,边可以是有向或无向的。

顶点通常称为节点。在本文中,这两个术语是可以互换的。

图神经网络

图神经网络是一种直接在图结构上运行的神经网络。GNN的一个典型应用是节点分类。本质上,图中的每个节点都与一个标签相关联,我们希望预测未标记节点的标签。本节将介绍论文中描述的算法,GNN的第一个提法,因此通常被视为原始GNN。

在节点分类问题中,每个节点v都可以用其特征x_v表示并且与已标记的标签t_v相关联。给定部分标记的图G,目标是利用这些标记的节点来预测未标记的节点标签。 它通过学习得到每个节点的d维向量(状态)表示h_v,同时包含其邻居的信息。

https://arxiv.org/pdf/1812.08434

x_co[v] 代表连接顶点v的边的特征,h_ne[v]代表顶点v的邻居节点的嵌入表示,x_ne[v]代表顶点v的邻居节点特征。f是将输入投影到d维空间的转移函数。由于要求出h_v的唯一解,我们应用Banach不动点理论重写上述方程进行迭代更新。

https://arxiv.org/pdf/1812.08434

H和X分别表示所有h和x的连接。

通过将状态h_v以及特征x_v传递给输出函数g来计算GNN的输出。

https://arxiv.org/pdf/1812.08434

这里的f和g都可以解释为全连接前馈神经网络。 L1损失可以直接表述如下:

https://arxiv.org/pdf/1812.08434

可以通过梯度下降优化。

但是,本文指出的原始GNN有三个主要局限:

  1. 如果放宽了“固定点”的假设,则可以利用多层感知器来学习更稳定的表示,并删除迭代更新过程。 这是因为,在原始方法中,不同的迭代使用转移函数f的相同参数,而不同MLP层中的不同参数允许分层特征提取。
  2. 它不能处理边缘信息(例如知识图谱中的不同边可能表示节点之间的不同关系)
  3. 固定点会限制节点分布的多样化,因此可能不适合学习节点表示。

已经提出了几种GNN变体来解决上述问题。 但是,他们不是这篇文章的重点。

DeepWalk

DeepWalk是第一个以无监督学习的节点嵌入算法。 它在训练过程中类似于词嵌入。 它的初衷是图中的两个节点分布和语料库中的单词分布都遵循幂律,如下图所示:

http://www.perozzi.net/publications/14_kdd_deepwalk.pdf

算法包括两个步骤:

  1. 在图中的节点上执行随机游走生成节点序列
  2. 运行skip-gram,根据步骤1中生成的节点序列学习每个节点的嵌入

在随机游走过程中,下一个节点是从前一节点的邻居统一采样。 然后将每个序列截短为长度为2 | w |+1的子序列,其中w表示skip-gram中的窗口大小。如果您不熟悉skip-gram,我之前的博客文章已经向您介绍它的工作原理。

在论文中,分层softmax用于解决由于节点数量庞大而导致的softmax计算成本过高的问题。为了计算每个单独输出元素的softmax值,我们必须为所有元素k计算ek。

softmax的定义

因此,原始softmax的计算时间是 O(|V|) ,其中其中V表示图中的顶点集。

多层的softmax利用二叉树来解决softmax计算成本问题。 在二叉树中,所有叶子节点(上面所说的图中的v1,v2,... v8)都是图中的顶点。 在每个内部节点中(除了叶子节点以外的节点,也就是分枝结点),都通过一个二元分类器来决定路径的选取。 为了计算某个顶点v_k的概率,可以简单地计算沿着从根节点到叶子节点v_k的路径中的每个子路径的概率。 由于每个节点的孩子节点的概率和为1,因此在多层softmax中,所有顶点的概率之和等于1的特性仍然能够保持。如果n是叶子的数量,二叉树的最长路径由O(log(n))限定,因此,元素的计算时间复杂度将减少到O(log | V |)。

多层softmax

(http://www.perozzi.net/publications/14_kdd_deepwalk.pdf)

在训练DeepWalk GNN之后,模型已经学习到了了每个节点的良好表示,如下图所示。 不同的颜色在输入图中(图a)表示不同标签。 我们可以看到,在输出图(每个顶点被嵌入到2维平面)中,具有相同标签的节点聚集在一起,而具有不同标签的大多数节点被正确分开。

http://www.perozzi.net/publications/14_kdd_deepwalk.pdf

然而,DeepWalk的主要问题是它缺乏泛化能力。 每当有新节点加入到图中时,它必须重新训练模型以正确表示该节点( 直推式学习 )。 因此,这种GNN不适用于图中节点不断变化的动态图。

GraphSage

GraphSage提供了解决上述问题的解决方案,它以归纳方式学习每个节点的嵌入。 具体来讲,它将每个节点用其邻域的聚合重新表示。 因此,即使在训练时间期间未出现在图中新节点,也仍然可以由其相邻节点正确地表示。 下图展示了GraphSage的算法过程。

https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf

外层for循环表示更新迭代次数,而 h^k_v 表示节点v 在迭代第 k 次时的本征向量。 在每次迭代时,将通过聚合函数,前一次迭代中 v 和 v 领域的本征向量以及权重矩阵W^k 来更新h^k_v 。这篇论文提出了三种聚合函数:

1.均值聚合器:

均值聚合器取一个节点及其邻域的本征向量的平均值。

https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf

与原始方程相比,它删除了上述伪代码中第5行的连接操作。 这种操作可以被视为"skip-connection" ("跳连接"),这篇论文后面将证明其可以在很大程度上提高模型的性能。

2. LSTM聚合器:

由于图中的节点没有任何顺序,因此他们通过互换这些节点来随机分配顺序。

3.池聚合器:

此运算符在相邻顶点集上执行逐元素池化函数。下面显示了最大池的例子:

https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf

可以用平均池或任何其他对称池函数替换这种最大池函数。尽管均值池和最大池聚合器性能相似,但是池聚合器(也就是说采用最大池函数)被实验证明有最佳的性能。 这篇论文使用max-pooling作为默认聚合函数

损失函数定义如下:

https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf

其中u 和v 共同出现在一定长度的随机游走中,而 v_n 是不与u共同出现的负样本。这种损失函数鼓动节点在投影空间中更靠近嵌入距离更近的节点,而与那些相距很远的节点分离。通过这种方法,节点将获得越来越多其邻域的信息。

GraphSage通过聚合其附近的节点,可以为看不见的节点生成可表示的嵌入位置。它让节点嵌入的方式可以被应用于涉及动态图的研究领域,这类动态图的图的结构是可以不断变化的。例如,Pinterest采用了GraphSage的扩展版本PinSage作为他们的内容探索系统的核心。

结束语

您已经学习了图形神经网络,DeepWalk和GraphSage的基础知识。 GNN在复杂图形结构建模中的强大功能确实令人惊讶。鉴于其高效性,我相信GNN将在人工智能的发展中发挥重要作用。如果您觉得我的文章还不错,请不要忘记在Medium和Twitter上关注我,我经常分享AI,ML和DL的高级发展动态。

本文分享自微信公众号 - AI研习社(okweiwu),作者:雷锋字幕组

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用 Pytorch-BigGraph 从知识图中提取知识详解

    机器学习使我们能够训练一个模型,该模型可以将数据行转换为标签,从而使相似的数据行映射到相似或相同的标签。

    AI研习社
  • 学界 | 谷歌 AI 图表示学习最新成果:解决重叠区域描述难题,自动调整超参数

    AI 科技评论按,表示实体之间关系的关系数据在网络(如在线社交网络)和物理世界(如蛋白质交互网络)中随处可见。这些数据可以表示为一个带有节点(如用户、蛋白质)和...

    AI研习社
  • 2020 年,图机器学习的趋势有哪些

    本文的目的不是介绍 GML 的基本概念,如图神经网络(GNNs),而是揭示我们可以在顶级科学会议上看到的前沿研究。首先,我将资料提交给 ICLR2020,这是一...

    AI研习社
  • 红黑树(二):删除操作

    构造上,节点会有三种可能:其一是删除节点的孩子都为Nil,其二是删除节点的一个孩子节点为Nil,其三是删除节点的两个孩子节点都不为Nil。而如果两个节点都不为N...

    每天学Java
  • 一文搞定 Redis 复制(全会的举个手看看)

    Step 2:从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制。

    良月柒
  • 数据结构之二叉树解析

    可是,排序有快速排序,归并排序,查找有二分法,甚至直接遍历查找,我干啥要使用二叉树呢?

    Kevin_Zhang
  • PostgreSQL复制和备份的3种方法

    Citus分布式数据库通过拆分,复制和查询并行扩展了PostgreSQL的。对于复制,我们的数据库即服务(默认情况下)利用Postgres内置的流复制逻辑。

    February
  • GR运维手册 - 第一册 苦海岸边,GR的基础知识

    作者简介: ? 刘伟 云和恩墨开源解决方案事业部首席架构师 多年一线互联网企业DBA经历,对MySQL、NoSQL,PostgreSQL等各类开源数据库均有涉猎...

    数据和云
  • 纸上谈兵: 图 (graph)

    图(graph)是一种比较松散的数据结构。它有一些节点(vertice),在某些节点之间,由边(edge)相连。节点的概念在树中也出现过,我们通常在节点中储存数...

    Vamei
  • PostgreSQL的几种分布式架构对比

    Citus以插件的方式扩展到postgresql中,独立于postgresql内核,所以能很快的跟上pg主版本的更新,部署也比较简单,是现在非常流行的分布式方案...

    数据库架构之美

扫码关注云+社区

领取腾讯云代金券