精华内容
下载资源
问答
  • gnn图神经网络
    2022-04-26 20:55:59

    GNN的作用是输入一个具有特征和结构的图,输出最终的特征

    GNN有三个流程:聚合、更新和循环,接下来我将在这个图中介绍。

    以A结点为例,

    邻居信息 N = a*(2,2,2,2,2) + b*(3,3,3,3,3) + c*(4,4,4,4,4)

    其中a,b,c是边的权重

    A更新后的信息 M = \sigma (W((1,1,1,1,1)+\alpha *N))

    其中 sigma 是激活函数,W 和 alpha 都是参数

    然后经过多次循环,可构造多层GNN,A结点就可以得到其他所有结点的信息

    那么,算出来的最终特征有什么作用呢?

            1、在结点分类任务中,可以直接拿去分类,通过训练 loss,来优化 W

            2、在关联预测任务中,最简单的方法是把两个结点的特征拼接起来,转化为分类任务,同样算 loss,然后优化 W

    参考资料

    1、简单粗暴入门GNN

    简单粗暴带你快速理解GNN_哔哩哔哩_bilibili

    更多相关内容
  • GNN图神经网络的输出由每个节点本地计算的单元状态获得。为保证GNN各个节点中平衡点的唯一性,需要对其扩散机制进行约束。GNNs不同于传统的细胞神经网络,其可以用于处理更一般的图类,例如各类循环图、有向图和无向...

    1.软件版本

    matlab2019a

    2.系统概述

    图神经网络(Graph Neural Network,GNN)是一种基于信息扩散机制的神经网络模型。在GNN模型中,其包括一组处理单元,每个处理单元的表示图中的一个节点,各个节点之间具有一定的连通性。当这些节点相互交换信息的时候,系统将逐渐收敛并达到平衡状态。

    GNN图神经网络的输出由每个节点本地计算的单元状态获得。为保证GNN各个节点中平衡点的唯一性,需要对其扩散机制进行约束。GNNs不同于传统的细胞神经网络,其可以用于处理更一般的图类,例如各类循环图、有向图和无向图,GNNs还可以处理以节点为中心的系统模型,而无需对系统做任何预处理。

          在图神经网络中,图的各个节点将被认为是目标对象,每一个目标对象通过各自的特征信息来关联其他目标的特征。然后通过顶点包含的信息以及其邻域的信息,如图1所示。

     

           GNN图神经网络的处理过程包括状态更新,学习过程两个环节,下面对其主要处理过程进行原理介绍。

    在GNN中,全局状态变量X(t+1)的迭代更新方式可以表示为:

     公式3中,对于任意个节点v其局部状态变量Xv(t+1)的迭代更新方式可以表示为:

    在公式中,GNN其包含了一个编码网络,其结构如下图所示

     图2中,局部变换函数fw和局部输出函数gw的基本结构如图3所示。

           由图3可知,编码网络在结构上属于递归神经网络,其每一层网络结构对应一个时刻,并且包含编码网络所有单元的副本。不同时刻的两个层之间的网连接取决于编码网络的连接。神经元之间的连接可以分为内部连接和外部连接,内部连通性由用于实现该单元的神经网络结构决定,外部连接取决于处理图形的边缘。

            GNN的训练过程主要为权值参数w的估计过程,根据公式3可知,GNN的学习任务可以通过如下LOSS函数来表示:

     

    3.GNN工具箱调用方法

    % Mutagenesis example
    clc;
    clear;
    close all;
    warning off;
    rng(1);
    
    addpath 'GNN_1.1.c-master\comparisonNet\'
    addpath 'GNN_1.1.c-master\datasets\'
    addpath 'GNN_1.1.c-master\experiments\'
    addpath 'GNN_1.1.c-master\initialization\'
    addpath 'GNN_1.1.c-master\isomorphism\'
    addpath 'GNN_1.1.c-master\MLP\'
    addpath 'GNN_1.1.c-master\neuralNetworks\'
    addpath 'GNN_1.1.c-master\private\'
    addpath 'GNN_1.1.c-master\systemModels\'
    addpath 'GNN_1.1.c-master\utils\'
    addpath 'GNN_1.1.c-master\database\'
    addpath 'GNN_1.1.c-master\'
    startSession
    % Create a 10-fold cross validation data set
    makeMutagenicDataset
    global multidata
    % Train the GNN by only 1 data set
    dataSet = multidata(1);
    
    dataSet.trainSet
    
    LEN=0.1;
    Configure('GNN3.config')
    learn
    
    LEN=0.2;
    Configure('GNN3.config')
    learn
    
    LEN=0.3;
    Configure('GNN3.config')
    learn
    
    LEN=0.4;
    Configure('GNN3.config')
    learn
    
    LEN=0.5;
    Configure('GNN3.config')
    learn
    
    LEN=0.6;
    Configure('GNN3.config')
    learn
    
    LEN=0.7;
    Configure('GNN3.config')
    learn
    
    LEN=0.8;
    Configure('GNN3.config')
    learn
    
    LEN=0.9;
    Configure('GNN3.config')
    learn
    
    LEN=10;
    Configure('GNN3.config')
    learn
     
    plotTrainingResults;
    % Test
    % test
    close all;
    
    t1=learning.history.forwardItHistory;
    t2=learning.history.backwardItHistory;
    KK=32;
    for i = 1:length(t1);
        if i<=KK
           t1b(i)=mean(t1(1:i)); 
           t2b(i)=mean(t2(1:i)); 
        else
           t1b(i)=mean(t1(i-KK:i));  
           t2b(i)=mean(t2(i-KK:i));  
        end
    end
    figure;
    plot(t1b,'b--'); 
    hold on
    plot(t2b,'r'); 
    hold off
    legend('Forward iterations', 'Backward iterations');   
    xlabel('训练次数');
    ylabel('训练误差%'); 
    
        
    
        
    figure;
    plot([1:size(learning.history.trainErrorHistory,2)],learning.history.trainErrorHistory/10,'b');
    hold on
    t=[learning.config.stepsForValidation:learning.config.stepsForValidation:...
        learning.config.stepsForValidation*(size(learning.history.validationErrorHistory,2))];
    t(end)=learning.current.nSteps-1;  
    % xlim([0,250]);    
    xlabel('训练次数');    
    ylabel('训练误差%');      
        
    load data.mat%调用10次训练的结果
    figure;
    plot(X,ERR,'b-o');
    xlabel('训练样本数量');
    ylabel('训练误差%');
    axis([1000,10000,0,40]);
    grid on  
        

    其中GNN工具箱内部代码列表如下:

    4.仿真结论

     

    5.参考文献

    [1]Gnana J B , Rani S M M . Graph Neural Network for Minimum Dominating Set[J]. International Journal of Com- puter Applications, 2012, 56(1):12-16.A05-87

    展开全文
  • GNN图神经网络梳理

    2021-08-17 20:20:04
    一、GCN 卷积神经网络: Semi-Supervised Classification with Graph Convolutional Networks 基于频谱域的卷积神经网络,原理是通过独立于节点embedding的拓扑结构定义用于聚集(过滤)邻居节点的权值。 :本质...

    一、GCN 图卷积神经网络:

    Semi-Supervised Classification with Graph Convolutional Networks
    基于频谱域的图卷积神经网络,原理是通过独立于节点embedding的图拓扑结构定义用于聚集(过滤)邻居节点的权值。

    :本质仍是聚合邻居节点的信息,只不过可以通过数学变换得到如下的式子统一表示聚合邻居信息的过程。
    在这里插入图片描述

    这样可能提高了速度但固定了GCN的聚合邻居信息的方式,导致了直推式学习的弊端。
    1、GCN的本质确实是利用全图进行节点的特征学习(参考:GCN(2017ICLR论文)说明
    2、在面对新的节点时确实需要重新训练

    参考:GCN入门

    而传统的基于空间域的GCN遵从如下的计算规则:

    二、GAT 图注意力神经网络(从空域出发,加入了attention):

    在GAT中,由于注意力机制,权值是节点embedding的函数。对图节点的分类结果表明,GAT的自适应能力使得融合节点特征和图拓扑结构的信息更加有效。

    三、GraphSage 基于空域的图卷积神经网络(第一篇):

    经典的应该也是目前最常见的基于空间域的图卷积神经网络,不同于GCN,GraphSAGE从两个方面对传统的GCN做了改进,

    • 一是在训练时的,采样方式将GCN的全图采样优化到部分以节点为中心的邻居抽样,这使得大规模图数据的分布式训练成为可能,并且使得网络可以学习没有见过的节点,这也使得GraphSAGE可以做归纳学习(Inductive Learning)。
    • 第二点是GraphSAGE研究了若干种邻居聚合的方式,并通过实验和理论分析对比了不同聚合方式的优缺点。
    • 有了这样的一个公式:
      在这里插入图片描述
      对于新的节点,可以利用上述规则计算得到它的特征表示而不需要像频域GCN一样重新计算一遍。

    从而解决了从transductive到inductive的转换:
    在这里插入图片描述

    GraphSage 本质上实现了从transductive到inductive的进化
    GraphSage本质的理解

    核心算法:
    在这里插入图片描述

    参考:
    图神经网络GraphSage:远亲不如近邻
    GraphSAGE详解

    四、动态图上的GCN??

    总结

    1、频域GCN、空域GCN以及与GraphSage的区别

    不论是基于频域的GCN还是基于空间域的GCN,本质都是实现聚合邻居信息得到节点的特征表示,频域GCN通过数学上的频谱卷积变换了其聚合的过程,其规则是考虑自身节点并进行度归一化地聚合邻居信息:
    在这里插入图片描述

    而基于空间域的GCN通过循环(数学不好我就暴力)更新节点特征的方式,实现了同样的目标,二者在本质上没有区别。

    这样处理可以说实现了用全图的信息来获得节点的表示,但同时也引来了新的问题:每当有新的节点到来时,哪怕只引入一个新的节点,相应的 A ^ , D ^ − 1 / 2 \hat{A},\hat{D}^{-1/2} A^,D^1/2都会发生变化,因此我们需要完全重复这样的计算。

    GraphSage的引入旨在解决这个问题,通过学习一个聚合函数,从而避免重复计算图的结构信息。但其本质个人理解就是空间域的GCN+新的聚合函数+新的邻居节点抽样方法(抽样算法解决了新节点学习的问题)。

    对于新的节点,可以利用上述规则计算得到它的特征表示而不需要像频域GCN一样重新计算一遍。

    2、GCN如何聚合全局信息?

    单次GCN(泛指,包括GCN、GraphSage等)迭代是聚合静态的邻居信息,即若是第一次迭代,只根据一跳邻居的当前信息得到节点的表示,并不会聚合全局信息。
    在这里插入图片描述

    随着多次迭代,单个节点才逐渐聚合2条邻居(已经足够)、3跳邻居直至全部节点的信息。

    3、 未来方向 (2019年初提出)

    加深网络 深度学习的成功在于深度神经架构。例如在图像分类中,模型 ResNet 具有 152 层。但在图网络中,实证研究表明,随着网络层数增加,模型性能急剧下降 [147]。根据论文 [147],这是由于图卷积的影响,因为它本质上推动相邻节点的表示更加接近彼此,所以理论上,通过无限次卷积,所有节点的表示将收敛到一个点。这导致了一个问题:加深网络是否仍然是学习图结构数据的好策略?

    感受野节点的感受野是指一组节点,包括中心节点和其近邻节点。节点的近邻(节点)数量遵循幂律分布。有些节点可能只有一个近邻,而有些节点却有数千个近邻。尽管采用了采样策略 [24], [26], [27],但如何选择节点的代表性感受野仍然有待探索。

    可扩展性大部分图神经网络并不能很好地扩展到大型图上。主要原因是当堆叠一个图卷积的多层时,节点的最终状态涉及其大量近邻节点的隐藏状态,导致反向传播变得非常复杂。虽然有些方法试图通过快速采样和子图训练来提升模型效率 [24], [27],但它们仍无法扩展到大型图的深度架构上。

    动态性和异质性大多数当前的图神经网络都处理静态同质图。一方面,假设图架构是固定的。另一方面,假设图的节点和边来自同一个来源。然而,这两个假设在很多情况下是不现实的。在社交网络中,一个新人可能会随时加入,而之前就存在的人也可能退出该社交网络。在推荐系统中,产品可能具有不同的类型,而其输出形式也可能不同,也许是文本,也许是图像。因此,应当开发新方法来处理动态和异质图结构。

    展开全文
  • CNN的复习 + 初探GNN图神经网络

    千次阅读 2022-03-31 18:47:31
    目录卷积神经网络的复习GNN图神经网络输入输出图神经网络本身 卷积神经网络的复习 就是我们用同一个函数,去在不同的位置和原图进行乘积再相加,得到了一个新的值,这就是卷积的概念 卷积通常用来降维,有时候输入的...

    卷积神经网络的复习

    就是我们用同一个函数,去在不同的位置和原图进行乘积再相加,得到了一个新的值,这就是卷积的概念

    卷积通常用来降维,有时候输入的维度太大,我们不想要这么多维,就卷积一下
    在做卷积的时候,有对边界的处理
    请添加图片描述
    补多少的话,这里有个公式
    在这里插入图片描述
    如果想让输入输出维度相同的话,就把这里的设成W,就可以算出要补多少0

    接下来就是池化,池化其实 就是资源整合,池化之后 再次进行卷积时,卷积核的个数与第一次卷积不一定相同。

    池化后将之扁平化,然后进入全连接层,全连接层就是我们上一篇说的普通的前馈神经网络

    请添加图片描述
    特别值得注意的是,这里有一个with dropout
    大家都知道神经网络在特征加多了之后,很容易出现过拟合的问题,过拟合就是,你在训练的时候效果很好,当你去验证的时候,就会发现新的数据是没有办法得到很好的结果的。为了防止过拟合的现象,大家通常会使用所谓的正则化的方法。
    dropout就是一种针对神经网络的正则化方法

    就比如我的dropout rate是0.5,就是说我在训练中有百分之五十的这一层输入我是不看的,也就是在做参数训练的时候,我是不看百分之五十的输出的(如下图),等我训练完之后,我是所有的输入都看得,但是我会降一下训练出的权值大小,如果我的dropout rate是0.5的话,最后训练出来的所有weight都降二分之一最后就可以得到一个正确的拟合输出。
    举个不太恰当得栗子,就是假设大家都去公司上班,我每天早上投硬币来决定自己今天去不去上班,这个居然对公司有好处。这个听上去很奇怪。就是说,如果我随机让一些神经元不工作,反而会对我的训练结果有好处
    解释一下的话就是,如果公司里的每一个人都是可以随时请假随时走的话,其实说明这个公司所有东西的知识都不只掌握在一个人手里,没有缺哪一个人就没有办法运行的情况。所以它的鲁棒性比较好。那么,有dropout的神经网络在训练当中,就在强迫每一个神经元都可以承担更多的责任。因为它不太能依赖其他的神经元。因为其他的神经元有时候时在时不在,所以独立性就更好,这样就导致每一个神经元,其实能够更快得被训练到一个有价值的状态,

    请添加图片描述
    后来,人们就感觉神经网络可能会越深越好,但是过了不久,发现 不行,要有一些新的变化,就出现了resent
    请添加图片描述
    其实就是用两个卷积神经网络之后,我再加一个跳了之后的输入也就是我可以把直接输入和输出连起来,中间把它跳掉。
    如图
    请添加图片描述

    感觉上好像把神经网络架构变潜了。但是神奇的是,这样的网络会训练起来更快更好。生物的神经网络其实本来就没有这么整齐,而且也不像我们人工的神经网络这么可靠,所以可能我们天然的神经网络就自然地实现了所谓的resent,就是它有跳跃层。就是它有的神经可能连到下一层去了,不是严格地一层一层连地,也就是它层的概念没有这么明显。
    它可能也没有多么可靠它可能并不是每一次的信号强度一样,或者是结果一定,所以一定层度上它也去实现了dropout。

    最后再来回忆一下CNN训练的过程

    其实卷积神经网络的训练跟之前普通神经网络的训练没有什么本质上的区别,需要特别注意的就是它对内存的需求,卷积神经网络听上去比普通的前馈神经网络好像要容易一些,因为好像只有卷积核的参数需要训练,并不是用一个全连接层从头到尾。
    但是图像通常都比较大,就算是用了卷积核,实际上的存储需求也是非常高的
    请添加图片描述

    GNN图神经网络

    其实神经网络的 输入就是一个tensor,一个张量,用张量来表示的这些问题,有时候也是可以被表示成一个图的。图像的话,通常我们认为它是一个二维数据,当然,像是RGB的话,可能是一个三维数据,我们之前是把它表示成一个张量的形式。但是实际上这个图像本身也能当作一个图,就是每个像素点都是一个顶点,如下图
    请添加图片描述
    那更常见的现实中的图,比如社交图,交通运输图,大脑中神经网络,网页和网页之间的链接

    输入

    一般图神经网络的输入除了这个图本身(就是我们刚刚说的二元组之外),它通常还加入了一些东西,比如说边上的信息,或者是节点本身的信息(节点本身信息是一种更常见的输入), 比如说我做一个社交图,除了我和这个人的关系之外,我自己本身有一些特性,比如说我的年龄,性别,喜好等等,这些都可以作为我这个节点本身的一些附带的这些特征。

    输出

    图神经网络它的输出是什么样子的呢?
    节点层面
    不同的问题会有不同的输出,最常见的一个就是做节点的表示学习,我们可以利用图这个关系,来对节点这个本身做一个表示学习。换句话说就是,因为我跟这个人的互动,这个互动本身也对我这个人,产生了一定特征上的变化(近朱者赤,近墨者黑)。

    边层面
    我们可以利用图神经网络去看边存不存在。
    比如说推荐算法,可能你想知道我这个节点和另一个节点之间存不存在互动关系,我现在没有观察到,但是根据对两个东西的理解,认为他们存在互动关系的可能性是非常非常大的,这个也是图神经网络的一个应用

    应用于图本身

    也就是说,我们对于网络结构本身这个图整体,也可以进行一个表示学习,我们可以对图进行分类。
    以上三种就是图神经网络主要的运用方法

    图神经网络本身

    图神经网络分为四类
    1.recurrent GNN, 就是循环的图神经网络
    2.convolutional GNN, 就是卷积图神经网络
    3.Graph Auto Encoder(GAE)基于图的自编码器
    4.Spatial Temporal GNN时空图网络

    我们主要就先说一下前两种图神经网络,第三个概括一下,第四个跟其他的本质上有许多不同,它主要应用在交通,专业性较强

    Recurrent GNN (循环GNN)

    展开全文
  • Cora数据集包含2708篇科学出版物,edges:5429,classes:7,features:1433 每个科学出版物都由一个01词向量描述 训练集(140,1433),测试集(1000,1433),总训练集(1708,1433)...用于深度学习,图神经网络的训练
  • GNN图神经网络

    千次阅读 2021-11-25 16:44:25
    零基础多图详解图神经网络GNN/GCN)【论文精读】_哔哩哔哩_bilibili 文章分为四块: 什么样的数据可以表示为一张图 图和别的数据有什么不一样的地方 为什么要做图神经网络 构建GNN 看一下各个模块长什么样子 ...
  • 图神经网络论文

    2019-03-19 14:57:56
    GNN 图神经网络
  • ICLR 2022 GNN 图神经网络 论文 泛读 (11-12)
  • 过程是先将点云场景编码成结构,随后设计了一个叫point-GNN网络结构,在这其间,作者设计了一个自动配准的算法来减少转变误差,同时设计了一个目标框融合的操作来结合从多个顶点的准确预测。 1. ..
  • ICLR2022 GNN 图神经网络 论文阅读 (二) 泛读 (7-8)
  • 描述一个中的某节点与其相连节点之间聚集成团的程度的一个系数。 聚类系数的目标是比较群组的聚合紧密程度与其能够达到的聚合紧密程度。 一个节点的局部聚类系数体现的是其邻节点也相互连通的可能性。 聚类系数的...
  • GNN图神经网络综述

    万次阅读 多人点赞 2019-03-13 09:21:57
    什么是GNN GNN是Graph Neural Network的简称,是用于学习包含...图神经网络处理的数据就是图,而图是一种非欧几里得数据。GNN的目标是学习到每个节点的邻居的状态嵌入,这个状态嵌入是向量且可以用来产生输出,例如...
  • 我们将图神经网络 (GNN) 分为循环图神经网络 (RecGNN)、卷积图神经网络 (ConvGNN)、图自动编码器 (GAE) 和时空图神经网络 (STGNN)。图 2 给出了各种模型架构的示例。下面,我们对每个类别进行简要介绍。 A. Taxonomy...
  • 卷积分为两大类,一类是基于谱方法(spectral methods),就是将信号进行傅里叶变换在频域进行研究,以GCN为代表的模型,但是谱方法有一个理论要求就是拉普拉斯矩阵L要求为对称矩阵,L = D-A,即为无向才能...
  • 图神经网络(Graph Neural Networks)成为研究者讨论的焦点,作为该领域的研究人员,我甚是欣慰。记得大概三年前,图神经网络那时还受到冷落,当我和研究GAN和Transformers的同行交流时,他们认为我的研究方向极其...
  • GNN图神经网络)基本概念

    千次阅读 2022-02-16 19:08:29
    模型代表:GCN(Graph Convolutional Network )卷积网络 优点:省参数 缺点:不易作用于动态 共同步骤: 加工邻接矩阵 对图邻接矩阵特征分解,得到特征值, 将特征向量看作常数,而卷积核作用在特征...
  • 图神经网络。 或者具体一点:图卷积神经网络。 图卷积的运算定义:x1*x2 = IGFT(GFT(x1)GFT(x2)) (式1) 其中表示哈达玛积,继续对上式进行推导: 把x1和x2进行图傅里叶变换:x1 =(式2) 其中V代表图G的...
  • GNN的应用:生物化学、交通、计算机图像、自然语言处理、点云数据 PointNet, EdgeConv,推荐系统DGRec、视觉推理
  • 什么是图神经网络 (GNN)?

    千次阅读 2022-03-11 18:16:55
    图表无处不在。您的社交网络是人和关系的图表。你的家人也一样。您从 A 点到 B 点所走的道路...图神经网络GNN)是一种机器学习算法,可以从图中提取重要信息并做出有用的预测。随着图变得越来越普遍,信息越来越丰富
  • 图神经网络GNN)的基本原理

    千次阅读 多人点赞 2021-12-21 11:47:11
    图神经网络GNN)的基本原理
  • 深度学习与图神经网络 近年来,人工智能与深度学习在各个领域得到了长足的发展。从最先掀起这轮深度学习浪潮的计算机视觉(Computer Vision)领域,到亦备受关注的自然语言处理(Natural Language Processing)、...
  • 图神经网络GNN学习笔记:卷积神经网络卷积神经网络1. 卷积与池化1.1 信号处理中的卷积 卷积神经网络 卷积神经网络(Convolutional Neural Network, CNN或ConvNet)是一种具有局部连接、权值共享等特点的深层前馈神经...
  • GNN图神经网络的原理及GGNN、GCN原理及发代码分析
  • 一、为什么需要图神经网络? 随着机器学习、深度学习的发展,语音、图像、自然语言处理逐渐取得了很大的突破,然而语音、图像、文本都是很简单的序列或者网格数据,是很结构化的数据,深度学习很善于处理该种类型的...
  • 图神经网络GNN学习笔记:图分类1. 基于全局池化的图分类 图分类问题是一个重要的图层面的学习任务,需要关注图数据的全局信息,包括图的结构信息以及各个节点的属性信息。给定多张图,以及每张图对应的标签,图分类...
  • 在这篇论文中,我们假定了一种新的神经网络模型,叫做图神经网络模型(GNN);它将现有神经网络的处理数据能力拓展到了图的领域。这种GNN模型,可以直接处理绝大多数实际中运用到的图,例如循环图,非循环图,有向图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,521
精华内容 2,608
关键字:

gnn图神经网络