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

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

3天内不再提示

简单图神经网络(GNN)的基础知识

倩倩 来源:机器之心 2020-04-17 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在社交网络分析等一些应用中,图神经网络已经得到了广泛的应用。新加坡科技研究局(A*STAR)的研究者 Rishabh Anand 近日通过图解的方式介绍了图与图神经网络的基本概念,或许能帮助初学者更直观地理解图神经网络的内涵和价值。

深度学习(Graph Deep Learning,GDL)是一个很有发展前景的研究领域,基于图数据来学习和分析非常有用。本文将介绍简单图神经网络(GNN)的基础知识及其内在工作原理背后的直观知识。不过,大家不用担心,为了能够更直观地看懂究竟发生了什么,作者在文中使用了大量彩图给出图解信息。

图(Graph)是什么?

图是一种由连接在一起的节点(顶点)和边构成的数据结构,可用于表示没有明确起点或终点的信息。所有节点都可占据空间中的任意位置,当用二维或多维空间绘制图的结构时,具有相似特征的节点通常会聚集到一起。

这就是一个图,由一群分别表示实体的互连节点构成。

边上面的黑色尖头表示节点之间的关系类型,其可表明一个关系是双向的还是单向的。图有两种主要类型:有向图和无向图。在有向图中,节点之间的连接存在方向;而无向图的连接顺序并不重要。有向图既可以是单向的,也可以是双向的。

图可以表示很多事物——社交网络、分子等等。节点可以表示用户/产品/原子,而边表示它们之间的连接,比如关注/通常与相连接的产品同时购买/键。社交网络图可能看起来像是这样,其中节点是用户,边则是连接:

节点表示用户,边则表示两个实体之间的连接/关系。真实的社交网络图往往更加庞大和复杂!

接下来作者会介绍一些概念,如循环单元、嵌入向量表征和前馈神经网络。知道一些有关图论的知识(比如什么是图以及图的形态)也很不错。

有些术语你可能并不熟悉。不用担心!对于那些让人疑惑的术语,作者都尽力链接了他可以找到的最靠谱的解释,能让你理解所涉概念的基本含义。基于此,你还能进一步了解这些概念,同时还能理解它们在图神经网络中所发挥的作用。

了解图神经网络

每个节点都有一组定义它的特征。在社交网络图的案例中,这些特征可以是年龄、性别、居住国家、政治倾向等。每条边连接的节点都可能具有相似的特征。这体现了这些节点之间的某种相关性或关系。

假设我们有一个图 G,其具有以下顶点和边:

这个图与上图是一样的。

为了简单起见,我们假设其特征向量是当前节点的索引的 one-hot 编码。类似地,其标签(或类别)可设为节点的颜色(绿、红、黄)。那么这个图看起来会是这样:

节点的顺序其实并不重要。

注:在实际运用中,尽量不要使用 one-hot 编码,因为节点的顺序可能会非常混乱。相反,应该使用可明显区分节点的特征,比如对社交网络而言,可选择年龄、性别、政治倾向等特征;对分子研究而言可选择可量化的化学性质。

现在,我们有节点的 one-hot 编码(或嵌入)了,接下来我们将神经网络引入这一混合信息中来实现对图的修改。所有的节点都可转化为循环单元(或其它任何神经网络架构,只是我这里使用的是循环单元);所有的边都包含简单的前馈神经网络。那么看起来会是这样:

其中的信封符号只是每个节点的 one-hot 编码的向量(嵌入)。

消息传递

一旦节点和边的转化完成,图就可在节点之间执行消息传递。这个过程也被称为「近邻聚合(Neighbourhood Aggregation)」,因为其涉及到围绕给定节点,通过有向边从周围节点推送消息(即嵌入)。

注:有时候你可为不同类型的边使用不同的神经网络,比如为单向边使用一种神经网络,为双向边使用另一种神经网络。这样你仍然可以获取节点之间的空间关系。

就 GNN 而言,对于单个参考节点,近邻节点会通过边神经网络向参考节点上的循环单元传递它们的消息(嵌入)。参考循环单位的新嵌入更新,基于在循环嵌入和近邻节点嵌入的边神经网络输出的和上使用循环函数。我们把上面的红色节点放大看看,并对这一过程进行可视化:

紫色方块是一个应用于来自近邻节点的嵌入(白色信封)上的简单前馈神经网络;红色三角形是应用于当前嵌入(白色信封)和边神经网络输出(黑色信封)之和上的循环函数,以得到新的嵌入(最上面的白色信封)。

这个过程是在网络中的所有节点上并行执行的,因为 L+1 层的嵌入取决于 L 层的嵌入。因此,在实践中,我们并不需要从一个节点「移动」到另一节点就能执行消息传递。

注:边神经网络输出(黑色信封)之和与输出的顺序无关。

