posts - 3,comments - 0,views - 1276

博文介绍

对于初学者来说,GNN还是好理解的,但是对于GCN来说,我刚开始根本不理解其中的卷积从何而来!! 这篇博文分为两部分,第一部分是我对GNN的理解,第二部分是我个人对GCN中卷积的理解。

GNN

看了B站上up主小淡鸡的视频(视频:传送门)收益匪浅,我认为,GNN的目的就是怎样聚合各节点之间的信息。


GNN的流程

GNN示意图@小淡鸡


聚合

以上图A节点为例,A的邻居是节点B,C,D, 经过一次聚合后:聚合到的信息为:
邻居信息N=a×(2,2,2,2,2)+b×(3,3,3,3,3)+c×(4,4,4,4,4)
这里a,b,c都是权重参数


更新

A=σ(W((1,1,1,1,1))+α×N)
σ是激活函数(relu,sigmoid 等)这里有点像普通神经网络的线性层
W是模型需要学习的参数。


循环

图经过一次聚合后:
A有节点B,C,D的信息
B有节点A,C的信息
C有节点A,B,D,E的信息
D有节点A,C的信息
E有节点C的信息
第二次聚合,再以A节点为例,此时A聚合C的时候,C中有上一层聚合到的E的信息,所以这时A获得了二阶邻居E的特征。


GCN

GCN的卷积意义难以理解,我接下来会用图片(image)的卷积来讲解。


首先看一下公式:H(l+1)=σ(D~1/2A~D~1/2H(l)W(l))
GCN
这里A是邻接矩阵, D~A~的行求和所组成的对角阵, 也就是节点的度矩阵。


公式推导(物理意义)

先看这个图
例子
该图的邻接矩阵A

[011100100]

节点特征值H(l)为:

{[0.10.4][0.20.3][0.10.2]}

我们首先看一下AH(l)是啥:

[011100100]·[0.10.40.20.30.10.2]=[0.2+0.10.3+0.20.10.40.10.4]

可以看到这做到了汇聚(上一节提到的GNN)的作用
再加上自己的特征值,也就是A~H(l) (这里A~=A+I):

[111110101]·[0.10.40.20.30.10.2]=[0.1+0.2+0.10.4+0.3+0.20.1+0.20.4+0.30.1+0.10.4+0.2]

这些矩阵乘法从数学上实现了个节点之间的聚合
Note:公式:H(l+1)=σ(D~1/2A~D~1/2H(l)W(l))中的D~1/2的作用其实是为了归一化


理解GCN,卷积从何而来

首先, 以两层的特征提取器举例:

Z=f(X,A)=softmax(A^·ReLU(A^X·W(0))·W(1)))

在这里插入图片描述

这里A^=D~1/2A~D~1/2X是特征向量, W是要学习的参数。

类比图片

我们可以这么理解,如下图,图(graph) 的分类可以近似成 图片(image) 的像素级分类(即对每个像素(节点)进行分类)

  • 每个节点代表一个像素,其特征维度(向量X1的长度)代表通道数C
  • 归一化后的邻接矩阵 A^ 的每一行可以认为卷积核的形状参数 (比如说,对1号像素(节点)使用3X3的卷积核,对2号像素(节点)使用2X2的卷积核,等等),注意这里A^是固定不变的。
  • W就是所对应的卷积核参数

好, 现在根据形状参数 A^ 给 图片IRN×C 做卷积(这里图片有N个像素),得到特征图H(2)RN×F,现在特征图的每个像素的特征值维度是R1×F,因为是像素级分类,我们就可以让每个像素进入分类器(全连接层)了!这样像素级(GCN)分类就做完了.
在这里插入图片描述

posted on   星光点点wwx  阅读(630)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示