• 图神经网络 GCN 等综述


    20.4.29更新 

    写在前头,由于毕设的需要,我一直在学习图神经网络,看了很多文章解析,以及顶会使用上了gcn的各个领域开源代码,我还是不太懂它为什么会有作为,现在的方法大多数是 第一步查看自己任务怎么能表示成图,一般就是有节点特征和邻接矩阵后,直接上gcn,我感觉 论文的 why部分,讲的不是很好,感觉有一种为了 gcn而gcn的感觉,所以到底为什么好呢??gcn,它推理能力真的强吗。可能现在的我水平还不到家,希望gcn的火热能直到我很好的用上它,并完全理解它把!(●'◡'●)

    一、加更 gnn 的基础理解篇,反正我感觉我能看懂= =,其他的我真的...没时间的科研人员只想知道,这玩意到底为什么能有用和怎么用....

    1.如果你时间很多,建议看 survey 按照下面连接顺序看

    知乎——综述|从10篇研究综述看图神经网络GNN的最新研究进展

    2.图卷积神经网络基础理解篇

    1)看得懂的:(个人观点,不喜勿喷)

    知乎——何时能懂你的心——图卷积神经网络(GCN) 他的第二篇也建议康康

    知乎——2020年,我终于决定入门GCN

    GCN,图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据。GCN精妙地设计了一种从图数据中提取特征的方法,从而让我们可以使用这些特征去对图数据进行节点分类(node classification)、图分类(graph classification)、边预测(link prediction),还可以顺便得到图的嵌入表示(graph embedding),可见用途广泛。因此现在人们脑洞大开,让GCN到各个领域中发光发热。

    如何理解 Graph Convolutional Network(GCN)?

    ========================================================================以下是高赞回答=========================================================================

    由于高赞答案说的太好,我很怕万一作者想不开删去怎么办,所以我决定copy下来。(●'◡'●)

    纵横 作者 (手动艾特)

    鸟瞰图卷积

    图卷积的核心思想是利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』

    有的研究在此基础上利用『节点表示』生成『边表示』或是『图表示』完成自己的任务

    矩阵式聚合:在早期的研究中,由于没有什么并行库支持聚合节点信息,而图的规模往往很大。学术大佬们主要利用邻接矩阵的变换来完成这种聚合,然后使用 Pytorch 和 Tensorflow 这类库为矩阵运算加速。为了证明变换的有效性和合理性,很多工作借鉴了信号处理的思路,进行图上的傅里叶变换
    消息式聚合:随着图卷积越来越火,工业界逐渐加入了基础设施建设的队伍。借鉴 GraphX 等思路,出现一些不依赖邻接矩阵(或是屏蔽了邻接矩阵细节的)的消息聚合库,比较有名的有 PyG(比较早,实现多)和 DGL(比较新,易上手)。在这些库中,节点可以发出信息,并接受周围节点的信息,显式地完成消息聚合。在这种情况下,越来越多复杂的聚合方法出现了(论文的一般都不用,不要问为什么,因为论文我们的实验的图一般不是很大,我看过pyg和dgl实现的,但是大部分就是 A 和 X 结构,对了pyg特别难安装= =)

    罗马是六天建成的

    这里从简单到复杂讲解几种我们常用的图卷积公式(有时候简单的效果也不错)。在开始前先说明几个符号的含义:

     有很多工作都是在研究如何更巧妙的构建有权图(比如用节点间的相似度等等)。一般看过的论文都会需要自己构建,毕竟很多任务都不是标准的图结构

    看到的第一眼,想到的是 利用 残差网络 。
     

    Nothing is all you need

    当然,聚合的方法有很多种,CNN 已经为我们提供了很多参(照)考(抄)。

    Attention 的思路很棒,有 GAT 和 AGNN。——attention这个很多用上,但不是gat

    Pooling 的思路很棒,有 GraphSAGE。——拓展 graph pooling 也是一个很有研究价值的课题

    Deep 的思路很棒,有 DeepGCN。—— 今年cvpr有人用上了

    扩大感受野的思路也很棒,比如 High-Order GCN(矩阵式)和 PinSAGE(消息式)。

    这几篇论文都有认真细读的价值。

    =========================================================================以上是高赞回答========================================================================

    2)看的不懂,但是感觉有干货的 

    万字长文入门gcn ——知乎自己搜哈

    3)视频类的

    北京智源——里面第三个老师讲的,中科院的老师,讲的非常好。

    我觉得gcn和gat这两个模型挺有意思,一个考虑了图空间的关系(概率传导矩阵)但没办法动态学习邻居权重。一个动态学习邻居权重,但忽略了节点之间本身存在的关系。虽然有些工作在算attention的时候把两个node之间的weight作为额外的一维特征,但我觉得应该有更聪明的办法把两种关系合理结合
    —— 作者:全大葱

    二、记录了想看还未看,但觉得有意思的图文章:

    1.Graph Sequential Network for Reasoning over Sequences

    为什么说Transformer就是图神经网络?

    A Comprehensive Survey on Graph Neural Networks 

    摘要:将现有最好的图神经网络分成四类:recurrent graph neural networks, convolutional graph neural networks, graph autoencoders, and spatial-temporal graph neural networks。

    1.介绍

    可以用欧几里得空间中的规则网格来表示图像。所以CNN可以用来提取特征,可是在现有的世界中,很多数据都是图类的数据。

     2.对比

    文中进行了和network embedding以及 graph kernel methods  的对比

    介绍看这个

    3.符号的对应

     4.GNN的分类:

                   1. 循环gnn是covgnn的前任。

                   2.covGNN分类:谱图和空间。节点上的分类     和      图的分类

                                   3. GAE:

                                     4. 时空图:一般用在探究下一个时间段node的状态,在交通用的比较多,我还看到过 行人的预测。

     5.现有的方法及其复杂度:

    6.CovGNN 和 RecGNN 的 对 比

     7.Graph Pooling Modules 

    我这里跳过了一节,这节是pool操作

    Pooling的好处: (1) the pooling operation aims to reduce the size of parameters by down-sampling the nodes to generate smaller representations and thus avoid overfitting, permutation invariance, and computational complexity issues; (2) the readout operation is mainly used to generate graph-level representation based on node representations.

    8.总体来说:

         整个文章其实是从四个类的GNN来进行阐述,每个类分别有分支,这篇博客记录有一些乱,主要是给自己看的。我觉得感兴趣的地方。还有 诸如,图的生成(自编码)、时序图等。目前还没有了解 , 主要是感兴趣的。.... 大家有机会还是直接看原文。

      

    图神经网络 GNN 包括了两个关键词,图和神经网络。图是一种由节点和边组成的数据结构。从简单的地铁路线图,到RB Tree,到社交网络,知识网络,再到复杂的化学分子结构都可以看作是一种图。神经网络是一种由参数权重组成,能基于反向传播端到端训练学习的模型统称。

  • 相关阅读:
    vue-router的push和replace的区别
    ajax请求常见状态码以及产生的原因
    vue定义data的三种方式与区别
    button与input button区别
    变量的声明方式
    js变量
    JavaScript的节流与防抖?
    js实现继承的方法-构造函数
    前端表单验证常用的15个JS正则表达式
    ES6中的新增数组的方法
  • 原文地址:https://www.cnblogs.com/jun0wanan/p/12566973.html
Copyright © 2020-2023  润新知