GCN图卷积网络

本文深入解析图卷积网络(GCN)的基本概念,包括其计算过程和公式原理。GCN是一种用于处理图结构数据的深度学习模型,通过消息传递机制聚合节点信息。文中介绍了邻接矩阵、度矩阵及其逆平方根在GCN公式中的作用,解释了为何要引入这些矩阵以及它们如何平衡节点的重要性。GCN在少量标注数据下就能达到高精度,有效地利用了图结构信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GCN图卷积网络

GCN全称graph convolutional networks.图卷积网络,提出于2017年。GCN的出现标志着图神经网络的出现。深度学习最常用的网络结构就是CNN,RNN,GCN与CNN不仅名字相似,其实理解起来也很类似,都是特征提取器。不同的是,CNN提取的是张量数据特征,而GCN提出的是图结构数据特征。

1.计算过程

  初期研究者为了从数学上严谨的推导GCN公式是有效的,所以会涉及到诸如傅里叶变换,拉普拉斯算子的知识。其实对于我们使用者而言,我们可以绕开那些知识并且毫无影响的理解GCN。
以下就是GCN网络层的基础公式。
H(l+1)=σ(D~−12A~D~−12H(l)w(l))H^{(l+1)} = \sigma(\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}H^{(l)}w^{(l)})H(l+1)=σ(D21AD21H(l)w(l))
  其中HlH^{l}Hl指第lll层的输入特征,Hl+1H^{l+1}Hl+1自然就是指输出特征。wlw^lwl指线性变换矩阵。σ(⋅)\sigma(·)σ()是非线性激活函数,如ReLU,Sigmoid等。
那么重点就是那些A和D是什么了。
首先说A~\widetilde{A}A,通常邻接矩阵用A表示,邻接矩阵中的AijA_{ij}Aij就是节点i与节点j之间是否有路径,1为有,0为无。在A头上加个波浪线的A~\widetilde{A}A叫做“有自连的邻接矩阵”,以下简称自连邻接矩阵。定义如下:
A~=A+I\widetilde{A } = A + IA=A+I
  III是单位矩阵,A是邻接矩阵。因为我们对于邻接矩阵的定义是矩阵中的值为对应位置节点与节点之间的关系,而节点中对角线的位置是节点与自身的关系。而节点与自身并无边相连,所以邻接矩阵中的对角线自然都为0。但是如果我们接受这一设定进行下游计算,那么就无法在邻接矩阵中区分“自身节点”与“无连接节点”。所以将A加上一个单位矩阵1得到A~\widetilde{A}A,便能使得对角线为1,就好比添加了自连的设定。
在这里插入图片描述
在这里插入图片描述
如图所示,A~\widetilde{A}A就是在A的对角线上加上1

D~\widetilde{D}D是自连矩阵的度矩阵,定义如下:
D~ii=ΣjA~ij\widetilde{D}_{ii}=Σ_j\widetilde{A}_{ij}Dii=ΣjAij
D~\widetilde{D}D为:
在这里插入图片描述
D~ii\widetilde{D}_{ii}Dii就是第i个节点的邻居个数+1
所以:
在这里插入图片描述
  D~−12\widetilde{D}^{-\frac{1}{2}}D21就是在自连度矩阵的基础上开平方根取逆。求矩阵的平方根和逆的过程其实很复杂,好在D~\widetilde{D}D只是一个对角矩阵,所以在这我们直接可以通过给每个元素开根取倒数的方式得到D~−12\widetilde{D}^{-\frac{1}{2}}D21。无向无权图中,度矩阵描述的就是节点度的数量;若是有向图,则是出度的数量;若是有权图,则是目标节点与每个邻居连接边的权重和。而自连度矩阵,就是在度矩阵的基础上加个单位矩阵也就是每个节点度的数量加1。
  所以GCN公式(H(l+1)=σ(D~−12A~D~−12H(l)w(l))H^{(l+1)} = \sigma(\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}H^{(l)}w^{(l)})H(l+1)=σ(D21AD21H(l)w(l)))中,
D~−12A~D~−12\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}D21AD21这些其实都是从邻接矩阵计算过来的,我们甚至可以把这些看做一个常量。模型需要学习的仅仅是w(l)w^{(l)}w(l)这个权重矩阵。我们懂得这个公式,那么只需构建一个图,统计出邻接矩阵,直接代入公式即可实现GCN网络。

2.公式原理

  为了更好地理解上述公式的含义,比如为什么要引入D~\widetilde{D}D、为什么要对D~\widetilde{D}D−12-\frac{1}{2}21次方而不是12\frac{1}{2}21次方,下面将对上述公式进行详细解释
首先我们可以考虑将公式进行简化,即
H(l+1)=σ(D~−12A~D~−12H(l)w(l))=σ(A~H(l)w(l))H^{(l+1)} = \sigma(\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}H^{(l)}w^{(l)})= \sigma(\widetilde{A}H^{(l)}w^{(l)})H(l+1)=σ(D21AD21H(l)w(l))=σ(AH(l)w(l))
对于A~H(l)\widetilde{A}H^{(l)}AH(l)
在这里插入图片描述
  如上图所示,在自连邻接矩阵满足上图的数据场景时,下一层第一个节点的向量表示就是当前层节点h1,h2,h3,h4这些节点向量表示的和, 这一过程的可视化意义如下图所示:
在这里插入图片描述
这其实是一个消息传递的过程,经这样消息传递的操作后,下一层的节点1就聚集了它一阶邻居与自身的信息。这就很有效的保留了图结构给我们承载的信息。 到这里我们就理解了A~H(l)\widetilde{A}H^{(l)}AH(l)的含义,即聚合周围节点的信息,来更新自己。
  但是简单的聚合似乎不太合理,因为不同的节点重要性不一样,如果一个节点的「度」非常大,即与他相邻的节点非常多,那么它传递的消息,权重就应该小一点。这其实很好理解,比如保险经理张三的好友有2000个,当然你也是其中一个;而你幼时的青梅竹马小红加上你仅有10个好友。那么张三与小红对于定义你的权重自然就不该一样。我们来看度矩阵D在这起到的作用,我们知道节点的度代表着它一阶邻居的数量,所以乘以度矩阵的逆也就是稀释掉度很大的节点的重要度
  D~−12A~D~−12H(l)\widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}}H^{(l)}D21AD21H(l)这一计算的可视化意义如下:
在这里插入图片描述
  这就像是一个加权求和操作,度越大权重就越低。图中每条边权重分母左边的4\sqrt44是节点1自身度的逆平方根。
上述就是GCN公式的计算意义,我们也可结合具体场景自定义消息传递的计算方式。图神经网络之所以有效,就是因为它很好的利用了图结构的信息。它的起点就是别人的终点。本身无监督统计图数据信息已经可以给我们的预测带来很高的准确率。此时只需要一点少量的标注数据进行有监督的训练就可以媲美大数据训练的神经网络模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值