【学习笔记】图卷积网络(概述)

1、导 读

图神经网络(Graph Neural Network,GNN)是指使用神经网络来学习图结构数据,提取和发掘图结构数据中的特征和模式,满足聚类分类、预测、分割、生成等图学习任务需求的算法总称。

GNN的历史最早可以追溯到 2005 年,Gori 等人第一次提出 GNN 概念,用 RNN 来处理无向图有向图、标签图和循环图等。Bruna等人提出将 CNN 应用到图上,通过对卷积算子巧妙的转换,提出了图卷积网络(GCN),并衍生了许多变体。

本文将首先对图神经网络的常见应用场景进行列举,然后针对图神经网络的原理进行详细阐述。

本文开始之前,请大家思考一个问题,

—为什么研究学者们要设计图卷积操作,传统的卷积不能直接用在图上吗?

更多内容 关注公众号【小Z的科研日常】获取。

2、GCN的应用场景

🌐 社交网络的建模 🌐

当前众多研究学者使用图神经网络模型应用在社交网络建模中,在社交网络中不同朋友之间的联系使用社交图(见图1)实现直观地表示。

图1  社交图

通过社交图将不同朋友之间的社交关系清晰地映射出来,为社交网络分析提供新的分析视角。

🗣️ 语音识别的图形模型应用 🗣️

在深入了解语音识别领域相关技术后,如何通过构建语音识别的图形模型来捕捉音素Yᵢ和声学模型xᵢ形成 HMM(语音识别图)是当前研究热点。

图2  语音识别图

🖼️ 传统卷积和图卷积的区别 🖼️

这也就回到了我们引言中所提问到的问题,我们在传统卷积中以CNN为例辅助大家理解。

在图像领域中使用CNN,我们依旧可以将图像输入建模为图的形式。例如图3(左)是5x5的像素点,对于3x3卷积核的情况下,每个节点都能够直接连接8个邻节点。

图3  传统卷积图示

但图表的情况并非如此。例如,下面的图虽然在空间上看起来不同,但它们是相同的。

图4  图卷积网络的数据结构

一般来说,神经网络 (NN) 采用输入x来预测z。而这也给神经网络中如何处理图结构化数据带来了新的挑战。

图5  传统神经网络架构

在 GCN(图卷积网络)中,神经网络的输入将是一个图。此外,它不是推断单个z ,而是推断图中每个节点 的值 zᵢ 。为了对 Zᵢ 进行预测,GCN在计算中同时利用了 Xᵢ 及其相邻节点。

图卷积网络(GCN)

GCN 的总体思想是在图上应用卷积。GCN 采用图作为输入,而不是二维数组作为输入。

图6 传统卷积和图卷积区别

(圈中部分为卷积核)

下面的第一张图(第一行)是传统的神经网络,第二张图是 GCN,其中包含四个节点作为输入。

图7 传统神经网络和图卷积网络对比图

在第一个神经网络中,它包含多个密集层(全连接层)。其中,x 是一层的输入,zᵢ 是第 i 层的输出。对于每一层,我们将z(或第一层的 x )与权重 W 相乘,并将输出传递给激活函数 Relu

而 GCN 与上述结构较为相似,但 Relu 的输入是 HⁱWⁱ 而不是 Wᵢzᵢ 。即σ ( Wᵢzᵢ ) 与σ(ÂHⁱWⁱ),其中zᵢ和Hⁱ分别是神经网络和图卷积网络的最后一个隐藏层的输出向量。但注意,Wⁱ 和 Wᵢ 是不同的,并且具有不同的维度,对于GCN中的第一层,X包含的节点数组不是单个节点x。X是被编码为矩阵,每行包含一个节点的特征。

下面我们先来一窥图卷积神经网络的全貌。如图8所示,输入的是整张图,在Convolution Layer 1里,对每个结点的邻居都进行一次卷积操作,并用卷积的结果更新该结点;然后经过激活函数如ReLU,然后再过一层卷积层Convolution Layer 2与一层激活函数。

