直观理解GCN

1. GCN公式

,where    

2. 拆解公式

可将公式拆成2部分,normal =  ,权重更新 wx = 

权重更新很容易理解,将X特征进行线性变换。

为简单起见,设结点数为6,每个结点的特征数为5,且值均为1。即 矩阵X为 X[6,5],注:斜体代表矩阵的shape

另外设权重W为w为1,bias为0的线性模型 ,输入层为5个神经元输出层为1个神经元的简单网络。即我们的W[5,1]

wx =  = dot(X[6,5],W[5,1]) = wx[6,1] = 

第一个值与结点1对应,第二值与结点2相互对应,第三个值与第三个结点对应。 即我们现在得到了每个结点的信息更新后的值,由原始特征进行特征变换,映射到新空间中的一个值。

接下来就是重点了,根据图的静态结构,聚合邻居结点信息。

3.  介绍GCN正则化之前先介绍随机游走正则化 为random walk normalization

为了方便介绍,引入具体实例:

邻接矩阵: A = 

注意:图中的自环没有标注,每一个结点都有自环

可得出度矩阵 D

norm  =  

可发现norm矩阵有非常好的性质

1)A中矩阵为0的norm对应位置仍为0,为1的位置非大于0

2)norm矩阵每一横行之和为1

3)每一横行非0元素的值相等,都等于(1/该行非0元素的个数)。如第二行都等于1/3

有什么作用

简单讲可以用来平均近邻的特征信息:

具体的,现在计算 out =  dot(norm,wx)

 

norm 的第二行有两个非0元素,对应于由结点2指出的弧共有2个,并分别指向结点2,结点3。

从wx矩阵看到,结点2的特征值为5,结点3的特征值也为5。将这两个结点特征值聚合相加并取均值为(5+5)* 1/2 = 5.

而通过矩阵运算,norm的第二行乘以hx ,得到 out[2] = 0.5 * 5 + 0.5 * 5 = 5 

这里我们看到这个norm的作用其实就是近邻特征信息取均值。

 

另外:如何求出度边的近邻均值呢

很简单,只需将norm矩阵进行转置即可。可自行验证

4. gcn 的symmetric normalization

norm =  

先看 D' = 

norm =  

乍一看并没有什么规律,简化问题,假设矩阵就3个结点可得norm为

该矩阵便存在规律了

先看中间的A     如果为A23 , 则前边的为D22,后边的为D33。 A23 将23拆开变成22,33。

那么现在拓展到6个结点 让写出第6行2列 ,很快就能写出为D66*A62*D22

这有什么现实意义呢?

首先,A62代表第6个结点是否与第2个结点相连。即该边的两个顶点可以确定分别为6和2.

然后,结点6的出度和结点2的出度有不同的出度。两个结点对边A62的影响不同,出度越大,发出的信息越多,对边A62影响越小。

总结:

随机游走norm只是考虑了周围有几个近邻,而gcn使用的norm考虑了近邻结点的度或者有多少指出多少指入    

 

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值