最后的向量表征有什么用?

执行了几次近邻聚合/消息传递流程之后,每个节点的循环单元都会获得一组全新的嵌入。此外,经过多个时间步骤/多轮消息传递之后,节点对自己和近邻节点的信息(特征)也会有更好的了解。这会为整个图创建出更加准确的表征。

要进一步在该流程的更高层面上进行处理或者只是简单地表征该图,你可以将所有嵌入加到一起得到向量 H 来表示整个图。

使用 H 比使用邻接矩阵更好,因为不管怎样对图进行扭转变形,这些矩阵都并不表征图的特征或独特性质——只是节点之间的边连接(这在某些情形下并不是很重要)。

总结一下,我们将所有节点循环单元的最终向量表征加到一起(当然,与顺序无关),然后使用所得到的向量作为其它工作过程的输入或简单地将其用于表征该图。这个步骤看起来如下图所示:

这是经过 n 次重复消息传递之后带有已完全更新的嵌入向量的最终图。你可以将所有节点的表。征加到一起得到 H。

四步骤助你实现图神经网络

GNN 用起来相当简单。事实上,实现它们涉及到以下四个步骤:

给定一个图,首先将节点转换为循环单元,将边转换为前馈神经网络;

接着为所有节点执行 n 次近邻聚合(也就是消息传递);

然后再在所有节点的嵌入向量上求和以得到图表征 H;

最后可以完全跳过 H 直接向更高层级进发或者也可使用 H 来表征该图的独有性质。

小结

现在我们清楚地了解图神经网络的运行方式了。得益于 GNN 在图节点之间依赖关系进行建模的强大性能,它在社交网络、知识图谱和推荐系统方面都有广泛的应用。以社交网络图为例,GNN 在内容推荐方面表现很好。举个例子,当一个用户关注另一个政治倾向相似的用户时,GNN 可用于节点分类,以预测是否可将网站上的特定内容发送到上述用户的新闻流;当 GNN 用于「推荐关注」时,系统可以考虑用户所在的行业,再提供潜在的连接——边分类。

图深度学习其实非常有趣。本文的亮点在于使用一些可视化图介绍了图神经网络的基础概念,但如果想要透彻地了解 GNN,大家最好自己写代码实现看看。

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

    关注

    42

    文章

    4829

    浏览量

    106829
  • 社交网络
    +关注

    关注

    0

    文章

    48

    浏览量

    4182
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是一组高效的神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识别的神经网络
    发表于 10-22 07:03

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是一种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的神经结构,尽管这种微生物的
    的头像 发表于 09-28 10:03 718次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    神经网络的并行计算与加速技术

    随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度慢、训练时间长等
    的头像 发表于 09-17 13:31 898次阅读
    <b class='flag-5'>神经网络</b>的并行计算与加速技术

    神经网络RAS在异步电机转速估计中的仿真研究

    众多方法中,由于其结构简单,稳定性好广泛受到人们的重视,且已被用于产品开发。但是MRAS仍存在在低速区速度估计精度下降和对电动机参数变化非常敏感的问题。本文利用神经网络的特点,使估计更为简单、快速
    发表于 06-16 21:54

    神经网络压缩框架 (NNCF) 中的过滤器修剪统计数据怎么查看?

    无法观察神经网络压缩框架 (NNCF) 中的过滤器修剪统计数据
    发表于 03-06 07:10

    BP神经网络网络结构设计原则

    BP(back propagation)神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,其网络结构设计原则主要基于以下几个方面: 一、层次结构 输入层 :接收外部输入信号,不进行任何计算
    的头像 发表于 02-12 16:41 1265次阅读

    BP神经网络与卷积神经网络的比较

    BP神经网络与卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 一、结构特点 BP神经网络 : BP神经网络是一种多层的前馈神经网络
    的头像 发表于 02-12 15:53 1346次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 1614次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算法是BP
    的头像 发表于 02-12 15:18 1300次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural N
    的头像 发表于 02-12 15:15 1364次阅读

    BP神经网络的基本原理

    BP神经网络(Back Propagation Neural Network)的基本原理涉及前向传播和反向传播两个核心过程。以下是关于BP神经网络基本原理的介绍: 一、网络结构 BP神经网络
    的头像 发表于 02-12 15:13 1548次阅读

    BP神经网络在图像识别中的应用

    BP神经网络在图像识别中发挥着重要作用,其多层结构使得网络能够学习到复杂的特征表达,适用于处理非线性问题。以下是对BP神经网络在图像识别中应用的分析: 一、BP神经网络基本原理 BP
    的头像 发表于 02-12 15:12 1202次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单神经网络神经网络由多个神经元组成,
    的头像 发表于 01-23 13:52 857次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工神经网络   人工
    的头像 发表于 01-09 10:24 2272次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法