反复上述过程,直到层数达到预期深度。与GNN类似,图卷积神经网络也有一个局部输出函数,用于将结点的状态(包括隐藏状态与结点特征)转换成任务相关的标签;也有一些任务是对整张图进行分类的,比如化合物分类。卷积操作关心每个结点的隐藏状态如何更新,而对于Graph-Level的任务,会在卷积层后加入更多操作。

图8 图卷积框架

未完待续......

  • 33
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Spark SQL是Apache Spark中的一个模块,它提供了一种基于结构化数据的编程接口。Spark SQL可以让用户使用SQL语句来查询数据,也可以让用户使用DataFrame API来进行数据处理和分析。Spark SQL支持多种数据源,包括Hive、JSON、Parquet等。Spark SQL还提供了一些高级功能,如支持用户自定义函数、支持分布式机器学习算法等。Spark SQL的目标是让用户能够方便地使用Spark进行数据处理和分析,同时提供高性能和可扩展性。 ### 回答2: Spark SQL是一个基于Spark平台的关系型数据处理引擎,它支持使用SQL语句和数据框架操作数据,可以轻松处理结构化和半结构化的数据。它可以从多个数据源中读取数据,包括Hive、JSON、Parquet、ORC等。通过Spark SQL,用户可以方便地使用SQL查询语言来分析和处理数据,大大降低了开发和组织数据流的难度。 Spark SQL主要有两种执行模式:SQL查询和DataFrame操作。其中SQL查询基于Hive的SQL语法解析器,支持HiveQL中的大多数语言特性(如UDF、窗口函数等)。在执行计划生成时,Spark SQL采用了Spark的计算引擎,支持各种Spark算子的优化,以便最大程度地提高查询性能。 另一种操作模式是使用DataFrame API,它可以灵活地进行数据转换和处理,并提供了类似于SQL的语法。与SQL查询不同,DataFrame API通过静态检查和编译器优化来避免由SQL查询引起的语法错误和潜在性能问题。 除了这两种基本的操作模式外,Spark SQL还提供了一些高级特性,如嵌套查询、表和视、共享变量等。这些特性扩展了Spark SQL的功能,使得它可以更加灵活地进行数据处理和查询。 Spark SQL是Spark的重要组成部分,它在数据存储和处理方面提供了很多便利。通过最大程度地利用Spark引擎的优势,Spark SQL能够处理海量数据,并将其转换为有用的信息。这使得Spark SQL成为实现数据分析、机器学习人工智能的重要工具之一。 ### 回答3: Spark SQL是一种基于Spark平台的数据处理引擎,它提供了高度优化的查询引擎和优秀的支持SQL语句的API。它允许用户使用SQL语句查询来处理大规模数据集,同时仍然支持复杂数据类型和计算。Spark SQL支持数据源,包括Parquet,Avro,JSON等一系列结构化的和半结构化的数据源。 Spark SQL在历史上是一个单独的模块,在Spark 2.0之后,它已经成为Spark的核心组件之一,可以直接在Spark核心API中使用,包括作为一个RDD库或DataFrame/DataSet的API。 Spark SQL的优点如下: 1. 它可以向受过传统SQL培训的用户展示更高级别,更强大的API。 2. 它提供数据集和RDD的良好互操作性。Spark SQL可以通过未被优化的RDD/DataSet API访问同一数据。 3. 它支持Spark的执行引擎以加速查询处理。 使用Spark SQL的时候,可以根据需要选择编程语言,如Scala,Java,Python,SQL等。在Spark核心API中,Spark SQL提供了两种API来处理结构化数据: 1. DataFrame API:DataFrame是具有许多操纵数据的功能的分布式数据集,类似于数据库中的表。 2. Dataset API:Dataset是Scala和Java API,它是类型安全的,并且提供与RDD API相同的API,但比RDD具有更好的性能和可读性。 Spark SQL是Spark生态系统中重要的组成部分之一。在处理大规模数据时,使用Spark SQL可以方便地利用Spark的强大功能,提高处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小Z的科研日常

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值