GCN(图卷积神经网络)详解

1️⃣ GCN介绍

回忆一下,在我之前的博客已经介绍CNN架构(Alexnet,VGG,Unet,Resnet)和RNN。

  • CNN为处理图像等二维数据而设计,基于卷积操作实现特征的提取

  • RNN针对序列数据,通过循环结构和门机制捕捉序列中的依赖关系。

那为什么还要提出GCN呢?

实际上图像和序列数据都是欧式空间的数据,结构简单,使用CNN和RNN处理它们的时候需要保证输入格式是固定的 ①所有图像resize成固定大小,然后进行卷积操作得到特征 ②文本固定长度和词向量大小。然而,现实生活中有很多数据是没有固定结构的,其中一种就是图数据,比如社交网络,化学分子结构等。图数据结构不规则,CNN和RNN不好使了,研究人员在上世纪就开始研究如何处理这类数据,有很多方法,例如GNN、DeepWalk 和 node2vec 。而这篇文章介绍的图卷积神经网络是GNN中的一种技术。

图卷积神经网络(Graph Convolutional Networks, GCN)在2017年被提出,为了处理“图类型”的数据,GCN不要求输入格式固定。说白了,这个和网络CNN一样,都是用于提取特征,只不过提取的是图数据的特征。我们可以利用提取到的特征对图进行节点分类(node classification)、图分类(graph classification)、边预测(link prediction),还可以顺便得到图的嵌入表示(graph embedding)

注意哦,文本也可以表示成图的形式:
在这里插入图片描述


2️⃣ 原理

2.1 简述

GCN通过定义图卷积来处理图数据,现在分析一下图卷积的原理,看看它到底是个什么样子?

瞅瞅下面这个图,假设有一个图数据,咱先定义一些变量。

  • A A A表示图的邻接矩阵,表示的是节点之间的连接关系,要是节点相连,那元素就是1
  • 图的度矩阵表示为 D D D,这东西图论学过,本质是一个对角矩阵,其中对角元素表示每个节点的度(度就是与该节点相连的边的数量)
  • N N N个节点,每个节点上有一个 C C C维的特征,因此所有节点的特征组成一个大小为 N × C N×C N×C的特征矩阵 X X X
    在这里插入图片描述

GCN说白了就是对照CNN的卷积,定义了一个图卷积操作。CNN输入图像,图卷积的输入是前面定义的邻接矩阵 A A A,特征矩阵 X X X,咦,等等,为什么度矩阵 D D D不作为输入,因为 D D D可以通过A推导出来,所以就不输入了。咱先看看GCN的公式是啥:
H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) H^{(l+1)}=\sigma\Big(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}W^{(l)}\Big) H(l+1)=σ(D~21A~D~21H(l)W(l))

一看这公式头大了,这都啥东西,听我逐一拆解。

  • D ~ − 1 2 \tilde{D}^{-\frac{1}{2}} D~21:这个东西你可以理解为度矩阵 D D D经过一系列操作得到的结果,后面会对其进行分析
  • A ~ \tilde{A} A~:这是对邻接矩阵 A A A经过操作后的结果
  • H ( l ) H^{(l)} H(l):第 l l l层GCN的输入,对于输入层,就是我们的特征矩阵 X X X,形状为 N × C N×C N×C,N是节点数,C是特征数
  • H ( l + 1 ) H^{(l+1)} H(l+1),输出,形状为 N × C ′ N×C' N×C C ′ C' C是输出特征的维度
  • W ( l ) W^{(l)} W(l):第 l l l层GCN的训练参数,大小为 C × C ′ C×C' C×C
  • σ ( ) \sigma() σ():激活函数

其实到这图卷积就结束了,简单来说就是,有一个图结构,我们得到它的邻接矩阵 A A A,特征矩阵 X X X,输入到这个公式里,得到一个输出,over

2.2 GCN的具体流程

看到这肯定会有人问,为什么图卷积是这样定义的,具体流程是什么,我们来进一步分析。

图卷积的主要思想是让每个节点聚合自身和邻居节点的信息,从而捕捉图结构中的局部和全局特征。那么如何实现这一点呢?

还是下面这个图结构:
在这里插入图片描述
首先,我们让邻接矩阵 A A A与特征矩阵 X X X相乘即可得到邻居节点的信息,看看怎么个回事?

在这里插入图片描述

对于A节点,其邻居只有E节点,我们让邻接矩阵 A A A与特征矩阵 X X X相乘后,得到的结果的第一行就是A节点获取了E节点的信息,如图中黑框所示。

但是这样做还存在一个问题,我们没有把节点自身的特征考虑进来

因此我们对邻接矩阵 A A A进行一定的操作,得到新的邻接矩阵 A ~ \tilde{A} A~
A ~ = A + I N \tilde{A}=A+I_N A~=A+IN
其中 I N I_N IN为单位矩阵

在这里插入图片描述
那么 A ~ \tilde{A} A~与特征矩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值