《A Gentle Introduction to Graph Neural Networks》-GNN的综述性论文 ...

打印 上一主题 下一主题

主题 1018|帖子 1018|积分 3054

目录
一、什么数据可以表示成一张图
 (1)什么是图?
(2)如何表示图的属性
(3)images as graphs(将图片表示为图)
(4)text as graphs(将文本表示为图)
(5)生活中的图
二、为什么要用图神经网络
(1)图可以用来办理什么标题
(2)将神经网络用到图上有什么挑战
三、GNN的各个模块
(1)什么是GNN
(2)the simplest GNN
MLP 更新       
汇聚操纵        
 (3)信息传递(passing message between parts of the graph)
四、实验
(1) GNN Playground
(2)一些GNN操持教导的经验

   distill博客文章链接:A Gentle Introduction to Graph Neural Networks
https://distill.pub/2021/gnn-intro/博客中,很多图都是交互图,可以由读者自行操纵演示。
  李沐老师论文精度视频:
  零基础多图详解图神经网络(GNN/GCN)【论文精读】_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1iT4y1d7zP/?from=search&seid=17425771631747736862&spm_id_from=333.337.0.0这是我第一次接触深度学习文章平台Distill  Distill — Latest articles about machine learning

  2017年3月20日,Google Brain的Chris Olah和Shan Carter发布了一份专注于机器学习研究的新期刊:Distill(蒸馏的意思)。差别于过去百余年间的论文,Distill摆脱以往学术论文只能在纸质版期刊发表的束缚,允许科研职员把可视化的模子和图表整合到论文里,方便读者的明白和交互。
  一、什么数据可以表示成一张图

 (1)什么是图?

首先建立一个图。图表示的是一系列实体(节点)之间的关系(边)。

 图的极点/边表示的信息叫做attribute
(2)如何表示图的属性

极点:embedding (一条向量来表示)
边:长度为8的向量
全局信息:长度为5的向量

           把节点信息、边信息和全局信息做embedding,通俗地说就是把这些信息存储为向量的情势。以是图神经的核心步骤就是,怎么样把我们想要的信息表示成向量,以及向量是否能通过数据学习到。
  (3)images as graphs(将图片表示为图)

        通常把图片表示为三维tensor,如224x224x3(学过CNN的同学就知道这里的三通道是指RGB三种颜色)。现实上我们可以把每个像素作为一个点,存在毗邻关系则形成一条边。 

        中央的就是毗邻矩阵,相邻则是1,不相邻则是0,【每个蓝色的点表示graph中的一条边,剩下白色的点表示没有边】,一般会是非常大的稀疏矩阵 ,将像素或像素块视为节点,并通过连接相邻节点构建图
(4)text as graphs(将文本表示为图)

文本==>一条序列
把每一个词表示成极点,一个词和下一个词之间有一条有向边

(5)生活中的图

Molecules as graphs(将分子结构图表示为图)

Social networks as graphs(将社交网络表示为图):奥赛德剧中出现人物的社交网络情况,有边代表两个人同时出现过

Citation networks as graph(将引用网络表示为图):文章之间的引用,会天生一条边,但是往往都是有向边,由于是新文章引用旧文章,双向引用就不太现实了。

二、为什么要用图神经网络

(1)图可以用来办理什么标题



  • 图层面上的使命
给定一张图,对该图进行分类;

如上图,预测出哪些分子是具有两个环的。这个例子比较简单,可以用图的遍历来完成,当图非常复杂的时候,图神经网络可以发挥巨大作用。


  • 节点层面的使命

        上图是空手道俱乐部数据集,可以将学员分类到两个老师的队伍中。蓝色的和老师A在一个阵营,赤色的和老师B在一个阵营


  • 边层面的使命


        边的预测(链路预测)的例子是通过语义分割把人物、配景拿出来,然后分析实体间的关系(属性)。比如黄衣服的人在踢绿衣服的人,他们都站在地毯上。【边上的属性都是预测得来的】
(2)将神经网络用到图上有什么挑战

