首页 > 其他分享 >图神经网络

图神经网络

时间:2024-12-25 14:58:57浏览次数:6  
标签:特征 邻接矩阵 GCN 神经网络 邻居 节点

目录

图(Graph)是一种数据结构,能够很自然地建模现实场景中一组实体之间的复杂关系。在真实世界中,很多数据往往以图的形式出现, 例如社交网络、电商购物、蛋白质相互作用关系等。因此,近些年来使用智能化方式来建模分析图结构的研究越来越受到关注, 其中基于深度学习的图建模方法的图神经网络(Graph Neural Network, GNN), 因其出色的性能已广泛应用于社会科学、自然科学等多个领域。

图神经网络(GNN)

图的基本组成

image-20241223160309674

图神经网络要做什么

无论事整的多么复杂,我们利用图神经网络的目的就是整合特征

我们通过节点与节点之间地邻接关系找到最好的节点特征表示和边的特征表示进而找到最好地图的特征表示,自然而然地我们可以重构出节点、边和图地特征表示。

图的邻接矩阵

初识

以图像为例子,每个像素点周围都有邻居,A就表示邻居之间的关系

image-20241223162401609
  • 我们可以看到本例共有25个像素点,与像素点(0,0)位置的有关的(或相邻的)像素点分别为(1,0),(0,1)和(1,1);

  • 体现在右侧邻接矩阵当中为像素点(0,0)与25个像素点的其中之三(即(1,0),(0,1)和(1,1))有关系,被用蓝色填充;

  • 仔细观察右侧邻接矩阵可以发现该邻接矩阵是对称的

另外,文本数据也可以表示图的形式,邻接矩阵表示的连接关系

image-20241223163513668

数学表达式

image-20241223165432419

消息传递神经网络

  • 将x1的邻居信息进行聚合,可以当作是一个全连接神经网络

  • 通过聚合得到的每个邻居节点的信息来更新x1的特征表示,当然这里的更新方法有很多种,可以自己设置,下面是一些常见的更新方法:

    image-20241223171242692
  • 结合邻居和自身信息:

    image-20241223170446686
  • 汇总:

    image-20241223170428559

多层GNN

  • GNN的本质就是跟新给个部分特征

  • 其中输入是特征,输出也是特征,邻接矩阵也不会变

    image-20241223171451187

根据该图我们可以发现,

  • 变化的是:没经过一层GNN我们的节点特征表示都会结合自身和邻居信息来更新特征表示;

  • 不变的是:邻接矩阵;

  • 随着GNN的层数变多,感受野也变大了。在第一层GNN时,x1聚合邻居x2自身的信息,而在第二层GNN,由于x2在第一层GNN也聚合了其邻居信息(假设x3和x4),那么x1在第二次聚合邻居x2的信息时,也聚合了x3和x4的信息。

    image-20241223172503749

输出的特征可以用来做什么

  • 各个点特征组合,可以图分类
  • 各个节点也可以分类:
  • 边也是如此
  • 其实只是利用图结构得到特征,最终要做什么还是我们自己定

图卷积神经网络(GCN)

基本模型概述

首先,图卷积与卷积有啥不同?看起来好像都是在利用周围的特征,但是CNN是有感受野,有卷积核的,但是,在图中每个点的邻居是不确定的。如没有过城市的交通流量是不同的,不同的蛋白质或者化合物的化学结构也是不同的,进而它们的图结构也是不一样的!我们的GCN能够解决这种结构不同的数据,进行特征提取。

  • 如何获取特征呢?通常交给GCN两个东西就行

    • 各个节点输入特征(特征矩阵X)
    • 网络结构图(邻接矩阵A)
  • 半监督学习 (我们的拿到的数据不一定全部都有标签)

    image-20241224135315284
    • 这也是GCN优势
    • 不需要全部标签
    • 用少量标签也能训练
    • 计算损失时只用有标签的

当然,这里我们希望数据集打的标签越多越好啦_

基本计算方法

GCN的基本思想

image-20241224140239679

针对橙色节点,计算它的特征:平均其邻居特征(包括自身)后传入神经网络

