0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

神经网络的基本知识,以及两种更高级的算法:DeepWalk和GraphSage

DPVg_AI_era 来源:lq 2019-02-16 11:03 次阅读

神经网络(GNN)在各个领域越来越受欢迎,本文介绍了图神经网络的基本知识,以及两种更高级的算法:DeepWalk和GraphSage。

最近,图神经网络(GNN)在各个领域越来越受到欢迎,包括社交网络、知识图谱、推荐系统,甚至生命科学。

GNN在对图形中节点间的依赖关系进行建模方面能力强大,使得图分析相关的研究领域取得了突破性进展。本文旨在介绍图神经网络的基本知识,以及两种更高级的算法:DeepWalk和GraphSage。

图(Graph)

在讨论GNN之前,让我们先了解一下什么是图(Graph)。在计算机科学中,图是由两个部件组成的一种数据结构:顶点(vertices)和边(edges)。一个图G可以用它包含的顶点V和边E的集合来描述。

边可以是有向的或无向的,这取决于顶点之间是否存在方向依赖关系。

一个有向的图(wiki)

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

图神经网络

图神经网络是一种直接在图结构上运行的神经网络。GNN的一个典型应用是节点分类。本质上,图中的每个节点都与一个标签相关联,我们的目的是预测没有ground-truth的节点的标签。

本节将描述The graph neural network model(Scarselli, F., et al., 2009) [1]这篇论文中的算法,这是第一次提出GNN的论文,因此通常被认为是原始GNN。

在节点分类问题设置中,每个节点v的特征x_v与一个ground-truth标签t_v相关联。给定一个部分标记的graph G,目标是利用这些标记的节点来预测未标记的节点的标签。它学习用包含邻域信息的d维向量h_v表示每个节点。即:

其中x_co[v]表示与v相连的边的特征,h_ne[v]表示v相邻节点的嵌入,x_ne[v]表示v相邻节点的特征。函数f是将这些输入映射到d维空间上的过渡函数。由于我们要寻找h_v的唯一解,我们可以应用Banach不动点定理,将上面的方程重写为一个迭代更新过程。

H和X分别表示所有h和x的串联。

通过将状态h_v和特性x_v传递给输出函数g,从而计算GNN的输出。

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

可以通过梯度下降进行优化。

然而,原始GNN存在三个主要局限性:

如果放宽“不动点” (fixed point)的假设,那么可以利用多层感知器学习更稳定的表示,并删除迭代更新过程。这是因为,在原始论文中,不同的迭代使用转换函数f的相同参数,而MLP的不同层中的不同参数允许分层特征提取。

它不能处理边缘信息(例如,知识图中的不同边缘可能表示节点之间的不同关系)

不动点会阻碍节点分布的多样性,不适合学习表示节点。

为了解决上述问题,研究人员已经提出了几个GNN的变体。不过,它们不是本文的重点。

DeepWalk:第一个无监督学习节点嵌入的算法

DeepWalk [2]是第一个提出以无监督的方式学习节点嵌入的算法。

它在训练过程中非常类似于词汇嵌入。其动机是graph中节点和语料库中单词的分布都遵循幂律,如下图所示:

该算法包含两个步骤:

在graph中的节点上执行random walks,以生成节点序列

运行skip-gram,根据步骤1中生成的节点序列,学习每个节点的嵌入

在random walks的每个时间步骤中,下一个节点从上一个节点的邻节点均匀采样。然后将每个序列截断为长度为2|w| + 1的子序列,其中w表示skip-gram中的窗口大小。

本文采用hierarchical softmax来解决由于节点数量庞大而导致的softmax计算成本高昂的问题。为了计算每个单独输出元素的softmax值,我们必须计算元素k的所有e ^ xk。

Softmax的定义

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

分层softmax利用二叉树来处理这个问题。在这个二叉树中,所有的叶子(下图中的v1, v2,…v8)都表示graph中的顶点。在每个内部节点中,都有一个二元分类器来决定选择哪条路径。要计算给定顶点v_k的概率,只需计算从根节点到叶节点v_k路径上每一个子路径的概率。由于每个节点的子节点的概率之和为1,所以所有顶点的概率之和为1的特性在分层softmax中仍然保持不变。由于二叉树的最长路径是O(log(n)),其中n表示叶节点的数量,因此一个元素的计算时间现在减少到O(log|V|)。

Hierarchical Softmax

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

然而,DeepWalk的主要问题是缺乏泛化能力。每当一个新节点出现时,它必须重新训练模型以表示这个节点。因此,这种GNN不适用于图中节点不断变化的动态图。

GraphSage:学习每个节点的嵌入

GraphSage提供了解决上述问题的办法,以一种归纳的方式学习每个节点的嵌入。

具体地说,GraphSage每个节点由其邻域的聚合(aggregation)表示。因此,即使图中出现了在训练过程中没有看到的新节点,它仍然可以用它的邻近节点来恰当地表示。

下面是GraphSage算法:

外层循环表示更新迭代的数量,而h ^ k_v表示更新迭代k时节点v的潜在向量。在每次更新迭代时,h ^ k_v的更新基于一个聚合函数、前一次迭代中v和v的邻域的潜在向量,以及权重矩阵W ^ k。

