免费网站模板建站,网上免费设计效果图,南康家具网站建设,wordpress gzip前言#xff1a;前段时间了解了一下图神经网络#xff0c;本篇博客记录一下相关知识#xff0c;以备不时之需。 强烈推荐这篇博客#xff08;作者来自 Google Research#xff09;#xff0c;个人认为是图神经网络基础入门的不二选择#xff01; 目录 一、图数据1.1 定义… 前言前段时间了解了一下图神经网络本篇博客记录一下相关知识以备不时之需。 强烈推荐这篇博客作者来自 Google Research个人认为是图神经网络基础入门的不二选择 目录 一、图数据1.1 定义表示形式1.2 相关任务1.2.1 图层面的分类 / 回归1.2.2 节点层面的分类 / 回归1.2.3 边层面的分类 / 回归 1.3 建模难点 二、图神经网络2.1 工作原理2.2 经典模型2.2.1 Graph Convolution Networks (GCN)2.2.2 Graph Sample and Aggregate (GraphSAGE)2.2.3 Graph Attention Networks (GAT) 一、图数据
随着机器学习、深度学习的发展语音、图像、自然语言处理逐渐取得了很大的突破然而语音、图像、文本都是很简单的序列或者网格数据是很结构化的数据深度学习很善于处理该种类型的数据。
然而现实世界中并不是所有的事物都可以表示成一个序列或者一个网格例如社交网络、知识图谱、复杂的文件系统等也就是说很多事物都是非结构化的。 1.1 定义表示形式
图数据是由节点Node和边Edge组成的数据最简单的方式是使用邻接矩阵来表示图形结构从而捕捉图形中的节点和边的相关性。假设图中的节点数为n那么邻接矩阵就是一个n*n的矩阵如果节点之间有关联则在邻接矩阵中表示为1无关联则为0。如下图鲁班与其他英雄都没有关联表现在邻接矩阵当中就是它所在的行与列为全零。 图数据的信息包含3个层面分别是节点信息V、边信息E、图整体U信息它们通常是用向量来表示。而图神经网络就是通过学习数据从而得到3个层面向量的最优表示。
1.2 相关任务
1.2.1 图层面的分类 / 回归
例分子是天然的图原子是节点化学键是边。现在要做一个分类有一个苯环的分子分一类两个苯环的分子分一类。这是图层面的分类任务。 1.2.2 节点层面的分类 / 回归
例假设一个跆拳道俱乐部里有A、B两个教练所有的会员都是节点。有一天A、B两个跆拳道教练决裂那么各个学员是愿意和A在一个阵营还是愿意和B在一个阵营这是节点层面的分类任务。 1.2.3 边层面的分类 / 回归
例UFO拳击赛上首先通过语义分割把台上的人和环境分离开来。赛场上的人都是节点现在要做一个预测预测的是这些人之间的关系是对抗关系还是观众watch的关系还是裁判watch的关系这是边层面的分类任务。 1.3 建模难点
相比于简单的文本和图像这种网络类型的非结构化的数据非常复杂处理它的难点包括
图的大小是任意的图的拓扑结构复杂没有像图像一样的空间局部性图没有固定的节点顺序或者说没有一个参考节点图经常是动态图而且包含多模态的特征
那么对于这类数据我们该如何建模呢能否将深度学习进行扩展使得能够建模该类数据呢这些问题催生了图神经网络。 二、图神经网络
相比较于神经网络最基本的网络结构全连接层MLP特征矩阵乘以权重矩阵图神经网络多了一个邻接矩阵。计算形式很简单三个矩阵相乘再加上一个非线性变换。 2.1 工作原理
一个比较常见的图神经网络的应用模式如下图输入是一个图经过多层图卷积等各种操作以及激活函数最终得到各个节点的表示以便于进行节点分类、链接预测、图与子图的生成等任务。 对图神经网络有一个直观的感受与理解之后我们来了解一下它的工作原理如下图所示GNN是对图中的所有属性进行的一个可以优化的变换它的输入是一个图输出也是个图。它只对属性向量即上文所述的V、E、U进行变换但它不会改变图的连接性即哪些点互相连接经过GNN后是不会变的。在获取优化后的属性向量之后再根据实际的任务后接全连接神经网络进行分类和回归。大家可以把图神经网络看做是一个图数据的在三个维度的特征提取器。 GNN对属性向量优化的方法叫做消息传递机制。比如最原始的GNN是SUM求和传递机制到后面发展成图卷积网络GCN就考虑到了节点的度度越大权重越小使用了加权的SUM再到后面发展为图注意力网络GAT在消息传递过程中引入了注意力机制目前的SOTA模型研究也都专注在了消息传递机制的研究。见下图所示。 接下来将以几个经典的GNN models为线来介绍图神经网络的发展历程。
2.2 经典模型
2.2.1 Graph Convolution Networks (GCN)
论文信息SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS (ICLR, 2017) 代码https://github.com/tkipf/pygcn 数据集https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz
GCN可谓是图神经网络的“开山之作”它首次将图像处理中的卷积操作简单的用到图结构数据处理中来。
GCN的缺点也是很显然易见的第一GCN需要将整个图放到内存和显存这将非常耗内存和显存处理不了大图第二GCN在训练时需要知道整个图的结构信息(包括待预测的节点), 这在现实某些任务中也不能实现(比如用今天训练的图模型预测明天的数据那么明天的节点是拿不到的)。
2.2.2 Graph Sample and Aggregate (GraphSAGE)
为了解决GCN的两个缺点问题GraphSAGE被提了出来。在介绍GraphSAGE之前先介绍一下Inductive learning归纳学习和Transductive learning转导学习。注意到图数据和其他类型数据的不同图数据中的每一个节点可以通过边的关系利用其他节点的信息。这就导致一个问题GCN输入了整个图训练节点收集邻居节点信息的时候用到了测试和验证集的样本我们把这个称为Transductive learning。然而我们所处理的大多数的机器学习问题都是Inductive learning因为我们刻意的将样本集分为训练/验证/测试并且训练的时候只用训练样本。这样对图来说有个好处可以处理图中新来的节点可以利用已知节点的信息为未知节点生成embeddingGraphSAGE就是这么干的。
GraphSAGE是一个Inductive Learning框架具体实现中训练时它仅仅保留训练样本到训练样本的边然后包含Sample和Aggregate两大步骤Sample是指如何对邻居的个数进行采样Aggregate是指拿到邻居节点的embedding之后如何汇聚这些embedding以更新自己的embedding信息。
2.2.3 Graph Attention Networks (GAT)
GAT在传播过程引入自注意力self-attention机制每个节点的隐藏状态通过注意其邻居节点来计算。
论文信息GRAPH ATTENTION NETWORKS (ICLR, 2018) 代码https://github.com/Diego999/pyGAT 参考资料
A Gentle Introduction to Graph Neural Networks (distill.pub)Understanding Convolutions on Graphs (distill.pub)图神经网络GNN最简单全面原理与代码实现 - 知乎 (zhihu.com)图神经网络从入门到入门 - 知乎 (zhihu.com)图神经网络入门一GCN图卷积网络 - 知乎 (zhihu.com)pytorch框架下—GCN代码详细解读_gcn代码详解_MelvinDong的博客-CSDN博客Graph Attention Networks GATpytorch源码解读 - 知乎 (zhihu.com)零基础多图详解图神经网络GNN/GCN【论文精读】_哔哩哔哩_bilibili1. 1.1_图基本知识_哔哩哔哩_bilibili