图神经网络(GNN)的简介「建议收藏」

近年来,图神经网络(GNN)在社交网络、知识图、推荐系统甚至生命科学等各个领域得到了越来越广泛的应用。GNN在对图节点之间依赖关系进行建模的强大功能,使得与图分析相关的研究领域取得了突破。本文介绍了图神经网络的基本原理,以及两种高级的算法,DeepWalk和GraphSage。图(Graph)在讨论GNN之前,我们先来了解一下什么是图。在计算机科学中,图是由顶点和边两部分组成的一种数据结构…

大家好,又见面了,我是你们的朋友全栈君。

近年来,图神经网络(GNN)在社交网络、知识图、推荐系统甚至生命科学等各个领域得到了越来越广泛的应用。GNN在对图节点之间依赖关系进行建模的强大功能,使得与图分析相关的研究领域取得了突破。本文介绍了图神经网络的基本原理,以及两种高级的算法,DeepWalk和GraphSage。

图(Graph)

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

图神经网络(GNN)的简介「建议收藏」

根据顶点之间是否存在方向依赖关系,边可以是有向的,也可以是无向的。

图神经网络(GNN)的简介「建议收藏」

图 1有向图

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

图神经网络

图神经网络是一种直接作用于图结构上的神经网络。GNN的一个典型应用是节点分类,本质上,图中的每个节点都与一个标签相关联,我们希望预测未标记节点的标签。本文将介绍该论文中描述的算法,

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

图神经网络(GNN)的简介「建议收藏」

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

图神经网络(GNN)的简介「建议收藏」

H和X分别表示所有h和x的连接,通过将状态h_v以及特征x_v传递给输出函数g来计算GNN的输出。

图神经网络(GNN)的简介「建议收藏」

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

图神经网络(GNN)的简介「建议收藏」

它可以通过梯度下降进行优化,但是该论文指出的原始GNN有三个主要局限:

1.如果放宽了“固定点”的假设,则可以利用多层感知器来学习更稳定的表示,并删除迭代更新过程。 这是因为在原始方法中,不同的迭代使用转移函数f的相同参数,而不同MLP层中的不同参数允许分层特征提取;

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

3. 固定点会限制节点分布的多样化,因此可能不适合学习节点表示。

虽然现在已经提出了几种GNN变体来解决上述问题。 但是他们不是论文的重点。

DeepWalk

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

图神经网络(GNN)的简介「建议收藏」

算法包括两个步骤:

1. 在图中的节点上执行随机游走生成节点序列;

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

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

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

图神经网络(GNN)的简介「建议收藏」

图 2 softmax的定义

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

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

图神经网络(GNN)的简介「建议收藏」

图 3多层softmax

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

图神经网络(GNN)的简介「建议收藏」

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

GraphSage

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

图神经网络(GNN)的简介「建议收藏」

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

1.均值聚合器:

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

 

图神经网络(GNN)的简介「建议收藏」

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

2. LSTM聚合器:

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

3.池聚合器:

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

图神经网络(GNN)的简介「建议收藏」

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

图神经网络(GNN)的简介「建议收藏」

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

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125491.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C#利用浏览按钮获得文件路径和文件夹路径

    生成文件夹路径privatevoidbtnChoose_Click(objectsender,EventArgse)生成文件夹路径privatevoidbtnChoose_Clic

    2021年12月24日
  • NPS监控体系详解

    NPS监控体系详解1.NPS监控原理及意义原理:通过定期调研市场用户的净推荐值,牵引质量在具体领域的改进;优势:践行绝对的用户导向将品牌影响力、产品销量、市场份额与历史数据表现联系起来2.NPS数据回收以手机产品为例,从用户使用产品之日起的整个使用体验周期分三次发送调研问卷:首月,6月,18月;3.NPS监控指标体系NPS:产品NPSNPS1,NPS2,NPS3:按生命周期阶段分NPS1,NPS2,NPS3δNPS:阶段差值为δNPS=NPSM-NPS1领域NPSM关注度好评率差评率**用户

  • 线程池参数调优_rtt线程池

    线程池参数调优_rtt线程池在TiKV中,线程池主要由gRPC、Scheduler、UnifyReadPool、Raftstore、StoreWriter、Apply、RocksDB以及其它一些占用CPU不多的定时任务与检测组件组成,这里主要介绍几个占用CPU比较多且会对用户读写请求的性能产生影响的线程池。gRPC线程池负责处理所有网络请求,它会把不同任务类型的请求转发给不同的线程池。Scheduler线程池配置项的值为0,Raftstore线程将日志写入到磁盘;如果该值不为0RocksDB。…

  • html+JavaScript登陆注册界面

    html+JavaScript登陆注册界面最近刚刚学习了一些关于JavaScript的知识,便在之前学习的html前端的基础上做了一些简单的修改,本身还存在着很多的缺陷,希望大家多多指正。githu下载地址:https://github.com/pengxiang1998/login[登陆界面2在线预览]:https://pengxiang1998.github.io/login/index/denglu.html[注…

  • vim命令搜索_linux的vim

    vim命令搜索_linux的vim尽管目前我们已经涉及Vim的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足。承接我们的Vim教程系列,本文我们将讨论Vim提供的多种搜索技术。不过在此之前,请注意文中涉及到的所有的例子、命令、指令均是在Ubuntu14.04,Vim7.4下测试的。Vim中的基础搜索操作当你在Vim中打开一个文件并且想要搜索一个特定的单词或模板,第一步你必须要先按…

    2022年10月24日
  • navicat15手动激活码【2021.7最新】

    (navicat15手动激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSWQi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号