论文中提出了三种聚合函数:

1. Mean aggregator:

mean aggregator取一个节点及其所有邻域的潜在向量的平均值。

与原始方程相比,它删除了上面伪代码中第5行中的连接运算。这种运算可以看作是一种“skip-connection”,在论文后面的部分中,证明了这在很大程度上可以提高模型的性能。

2. LSTM aggregator:

由于图中的节点没有任何顺序,因此它们通过对这些节点进行排列来随机分配顺序。

3. Pooling aggregator:

这个运算符在相邻集上执行一个element-wise的pooling函数。下面是一个max-pooling的示例:

论文使用max-pooling作为默认的聚合函数。

损失函数定义如下:

其中u和v在固定长度的random walk中共存,而v_n是不与u共存的负样本。这种损失函数鼓励距离较近的节点具有相似的嵌入,而距离较远的节点则在投影空间中被分离。通过这种方法,节点将获得越来越多的关于其邻域的信息。

GraphSage通过聚合其附近的节点,可以为看不见的节点生成可表示的嵌入。它允许将节点嵌入应用到涉及动态图的域,其中图的结构是不断变化的。例如,Pinterest采用了GraphSage的扩展版本PinSage作为其内容发现系统的核心。

总结

本文中,我们学习了图神经网络、DeepWalk和GraphSage的基础知识。GNN在复杂图结构建模方面的强大功能确实令人惊叹。鉴于其有效性,我相信在不久的将来,GNN将在AI的发展中发挥重要作用。

[1] Scarselli, Franco, et al. "The graph neural network model.”

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.1015.7227&rep=rep1&type=pdf

[2] Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. "Deepwalk: Online learning of social representations.”

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

[3] Hamilton, Will, Zhitao Ying, and Jure Leskovec. "Inductive representation learning on large graphs.”

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98720
  • 计算机科学
    +关注

    关注

    1

    文章

    140

    浏览量

    11232
  • GNN
    GNN
    +关注

    关注

    1

    文章

    31

    浏览量

    6286

原文标题:掌握图神经网络GNN基本,看这篇文章就够了

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    人工神经网络原理及下载

    人工神经网络是根据人的认识过程而开发出的一算法。假如我们现在只有一些输入和相应的输出,而对如何由输入得到输出的机理并不清楚,那么我们可以把输入与输出之间的未知过程看成是一个“网络”,
    发表于 06-19 14:40

    神经网络教程(李亚非)

    网络BP算法的程序设计  多层前向网络BP算法源程序  第4章 Hopfield网络模型  4.1 离散型Hopfield
    发表于 03-20 11:32

    遗传算法 神经网络 解析

    关于遗传算法神经网络
    发表于 05-19 10:22

    【PYNQ-Z2试用体验】神经网络基础知识

    学习和认知科学领域,是一模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工
    发表于 03-03 22:10

    【案例分享】基于BP算法的前馈神经网络

    `BP神经网络首先给出只包含一个隐层的BP神经网络模型(神经网络): BP神经网络其实由
    发表于 07-21 04:00

    【案例分享】ART神经网络与SOM神经网络

    神经网络在学习新知识的同时要保持对之前学习的知识的记忆,而不是狗熊掰棒子SOM神经网络是一竞争学习型的无监督
    发表于 07-21 04:30

    如何设计BP神经网络图像压缩算法

    ,并能在脑海中重现这些图像信息,这不仅与人脑的海量信息存储能力有关,还与人脑的信息处理能力,包括数据压缩能力有关。在各种神经网络中,多层前馈神经网络具有很强的信息处理能力,由于其采用BP算法,因此也
    发表于 08-08 06:11

    神经网络和反向传播算法

    03_深度学习入门_神经网络和反向传播算法
    发表于 09-12 07:08

    反馈神经网络算法是什么

    反馈神经网络算法
    发表于 04-28 08:36

    BP神经网络的基础数学知识分享

    一文看懂BP神经网络的基础数学知识
    发表于 06-16 07:14

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络是一基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入层:根据现有数据获取输入的层隐藏层:使用反
    发表于 07-12 08:02

    有关脉冲神经网络基本知识

    译者|VincentLee来源 |晓飞的算法工程笔记脉冲神经网络(Spiking neural network, SNN)将脉冲神经元作为计算单...
    发表于 07-26 06:23

    卷积神经网络模型发展及应用

    大多神经网络模型都是采用 BP网络或者其变化 形式。早期神经网络缺少严格数学理论的支撑,并 且在此后的近十年时间,由于其容易过拟合以及训 练速度慢,并且在 1991 年反向传播
    发表于 08-02 10:39

    基于高效采样算法的时序图神经网络系统介绍

    成为了非常重要的问题。 基于以上问题,本文提出了一基于高效采样算法的时序图神经网络系统 。首先我们介绍用于时序图神经网络采样的高效采样方法。采样常常被用于深度学习中以降低模型的训练时
    发表于 09-28 10:34

    什么是神经网络?什么是卷积神经网络

    在介绍卷积神经网络之前,我们先回顾一下神经网络基本知识。就目前而言,神经网络是深度学习算法的核心,我们所熟知的很多深度学习
    的头像 发表于 02-23 09:14 2544次阅读