最核心的标题是怎么样表示图使得图和我的神经网络是兼容的;
图上有四种信息:节点的属性、边的属性、全局的一些信息、连接性【每条边到底连接的是哪两个点】
 前面三个可以用向量来表示,那么连接性如何表示呢?
        连接性是用毗邻矩阵来存储,如果图非常大,比如Wikipedia,则存储不下来。由于是毗邻矩阵很稀疏,以是用稀疏矩阵来存储会更好,而稀疏矩阵在GPU上训练一直是个技术困难。而且毗邻矩阵恣意交换行列,会导致毗邻矩阵改变,但是他们实在节点关系不变
那么想要存储高效且不受排序的影响应该如何存储呢?如下:

         上图中的节点、边和全局信息都可以用向量表示,而不一定只是标量。adjacency list可以大概用节点id把边的连接关系表示出来,长度==边数,第i项表示第i条边,连接的哪两个结点。 储存高效且对序次无关。
        那么给一个如上的输入方式,怎么用神经网络来处理呢?
三、GNN的各个模块

(1)什么是GNN

        GNN是一个对图上所有的属性,包罗极点、边、全局的上下文进行的一个可以优化的变更,这个变更可以大概保持住图的对称性信息的【把极点进行另外一个排序之后整个结果不会变】,GNNs是“graph-in, graph-out”(即进出模子都是graph的数据结构),他会对节点、边的信息进行变更,但是图连接性【每条边到底连接的是哪两个点】是不变的。【只改变属性不改变结构】
(2)the simplest GNN

        首先,对节点向量、边向量、全局向量分别构建一个MLP(多层感知机),MLP的输入输出的大小相同。


MLP 更新       

 三个MLP构成GNN的一层,一个图经过MLP后仍然是一个图。对于极点、边、全局向量分别找到对应的MLP,作为其更新函数(update function)。可以看到,输出后图的属性变革了,但是图的结构没有改变,符合我们的需求。MLP对每个向量独自作用,不会影响的连接性。堆叠了多层上述的模子后得到了GNN,如今来到末了一层,对节点进行预测。 
        每个MLP是对每个向量独自作用的,不会考虑所有的连接信息,以是不管对极点做任何排序都不会改变结果。
   总结:图神经网络(GNN)中的 MLP 更新机制
          在图神经网络(GNN)中,多层感知机(MLP)被广泛用于更新图中的节点、边和全局信息。这种操持的核心思想是通过 MLP 对每个向量(节点特征、边特征或全局特征)进行独立的非线性变更,同时保持图的结构不变。这种机制不仅可以大概捕获节点和边的特征,还能保持图的对称性,即对节点的重新排序不会影响最终结果。
          末了一层的输出是如何得到我们要的预测值呢? 
        以节点分类为例子:在节点分类使掷中,目标是对图中的每个节点进行分类。每个节点的最终特征会被传递到一个全连接层,然后通过softmax函数盘算每个类别的概率。


汇聚操纵        

 考虑另一种情况,如果说某个节点是没有自己的属性(向量)的,应该怎么做?
        这里先容到pooling的方法。做法就是把节点相连的边向量拿出来,全局向量拿出来,然后将这些向量相加求和,末了经过一个节点共享的全连接输出层得到节点预测结果。


        如果没有边向量而只有节点的向量,但是想对每个边做预测
        则可以汇聚相连的节点的向量到边上,如下图所示:

        一条边连接两条极点,这两个极点向量我们可以把他加起来然后得到这个边的向量,然后进入边向量的输出层 。
        那如果没有全局向量,只有节点向量呢?
        就把全部的节点向量汇聚起来得到一个全局的向量,经过末了全局的输出层得到全局的输出。
   不管缺乏哪一类的属性,都可以通过汇聚操纵得到想要的属性的向量,末了得到预测值
  
   将上面的两块总结起来就得到一个最简单的GNN:
  
         一张图input----->进入一系列的GNN层【每一层都有三个MLP对应三种差别的属性】---->得到一个保持了整个图结构的输出,但是属性已经发生了变革------>根据你要对哪一个属性做预测添加合适的输出层【缺失信息的话加入合适的汇聚层】 ,即可完成我们要的一个预测
          局限性:并没有效到图的结构,仅仅是点、边向量分别做MLP的过程。在GNN block这一块并没有对它利用图的结构信息,即对每个属性做变更时,就是每个属性进入自己的MLP,并么有看到这个极点是跟哪些边/极点相连的等连接信息,以是他实在并没有把整个图的信息合理的更新进去你的属性里面,以是末了的结果并不可以大概充实利用图的信息。
   (3)信息传递(passing message between parts of the graph)

         在更新某个节点的向量时,会将自己的向量和邻居节点的向量进行聚合操纵,然后再传入MLP更新节点的向量。作者说这个过程和标准卷积相似,但实在不完满是。