网络层数

这个跟CNN一样,GCN也可以做多层,第一层的输入是节点的特征(X)和邻接矩阵(A);之后的每一层都是将当前特征(X_l)和网络结构图(A)当作输入传入下一层就可以不断地计算下去……

image-20241224140435380

这里有一个小问题,GCN地层数是越多要好吗?

图的基本组成

  • G也就是咱们的图

  • A是邻接矩阵 ,体现每个节点和谁有关系

  • D是各个节点的度 ,体现每个节点关系边的数量

  • X是每个节点的特征

    image-20241224141935140

特征值计算方法

  • 其实就是将邻接矩阵与特征矩阵进行乘法操作,表示聚合邻居信息

  • 数学公式为: A*X

  • 一个实例:image-20241224142958325

  • 一个小问题:观察邻接矩阵A,他的对角线元素都为0,这说明在聚合邻居信息时,只考虑到了周围邻居的信息但是没有考虑到自身的信息,为了考虑到自身的信息,我们只需要对角线元素都为一;体现在数学公式上为

    image-20241224143335547

​ 此时,$\lambda=1$

  • 图形化表示: image-20241224143604431

度矩阵也要变一变

  • 其实就是对度矩阵进行D^{-1}操作,这相当于平均的感觉 -- 归一化操作

  • image-20241224144324951
  • 图形化实例:

    image-20241224144446382

由于我们是左乘D{-1},相当于对行作归一化。为了对列做归一化操作,我们需要右乘D。但是,我们对行做一次归一化,对列做了一次归一化,总共做了两次归一化,这么做的后果是结果在数值上会更小,为了解决这个问题,我们总共只做一次归一化即可,即左乘D{-(1/2)},右乘D

  • 度矩阵的变化情况如下:

    image-20241224145152876

给出GCN的数学表达式

image-20241224150223676

图注意力网络(GAT)

引入

GAT和上面的GNN和GCN一样都是聚合邻居和自身的特征信息来更新节点的特征值,而上面的邻居聚合方式是通过邻接矩阵与特征矩阵进行的,如下图所示;我们可以看到节点E的更新过程为与节点 E 相关的节点特征信息的重要程度都是相同的,这样做的话是否与实际相悖。为了区分不同邻居节点对目标节点(节点e)的重要性,我们引入了图注意力网络。

image-20241225141320473

首先我们先引入数学公式来感受一下目标节点特征向量(h_i)是如何更新的:

image-20241225142258764

计算注意力系数(attention coefficient)

对于目标节点i,逐个计算它的邻居们( j∈N(i) )和它自己之间的相似系数

image-20241225142616961

我们先来解读一下公式:首先一个共享参数 W 的线性映射对于顶点的特征进行了增维,当然这是一种常见的特征增强(feature augment)方法,||表示目标节点i和邻居节点j的增强后的特征向量h_i和h_j进行拼接操作,最后是a表示把拼接后的高维特征向量映射为一个实数。这么做的好处是该注意力系数能够学习得到目标节点i和邻居节点j的特征信息,通过特征增强方法——全连接神经网络和a(.)来实现的。

接下来我们通过softmax进行归一化操作,进一步拉开不同邻居节点对目标节点的重要程度。

image-20241225142510355

加权求和(aggregate)

完成第一步,已经成功一大半了。第二步很简单,根据计算好的注意力系数,把特征加权求和(aggregate)一下

image-20241225143755056

h'_i就是GAT输出的对于每个顶点 i 的新特征(融合了邻域信息), σ(⋅) 是激活函数。这样就和引入当中的图进行了呼应。看着还有点单薄,俗话说一个篱笆三个桩,attention得靠multi-head帮!来进化增强一下!也就是我们下面要说的多头图注意力机制

image-20241225144107291

上面的步骤可以参考下面的图进行理解

image-20241225144221494

  • 简单的说一下,该图的多头GAT是如何体现的 —— 不同颜色的波纹线

下期跟新图像领域OpenCV的一些基础操作,至于本期更新代码实例我也会不定期的放在我的Gitee账号上面,欢迎大家来看!!!

