欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

图卷积神经网络(GCN)

程序员文章站 2024-03-25 09:26:34
...

一、前言

      深度学习一直都是被几大经典模型给统治着,如CNN、RNN等等,它们无论再CV还是NLP领域都取得了优异的效果,那这个GCN是怎么跑出来的?是因为我们发现了很多CNN、RNN无法解决或者效果不好的问题——图结构的数据。我们做图像识别,对象是图片,是一个二维的结构,于是人们发明了CNN这种神奇的模型来提取图片的特征。CNN的核心在于它的kernel,kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性:一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享。这就是CNN的精髓所在。再回忆一下RNN系列,它的对象是自然语言这样的序列信息,是一个一维的结构,RNN就是专门针对这些序列的结构而设计的,通过各种门的操作,使得序列前后的信息互相影响,从而很好地捕捉序列的特征。

      图卷积网络是把CNN拓展到非欧几里德数据。我们知道卷积神经网络之所以效果非常好,是因为利用了数据的局部结构特性(locality),所以在GCN里必须考虑的问题是如何利用数据的局部性。根据局部性不同,可以分成两类方法:(1)频域角度(2)空域角度。以空域角度为例子,直观地说,我们需要解决两个问题:其一是CNN里,神经元除了相邻之外还具有空间位置关系。而图里面没有空间位置关系,本质上缺少区分不同相邻节点的能力。其二是图里,每个节点的相邻节点数目不固定,导致无法固定卷积核的大小,从而无法共享参数。gcn设计了一些机制来解决这些问题。

二、GCN的原理

        参考文章:https://blog.csdn.net/chensi1995/article/details/77232019

三、GCN源码分析

       源代码 github:https://github.com/tkipf/gcn

       源码剖析:https://www.jianshu.com/p/ad528c40a08f

       GCN+AE代码逐行学习】参考资料记录:https://blog.csdn.net/qq_41727666/article/details/85334984

       Keras版GCN源码解析:https://blog.csdn.net/tszupup/article/details/89004637

├── gcn
│   ├── data          //图数据
│   │   ├── ind.citeseer.allx
│   │   ├── ind.citeseer.ally
│   │   ├── ind.citeseer.graph
│   │   ├── ind.citeseer.test.index
│   │   ├── ind.citeseer.tx
│   │   ├── ind.citeseer.ty
│   │   ├── ind.citeseer.x
│   │   ├── ind.citeseer.y
│   │   ├── ind.cora.allx
│   │   ├── ind.cora.ally
│   │   ├── ind.cora.graph
│   │   ├── ind.cora.test.index
│   │   ├── ind.cora.tx
│   │   ├── ind.cora.ty
│   │   ├── ind.cora.x
│   │   ├── ind.cora.y
│   │   ├── ind.pubmed.allx
│   │   ├── ind.pubmed.ally
│   │   ├── ind.pubmed.graph
│   │   ├── ind.pubmed.test.index
│   │   ├── ind.pubmed.tx
│   │   ├── ind.pubmed.ty
│   │   ├── ind.pubmed.x
│   │   └── ind.pubmed.y
│   ├── __init__.py
│   ├── inits.py    //初始化的公用函数
│   ├── layers.py   //GCN层定义
│   ├── metrics.py  //评测指标的计算
│   ├── models.py   //模型结构定义
│   ├── train.py    //训练
│   └── utils.py    //工具函数的定义
├── LICENCE
├── README.md
├── requirements.txt
└── setup.py

四、参考资料

1、如何理解GCN

2、深度学习时代的图模型,清华发文综述图网络

3、简单的GCN实现(numpy)

4、清华大学孙茂松组:图神经网络必读论文列表

5、GCN的应用

6、关于GCN领域的方法和应用的综述:Graph Neural Networks:A Review of Methods and Applications

7、GCN相关论文