消息传递分三个步骤进行

  • 对于图中每个节点,收集所有相邻的节点嵌入(或消息)
  • 通过聚合函数聚合所有消息(如sum)
  • 所有池化信息都通过更新函数(通常是学习的神经网络)传递
使命:对极点向量进行更新
之前方法:将向量拿过来进入f(即MLP),直接得到极点向量的更新
信息传递方法:将该极点向量与其邻居向量都加在一起得到汇聚的向量,将汇聚的向量进入f进行后续操纵,得到此极点向量的更新

四、实验

(1) GNN Playground

1、Playground 展示了一个带有小分子图的图级预测使命。


  • 利用 Leffingwell 气味数据集,该数据集由具有相关气味感知(标签)的分子构成。预测分子结构(图形)与其气味的关系是一个有100年汗青的标题,横跨化学、物理学、神经科学和机器学习。
  • 为了简化标题,只考虑每个分子的单个二元标志,对分子图是否闻起来“刺鼻”进行分类。
  • 将每个分子表示为一个图,其中原子是包含其原子身份(碳、氮、氧、氟)的一热编码的节点,键是包含一热编码其键类型(单键、双键、三键或芳香族)的边缘。
  • 利用连续的 GNN 层构建针对此标题的通用建模模板,然后利用具有 S 形激活的线性模子进行分类。
2、详细参数阐明:


  • 更新时每个属性的维度。更新函数是一个 1 层 MLP,具有 relu 激活函数和用于激活归一化的层范数。
  • 池化中利用的聚合函数:最大值、平均值或总和。
  • 更新的图形属性或消息传递的样式:节点、边和全局表示。通过布尔切换(打开或关闭)来控制它们。
  • 基线模子是一个与图无关的 GNN(所有消息传递),将末尾的所有数据聚合到一个全局属性中。切换所有消息传递函数会产生 GraphNets 架构。
3、更好地明白 GNN 如何学习图的使命优化表示—研究了 GNN 的倒数第二层激活。

可以选图神经网络有多少层,汇聚的操纵:平均值、加起来、max,极点、边、全局的向量有多大,每改变一次超参数,则会对其重新做一次训练。真实值用边框表示,预测值用实心表示。若边框和实心都是赤色/蓝色,则预测精确。
(2)一些GNN操持教导的经验



  • 总的来说,图形属性的交换越多,平均模子的性能就越好。使命以全局表示为中央,因此显式学习此属性也往往会提高性能。节点表示似乎也比边表示更有效,这是有原理的,由于这些属性中加载了更多信息。
  • 从这里可以有很多方向来得到更好的性能。希望两个突出两个大方向,一个与更复杂的图算法有关,另一个与图本身有关。
  • 到如今为止, GNN 基于基于邻域的池化操纵。有一些图形概念很难用这种方式表达,比方线性图形路径(连接的节点链)。操持可以在GNN中提取、实行和流传图信息的新机制是当前的一个研究领域。
  • GNN研究的前沿之一不是制作新的模子和架构,而是“如何构建图”,更准确地说,是为图注入可以利用的额外结构或关系。正如粗略地看到的,传达的图形属性越多,就越倾向于拥有更好的模子。在这种特别情况下,可以考虑通过在节点之间添加额外的空间关系、添加不是键的边缘或子图之间的显式可学习关系来使分子图的特征更加丰富。


ref:
 【李沐精读GNN论文总结】A Gentle Introduction to Graph Neural Networks - 知乎
图神经网络简介---A gentle introduction to Graph Neural Networks-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表