标签:特征,邻接矩阵,GCN,神经网络,邻居,节点
From: https://www.cnblogs.com/DLChen/p/18630388

相关文章

  • BP神经网络在社交网络分析中的应用
    BP神经网络在社交网络分析中的应用摘要:本文主要探讨了BP神经网络在社交网络分析领域的应用。首先阐述了社交网络分析的重要性及所涉及的关键任务,包括用户行为预测、关系分类、影响力分析等。随后详细介绍了BP神经网络的基本原理和架构,涵盖神经元结构、激活函数、前向传播......
  • 使用GAN或卷积神经网络提高图像分辨率
    1.技术背景与研究意义1.1图像分辨率的重要性图像分辨率是衡量图像清晰度和细节程度的关键指标,它直接影响图像的质量和应用范围。高分辨率图像能够提供更多的细节信息,对于图像分析、识别和重建等任务至关重要。视觉感知:高分辨率图像能够更好地模拟人眼的视觉感知,提供更......
  • 深度探秘神经网络模型:核心要点、多样类型与实践应用
    基本概念神经元与生物启发:人工神经网络受人类大脑中的生物神经元启发,生物神经元由细胞体、树突和轴突等组成,可处于兴奋或抑制状态,通过突触传递信息。神经网络组成:由大量相互连接的神经元组成,包括输入层接收数据、隐藏层处理数据、输出层产生最终结果,各层神经元通过权重连接,还有......
  • QRCNN-Attention多变量时序预测 基于分位数回归的卷积神经网络结合注意力机制的多变量
    目录Matlab基于QRCNN-Attention多变量时序预测基于分位数回归的卷积神经网络结合注意力机制的多变量时序预测效果分析基本介绍订阅专栏只能获取专栏内一份代码。程序设计参考资料Matlab基于QRCNN-Attention多变量时序预测基于分位数回归的卷积神经网络结合注意力......
  • 【AI学习笔记4】四种主流的神经网络 FNN、RNN、CNN、Transformer
     一、人工神经网络的分类最常用的人工神经网络(ArtificialNeuralNetwork,ANN)主要包括以下四种:前馈神经网络(FeedforwardNeuralNetwork,FNN)、循环神经网络(RecurrentNeuralNetwork,RNN)和卷积神经网络(ConvolutionalNeuralNetwork,CNN),还有当前最流行的大模型常用的Transformer神......
  • TCN-LSTM 基于时间卷积网络结合长短期记忆神经网络的数据多特征分类预测
    Matlab2023bTCN-LSTM基于时间卷积网络结合长短期记忆神经网络的数据多特征分类预测%************************************************************************************************************************************************************************......
  • MATLAB图卷积神经网络GCN处理分子数据集节点分类研究
    全文链接:https://tecdat.cn/?p=38570本文主要探讨了如何利用图卷积网络(GCN)对图中的节点进行分类。介绍了相关的数据处理、模型构建、训练及测试等环节,通过对分子数据集的操作实践,展示了完整的节点分类流程,并对模型的效果进行了多方面评估,旨在为相关领域的研究与应用提供参考。图......
  • 深度学习——循环神经网络(八)
    序列模型训练生成数据序列importmatplotlib_inlineimporttorchimporttorch.nnasnnimportd2l.torchasd2limportmatplotlib.pyplotaspltimportnumpyasnpT=1000time=torch.arange(1,T+1,1,dtype=torch.float32)x=torch.sin(0.01*time)......
  • 机器学习实验五:BP 神经网络算法实现与测试
    实验五:BP神经网络算法实现与测试一、实验目的深入理解BP神经网络的算法原理,能够使用Python语言实现BP神经网络的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。 二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试集(注......
  • 基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架) 图像识别与分类 前
    基于vgg16和efficientnet卷积神经网络的天气识别系统(pytorch框架)前端界面:flask+python,UI界面:pyqt5+python这是一个完整项目,包括代码,数据集,模型训练记录,前端界面,ui界面,各种指标图:包括准确率,精确率,召回率,F1值,损失曲线,准确率曲线等卷积模型采用vgg16模型或efficien......